@itwin/components-react 4.4.0 → 4.5.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 (264) hide show
  1. package/CHANGELOG.md +13 -1
  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/SubscriptionScheduler.d.ts +1 -1
  5. package/lib/cjs/components-react/common/SubscriptionScheduler.d.ts.map +1 -1
  6. package/lib/cjs/components-react/common/SubscriptionScheduler.js +18 -23
  7. package/lib/cjs/components-react/common/SubscriptionScheduler.js.map +1 -1
  8. package/lib/cjs/components-react/common/UseAsyncValue.d.ts.map +1 -1
  9. package/lib/cjs/components-react/common/UseAsyncValue.js +6 -8
  10. package/lib/cjs/components-react/common/UseAsyncValue.js.map +1 -1
  11. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.d.ts.map +1 -1
  12. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js +8 -7
  13. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  14. package/lib/cjs/components-react/converters/NumericTypeConverter.js +2 -4
  15. package/lib/cjs/components-react/converters/NumericTypeConverter.js.map +1 -1
  16. package/lib/cjs/components-react/converters/StringTypeConverter.d.ts.map +1 -1
  17. package/lib/cjs/components-react/converters/StringTypeConverter.js +3 -5
  18. package/lib/cjs/components-react/converters/StringTypeConverter.js.map +1 -1
  19. package/lib/cjs/components-react/converters/TypeConverter.js +1 -2
  20. package/lib/cjs/components-react/converters/TypeConverter.js.map +1 -1
  21. package/lib/cjs/components-react/converters/TypeConverterManager.d.ts.map +1 -1
  22. package/lib/cjs/components-react/converters/TypeConverterManager.js +8 -2
  23. package/lib/cjs/components-react/converters/TypeConverterManager.js.map +1 -1
  24. package/lib/cjs/components-react/editors/CustomNumberEditor.js +6 -8
  25. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  26. package/lib/cjs/components-react/editors/DateTimeEditor.js +2 -3
  27. package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
  28. package/lib/cjs/components-react/editors/PopupButton.js +3 -4
  29. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  30. package/lib/cjs/components-react/editors/TextEditor.js +2 -4
  31. package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
  32. package/lib/cjs/components-react/favorite/FavoritePropertyList.js +3 -3
  33. package/lib/cjs/components-react/favorite/FavoritePropertyList.js.map +1 -1
  34. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js +6 -0
  35. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  36. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +1 -2
  37. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  38. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +3 -3
  39. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  40. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +1 -1
  41. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  42. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +13 -6
  43. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  44. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +8 -7
  45. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  46. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js +3 -4
  47. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  48. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +1 -1
  49. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  50. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js +2 -3
  51. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  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/value/DoublePropertyValueRenderer.js +1 -2
  55. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  56. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +3 -6
  57. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  58. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +1 -2
  59. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  60. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js +3 -6
  61. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  62. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js +1 -2
  63. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  64. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +1 -2
  65. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  66. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js +1 -2
  67. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  68. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js +2 -2
  69. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  70. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js +48 -54
  71. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  72. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js +11 -13
  73. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  74. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +2 -2
  75. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  76. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js +1 -2
  77. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  78. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js +1 -2
  79. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  80. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -2
  81. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  82. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +2 -3
  83. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  84. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
  85. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  86. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +1 -1
  87. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  88. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +5 -7
  89. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  90. package/lib/cjs/components-react/selectable-content/SelectableContent.js +2 -3
  91. package/lib/cjs/components-react/selectable-content/SelectableContent.js.map +1 -1
  92. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js +4 -6
  93. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  94. package/lib/cjs/components-react/toolbar/Toolbar.d.ts +1 -1
  95. package/lib/cjs/components-react/toolbar/Toolbar.d.ts.map +1 -1
  96. package/lib/cjs/components-react/toolbar/Toolbar.js.map +1 -1
  97. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  98. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  99. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  100. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.js +5 -6
  101. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.js.map +1 -1
  102. package/lib/cjs/components-react/tree/controlled/Observable.d.ts +1 -1
  103. package/lib/cjs/components-react/tree/controlled/Observable.d.ts.map +1 -1
  104. package/lib/cjs/components-react/tree/controlled/Observable.js +3 -4
  105. package/lib/cjs/components-react/tree/controlled/Observable.js.map +1 -1
  106. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.d.ts +1 -2
  107. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.d.ts.map +1 -1
  108. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js +37 -68
  109. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  110. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.d.ts.map +1 -1
  111. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.js +6 -7
  112. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  113. package/lib/cjs/components-react/tree/controlled/TreeModel.js +7 -8
  114. package/lib/cjs/components-react/tree/controlled/TreeModel.js.map +1 -1
  115. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.d.ts +1 -1
  116. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.d.ts.map +1 -1
  117. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js +28 -35
  118. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  119. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  120. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js +6 -14
  121. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  122. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.d.ts.map +1 -1
  123. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js +3 -3
  124. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  125. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js +1 -2
  126. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  127. package/lib/cjs/components-react/tree/controlled/internal/TreeModelMutator.js +2 -2
  128. package/lib/cjs/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  129. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.d.ts +2 -3
  130. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.d.ts.map +1 -1
  131. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js +53 -100
  132. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  133. package/lib/esm/components-react/common/DelayedSpinner.js +2 -3
  134. package/lib/esm/components-react/common/DelayedSpinner.js.map +1 -1
  135. package/lib/esm/components-react/common/SubscriptionScheduler.d.ts +1 -1
  136. package/lib/esm/components-react/common/SubscriptionScheduler.d.ts.map +1 -1
  137. package/lib/esm/components-react/common/SubscriptionScheduler.js +12 -17
  138. package/lib/esm/components-react/common/SubscriptionScheduler.js.map +1 -1
  139. package/lib/esm/components-react/common/UseAsyncValue.d.ts.map +1 -1
  140. package/lib/esm/components-react/common/UseAsyncValue.js +1 -3
  141. package/lib/esm/components-react/common/UseAsyncValue.js.map +1 -1
  142. package/lib/esm/components-react/common/UseDebouncedAsyncValue.d.ts.map +1 -1
  143. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js +7 -6
  144. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  145. package/lib/esm/components-react/converters/NumericTypeConverter.js +2 -4
  146. package/lib/esm/components-react/converters/NumericTypeConverter.js.map +1 -1
  147. package/lib/esm/components-react/converters/StringTypeConverter.d.ts.map +1 -1
  148. package/lib/esm/components-react/converters/StringTypeConverter.js +3 -5
  149. package/lib/esm/components-react/converters/StringTypeConverter.js.map +1 -1
  150. package/lib/esm/components-react/converters/TypeConverter.js +1 -2
  151. package/lib/esm/components-react/converters/TypeConverter.js.map +1 -1
  152. package/lib/esm/components-react/converters/TypeConverterManager.d.ts.map +1 -1
  153. package/lib/esm/components-react/converters/TypeConverterManager.js +7 -1
  154. package/lib/esm/components-react/converters/TypeConverterManager.js.map +1 -1
  155. package/lib/esm/components-react/editors/CustomNumberEditor.js +6 -8
  156. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  157. package/lib/esm/components-react/editors/DateTimeEditor.js +2 -3
  158. package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
  159. package/lib/esm/components-react/editors/PopupButton.js +3 -4
  160. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  161. package/lib/esm/components-react/editors/TextEditor.js +2 -4
  162. package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
  163. package/lib/esm/components-react/favorite/FavoritePropertyList.js +3 -3
  164. package/lib/esm/components-react/favorite/FavoritePropertyList.js.map +1 -1
  165. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js +6 -0
  166. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  167. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +1 -2
  168. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  169. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +3 -3
  170. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  171. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +1 -1
  172. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  173. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +13 -6
  174. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  175. package/lib/esm/components-react/filter-builder/FilterBuilderState.js +8 -7
  176. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  177. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js +3 -4
  178. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  179. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +1 -1
  180. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  181. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js +2 -3
  182. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  183. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js +4 -4
  184. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  185. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js +1 -2
  186. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  187. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +3 -6
  188. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  189. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +1 -2
  190. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  191. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js +3 -6
  192. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  193. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js +1 -2
  194. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  195. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +1 -2
  196. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  197. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js +1 -2
  198. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  199. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js +2 -2
  200. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  201. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js +48 -54
  202. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  203. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js +11 -13
  204. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  205. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +2 -2
  206. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  207. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js +1 -2
  208. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  209. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js +1 -2
  210. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  211. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -2
  212. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  213. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +2 -3
  214. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  215. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
  216. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  217. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +1 -1
  218. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  219. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +5 -7
  220. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  221. package/lib/esm/components-react/selectable-content/SelectableContent.js +2 -3
  222. package/lib/esm/components-react/selectable-content/SelectableContent.js.map +1 -1
  223. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js +4 -6
  224. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  225. package/lib/esm/components-react/toolbar/Toolbar.d.ts +1 -1
  226. package/lib/esm/components-react/toolbar/Toolbar.d.ts.map +1 -1
  227. package/lib/esm/components-react/toolbar/Toolbar.js.map +1 -1
  228. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  229. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  230. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  231. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.js +5 -6
  232. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.js.map +1 -1
  233. package/lib/esm/components-react/tree/controlled/Observable.d.ts +1 -1
  234. package/lib/esm/components-react/tree/controlled/Observable.d.ts.map +1 -1
  235. package/lib/esm/components-react/tree/controlled/Observable.js +1 -2
  236. package/lib/esm/components-react/tree/controlled/Observable.js.map +1 -1
  237. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.d.ts +1 -2
  238. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.d.ts.map +1 -1
  239. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js +24 -55
  240. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  241. package/lib/esm/components-react/tree/controlled/TreeEventHandler.d.ts.map +1 -1
  242. package/lib/esm/components-react/tree/controlled/TreeEventHandler.js +1 -2
  243. package/lib/esm/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  244. package/lib/esm/components-react/tree/controlled/TreeModel.js +7 -8
  245. package/lib/esm/components-react/tree/controlled/TreeModel.js.map +1 -1
  246. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.d.ts +1 -1
  247. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.d.ts.map +1 -1
  248. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js +18 -25
  249. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  250. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  251. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js +6 -14
  252. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  253. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.d.ts.map +1 -1
  254. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js +3 -3
  255. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  256. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js +1 -2
  257. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  258. package/lib/esm/components-react/tree/controlled/internal/TreeModelMutator.js +1 -1
  259. package/lib/esm/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  260. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.d.ts +2 -3
  261. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.d.ts.map +1 -1
  262. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js +52 -99
  263. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  264. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarWithOverflow.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/ToolbarWithOverflow.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAGpC;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,WAAW,EAAE,eAAe;IAC5E,oGAAoG;IACpG,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,4GAA4G;IAC5G,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,uGAAuG;IACvG,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,8FAA8F;IAC9F,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oFAAoF;IACpF,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,sDAAsD;IACtD,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;CAC9C;AAED;;;;GAIG;AAEH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,eAQlE"}
1
+ {"version":3,"file":"ToolbarWithOverflow.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/ToolbarWithOverflow.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAGpC;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,WAAW,EAAE,eAAe;IAC5E,2OAA2O;IAC3O,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,4GAA4G;IAC5G,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,uGAAuG;IACvG,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,8FAA8F;IAC9F,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oFAAoF;IACpF,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,sDAAsD;IACtD,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;CAC9C;AAED;;;;GAIG;AAEH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,eAQlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarWithOverflow.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/ToolbarWithOverflow.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAyBtE;;;;GAIG;AACH,mDAAmD;AACnD,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC;IACtD,OAAO,CACL,oBAAC,wBAAwB,IACvB,cAAc,EAAE,EAAE,iBAAiB,EAAE,KACjC,aAAa,GACjB,CACH,CAAC;AACJ,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/** @packageDocumentation\n * @module Toolbar\n */\n\nimport \"./Toolbar.scss\";\nimport * as React from \"react\";\nimport type {\n CommonToolbarItem,\n OnItemExecutedFunc,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\nimport type { Direction } from \"./utilities/Direction\";\nimport type {\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n} from \"./InternalToolbarComponent\";\nimport { InternalToolbarComponent } from \"./InternalToolbarComponent\";\n\n/** Properties of [[ToolbarWithOverflow]] component.\n * @public\n * @deprecated in 4.0. Use [ToolbarWithOverflowProps]($appui-react) instead.\n */\nexport interface ToolbarWithOverflowProps extends CommonProps, NoChildrenProps {\n /** Describes to which direction the popup panels are expanded. Defaults to: [[Direction.Bottom]] */\n expandsTo?: Direction;\n /** Describes to which direction the overflow popup panels are expanded. Defaults to: [[Direction.Right]] */\n overflowExpandsTo?: Direction;\n /** Definitions for items of the toolbar. Items are expected to be already sorted by group and item. */\n items: CommonToolbarItem[];\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\n panelAlignment?: ToolbarPanelAlignment;\n /** Use Drag Interaction to open popups with nest action buttons */\n useDragInteraction?: boolean;\n /** Determines whether to use mouse proximity to alter the opacity of the toolbar */\n toolbarOpacitySetting?: ToolbarOpacitySetting;\n /** Optional function to call on any item execution */\n onItemExecuted?: OnItemExecutedFunc;\n /** Optional function to call on any KeyDown events processed by toolbar */\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\n/** Component that displays toolbar items, displaying only the elements that can fit in the available space,\n * and put the other items into a single panel.\n * @public\n * @deprecated in 4.0. Use [ToolbarWithOverflow]($appui-react) instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ToolbarWithOverflow(props: ToolbarWithOverflowProps) {\n const { overflowExpandsTo, ...internalProps } = props;\n return (\n <InternalToolbarComponent\n enableOverflow={{ overflowExpandsTo }}\n {...internalProps}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"ToolbarWithOverflow.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/ToolbarWithOverflow.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAyBtE;;;;GAIG;AACH,mDAAmD;AACnD,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC;IACtD,OAAO,CACL,oBAAC,wBAAwB,IACvB,cAAc,EAAE,EAAE,iBAAiB,EAAE,KACjC,aAAa,GACjB,CACH,CAAC;AACJ,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/** @packageDocumentation\n * @module Toolbar\n */\n\nimport \"./Toolbar.scss\";\nimport * as React from \"react\";\nimport type {\n CommonToolbarItem,\n OnItemExecutedFunc,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\nimport type { Direction } from \"./utilities/Direction\";\nimport type {\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n} from \"./InternalToolbarComponent\";\nimport { InternalToolbarComponent } from \"./InternalToolbarComponent\";\n\n/** Properties of [[ToolbarWithOverflow]] component.\n * @public\n * @deprecated in 4.0. Use [ToolbarWithOverflowProps]($appui-react) instead.\n */\nexport interface ToolbarWithOverflowProps extends CommonProps, NoChildrenProps {\n /** Describes to which direction the popup panels are expanded, also defines the orientation of the toolbar (Top/Bottom will create an horizontal toolbar, Left/Right will create a vertical toolbar). Defaults to: [[Direction.Bottom]] */\n expandsTo?: Direction;\n /** Describes to which direction the overflow popup panels are expanded. Defaults to: [[Direction.Right]] */\n overflowExpandsTo?: Direction;\n /** Definitions for items of the toolbar. Items are expected to be already sorted by group and item. */\n items: CommonToolbarItem[];\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\n panelAlignment?: ToolbarPanelAlignment;\n /** Use Drag Interaction to open popups with nest action buttons */\n useDragInteraction?: boolean;\n /** Determines whether to use mouse proximity to alter the opacity of the toolbar */\n toolbarOpacitySetting?: ToolbarOpacitySetting;\n /** Optional function to call on any item execution */\n onItemExecuted?: OnItemExecutedFunc;\n /** Optional function to call on any KeyDown events processed by toolbar */\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\n/** Component that displays toolbar items, displaying only the elements that can fit in the available space,\n * and put the other items into a single panel.\n * @public\n * @deprecated in 4.0. Use [ToolbarWithOverflow]($appui-react) instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ToolbarWithOverflow(props: ToolbarWithOverflowProps) {\n const { overflowExpandsTo, ...internalProps } = props;\n return (\n <InternalToolbarComponent\n enableOverflow={{ overflowExpandsTo }}\n {...internalProps}\n />\n );\n}\n"]}
@@ -46,9 +46,9 @@ function refreshItems(items, eventIds) {
46
46
  const childItems = refreshItems(updatedItem.items, eventIds);
47
47
  updatedItem = {
48
48
  ...updatedItem,
49
- items: childItems !== null && childItems !== void 0 ? childItems : updatedItem.items,
49
+ items: childItems ?? updatedItem.items,
50
50
  };
51
- itemsUpdated || (itemsUpdated = !!childItems);
51
+ itemsUpdated ||= !!childItems;
52
52
  }
53
53
  for (const [, entry] of Object.entries(updatedItem)) {
54
54
  if ((entry instanceof ConditionalBooleanValue &&
@@ -74,16 +74,15 @@ function refreshItems(items, eventIds) {
74
74
  export function useConditionalSynchedItems(items, syncUiEvent) {
75
75
  const [eventSynchedItems, setEventSynchedItems] = React.useState([]);
76
76
  React.useEffect(() => {
77
- var _a;
78
77
  const ids = new Set();
79
78
  gatherSyncIds(ids, items);
80
- setEventSynchedItems((_a = refreshItems(items, ids)) !== null && _a !== void 0 ? _a : items);
79
+ setEventSynchedItems(refreshItems(items, ids) ?? items);
81
80
  const syncIdsOfInterest = [...ids.values()];
82
- return syncUiEvent === null || syncUiEvent === void 0 ? void 0 : syncUiEvent.addListener((args) => {
81
+ return syncUiEvent?.addListener((args) => {
83
82
  if (0 === syncIdsOfInterest.length)
84
83
  return;
85
84
  if (syncIdsOfInterest.some((value) => args.eventIds.has(value.toLowerCase()))) {
86
- setEventSynchedItems((current) => { var _a; return (_a = refreshItems(current, args.eventIds)) !== null && _a !== void 0 ? _a : current; });
85
+ setEventSynchedItems((current) => refreshItems(current, args.eventIds) ?? current);
87
86
  }
88
87
  });
89
88
  }, [syncUiEvent, items]);
@@ -1 +1 @@
1
- {"version":3,"file":"useConditionalSynchedItems.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/useConditionalSynchedItems.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;GAKG;AACH,SAAS,aAAa,CACpB,QAAqB,EACrB,KAAmB;IAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,KAAK,YAAY,uBAAuB,EAAE;gBAC5C,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE,CAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACpC,CAAC;aACH;iBAAM,IAAI,KAAK,YAAY,sBAAsB,EAAE;gBAClD,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE,CAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACpC,CAAC;aACH;iBAAM,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;gBAC3D,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE,CAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACpC,CAAC;aACH;SACF;QACD,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACrC;KACF;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CACnB,KAAmB,EACnB,QAAqB;IAErB,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,YAAY,GAAQ,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,WAAW,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC9B,IAAI,OAAO,IAAI,WAAW,EAAE;YAC1B,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7D,WAAW,GAAG;gBACZ,GAAG,WAAW;gBACd,KAAK,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,WAAW,CAAC,KAAK;aACvC,CAAC;YACF,YAAY,KAAZ,YAAY,GAAK,CAAC,CAAC,UAAU,EAAC;SAC/B;QAED,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YACnD,IACE,CAAC,KAAK,YAAY,uBAAuB;gBACvC,uBAAuB,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACxD,CAAC,KAAK,YAAY,sBAAsB;oBACtC,sBAAsB,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACvD,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,KAAK,CAAC;oBAC/C,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EACpD;gBACA,YAAY,GAAG,IAAI,CAAC;aACrB;SACF;QACD,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAChC;IACD,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAmB,EACnB,WAA2E;IAE3E,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAE9D,EAAE,CAAC,CAAC;IACN,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;;QACnB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,oBAAoB,CAAC,MAAA,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,mCAAI,KAAK,CAAC,CAAC;QACxD,MAAM,iBAAiB,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YACvC,IAAI,CAAC,KAAK,iBAAiB,CAAC,MAAM;gBAAE,OAAO;YAE3C,IACE,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CACvC,EACD;gBACA,oBAAoB,CAClB,CAAC,OAAO,EAAE,EAAE,WAAC,OAAA,MAAA,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,mCAAI,OAAO,CAAA,EAAA,CAC7D,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACzB,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport type { BeEvent } from \"@itwin/core-bentley\";\nimport { ConditionalIconItem } from \"@itwin/core-react\";\nimport * as React from \"react\";\n\n/**\n * From a list of ToolbarItem, recursively return the list of syncIds\n * that are relevant to every Conditional members used in the items.\n * @param eventIds Set to fill with syncIds\n * @param items ToolbarItems list to search through\n */\nfunction gatherSyncIds<T extends {} | { items: T[] }>(\n eventIds: Set<string>,\n items: readonly T[]\n) {\n for (const item of items) {\n for (const [, entry] of Object.entries(item)) {\n if (entry instanceof ConditionalBooleanValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (entry instanceof ConditionalStringValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (ConditionalIconItem.isConditionalIconItem(entry)) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n }\n }\n if (\"items\" in item) {\n gatherSyncIds(eventIds, item.items);\n }\n }\n}\n\n/**\n * Refresh all conditional values interested by the provided eventIds.\n * @param items List of ToolbarItems that may content Conditional properties.\n * @param eventIds Set of triggered eventIds.\n * @returns null if no updates occurred, or the provided items with updated values if ANY were updated.\n */\nfunction refreshItems<T extends {} | { items: T[] }>(\n items: readonly T[],\n eventIds: Set<string>\n): T[] | null {\n if (0 === eventIds.size) return null;\n let itemsUpdated = false;\n const updatedItems: T[] = [];\n\n for (const item of items) {\n let updatedItem = { ...item };\n if (\"items\" in updatedItem) {\n const childItems = refreshItems(updatedItem.items, eventIds);\n updatedItem = {\n ...updatedItem,\n items: childItems ?? updatedItem.items,\n };\n itemsUpdated ||= !!childItems;\n }\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (\n (entry instanceof ConditionalBooleanValue &&\n ConditionalBooleanValue.refreshValue(entry, eventIds)) ||\n (entry instanceof ConditionalStringValue &&\n ConditionalStringValue.refreshValue(entry, eventIds)) ||\n (ConditionalIconItem.isConditionalIconItem(entry) &&\n ConditionalIconItem.refreshValue(entry, eventIds))\n ) {\n itemsUpdated = true;\n }\n }\n updatedItems.push(updatedItem);\n }\n return itemsUpdated ? updatedItems : null;\n}\n\n/**\n * Register a listener on the syncUiEVent and updates all conditionals within the provided items.\n * @param items Items to keep up to date\n * @param syncUiEvent Event to attach to (because we don't depend on appui-react);\n * @returns Synched items\n * @internal\n */\nexport function useConditionalSynchedItems<T extends {} | { items: T[] }>(\n items: readonly T[],\n syncUiEvent: undefined | BeEvent<(args: { eventIds: Set<string> }) => void>\n) {\n const [eventSynchedItems, setEventSynchedItems] = React.useState<\n readonly T[]\n >([]);\n React.useEffect(() => {\n const ids = new Set<string>();\n gatherSyncIds(ids, items);\n setEventSynchedItems(refreshItems(items, ids) ?? items);\n const syncIdsOfInterest = [...ids.values()];\n return syncUiEvent?.addListener((args) => {\n if (0 === syncIdsOfInterest.length) return;\n\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value.toLowerCase())\n )\n ) {\n setEventSynchedItems(\n (current) => refreshItems(current, args.eventIds) ?? current\n );\n }\n });\n }, [syncUiEvent, items]);\n return eventSynchedItems;\n}\n"]}
1
+ {"version":3,"file":"useConditionalSynchedItems.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/useConditionalSynchedItems.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 *--------------------------------------------------------------------------------------------*/\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport type { BeEvent } from \"@itwin/core-bentley\";\nimport { ConditionalIconItem } from \"@itwin/core-react\";\nimport * as React from \"react\";\n\n/**\n * From a list of ToolbarItem, recursively return the list of syncIds\n * that are relevant to every Conditional members used in the items.\n * @param eventIds Set to fill with syncIds\n * @param items ToolbarItems list to search through\n */\nfunction gatherSyncIds<T extends {} | { items: T[] }>(\n eventIds: Set<string>,\n items: readonly T[]\n) {\n for (const item of items) {\n for (const [, entry] of Object.entries(item)) {\n if (entry instanceof ConditionalBooleanValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (entry instanceof ConditionalStringValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (ConditionalIconItem.isConditionalIconItem(entry)) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n }\n }\n if (\"items\" in item) {\n gatherSyncIds(eventIds, item.items);\n }\n }\n}\n\n/**\n * Refresh all conditional values interested by the provided eventIds.\n * @param items List of ToolbarItems that may content Conditional properties.\n * @param eventIds Set of triggered eventIds.\n * @returns null if no updates occurred, or the provided items with updated values if ANY were updated.\n */\nfunction refreshItems<T extends {} | { items: T[] }>(\n items: readonly T[],\n eventIds: Set<string>\n): T[] | null {\n if (0 === eventIds.size) return null;\n let itemsUpdated = false;\n const updatedItems: T[] = [];\n\n for (const item of items) {\n let updatedItem = { ...item };\n if (\"items\" in updatedItem) {\n const childItems = refreshItems(updatedItem.items, eventIds);\n updatedItem = {\n ...updatedItem,\n items: childItems ?? updatedItem.items,\n };\n itemsUpdated ||= !!childItems;\n }\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (\n (entry instanceof ConditionalBooleanValue &&\n ConditionalBooleanValue.refreshValue(entry, eventIds)) ||\n (entry instanceof ConditionalStringValue &&\n ConditionalStringValue.refreshValue(entry, eventIds)) ||\n (ConditionalIconItem.isConditionalIconItem(entry) &&\n ConditionalIconItem.refreshValue(entry, eventIds))\n ) {\n itemsUpdated = true;\n }\n }\n updatedItems.push(updatedItem);\n }\n return itemsUpdated ? updatedItems : null;\n}\n\n/**\n * Register a listener on the syncUiEVent and updates all conditionals within the provided items.\n * @param items Items to keep up to date\n * @param syncUiEvent Event to attach to (because we don't depend on appui-react);\n * @returns Synched items\n * @internal\n */\nexport function useConditionalSynchedItems<T extends {} | { items: T[] }>(\n items: readonly T[],\n syncUiEvent: undefined | BeEvent<(args: { eventIds: Set<string> }) => void>\n) {\n const [eventSynchedItems, setEventSynchedItems] = React.useState<\n readonly T[]\n >([]);\n React.useEffect(() => {\n const ids = new Set<string>();\n gatherSyncIds(ids, items);\n setEventSynchedItems(refreshItems(items, ids) ?? items);\n const syncIdsOfInterest = [...ids.values()];\n return syncUiEvent?.addListener((args) => {\n if (0 === syncIdsOfInterest.length) return;\n\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value.toLowerCase())\n )\n ) {\n setEventSynchedItems(\n (current) => refreshItems(current, args.eventIds) ?? current\n );\n }\n });\n }, [syncUiEvent, items]);\n return eventSynchedItems;\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module Tree
3
3
  */
4
- import { Observable as RxjsObservable } from "rxjs/internal/Observable";
4
+ import { Observable as RxjsObservable } from "rxjs";
5
5
  /**
6
6
  * Helper method that creates an Observable from Iterable or Promise.
7
7
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/Observable.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAExE;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAE7E;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;CAAG;AAEzD;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;IAChD,SAAS,CACP,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,KAAK,EAAE,IAAI,GAAG,SAAS,EACvB,QAAQ,EAAE,MAAM,IAAI,GACnB,YAAY,CAAC;IAChB,SAAS,CACP,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAC3B,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,YAAY,CAAC;IAChB,SAAS,CAEP,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EACxB,KAAK,EAAE,IAAI,GAAG,SAAS,EACvB,QAAQ,EAAE,MAAM,IAAI,GACnB,YAAY,CAAC;IAChB,SAAS,CACP,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EACzB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAC5B,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,YAAY,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,MAAM,QAAQ,CAAC,CAAC,IAC1B,YAAY,CAAC,CAAC,CAAC,GACf,aAAa,CAAC,CAAC,CAAC,GAChB,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAE1B;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,IAAI,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,WAAW,IAAI,IAAI,CAAC;IACpB,GAAG,CAAC,QAAQ,EAAE,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3D;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,GACxB,cAAc,CAAC,CAAC,CAAC,CAInB"}
1
+ {"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/Observable.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module Tree
7
7
  */
8
- import { from as rxjsFrom } from "rxjs/internal/observable/from";
9
- import { Observable as RxjsObservable } from "rxjs/internal/Observable";
8
+ import { from as rxjsFrom, Observable as RxjsObservable } from "rxjs";
10
9
  /**
11
10
  * Helper method that creates an Observable from Iterable or Promise.
12
11
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"Observable.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/Observable.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAExE;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAI,QAAsC;IAC5D,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAmHD,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAC9B,UAAyB;IAEzB,OAAO,IAAI,cAAc,CAAC,CAAC,UAAU,EAAE,EAAE;QACvC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,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/** @packageDocumentation\n * @module Tree\n */\n\nimport { from as rxjsFrom } from \"rxjs/internal/observable/from\";\nimport { Observable as RxjsObservable } from \"rxjs/internal/Observable\";\n\n/**\n * Helper method that creates an Observable from Iterable or Promise.\n * @public\n */\nexport function from<T>(iterable: Iterable<T> | PromiseLike<T>): Observable<T> {\n return rxjsFrom(iterable);\n}\n\n/**\n * Observable interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n *\n * To use it with [rxjs](https://github.com/ReactiveX/rxjs) operators wrap it inside\n * `Observable` from [rxjs](https://github.com/ReactiveX/rxjs). Example:\n *\n * ```\n * import { Observable as RxjsObservable } from \"rxjs\";\n *\n * new RxjsObservable((subscriber) => thisObservable.subscribe(subscriber));\n * ```\n *\n * @public\n */\nexport interface Observable<T> extends Subscribable<T> {} // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Subscribable interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface Subscribable<T> {\n subscribe(observer?: Observer<T>): Subscription;\n subscribe(\n next: null | undefined,\n error: null | undefined,\n complete: () => void\n ): Subscription;\n subscribe(\n next: null | undefined,\n error: (error: any) => void,\n complete?: () => void\n ): Subscription;\n subscribe(\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n next: (value: T) => void,\n error: null | undefined,\n complete: () => void\n ): Subscription;\n subscribe(\n next?: (value: T) => void,\n error?: (error: any) => void,\n complete?: () => void\n ): Subscription;\n}\n\n/**\n * Observer interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport declare type Observer<T> =\n | NextObserver<T>\n | ErrorObserver<T>\n | CompletionObserver<T>;\n\n/**\n * Unsubscribable interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface Unsubscribable {\n unsubscribe(): void;\n}\n\n/**\n * Subscription interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface Subscription extends Unsubscribable {\n readonly closed: boolean;\n unsubscribe(): void;\n add(tearDown: Unsubscribable | (() => void) | void): void;\n}\n\n/**\n * NextObserver interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface NextObserver<T> {\n closed?: boolean;\n next: (value: T) => void;\n error?: (err: any) => void;\n complete?: () => void;\n}\n\n/**\n * ErrorObserver interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface ErrorObserver<T> {\n closed?: boolean;\n next?: (value: T) => void;\n error: (err: any) => void;\n complete?: () => void;\n}\n\n/**\n * CompletionObserver interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface CompletionObserver<T> {\n closed?: boolean;\n next?: (value: T) => void;\n error?: (err: any) => void;\n complete: () => void;\n}\n\n/** @internal */\nexport function toRxjsObservable<T>(\n observable: Observable<T>\n): RxjsObservable<T> {\n return new RxjsObservable((subscriber) => {\n observable.subscribe(subscriber);\n });\n}\n"]}
1
+ {"version":3,"file":"Observable.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/Observable.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,MAAM,CAAC;AAEtE;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAI,QAAsC;IAC5D,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAmHD,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAC9B,UAAyB;IAEzB,OAAO,IAAI,cAAc,CAAC,CAAC,UAAU,EAAE,EAAE;QACvC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,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/** @packageDocumentation\n * @module Tree\n */\n\nimport { from as rxjsFrom, Observable as RxjsObservable } from \"rxjs\";\n\n/**\n * Helper method that creates an Observable from Iterable or Promise.\n * @public\n */\nexport function from<T>(iterable: Iterable<T> | PromiseLike<T>): Observable<T> {\n return rxjsFrom(iterable);\n}\n\n/**\n * Observable interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n *\n * To use it with [rxjs](https://github.com/ReactiveX/rxjs) operators wrap it inside\n * `Observable` from [rxjs](https://github.com/ReactiveX/rxjs). Example:\n *\n * ```\n * import { Observable as RxjsObservable } from \"rxjs\";\n *\n * new RxjsObservable((subscriber) => thisObservable.subscribe(subscriber));\n * ```\n *\n * @public\n */\nexport interface Observable<T> extends Subscribable<T> {} // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Subscribable interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface Subscribable<T> {\n subscribe(observer?: Observer<T>): Subscription;\n subscribe(\n next: null | undefined,\n error: null | undefined,\n complete: () => void\n ): Subscription;\n subscribe(\n next: null | undefined,\n error: (error: any) => void,\n complete?: () => void\n ): Subscription;\n subscribe(\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n next: (value: T) => void,\n error: null | undefined,\n complete: () => void\n ): Subscription;\n subscribe(\n next?: (value: T) => void,\n error?: (error: any) => void,\n complete?: () => void\n ): Subscription;\n}\n\n/**\n * Observer interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport declare type Observer<T> =\n | NextObserver<T>\n | ErrorObserver<T>\n | CompletionObserver<T>;\n\n/**\n * Unsubscribable interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface Unsubscribable {\n unsubscribe(): void;\n}\n\n/**\n * Subscription interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface Subscription extends Unsubscribable {\n readonly closed: boolean;\n unsubscribe(): void;\n add(tearDown: Unsubscribable | (() => void) | void): void;\n}\n\n/**\n * NextObserver interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface NextObserver<T> {\n closed?: boolean;\n next: (value: T) => void;\n error?: (err: any) => void;\n complete?: () => void;\n}\n\n/**\n * ErrorObserver interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface ErrorObserver<T> {\n closed?: boolean;\n next?: (value: T) => void;\n error: (err: any) => void;\n complete?: () => void;\n}\n\n/**\n * CompletionObserver interface compatible with [rxjs](https://github.com/ReactiveX/rxjs)\n * This interface ensures that consumers are not required to have rxjs as dependency.\n * @public\n */\nexport interface CompletionObserver<T> {\n closed?: boolean;\n next?: (value: T) => void;\n error?: (err: any) => void;\n complete: () => void;\n}\n\n/** @internal */\nexport function toRxjsObservable<T>(\n observable: Observable<T>\n): RxjsObservable<T> {\n return new RxjsObservable((subscriber) => {\n observable.subscribe(subscriber);\n });\n}\n"]}
@@ -19,8 +19,7 @@ export declare class TreeEventDispatcher implements TreeActions {
19
19
  private _getVisibleNodes;
20
20
  private _selectionManager;
21
21
  private _activeSelections;
22
- constructor(treeEvents: TreeEvents, nodeLoader: ITreeNodeLoader, selectionMode: SelectionMode, getVisibleNodes?: () => VisibleTreeNodes);
23
- setVisibleNodes(visibleNodes: () => VisibleTreeNodes): void;
22
+ constructor(treeEvents: TreeEvents, nodeLoader: ITreeNodeLoader, selectionMode: SelectionMode, getVisibleNodes: () => VisibleTreeNodes);
24
23
  onNodeCheckboxClicked(nodeId: string, newState: CheckBoxState): void;
25
24
  onNodeExpanded(nodeId: string): void;
26
25
  onNodeCollapsed(nodeId: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEventDispatcher.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventDispatcher.ts"],"names":[],"mappings":"AAIA;;GAEG;;AAwBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAU3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,gBAAgB,CAAuC;IAE/D,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,OAAO,CAAC,iBAAiB,CAKrB;gBAGF,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,eAAe,EAC3B,aAAa,EAAE,aAAa,EAC5B,eAAe,CAAC,EAAE,MAAM,gBAAgB;IAgFnC,eAAe,CAAC,YAAY,EAAE,MAAM,gBAAgB;IAKpD,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAoC7D,cAAc,CAAC,MAAM,EAAE,MAAM;IAM7B,eAAe,CAAC,MAAM,EAAE,MAAM;IAM9B,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC;IAcvC,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,qBAAqB,CAAC,MAAM,EAAE,MAAM;IAepC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IAI/C,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IAIpD,OAAO,CAAC,uBAAuB;IAkC/B,OAAO,CAAC,mBAAmB;IA6C3B,OAAO,CAAE,mBAAmB;IAgC5B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,MAAM,CAAC,wBAAwB;CAexC"}
1
+ {"version":3,"file":"TreeEventDispatcher.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventDispatcher.ts"],"names":[],"mappings":"AAIA;;GAEG;;AAsBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAU3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,OAAO,CAAC,iBAAiB,CAKrB;gBAGF,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,eAAe,EAC3B,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,MAAM,gBAAgB;IAmFlC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAsC7D,cAAc,CAAC,MAAM,EAAE,MAAM;IAM7B,eAAe,CAAC,MAAM,EAAE,MAAM;IAM9B,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC;IAYvC,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,qBAAqB,CAAC,MAAM,EAAE,MAAM;IAapC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IAI/C,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IAIpD,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,mBAAmB;IA+C3B,OAAO,CAAE,mBAAmB;IA4B5B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,MAAM,CAAC,wBAAwB;CAexC"}
@@ -5,29 +5,10 @@
5
5
  /** @packageDocumentation
6
6
  * @module Tree
7
7
  */
8
- import { concat } from "rxjs/internal/observable/concat";
9
- import { defer } from "rxjs/internal/observable/defer";
10
- import { EMPTY } from "rxjs/internal/observable/empty";
11
- import { from } from "rxjs/internal/observable/from";
12
- import { generate } from "rxjs/internal/observable/generate";
13
- import { merge } from "rxjs/internal/observable/merge";
14
- import { of } from "rxjs/internal/observable/of";
15
- import { zip } from "rxjs/internal/observable/zip";
16
- import { concatAll } from "rxjs/internal/operators/concatAll";
17
- import { concatMap } from "rxjs/internal/operators/concatMap";
18
- import { defaultIfEmpty } from "rxjs/internal/operators/defaultIfEmpty";
19
- import { distinctUntilChanged } from "rxjs/internal/operators/distinctUntilChanged";
20
- import { filter } from "rxjs/internal/operators/filter";
21
- import { finalize } from "rxjs/internal/operators/finalize";
22
- import { map } from "rxjs/internal/operators/map";
23
- import { mergeAll } from "rxjs/internal/operators/mergeAll";
24
- import { publishReplay } from "rxjs/internal/operators/publishReplay";
25
- import { refCount } from "rxjs/internal/operators/refCount";
26
- import { subscribeOn } from "rxjs/internal/operators/subscribeOn";
27
- import { toArray } from "rxjs/internal/operators/toArray";
28
- import { asapScheduler } from "rxjs/internal/scheduler/asap";
8
+ import { asapScheduler, concat, concatAll, concatMap, defer, distinctUntilChanged, EMPTY, filter, finalize, from, map, merge, mergeAll, of, shareReplay, subscribeOn, toArray, } from "rxjs";
29
9
  import { isRangeSelection, TreeSelectionManager, } from "./internal/TreeSelectionManager";
30
10
  import { isTreeModelNode } from "./TreeModel";
11
+ import { toRxjsObservable } from "./Observable";
31
12
  /**
32
13
  * Default event dispatcher that emits tree events according performed actions.
33
14
  * It converts low level tree events into TreeEvents.
@@ -41,10 +22,12 @@ export class TreeEventDispatcher {
41
22
  this._getVisibleNodes = getVisibleNodes;
42
23
  this._selectionManager = new TreeSelectionManager(selectionMode, this._getVisibleNodes);
43
24
  this._selectionManager.onDragSelection.addListener(({ selectionChanges }) => {
44
- const modifications = from(selectionChanges).pipe(map(({ selectedNodes, deselectedNodes }) => from(this.collectSelectionChanges(selectedNodes, [])).pipe(concatMap(({ selectedNodeItems }) => from(selectedNodeItems)), toArray(), map((collectedIds) => ({
25
+ const modifications = selectionChanges.pipe(map(({ selectedNodes, deselectedNodes }) => this.collectSelectionChanges(selectedNodes, []).pipe(concatMap(({ selectedNodeItems }) => from(selectedNodeItems)), toArray(), map((collectedIds) => ({
45
26
  selectedNodeItems: collectedIds,
46
27
  deselectedNodeItems: this.collectNodeItems(deselectedNodes),
47
- })))), concatAll(), publishReplay(), refCount());
28
+ })))), concatAll(), shareReplay({
29
+ refCount: true,
30
+ }));
48
31
  /* istanbul ignore else */
49
32
  if (this._treeEvents.onSelectionModified !== undefined)
50
33
  this._treeEvents.onSelectionModified({ modifications });
@@ -55,7 +38,9 @@ export class TreeEventDispatcher {
55
38
  return EMPTY;
56
39
  }), this.collectSelectionChanges(selectedNodes, deselectedNodes)).pipe(finalize(() => {
57
40
  this._activeSelections.delete(modifications);
58
- }), publishReplay(), refCount());
41
+ }), shareReplay({
42
+ refCount: true,
43
+ }));
59
44
  /* istanbul ignore else */
60
45
  if (this._treeEvents.onSelectionModified !== undefined)
61
46
  this._treeEvents.onSelectionModified({ modifications });
@@ -66,19 +51,15 @@ export class TreeEventDispatcher {
66
51
  return EMPTY;
67
52
  }), this.collectSelectionChanges(selectedNodeIds, [])).pipe(finalize(() => {
68
53
  this._activeSelections.delete(replacements);
69
- }), publishReplay(), refCount());
54
+ }), shareReplay({
55
+ refCount: true,
56
+ }));
70
57
  /* istanbul ignore else */
71
58
  if (this._treeEvents.onSelectionReplaced !== undefined)
72
59
  this._treeEvents.onSelectionReplaced({ replacements });
73
60
  });
74
61
  }
75
- setVisibleNodes(visibleNodes) {
76
- this._getVisibleNodes = visibleNodes;
77
- this._selectionManager.setVisibleNodes(visibleNodes);
78
- }
79
62
  onNodeCheckboxClicked(nodeId, newState) {
80
- if (this._getVisibleNodes === undefined)
81
- return;
82
63
  const visibleNodes = this._getVisibleNodes();
83
64
  const clickedNode = visibleNodes.getModel().getNode(nodeId);
84
65
  if (clickedNode === undefined)
@@ -94,7 +75,9 @@ export class TreeEventDispatcher {
94
75
  }
95
76
  }
96
77
  }
97
- const stateChanges = concat(of(immediateStateChanges), from(this._activeSelections).pipe(mergeAll(), map(({ selectedNodeItems }) => selectedNodeItems.map((item) => ({ nodeItem: item, newState }))))).pipe(publishReplay(), refCount());
78
+ const stateChanges = concat(of(immediateStateChanges), from(this._activeSelections).pipe(mergeAll(), map(({ selectedNodeItems }) => selectedNodeItems.map((item) => ({ nodeItem: item, newState }))))).pipe(shareReplay({
79
+ refCount: true,
80
+ }));
98
81
  /* istanbul ignore else */
99
82
  if (this._treeEvents.onCheckboxStateChanged !== undefined)
100
83
  this._treeEvents.onCheckboxStateChanged({ stateChanges });
@@ -110,9 +93,7 @@ export class TreeEventDispatcher {
110
93
  this._treeEvents.onNodeCollapsed({ nodeId });
111
94
  }
112
95
  onNodeClicked(nodeId, event) {
113
- const node = this._getVisibleNodes
114
- ? this._getVisibleNodes().getModel().getNode(nodeId)
115
- : undefined;
96
+ const node = this._getVisibleNodes().getModel().getNode(nodeId);
116
97
  const isNodeSelected = node ? node.isSelected : false;
117
98
  this._selectionManager.onNodeClicked(nodeId, event);
118
99
  // if clicked node was already selected fire delayed click event
@@ -127,9 +108,7 @@ export class TreeEventDispatcher {
127
108
  this._selectionManager.onNodeMouseMove(nodeId);
128
109
  }
129
110
  onNodeEditorActivated(nodeId) {
130
- const node = this._getVisibleNodes
131
- ? this._getVisibleNodes().getModel().getNode(nodeId)
132
- : /* istanbul ignore next */ undefined;
111
+ const node = this._getVisibleNodes().getModel().getNode(nodeId);
133
112
  const isNodeSelected = node ? node.isSelected : false;
134
113
  // if node was already selected, fire onNodeEditorActivated event
135
114
  if (isNodeSelected &&
@@ -146,16 +125,12 @@ export class TreeEventDispatcher {
146
125
  collectSelectionChanges(selection, deselection) {
147
126
  const deselectedItems = this.collectNodeItems(deselection);
148
127
  if (isRangeSelection(selection)) {
149
- return zip(this.collectNodesBetween(selection.from, selection.to).pipe(defaultIfEmpty([])),
150
- // Without a scheduler `generate` would block the main thread indefinitely
151
- generate({
152
- initialState: deselectedItems,
153
- iterate: () => [],
154
- scheduler: asapScheduler,
155
- })).pipe(map(([selectedNodeItems, deselectedNodeItems]) => ({
156
- selectedNodeItems,
157
- deselectedNodeItems,
158
- })));
128
+ return this.collectNodesBetween(selection.from, selection.to).pipe(map((selectedNodeItems, index) => {
129
+ return {
130
+ selectedNodeItems,
131
+ deselectedNodeItems: index === 0 ? deselectedItems : [],
132
+ };
133
+ }));
159
134
  }
160
135
  const selectedItems = this.collectNodeItems(selection);
161
136
  return of({
@@ -170,7 +145,7 @@ export class TreeEventDispatcher {
170
145
  ? this._getVisibleNodes().getModel().getNode(node.parentId)
171
146
  : this._getVisibleNodes().getModel().getRootNode();
172
147
  return parentNode
173
- ? this._nodeLoader.loadNode(parentNode, node.childIndex)
148
+ ? toRxjsObservable(this._nodeLoader.loadNode(parentNode, node.childIndex))
174
149
  : /* istanbul ignore next */ EMPTY;
175
150
  })).pipe(
176
151
  // We have requested multiple nodes that may belong to the same page.
@@ -186,9 +161,6 @@ export class TreeEventDispatcher {
186
161
  }
187
162
  *iterateNodesBetween(nodeId1, nodeId2) {
188
163
  let firstNodeFound = false;
189
- if (this._getVisibleNodes === undefined) {
190
- return;
191
- }
192
164
  for (const node of this._getVisibleNodes()) {
193
165
  if (firstNodeFound) {
194
166
  yield node;
@@ -210,9 +182,6 @@ export class TreeEventDispatcher {
210
182
  }
211
183
  collectNodeItems(nodeIds) {
212
184
  const items = [];
213
- if (this._getVisibleNodes === undefined) {
214
- return items;
215
- }
216
185
  for (const nodeId of nodeIds) {
217
186
  const node = this._getVisibleNodes().getModel().getNode(nodeId);
218
187
  // istanbul ignore else
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEventDispatcher.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventDispatcher.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 type { Observable } from \"rxjs/internal/Observable\";\nimport { concat } from \"rxjs/internal/observable/concat\";\nimport { defer } from \"rxjs/internal/observable/defer\";\nimport { EMPTY } from \"rxjs/internal/observable/empty\";\nimport { from } from \"rxjs/internal/observable/from\";\nimport { generate } from \"rxjs/internal/observable/generate\";\nimport { merge } from \"rxjs/internal/observable/merge\";\nimport { of } from \"rxjs/internal/observable/of\";\nimport { zip } from \"rxjs/internal/observable/zip\";\nimport { concatAll } from \"rxjs/internal/operators/concatAll\";\nimport { concatMap } from \"rxjs/internal/operators/concatMap\";\nimport { defaultIfEmpty } from \"rxjs/internal/operators/defaultIfEmpty\";\nimport { distinctUntilChanged } from \"rxjs/internal/operators/distinctUntilChanged\";\nimport { filter } from \"rxjs/internal/operators/filter\";\nimport { finalize } from \"rxjs/internal/operators/finalize\";\nimport { map } from \"rxjs/internal/operators/map\";\nimport { mergeAll } from \"rxjs/internal/operators/mergeAll\";\nimport { publishReplay } from \"rxjs/internal/operators/publishReplay\";\nimport { refCount } from \"rxjs/internal/operators/refCount\";\nimport { subscribeOn } from \"rxjs/internal/operators/subscribeOn\";\nimport { toArray } from \"rxjs/internal/operators/toArray\";\nimport { asapScheduler } from \"rxjs/internal/scheduler/asap\";\nimport type { CheckBoxState } from \"@itwin/core-react\";\nimport type { SelectionMode } from \"../../common/selection/SelectionModes\";\nimport type { TreeNodeItem } from \"../TreeDataProvider\";\nimport type {\n IndividualSelection,\n RangeSelection,\n} from \"./internal/TreeSelectionManager\";\nimport {\n isRangeSelection,\n TreeSelectionManager,\n} from \"./internal/TreeSelectionManager\";\nimport type { TreeActions } from \"./TreeActions\";\nimport type { TreeEvents } from \"./TreeEvents\";\nimport type {\n TreeModelNode,\n TreeModelNodePlaceholder,\n VisibleTreeNodes,\n} from \"./TreeModel\";\nimport { isTreeModelNode } from \"./TreeModel\";\nimport type { ITreeNodeLoader } from \"./TreeNodeLoader\";\n\n/**\n * Default event dispatcher that emits tree events according performed actions.\n * It converts low level tree events into TreeEvents.\n * @internal\n */\nexport class TreeEventDispatcher implements TreeActions {\n private _treeEvents: TreeEvents;\n private _nodeLoader: ITreeNodeLoader;\n private _getVisibleNodes: (() => VisibleTreeNodes) | undefined;\n\n private _selectionManager: TreeSelectionManager;\n\n private _activeSelections = new Set<\n Observable<{\n selectedNodeItems: TreeNodeItem[];\n deselectedNodeItems?: TreeNodeItem[];\n }>\n >();\n\n constructor(\n treeEvents: TreeEvents,\n nodeLoader: ITreeNodeLoader,\n selectionMode: SelectionMode,\n getVisibleNodes?: () => VisibleTreeNodes\n ) {\n this._treeEvents = treeEvents;\n this._nodeLoader = nodeLoader;\n this._getVisibleNodes = getVisibleNodes;\n\n this._selectionManager = new TreeSelectionManager(\n selectionMode,\n this._getVisibleNodes\n );\n\n this._selectionManager.onDragSelection.addListener(\n ({ selectionChanges }) => {\n const modifications = from(selectionChanges).pipe(\n map(({ selectedNodes, deselectedNodes }) =>\n from(this.collectSelectionChanges(selectedNodes, [])).pipe(\n concatMap(({ selectedNodeItems }) => from(selectedNodeItems)),\n toArray(),\n map((collectedIds) => ({\n selectedNodeItems: collectedIds,\n deselectedNodeItems: this.collectNodeItems(deselectedNodes),\n }))\n )\n ),\n concatAll(),\n publishReplay(),\n refCount()\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionModified !== undefined)\n this._treeEvents.onSelectionModified({ modifications });\n }\n );\n\n this._selectionManager.onSelectionChanged.addListener(\n ({ selectedNodes, deselectedNodes }) => {\n const modifications = merge(\n defer(() => {\n this._activeSelections.add(modifications);\n return EMPTY;\n }),\n this.collectSelectionChanges(selectedNodes, deselectedNodes)\n ).pipe(\n finalize(() => {\n this._activeSelections.delete(modifications);\n }),\n publishReplay(),\n refCount()\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionModified !== undefined)\n this._treeEvents.onSelectionModified({ modifications });\n }\n );\n\n this._selectionManager.onSelectionReplaced.addListener(\n ({ selectedNodeIds }) => {\n const replacements = merge(\n defer(() => {\n this._activeSelections.add(replacements);\n return EMPTY;\n }),\n this.collectSelectionChanges(selectedNodeIds, [])\n ).pipe(\n finalize(() => {\n this._activeSelections.delete(replacements);\n }),\n publishReplay(),\n refCount()\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionReplaced !== undefined)\n this._treeEvents.onSelectionReplaced({ replacements });\n }\n );\n }\n\n public setVisibleNodes(visibleNodes: () => VisibleTreeNodes) {\n this._getVisibleNodes = visibleNodes;\n this._selectionManager.setVisibleNodes(visibleNodes);\n }\n\n public onNodeCheckboxClicked(nodeId: string, newState: CheckBoxState) {\n if (this._getVisibleNodes === undefined) return;\n\n const visibleNodes = this._getVisibleNodes();\n const clickedNode = visibleNodes.getModel().getNode(nodeId);\n if (clickedNode === undefined) return;\n\n const immediateStateChanges = [{ nodeItem: clickedNode.item, newState }];\n if (clickedNode.isSelected) {\n for (const node of visibleNodes) {\n if (\n isTreeModelNode(node) &&\n node.id !== clickedNode.id &&\n node.isSelected &&\n node.checkbox.state !== newState\n ) {\n immediateStateChanges.push({ nodeItem: node.item, newState });\n }\n }\n }\n\n const stateChanges = concat(\n of(immediateStateChanges),\n from(this._activeSelections).pipe(\n mergeAll(),\n map(({ selectedNodeItems }) =>\n selectedNodeItems.map((item) => ({ nodeItem: item, newState }))\n )\n )\n ).pipe(publishReplay(), refCount());\n\n /* istanbul ignore else */\n if (this._treeEvents.onCheckboxStateChanged !== undefined)\n this._treeEvents.onCheckboxStateChanged({ stateChanges });\n }\n\n public onNodeExpanded(nodeId: string) {\n /* istanbul ignore else */\n if (this._treeEvents.onNodeExpanded !== undefined)\n this._treeEvents.onNodeExpanded({ nodeId });\n }\n\n public onNodeCollapsed(nodeId: string) {\n /* istanbul ignore else */\n if (this._treeEvents.onNodeCollapsed !== undefined)\n this._treeEvents.onNodeCollapsed({ nodeId });\n }\n\n public onNodeClicked(\n nodeId: string,\n event: React.MouseEvent<Element, MouseEvent>\n ) {\n const node = this._getVisibleNodes\n ? this._getVisibleNodes().getModel().getNode(nodeId)\n : undefined;\n const isNodeSelected = node ? node.isSelected : false;\n this._selectionManager.onNodeClicked(nodeId, event);\n\n // if clicked node was already selected fire delayed click event\n if (isNodeSelected && this._treeEvents.onDelayedNodeClick !== undefined) {\n this._treeEvents.onDelayedNodeClick({ nodeId });\n }\n }\n\n public onNodeMouseDown(nodeId: string) {\n this._selectionManager.onNodeMouseDown(nodeId);\n }\n\n public onNodeMouseMove(nodeId: string) {\n this._selectionManager.onNodeMouseMove(nodeId);\n }\n\n public onNodeEditorActivated(nodeId: string) {\n const node = this._getVisibleNodes\n ? this._getVisibleNodes().getModel().getNode(nodeId)\n : /* istanbul ignore next */ undefined;\n const isNodeSelected = node ? node.isSelected : false;\n\n // if node was already selected, fire onNodeEditorActivated event\n if (\n isNodeSelected &&\n this._treeEvents.onNodeEditorActivated !== undefined\n ) {\n this._treeEvents.onNodeEditorActivated({ nodeId });\n }\n }\n\n public onTreeKeyDown(event: React.KeyboardEvent): void {\n this._selectionManager.onTreeKeyDown(event, this);\n }\n\n public onTreeKeyUp(event: React.KeyboardEvent): void {\n this._selectionManager.onTreeKeyUp(event, this);\n }\n\n private collectSelectionChanges(\n selection: IndividualSelection | RangeSelection,\n deselection: IndividualSelection\n ): Observable<{\n selectedNodeItems: TreeNodeItem[];\n deselectedNodeItems: TreeNodeItem[];\n }> {\n const deselectedItems = this.collectNodeItems(deselection);\n if (isRangeSelection(selection)) {\n return zip(\n this.collectNodesBetween(selection.from, selection.to).pipe(\n defaultIfEmpty([] as TreeNodeItem[])\n ),\n // Without a scheduler `generate` would block the main thread indefinitely\n generate({\n initialState: deselectedItems,\n iterate: () => [],\n scheduler: asapScheduler,\n })\n ).pipe(\n map(([selectedNodeItems, deselectedNodeItems]) => ({\n selectedNodeItems,\n deselectedNodeItems,\n }))\n );\n }\n\n const selectedItems = this.collectNodeItems(selection);\n return of({\n selectedNodeItems: selectedItems,\n deselectedNodeItems: deselectedItems,\n });\n }\n\n private collectNodesBetween(\n nodeId1: string,\n nodeId2: string\n ): Observable<TreeNodeItem[]> {\n const [readyNodes, nodesToLoad] =\n TreeEventDispatcher.groupNodesByLoadingState(\n this.iterateNodesBetween(nodeId1, nodeId2)\n );\n\n const loadedSelectedNodes = from(\n nodesToLoad.map((node) => {\n const parentNode = node.parentId\n ? this._getVisibleNodes!().getModel().getNode(node.parentId)\n : this._getVisibleNodes!().getModel().getRootNode();\n return parentNode\n ? this._nodeLoader.loadNode(parentNode, node.childIndex)\n : /* istanbul ignore next */ EMPTY;\n })\n ).pipe(\n // We have requested multiple nodes that may belong to the same page.\n // When the page loads we only want to process the loaded nodes once.\n // Making assumption that loaded nodes from the same page will be emitted without interruptions.\n // Maybe we could simplify this to `this._nodeLoader.loadNodes(nodesToLoad)`?\n mergeAll(),\n distinctUntilChanged()\n );\n\n return concat(\n of(\n readyNodes\n .filter((node) => !node.isSelectionDisabled)\n .map((node) => node.item)\n ),\n loadedSelectedNodes.pipe(\n map(({ loadedNodes }) =>\n loadedNodes.filter((item) => !item.isSelectionDisabled)\n )\n )\n ).pipe(\n filter((nodeItems) => nodeItems.length > 0),\n // Give enough time for multiple subscribers to subscribe before any emissions begin\n subscribeOn(asapScheduler)\n );\n }\n\n private *iterateNodesBetween(\n nodeId1: string,\n nodeId2: string\n ): Iterable<TreeModelNode | TreeModelNodePlaceholder> {\n let firstNodeFound = false;\n if (this._getVisibleNodes === undefined) {\n return;\n }\n\n for (const node of this._getVisibleNodes()) {\n if (firstNodeFound) {\n yield node;\n }\n\n if (isTreeModelNode(node)) {\n if (nodeId1 === nodeId2 && node.id === nodeId1) {\n yield node;\n return;\n }\n\n if (node.id === nodeId1 || node.id === nodeId2) {\n if (firstNodeFound) {\n return;\n }\n\n firstNodeFound = true;\n yield node;\n }\n }\n }\n }\n\n private collectNodeItems(nodeIds: string[]): TreeNodeItem[] {\n const items: TreeNodeItem[] = [];\n if (this._getVisibleNodes === undefined) {\n return items;\n }\n\n for (const nodeId of nodeIds) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n // istanbul ignore else\n if (node !== undefined && !node.isSelectionDisabled) {\n items.push(node.item);\n }\n }\n return items;\n }\n\n private static groupNodesByLoadingState(\n nodes: Iterable<TreeModelNode | TreeModelNodePlaceholder>\n ): [TreeModelNode[], TreeModelNodePlaceholder[]] {\n const loadedNodeItems: TreeModelNode[] = [];\n const nodesToLoad: TreeModelNodePlaceholder[] = [];\n for (const node of nodes) {\n if (isTreeModelNode(node)) {\n loadedNodeItems.push(node);\n } else {\n nodesToLoad.push(node);\n }\n }\n\n return [loadedNodeItems, nodesToLoad];\n }\n}\n"]}
1
+ {"version":3,"file":"TreeEventDispatcher.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventDispatcher.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 type { Observable } from \"rxjs\";\nimport {\n asapScheduler,\n concat,\n concatAll,\n concatMap,\n defer,\n distinctUntilChanged,\n EMPTY,\n filter,\n finalize,\n from,\n map,\n merge,\n mergeAll,\n of,\n shareReplay,\n subscribeOn,\n toArray,\n} from \"rxjs\";\nimport type { CheckBoxState } from \"@itwin/core-react\";\nimport type { SelectionMode } from \"../../common/selection/SelectionModes\";\nimport type { TreeNodeItem } from \"../TreeDataProvider\";\nimport type {\n IndividualSelection,\n RangeSelection,\n} from \"./internal/TreeSelectionManager\";\nimport {\n isRangeSelection,\n TreeSelectionManager,\n} from \"./internal/TreeSelectionManager\";\nimport type { TreeActions } from \"./TreeActions\";\nimport type { TreeEvents } from \"./TreeEvents\";\nimport type {\n TreeModelNode,\n TreeModelNodePlaceholder,\n VisibleTreeNodes,\n} from \"./TreeModel\";\nimport { isTreeModelNode } from \"./TreeModel\";\nimport type { ITreeNodeLoader } from \"./TreeNodeLoader\";\nimport { toRxjsObservable } from \"./Observable\";\n\n/**\n * Default event dispatcher that emits tree events according performed actions.\n * It converts low level tree events into TreeEvents.\n * @internal\n */\nexport class TreeEventDispatcher implements TreeActions {\n private _treeEvents: TreeEvents;\n private _nodeLoader: ITreeNodeLoader;\n private _getVisibleNodes: () => VisibleTreeNodes;\n\n private _selectionManager: TreeSelectionManager;\n\n private _activeSelections = new Set<\n Observable<{\n selectedNodeItems: TreeNodeItem[];\n deselectedNodeItems?: TreeNodeItem[];\n }>\n >();\n\n constructor(\n treeEvents: TreeEvents,\n nodeLoader: ITreeNodeLoader,\n selectionMode: SelectionMode,\n getVisibleNodes: () => VisibleTreeNodes\n ) {\n this._treeEvents = treeEvents;\n this._nodeLoader = nodeLoader;\n this._getVisibleNodes = getVisibleNodes;\n\n this._selectionManager = new TreeSelectionManager(\n selectionMode,\n this._getVisibleNodes\n );\n\n this._selectionManager.onDragSelection.addListener(\n ({ selectionChanges }) => {\n const modifications = selectionChanges.pipe(\n map(({ selectedNodes, deselectedNodes }) =>\n this.collectSelectionChanges(selectedNodes, []).pipe(\n concatMap(({ selectedNodeItems }) => from(selectedNodeItems)),\n toArray(),\n map((collectedIds) => ({\n selectedNodeItems: collectedIds,\n deselectedNodeItems: this.collectNodeItems(deselectedNodes),\n }))\n )\n ),\n concatAll(),\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionModified !== undefined)\n this._treeEvents.onSelectionModified({ modifications });\n }\n );\n\n this._selectionManager.onSelectionChanged.addListener(\n ({ selectedNodes, deselectedNodes }) => {\n const modifications = merge(\n defer(() => {\n this._activeSelections.add(modifications);\n return EMPTY;\n }),\n this.collectSelectionChanges(selectedNodes, deselectedNodes)\n ).pipe(\n finalize(() => {\n this._activeSelections.delete(modifications);\n }),\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionModified !== undefined)\n this._treeEvents.onSelectionModified({ modifications });\n }\n );\n\n this._selectionManager.onSelectionReplaced.addListener(\n ({ selectedNodeIds }) => {\n const replacements = merge(\n defer(() => {\n this._activeSelections.add(replacements);\n return EMPTY;\n }),\n this.collectSelectionChanges(selectedNodeIds, [])\n ).pipe(\n finalize(() => {\n this._activeSelections.delete(replacements);\n }),\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionReplaced !== undefined)\n this._treeEvents.onSelectionReplaced({ replacements });\n }\n );\n }\n\n public onNodeCheckboxClicked(nodeId: string, newState: CheckBoxState) {\n const visibleNodes = this._getVisibleNodes();\n const clickedNode = visibleNodes.getModel().getNode(nodeId);\n if (clickedNode === undefined) return;\n\n const immediateStateChanges = [{ nodeItem: clickedNode.item, newState }];\n if (clickedNode.isSelected) {\n for (const node of visibleNodes) {\n if (\n isTreeModelNode(node) &&\n node.id !== clickedNode.id &&\n node.isSelected &&\n node.checkbox.state !== newState\n ) {\n immediateStateChanges.push({ nodeItem: node.item, newState });\n }\n }\n }\n\n const stateChanges = concat(\n of(immediateStateChanges),\n from(this._activeSelections).pipe(\n mergeAll(),\n map(({ selectedNodeItems }) =>\n selectedNodeItems.map((item) => ({ nodeItem: item, newState }))\n )\n )\n ).pipe(\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onCheckboxStateChanged !== undefined)\n this._treeEvents.onCheckboxStateChanged({ stateChanges });\n }\n\n public onNodeExpanded(nodeId: string) {\n /* istanbul ignore else */\n if (this._treeEvents.onNodeExpanded !== undefined)\n this._treeEvents.onNodeExpanded({ nodeId });\n }\n\n public onNodeCollapsed(nodeId: string) {\n /* istanbul ignore else */\n if (this._treeEvents.onNodeCollapsed !== undefined)\n this._treeEvents.onNodeCollapsed({ nodeId });\n }\n\n public onNodeClicked(\n nodeId: string,\n event: React.MouseEvent<Element, MouseEvent>\n ) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n const isNodeSelected = node ? node.isSelected : false;\n this._selectionManager.onNodeClicked(nodeId, event);\n\n // if clicked node was already selected fire delayed click event\n if (isNodeSelected && this._treeEvents.onDelayedNodeClick !== undefined) {\n this._treeEvents.onDelayedNodeClick({ nodeId });\n }\n }\n\n public onNodeMouseDown(nodeId: string) {\n this._selectionManager.onNodeMouseDown(nodeId);\n }\n\n public onNodeMouseMove(nodeId: string) {\n this._selectionManager.onNodeMouseMove(nodeId);\n }\n\n public onNodeEditorActivated(nodeId: string) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n const isNodeSelected = node ? node.isSelected : false;\n\n // if node was already selected, fire onNodeEditorActivated event\n if (\n isNodeSelected &&\n this._treeEvents.onNodeEditorActivated !== undefined\n ) {\n this._treeEvents.onNodeEditorActivated({ nodeId });\n }\n }\n\n public onTreeKeyDown(event: React.KeyboardEvent): void {\n this._selectionManager.onTreeKeyDown(event, this);\n }\n\n public onTreeKeyUp(event: React.KeyboardEvent): void {\n this._selectionManager.onTreeKeyUp(event, this);\n }\n\n private collectSelectionChanges(\n selection: IndividualSelection | RangeSelection,\n deselection: IndividualSelection\n ): Observable<{\n selectedNodeItems: TreeNodeItem[];\n deselectedNodeItems: TreeNodeItem[];\n }> {\n const deselectedItems = this.collectNodeItems(deselection);\n if (isRangeSelection(selection)) {\n return this.collectNodesBetween(selection.from, selection.to).pipe(\n map((selectedNodeItems, index) => {\n return {\n selectedNodeItems,\n deselectedNodeItems: index === 0 ? deselectedItems : [],\n };\n })\n );\n }\n\n const selectedItems = this.collectNodeItems(selection);\n return of({\n selectedNodeItems: selectedItems,\n deselectedNodeItems: deselectedItems,\n });\n }\n\n private collectNodesBetween(\n nodeId1: string,\n nodeId2: string\n ): Observable<TreeNodeItem[]> {\n const [readyNodes, nodesToLoad] =\n TreeEventDispatcher.groupNodesByLoadingState(\n this.iterateNodesBetween(nodeId1, nodeId2)\n );\n\n const loadedSelectedNodes = from(\n nodesToLoad.map((node) => {\n const parentNode = node.parentId\n ? this._getVisibleNodes().getModel().getNode(node.parentId)\n : this._getVisibleNodes().getModel().getRootNode();\n return parentNode\n ? toRxjsObservable(\n this._nodeLoader.loadNode(parentNode, node.childIndex)\n )\n : /* istanbul ignore next */ EMPTY;\n })\n ).pipe(\n // We have requested multiple nodes that may belong to the same page.\n // When the page loads we only want to process the loaded nodes once.\n // Making assumption that loaded nodes from the same page will be emitted without interruptions.\n // Maybe we could simplify this to `this._nodeLoader.loadNodes(nodesToLoad)`?\n mergeAll(),\n distinctUntilChanged()\n );\n\n return concat(\n of(\n readyNodes\n .filter((node) => !node.isSelectionDisabled)\n .map((node) => node.item)\n ),\n loadedSelectedNodes.pipe(\n map(({ loadedNodes }) =>\n loadedNodes.filter((item) => !item.isSelectionDisabled)\n )\n )\n ).pipe(\n filter((nodeItems) => nodeItems.length > 0),\n // Give enough time for multiple subscribers to subscribe before any emissions begin\n subscribeOn(asapScheduler)\n );\n }\n\n private *iterateNodesBetween(\n nodeId1: string,\n nodeId2: string\n ): Iterable<TreeModelNode | TreeModelNodePlaceholder> {\n let firstNodeFound = false;\n for (const node of this._getVisibleNodes()) {\n if (firstNodeFound) {\n yield node;\n }\n\n if (isTreeModelNode(node)) {\n if (nodeId1 === nodeId2 && node.id === nodeId1) {\n yield node;\n return;\n }\n\n if (node.id === nodeId1 || node.id === nodeId2) {\n if (firstNodeFound) {\n return;\n }\n\n firstNodeFound = true;\n yield node;\n }\n }\n }\n }\n\n private collectNodeItems(nodeIds: string[]): TreeNodeItem[] {\n const items: TreeNodeItem[] = [];\n for (const nodeId of nodeIds) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n // istanbul ignore else\n if (node !== undefined && !node.isSelectionDisabled) {\n items.push(node.item);\n }\n }\n return items;\n }\n\n private static groupNodesByLoadingState(\n nodes: Iterable<TreeModelNode | TreeModelNodePlaceholder>\n ): [TreeModelNode[], TreeModelNodePlaceholder[]] {\n const loadedNodeItems: TreeModelNode[] = [];\n const nodesToLoad: TreeModelNodePlaceholder[] = [];\n for (const node of nodes) {\n if (isTreeModelNode(node)) {\n loadedNodeItems.push(node);\n } else {\n nodesToLoad.push(node);\n }\n }\n\n return [loadedNodeItems, nodesToLoad];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEventHandler.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EACV,gCAAgC,EAChC,UAAU,EACV,iBAAiB,EACjB,kCAAkC,EAClC,iCAAiC,EAClC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,aAAa,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,WAAW,EAAE,eAAe,CAAC;IAC7B,+DAA+D;IAC/D,UAAU,EAAE,eAAe,CAAC;IAC5B,0FAA0F;IAC1F,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,wCAAwC;IACxC,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,UAAU,EAAE,WAAW;IAC9D,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,cAAc,CAAC,CAAoB;IAE3C,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,kBAAkB,CAAiB;gBAE/B,MAAM,EAAE,sBAAsB;IAS1C,mCAAmC;IAC5B,OAAO;IAId,IAAW,WAAW,oBAErB;IAED,gDAAgD;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAMnD,qBAAqB;IACd,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAIpD,kHAAkH;IAC3G,mBAAmB,CAAC,EACzB,aAAa,GACd,EAAE,kCAAkC,GAAG,YAAY,GAAG,SAAS;IAahE,gIAAgI;IACzH,mBAAmB,CAAC,EACzB,YAAY,GACb,EAAE,iCAAiC,GAAG,YAAY,GAAG,SAAS;IAkB/D,qCAAqC;IAC9B,sBAAsB,CAAC,EAC5B,YAAY,GACb,EAAE,gCAAgC,GAAG,YAAY,GAAG,SAAS;IAM9D,sFAAsF;IAC/E,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAIvD,sFAAsF;IAC/E,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAI1D,sFAAsF;IACtF,OAAO,CAAC,cAAc;CAQvB"}
1
+ {"version":3,"file":"TreeEventHandler.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EACV,gCAAgC,EAChC,UAAU,EACV,iBAAiB,EACjB,kCAAkC,EAClC,iCAAiC,EAClC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,aAAa,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,WAAW,EAAE,eAAe,CAAC;IAC7B,+DAA+D;IAC/D,UAAU,EAAE,eAAe,CAAC;IAC5B,0FAA0F;IAC1F,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,wCAAwC;IACxC,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,UAAU,EAAE,WAAW;IAC9D,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,cAAc,CAAC,CAAoB;IAE3C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,kBAAkB,CAAuB;gBAErC,MAAM,EAAE,sBAAsB;IAS1C,mCAAmC;IAC5B,OAAO;IAId,IAAW,WAAW,oBAErB;IAED,gDAAgD;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAMnD,qBAAqB;IACd,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAIpD,kHAAkH;IAC3G,mBAAmB,CAAC,EACzB,aAAa,GACd,EAAE,kCAAkC,GAAG,YAAY,GAAG,SAAS;IAahE,gIAAgI;IACzH,mBAAmB,CAAC,EACzB,YAAY,GACb,EAAE,iCAAiC,GAAG,YAAY,GAAG,SAAS;IAkB/D,qCAAqC;IAC9B,sBAAsB,CAAC,EAC5B,YAAY,GACb,EAAE,gCAAgC,GAAG,YAAY,GAAG,SAAS;IAM9D,sFAAsF;IAC/E,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAIvD,sFAAsF;IAC/E,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAI1D,sFAAsF;IACtF,OAAO,CAAC,cAAc;CAQvB"}
@@ -5,8 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module Tree
7
7
  */
8
- import { takeUntil } from "rxjs/internal/operators/takeUntil";
9
- import { Subject } from "rxjs/internal/Subject";
8
+ import { Subject, takeUntil } from "rxjs";
10
9
  import { TreeModelMutator } from "./internal/TreeModelMutator";
11
10
  import { toRxjsObservable } from "./Observable";
12
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEventHandler.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventHandler.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 { takeUntil } from \"rxjs/internal/operators/takeUntil\";\nimport { Subject } from \"rxjs/internal/Subject\";\nimport type { IDisposable } from \"@itwin/core-bentley\";\nimport { TreeModelMutator } from \"./internal/TreeModelMutator\";\nimport type { Subscription } from \"./Observable\";\nimport { toRxjsObservable } from \"./Observable\";\nimport type {\n TreeCheckboxStateChangeEventArgs,\n TreeEvents,\n TreeNodeEventArgs,\n TreeSelectionModificationEventArgs,\n TreeSelectionReplacementEventArgs,\n} from \"./TreeEvents\";\nimport type { TreeModelNode } from \"./TreeModel\";\nimport type { TreeModelSource } from \"./TreeModelSource\";\nimport type { ITreeNodeLoader } from \"./TreeNodeLoader\";\n\n/**\n * Params used for tree node editing.\n * @public\n */\nexport interface TreeEditingParams {\n /** Callback that is called when node is updated. */\n onNodeUpdated: (node: TreeModelNode, newValue: string) => void;\n}\n\n/**\n * Data structure that describes tree event handler params.\n * @public\n */\nexport interface TreeEventHandlerParams {\n /** Model source used to modify tree model while handling events. */\n modelSource: TreeModelSource;\n /** Node loader used to load children when node is expanded. */\n nodeLoader: ITreeNodeLoader;\n /** Specifies whether children should be disposed when parent node is collapsed or not. */\n collapsedChildrenDisposalEnabled?: boolean;\n /** Parameters used for node editing. */\n editingParams?: TreeEditingParams;\n}\n\n/**\n * Default tree event handler.\n * @public\n */\nexport class TreeEventHandler implements TreeEvents, IDisposable {\n private _modelMutator: TreeModelMutator;\n private _editingParams?: TreeEditingParams;\n\n private _disposed = new Subject();\n private _selectionReplaced = new Subject();\n\n constructor(params: TreeEventHandlerParams) {\n this._modelMutator = new TreeModelMutator(\n params.modelSource,\n params.nodeLoader,\n !!params.collapsedChildrenDisposalEnabled\n );\n this._editingParams = params.editingParams;\n }\n\n /** Disposes tree event handler. */\n public dispose() {\n this._disposed.next();\n }\n\n public get modelSource() {\n return this._modelMutator.modelSource;\n }\n\n /** Expands node and starts loading children. */\n public onNodeExpanded({ nodeId }: TreeNodeEventArgs) {\n toRxjsObservable(this._modelMutator.expandNode(nodeId))\n .pipe(takeUntil(this._disposed))\n .subscribe();\n }\n\n /** Collapses node */\n public onNodeCollapsed({ nodeId }: TreeNodeEventArgs) {\n this._modelMutator.collapseNode(nodeId);\n }\n\n /** Selects and deselects nodes until event is handled, handler is disposed or selection replaced event occurs. */\n public onSelectionModified({\n modifications,\n }: TreeSelectionModificationEventArgs): Subscription | undefined {\n return toRxjsObservable(modifications)\n .pipe(takeUntil(this._disposed), takeUntil(this._selectionReplaced))\n .subscribe({\n next: ({ selectedNodeItems, deselectedNodeItems }) => {\n this._modelMutator.modifySelection(\n selectedNodeItems,\n deselectedNodeItems\n );\n },\n });\n }\n\n /** Replaces currently selected nodes until event is handled, handler is disposed or another selection replaced event occurs. */\n public onSelectionReplaced({\n replacements,\n }: TreeSelectionReplacementEventArgs): Subscription | undefined {\n this._selectionReplaced.next();\n\n let firstEmission = true;\n return toRxjsObservable(replacements)\n .pipe(takeUntil(this._disposed), takeUntil(this._selectionReplaced))\n .subscribe({\n next: ({ selectedNodeItems }) => {\n if (firstEmission) {\n firstEmission = false;\n this._modelMutator.replaceSelection(selectedNodeItems);\n }\n\n this._modelMutator.modifySelection(selectedNodeItems, []);\n },\n });\n }\n\n /** Changes nodes checkbox states. */\n public onCheckboxStateChanged({\n stateChanges,\n }: TreeCheckboxStateChangeEventArgs): Subscription | undefined {\n return stateChanges.subscribe((changes) =>\n this._modelMutator.setCheckboxStates(changes)\n );\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n public onDelayedNodeClick({ nodeId }: TreeNodeEventArgs) {\n this.activateEditor(nodeId);\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n public onNodeEditorActivated({ nodeId }: TreeNodeEventArgs) {\n this.activateEditor(nodeId);\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n private activateEditor(nodeId: string) {\n if (this._editingParams === undefined) return;\n\n this._modelMutator.activateEditing(\n nodeId,\n this._editingParams.onNodeUpdated\n );\n }\n}\n"]}
1
+ {"version":3,"file":"TreeEventHandler.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventHandler.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 { Subject, takeUntil } from \"rxjs\";\nimport type { IDisposable } from \"@itwin/core-bentley\";\nimport { TreeModelMutator } from \"./internal/TreeModelMutator\";\nimport type { Subscription } from \"./Observable\";\nimport { toRxjsObservable } from \"./Observable\";\nimport type {\n TreeCheckboxStateChangeEventArgs,\n TreeEvents,\n TreeNodeEventArgs,\n TreeSelectionModificationEventArgs,\n TreeSelectionReplacementEventArgs,\n} from \"./TreeEvents\";\nimport type { TreeModelNode } from \"./TreeModel\";\nimport type { TreeModelSource } from \"./TreeModelSource\";\nimport type { ITreeNodeLoader } from \"./TreeNodeLoader\";\n\n/**\n * Params used for tree node editing.\n * @public\n */\nexport interface TreeEditingParams {\n /** Callback that is called when node is updated. */\n onNodeUpdated: (node: TreeModelNode, newValue: string) => void;\n}\n\n/**\n * Data structure that describes tree event handler params.\n * @public\n */\nexport interface TreeEventHandlerParams {\n /** Model source used to modify tree model while handling events. */\n modelSource: TreeModelSource;\n /** Node loader used to load children when node is expanded. */\n nodeLoader: ITreeNodeLoader;\n /** Specifies whether children should be disposed when parent node is collapsed or not. */\n collapsedChildrenDisposalEnabled?: boolean;\n /** Parameters used for node editing. */\n editingParams?: TreeEditingParams;\n}\n\n/**\n * Default tree event handler.\n * @public\n */\nexport class TreeEventHandler implements TreeEvents, IDisposable {\n private _modelMutator: TreeModelMutator;\n private _editingParams?: TreeEditingParams;\n\n private _disposed = new Subject<void>();\n private _selectionReplaced = new Subject<void>();\n\n constructor(params: TreeEventHandlerParams) {\n this._modelMutator = new TreeModelMutator(\n params.modelSource,\n params.nodeLoader,\n !!params.collapsedChildrenDisposalEnabled\n );\n this._editingParams = params.editingParams;\n }\n\n /** Disposes tree event handler. */\n public dispose() {\n this._disposed.next();\n }\n\n public get modelSource() {\n return this._modelMutator.modelSource;\n }\n\n /** Expands node and starts loading children. */\n public onNodeExpanded({ nodeId }: TreeNodeEventArgs) {\n toRxjsObservable(this._modelMutator.expandNode(nodeId))\n .pipe(takeUntil(this._disposed))\n .subscribe();\n }\n\n /** Collapses node */\n public onNodeCollapsed({ nodeId }: TreeNodeEventArgs) {\n this._modelMutator.collapseNode(nodeId);\n }\n\n /** Selects and deselects nodes until event is handled, handler is disposed or selection replaced event occurs. */\n public onSelectionModified({\n modifications,\n }: TreeSelectionModificationEventArgs): Subscription | undefined {\n return toRxjsObservable(modifications)\n .pipe(takeUntil(this._disposed), takeUntil(this._selectionReplaced))\n .subscribe({\n next: ({ selectedNodeItems, deselectedNodeItems }) => {\n this._modelMutator.modifySelection(\n selectedNodeItems,\n deselectedNodeItems\n );\n },\n });\n }\n\n /** Replaces currently selected nodes until event is handled, handler is disposed or another selection replaced event occurs. */\n public onSelectionReplaced({\n replacements,\n }: TreeSelectionReplacementEventArgs): Subscription | undefined {\n this._selectionReplaced.next();\n\n let firstEmission = true;\n return toRxjsObservable(replacements)\n .pipe(takeUntil(this._disposed), takeUntil(this._selectionReplaced))\n .subscribe({\n next: ({ selectedNodeItems }) => {\n if (firstEmission) {\n firstEmission = false;\n this._modelMutator.replaceSelection(selectedNodeItems);\n }\n\n this._modelMutator.modifySelection(selectedNodeItems, []);\n },\n });\n }\n\n /** Changes nodes checkbox states. */\n public onCheckboxStateChanged({\n stateChanges,\n }: TreeCheckboxStateChangeEventArgs): Subscription | undefined {\n return stateChanges.subscribe((changes) =>\n this._modelMutator.setCheckboxStates(changes)\n );\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n public onDelayedNodeClick({ nodeId }: TreeNodeEventArgs) {\n this.activateEditor(nodeId);\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n public onNodeEditorActivated({ nodeId }: TreeNodeEventArgs) {\n this.activateEditor(nodeId);\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n private activateEditor(nodeId: string) {\n if (this._editingParams === undefined) return;\n\n this._modelMutator.activateEditing(\n nodeId,\n this._editingParams.onNodeUpdated\n );\n }\n}\n"]}
@@ -121,7 +121,6 @@ export class MutableTreeModel {
121
121
  * @returns `true` on success, `false` otherwise.
122
122
  */
123
123
  changeNodeId(currentId, newId) {
124
- var _b, _c;
125
124
  const node = this.getNode(currentId);
126
125
  if (node === undefined) {
127
126
  return false;
@@ -135,7 +134,7 @@ export class MutableTreeModel {
135
134
  return false;
136
135
  }
137
136
  node.id = newId; // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
138
- for (const [childId] of (_c = (_b = this.getChildren(newId)) === null || _b === void 0 ? void 0 : _b.iterateValues()) !== null && _c !== void 0 ? _c : []) {
137
+ for (const [childId] of this.getChildren(newId)?.iterateValues() ?? []) {
139
138
  const child = this.getNode(childId);
140
139
  assert(child !== undefined);
141
140
  child.parentId = newId;
@@ -174,12 +173,12 @@ export class MutableTreeModel {
174
173
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
175
174
  sourceNode.parentId = targetParentId;
176
175
  const updateDepths = (parentId, depth) => {
177
- var _b, _c;
178
176
  const node = this.getNode(parentId);
179
177
  assert(node !== undefined);
180
178
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
181
179
  node.depth = depth;
182
- for (const [nodeId] of (_c = (_b = this.getChildren(parentId)) === null || _b === void 0 ? void 0 : _b.iterateValues()) !== null && _c !== void 0 ? _c : []) {
180
+ for (const [nodeId] of this.getChildren(parentId)?.iterateValues() ??
181
+ []) {
183
182
  updateDepths(nodeId, depth + 1);
184
183
  }
185
184
  };
@@ -206,7 +205,7 @@ export class MutableTreeModel {
206
205
  }
207
206
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
208
207
  parentNode.numChildren = numChildren;
209
- this._tree.setNumChildren(parentId, numChildren !== null && numChildren !== void 0 ? numChildren : 0);
208
+ this._tree.setNumChildren(parentId, numChildren ?? 0);
210
209
  }
211
210
  /** Removes children specified by id.
212
211
  * @param parentId id of the parent node.
@@ -337,11 +336,11 @@ export function getVisibleDescendants(model, parentNode, result = []) {
337
336
  return result;
338
337
  }
339
338
  function cloneSubree(source, target, parentId) {
340
- var _b, _c;
341
339
  target.setNumChildren(parentId, (parentId === undefined ? source.getRootNode() : source.getNode(parentId))
342
340
  .numChildren);
343
- for (const [childId, index] of (_c = (_b = source
344
- .getChildren(parentId)) === null || _b === void 0 ? void 0 : _b.iterateValues()) !== null && _c !== void 0 ? _c : []) {
341
+ for (const [childId, index] of source
342
+ .getChildren(parentId)
343
+ ?.iterateValues() ?? []) {
345
344
  const node = source.getNode(childId);
346
345
  target.setChildren(parentId, [{ ...node, isLoading: !!node.isLoading }], index);
347
346
  cloneSubree(source, target, childId);