@itwin/components-react 4.4.0 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/CHANGELOG.md +18 -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":"TreeSelectionManager.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/internal/TreeSelectionManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport { take } from \"rxjs/internal/operators/take\";\nimport { Subject } from \"rxjs/internal/Subject\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type {\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"../../../common/selection/SelectionHandler\";\nimport { SelectionHandler } from \"../../../common/selection/SelectionHandler\";\nimport type { SelectionMode } from \"../../../common/selection/SelectionModes\";\nimport type { Observable } from \"../Observable\";\nimport type { TreeActions } from \"../TreeActions\";\nimport type { TreeModelNode, VisibleTreeNodes } from \"../TreeModel\";\nimport { isTreeModelNode } from \"../TreeModel\";\nimport {\n isNavigationKey,\n ItemKeyboardNavigator,\n Orientation,\n} from \"@itwin/core-react\";\n\n/** @internal */\nexport interface SelectionReplacementEvent {\n selectedNodeIds: IndividualSelection | RangeSelection;\n}\n\n/** @internal */\nexport interface SelectionModificationEvent {\n selectedNodes: IndividualSelection | RangeSelection;\n deselectedNodes: IndividualSelection;\n}\n\n/** @internal */\nexport interface DragSelectionStartEvent {\n selectionChanges: Observable<SelectionModificationEvent>;\n}\n\n/** @internal */\nexport type IndividualSelection = string[];\n\n/** @internal */\nexport interface RangeSelection {\n from: string;\n to: string;\n}\n\n/** @internal */\nexport function isRangeSelection(selection: any): selection is RangeSelection {\n return (\n selection &&\n typeof selection.from === \"string\" &&\n typeof selection.to === \"string\"\n );\n}\n\n/** @internal */\nexport class TreeSelectionManager\n implements\n Pick<TreeActions, \"onNodeClicked\" | \"onNodeMouseDown\" | \"onNodeMouseMove\">\n{\n private _selectionHandler: SelectionHandler<Selection>;\n private _dragSelectionOperation?: Subject<SelectionModificationEvent>;\n private _itemHandlers: Array<Array<SingleSelectionHandler<string>>>;\n\n private _getVisibleNodes: (() => VisibleTreeNodes) | undefined;\n\n public onSelectionChanged = new BeUiEvent<SelectionModificationEvent>();\n public onSelectionReplaced = new BeUiEvent<SelectionReplacementEvent>();\n public onDragSelection = new BeUiEvent<DragSelectionStartEvent>();\n\n constructor(\n selectionMode: SelectionMode,\n getVisibleNodes?: () => VisibleTreeNodes\n ) {\n this._getVisibleNodes = getVisibleNodes;\n\n const onItemsSelected = (selections: Selection[], replacement: boolean) => {\n // Assumes that `selections` will only contain either a list of\n // `IndividualSelection` items or a single `RangeSelection` item.\n if (isIndividualSelection(selections[0])) {\n if (replacement) {\n this.onSelectionReplaced.emit({\n selectedNodeIds: selections as IndividualSelection,\n });\n } else {\n this.onSelectionChanged.emit({\n selectedNodes: selections as IndividualSelection,\n deselectedNodes: [],\n });\n }\n } else {\n if (replacement) {\n this.onSelectionReplaced.emit({\n selectedNodeIds: selections[0],\n });\n } else {\n this.onSelectionChanged.emit({\n selectedNodes: selections[0],\n deselectedNodes: [],\n });\n }\n }\n };\n\n const onItemsDeselected = (deselections: Selection[]) => {\n // Assumes that this will be always called with `IndividualSelection` items\n this.onSelectionChanged.emit({\n selectedNodes: [],\n deselectedNodes: deselections as IndividualSelection,\n });\n };\n\n this._selectionHandler = new SelectionHandler(\n selectionMode,\n onItemsSelected,\n onItemsDeselected\n );\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n const itemHandlers = new Proxy(\n {},\n {\n get(_target, prop) {\n if (prop === \"length\") {\n return _this._getVisibleNodes === undefined\n ? 0\n : _this._getVisibleNodes().getNumNodes();\n }\n\n // istanbul ignore next\n if (_this._getVisibleNodes === undefined) return undefined;\n\n const index: number = +(prop as string);\n const node = _this.getVisibleNodeAtIndex(\n _this._getVisibleNodes(),\n index\n );\n return new ItemHandler(node);\n },\n }\n ) as Array<SingleSelectionHandler<string>>;\n this._itemHandlers = [itemHandlers];\n }\n\n private getVisibleNodeAtIndex(\n nodes: VisibleTreeNodes | undefined,\n index: number\n ): TreeModelNode | undefined {\n const foundNode =\n nodes !== undefined\n ? nodes.getAtIndex(index)\n : /* istanbul ignore next */ undefined;\n return isTreeModelNode(foundNode) ? foundNode : undefined;\n }\n\n public setVisibleNodes(visibleNodes: (() => VisibleTreeNodes) | undefined) {\n this._getVisibleNodes = visibleNodes;\n }\n\n public onNodeClicked(nodeId: string, event: React.MouseEvent) {\n const selectionFunc = this._selectionHandler.createSelectionFunction(\n ...this.createSelectionHandlers(nodeId)\n );\n selectionFunc(event.shiftKey, event.ctrlKey);\n }\n\n public onNodeMouseDown(nodeId: string) {\n this._selectionHandler.createDragAction(\n this.createSelectionHandlers(nodeId)[0],\n this._itemHandlers,\n nodeId\n );\n window.addEventListener(\n \"mouseup\",\n () => {\n /* istanbul ignore else */\n if (this._dragSelectionOperation) {\n this._selectionHandler.completeDragAction();\n this._dragSelectionOperation.complete();\n this._dragSelectionOperation = undefined;\n }\n },\n { once: true }\n );\n this._dragSelectionOperation = new Subject();\n this._dragSelectionOperation.pipe(take(1)).subscribe((value) => {\n this.onDragSelection.emit({\n selectionChanges: this._dragSelectionOperation!,\n });\n this._dragSelectionOperation!.next(value);\n });\n }\n\n public onNodeMouseMove(nodeId: string) {\n this._selectionHandler.updateDragAction(nodeId);\n }\n\n private createSelectionHandlers(\n nodeId: string\n ): [MultiSelectionHandler<Selection>, SingleSelectionHandler<string>] {\n let deselectedAll = false;\n const multiSelectionHandler: MultiSelectionHandler<Selection> = {\n selectBetween: (item1, item2) => [\n { from: item1 as string, to: item2 as string },\n ],\n updateSelection: (selections, deselections) => {\n // Assumes `updateSelection` will never be called with selection ranges\n const selectedNodeIds = selections as string[];\n const deselectedNodeIds = deselections as string[];\n this._dragSelectionOperation!.next({\n selectedNodes: selectedNodeIds,\n deselectedNodes: deselectedNodeIds,\n });\n },\n deselectAll: () => {\n deselectedAll = true;\n },\n areEqual: (item1, item2) => item1 === item2,\n };\n\n const singleSelectionHandler: SingleSelectionHandler<string> = {\n preselect: () => {},\n select: () => {},\n deselect: () => {},\n isSelected: () => {\n if (deselectedAll || this._getVisibleNodes === undefined) {\n return false;\n }\n\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n return node !== undefined && node.isSelected;\n },\n item: () => nodeId,\n };\n\n return [multiSelectionHandler, singleSelectionHandler];\n }\n\n public onTreeKeyDown(event: React.KeyboardEvent, actions: TreeActions): void {\n this._onKeyboardEvent(event, actions, true);\n }\n\n public onTreeKeyUp(event: React.KeyboardEvent, actions: TreeActions): void {\n this._onKeyboardEvent(event, actions, false);\n }\n\n private _onKeyboardEvent = (\n e: React.KeyboardEvent,\n actions: TreeActions,\n isKeyDown: boolean\n ) => {\n if (isNavigationKey(e.key)) {\n // istanbul ignore next\n if (!this._getVisibleNodes) return;\n\n const processedNodeId = this._selectionHandler.processedItem;\n\n const isExpandable = (node: TreeModelNode): boolean =>\n !node.isLoading && node.numChildren !== 0;\n const isEditing = (node: TreeModelNode): boolean =>\n node.editingInfo !== undefined;\n\n // istanbul ignore else\n if (this._getVisibleNodes && isIndividualSelection(processedNodeId)) {\n const processedNode = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n // istanbul ignore next\n if (processedNode && isEditing(processedNode)) return;\n }\n\n const handleKeyboardSelectItem = (index: number) => {\n // istanbul ignore else\n if (this._getVisibleNodes) {\n const node = this.getVisibleNodeAtIndex(\n this._getVisibleNodes(),\n index\n );\n // istanbul ignore else\n if (node) {\n // istanbul ignore next\n if (isEditing(node)) return;\n\n const selectionFunc =\n this._selectionHandler.createSelectionFunction(\n ...this.createSelectionHandlers(node.id)\n );\n selectionFunc(e.shiftKey, e.ctrlKey);\n }\n }\n };\n const handleKeyboardActivateItem = (_index: number) => {\n // istanbul ignore else\n if (this._getVisibleNodes && isIndividualSelection(processedNodeId)) {\n const node = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n // istanbul ignore else\n if (node) {\n if (isExpandable(node)) {\n if (!node.isExpanded) actions.onNodeExpanded(node.id);\n else actions.onNodeCollapsed(node.id);\n } else {\n actions.onNodeEditorActivated(node.id);\n }\n }\n }\n };\n const handleCrossAxisArrowKey = (forward: boolean) => {\n // istanbul ignore else\n if (this._getVisibleNodes && isIndividualSelection(processedNodeId)) {\n const node = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n // istanbul ignore else\n if (node) {\n if (isExpandable(node)) {\n if (forward && !node.isExpanded) actions.onNodeExpanded(node.id);\n else if (!forward && node.isExpanded)\n actions.onNodeCollapsed(node.id);\n }\n }\n }\n };\n\n // istanbul ignore else\n if (isIndividualSelection(processedNodeId)) {\n const itemKeyboardNavigator = new ItemKeyboardNavigator(\n handleKeyboardSelectItem,\n handleKeyboardActivateItem\n );\n itemKeyboardNavigator.orientation = Orientation.Vertical;\n itemKeyboardNavigator.crossAxisArrowKeyHandler =\n handleCrossAxisArrowKey;\n itemKeyboardNavigator.allowWrap = false;\n itemKeyboardNavigator.itemCount = this._getVisibleNodes().getNumNodes();\n\n const index = this._getVisibleNodes().getIndexOfNode(processedNodeId);\n isKeyDown\n ? itemKeyboardNavigator.handleKeyDownEvent(e, index)\n : itemKeyboardNavigator.handleKeyUpEvent(e, index);\n }\n }\n };\n}\n\ntype Selection = string | RangeSelection;\n\nfunction isIndividualSelection(\n selection: Selection | undefined\n): selection is string {\n return typeof selection === \"string\";\n}\n\nclass ItemHandler implements SingleSelectionHandler<string> {\n private _node: TreeModelNode | undefined;\n\n constructor(node: TreeModelNode | undefined) {\n this._node = node;\n }\n\n /* istanbul ignore next: noop */\n public preselect() {}\n\n /* istanbul ignore next: noop */\n public select() {}\n\n /* istanbul ignore next: noop */\n public deselect() {}\n\n // eslint-disable-next-line @itwin/prefer-get\n public isSelected(): boolean {\n // istanbul ignore next\n return !!this._node?.isSelected;\n }\n\n public item(): string {\n return this._node?.id ?? \"\";\n }\n}\n"]}
1
+ {"version":3,"file":"TreeSelectionManager.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/internal/TreeSelectionManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport type { Observable } from \"rxjs\";\nimport { Subject } from \"rxjs\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type {\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"../../../common/selection/SelectionHandler\";\nimport { SelectionHandler } from \"../../../common/selection/SelectionHandler\";\nimport type { SelectionMode } from \"../../../common/selection/SelectionModes\";\nimport type { TreeActions } from \"../TreeActions\";\nimport type { TreeModelNode, VisibleTreeNodes } from \"../TreeModel\";\nimport { isTreeModelNode } from \"../TreeModel\";\nimport {\n isNavigationKey,\n ItemKeyboardNavigator,\n Orientation,\n} from \"@itwin/core-react\";\n\n/** @internal */\nexport interface SelectionReplacementEvent {\n selectedNodeIds: IndividualSelection | RangeSelection;\n}\n\n/** @internal */\nexport interface SelectionModificationEvent {\n selectedNodes: IndividualSelection | RangeSelection;\n deselectedNodes: IndividualSelection;\n}\n\n/** @internal */\nexport interface DragSelectionStartEvent {\n selectionChanges: Observable<SelectionModificationEvent>;\n}\n\n/** @internal */\nexport type IndividualSelection = string[];\n\n/** @internal */\nexport interface RangeSelection {\n from: string;\n to: string;\n}\n\n/** @internal */\nexport function isRangeSelection(selection: any): selection is RangeSelection {\n return (\n selection &&\n typeof selection.from === \"string\" &&\n typeof selection.to === \"string\"\n );\n}\n\n/** @internal */\nexport class TreeSelectionManager\n implements\n Pick<TreeActions, \"onNodeClicked\" | \"onNodeMouseDown\" | \"onNodeMouseMove\">\n{\n private _selectionHandler: SelectionHandler<Selection>;\n private _dragSelectionOperation?: Subject<SelectionModificationEvent>;\n private _itemHandlers: Array<Array<SingleSelectionHandler<string>>>;\n\n private _getVisibleNodes: () => VisibleTreeNodes;\n\n public onSelectionChanged = new BeUiEvent<SelectionModificationEvent>();\n public onSelectionReplaced = new BeUiEvent<SelectionReplacementEvent>();\n public onDragSelection = new BeUiEvent<DragSelectionStartEvent>();\n\n constructor(\n selectionMode: SelectionMode,\n getVisibleNodes: () => VisibleTreeNodes\n ) {\n this._getVisibleNodes = getVisibleNodes;\n\n const onItemsSelected = (selections: Selection[], replacement: boolean) => {\n // Assumes that `selections` will only contain either a list of\n // `IndividualSelection` items or a single `RangeSelection` item.\n if (isIndividualSelection(selections[0])) {\n if (replacement) {\n this.onSelectionReplaced.emit({\n selectedNodeIds: selections as IndividualSelection,\n });\n } else {\n this.onSelectionChanged.emit({\n selectedNodes: selections as IndividualSelection,\n deselectedNodes: [],\n });\n }\n } else {\n if (replacement) {\n this.onSelectionReplaced.emit({\n selectedNodeIds: selections[0],\n });\n } else {\n this.onSelectionChanged.emit({\n selectedNodes: selections[0],\n deselectedNodes: [],\n });\n }\n }\n };\n\n const onItemsDeselected = (deselections: Selection[]) => {\n // Assumes that this will be always called with `IndividualSelection` items\n this.onSelectionChanged.emit({\n selectedNodes: [],\n deselectedNodes: deselections as IndividualSelection,\n });\n };\n\n this._selectionHandler = new SelectionHandler(\n selectionMode,\n onItemsSelected,\n onItemsDeselected\n );\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n const itemHandlers = new Proxy(\n {},\n {\n get(_target, prop) {\n if (prop === \"length\") {\n return _this._getVisibleNodes().getNumNodes();\n }\n\n const index: number = +(prop as string);\n const node = _this.getVisibleNodeAtIndex(\n _this._getVisibleNodes(),\n index\n );\n return new ItemHandler(node);\n },\n }\n ) as Array<SingleSelectionHandler<string>>;\n this._itemHandlers = [itemHandlers];\n }\n\n private getVisibleNodeAtIndex(\n nodes: VisibleTreeNodes | undefined,\n index: number\n ): TreeModelNode | undefined {\n const foundNode =\n nodes !== undefined\n ? nodes.getAtIndex(index)\n : /* istanbul ignore next */ undefined;\n return isTreeModelNode(foundNode) ? foundNode : undefined;\n }\n\n public onNodeClicked(nodeId: string, event: React.MouseEvent) {\n const selectionFunc = this._selectionHandler.createSelectionFunction(\n ...this.createSelectionHandlers(nodeId)\n );\n selectionFunc(event.shiftKey, event.ctrlKey);\n }\n\n public onNodeMouseDown(nodeId: string) {\n this._selectionHandler.createDragAction(\n this.createSelectionHandlers(nodeId)[0],\n this._itemHandlers,\n nodeId\n );\n window.addEventListener(\n \"mouseup\",\n () => {\n /* istanbul ignore else */\n if (this._dragSelectionOperation) {\n this._selectionHandler.completeDragAction();\n this._dragSelectionOperation.complete();\n this._dragSelectionOperation = undefined;\n }\n },\n { once: true }\n );\n this._dragSelectionOperation = new Subject();\n this.onDragSelection.emit({\n selectionChanges: this._dragSelectionOperation,\n });\n }\n\n public onNodeMouseMove(nodeId: string) {\n this._selectionHandler.updateDragAction(nodeId);\n }\n\n private createSelectionHandlers(\n nodeId: string\n ): [MultiSelectionHandler<Selection>, SingleSelectionHandler<string>] {\n let deselectedAll = false;\n const multiSelectionHandler: MultiSelectionHandler<Selection> = {\n selectBetween: (item1, item2) => [\n { from: item1 as string, to: item2 as string },\n ],\n updateSelection: (selections, deselections) => {\n // Assumes `updateSelection` will never be called with selection ranges\n const selectedNodeIds = selections as string[];\n const deselectedNodeIds = deselections as string[];\n this._dragSelectionOperation!.next({\n selectedNodes: selectedNodeIds,\n deselectedNodes: deselectedNodeIds,\n });\n },\n deselectAll: () => {\n deselectedAll = true;\n },\n areEqual: (item1, item2) => item1 === item2,\n };\n\n const singleSelectionHandler: SingleSelectionHandler<string> = {\n preselect: () => {},\n select: () => {},\n deselect: () => {},\n isSelected: () => {\n if (deselectedAll) {\n return false;\n }\n\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n return node !== undefined && node.isSelected;\n },\n item: () => nodeId,\n };\n\n return [multiSelectionHandler, singleSelectionHandler];\n }\n\n public onTreeKeyDown(event: React.KeyboardEvent, actions: TreeActions): void {\n this._onKeyboardEvent(event, actions, true);\n }\n\n public onTreeKeyUp(event: React.KeyboardEvent, actions: TreeActions): void {\n this._onKeyboardEvent(event, actions, false);\n }\n\n private _onKeyboardEvent = (\n e: React.KeyboardEvent,\n actions: TreeActions,\n isKeyDown: boolean\n ) => {\n const processedNodeId = this._selectionHandler.processedItem;\n if (!isNavigationKey(e.key) || !isIndividualSelection(processedNodeId)) {\n return;\n }\n\n const isExpandable = (node: TreeModelNode): boolean =>\n !node.isLoading && node.numChildren !== 0;\n const isEditing = (node: TreeModelNode): boolean =>\n node.editingInfo !== undefined;\n\n const processedNode = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n\n // istanbul ignore if\n if (!processedNode || isEditing(processedNode)) return;\n\n const handleKeyboardSelectItem = (index: number) => {\n const node = this.getVisibleNodeAtIndex(this._getVisibleNodes(), index);\n // istanbul ignore if\n if (!node || isEditing(node)) return;\n\n const selectionFunc = this._selectionHandler.createSelectionFunction(\n ...this.createSelectionHandlers(node.id)\n );\n selectionFunc(e.shiftKey, e.ctrlKey);\n };\n const handleKeyboardActivateItem = (_index: number) => {\n if (isExpandable(processedNode)) {\n if (!processedNode.isExpanded) actions.onNodeExpanded(processedNode.id);\n else actions.onNodeCollapsed(processedNode.id);\n } else {\n actions.onNodeEditorActivated(processedNode.id);\n }\n };\n const handleCrossAxisArrowKey = (forward: boolean) => {\n if (!isExpandable(processedNode)) return;\n\n if (forward && !processedNode.isExpanded)\n actions.onNodeExpanded(processedNode.id);\n else if (!forward && processedNode.isExpanded)\n actions.onNodeCollapsed(processedNode.id);\n };\n\n const itemKeyboardNavigator = new ItemKeyboardNavigator(\n handleKeyboardSelectItem,\n handleKeyboardActivateItem\n );\n itemKeyboardNavigator.orientation = Orientation.Vertical;\n itemKeyboardNavigator.crossAxisArrowKeyHandler = handleCrossAxisArrowKey;\n itemKeyboardNavigator.allowWrap = false;\n itemKeyboardNavigator.itemCount = this._getVisibleNodes().getNumNodes();\n\n const processedNodeIndex =\n this._getVisibleNodes().getIndexOfNode(processedNodeId);\n isKeyDown\n ? itemKeyboardNavigator.handleKeyDownEvent(e, processedNodeIndex)\n : itemKeyboardNavigator.handleKeyUpEvent(e, processedNodeIndex);\n };\n}\n\ntype Selection = string | RangeSelection;\n\nfunction isIndividualSelection(\n selection: Selection | undefined\n): selection is string {\n return typeof selection === \"string\";\n}\n\nclass ItemHandler implements SingleSelectionHandler<string> {\n private _node: TreeModelNode | undefined;\n\n constructor(node: TreeModelNode | undefined) {\n this._node = node;\n }\n\n /* istanbul ignore next: noop */\n public preselect() {}\n\n /* istanbul ignore next: noop */\n public select() {}\n\n /* istanbul ignore next: noop */\n public deselect() {}\n\n // eslint-disable-next-line @itwin/prefer-get\n public isSelected(): boolean {\n // istanbul ignore next\n return !!this._node?.isSelected;\n }\n\n public item(): string {\n return this._node?.id ?? \"\";\n }\n}\n"]}
@@ -12,8 +12,7 @@ import { ProgressRadial } from "@itwin/itwinui-react";
12
12
  * @internal
13
13
  */
14
14
  export function DelayedSpinner(props) {
15
- var _a, _b;
16
- const delay = (_a = props.delay) !== null && _a !== void 0 ? _a : 500;
15
+ const delay = props.delay ?? 500;
17
16
  const [loadStart] = React.useState(props.loadStart || new Date());
18
17
  const currTime = new Date();
19
18
  const diff = currTime.getTime() - loadStart.getTime();
@@ -26,7 +25,7 @@ export function DelayedSpinner(props) {
26
25
  });
27
26
  if (diff < delay)
28
27
  return null;
29
- return React.createElement(ProgressRadial, { indeterminate: true, size: (_b = props.size) !== null && _b !== void 0 ? _b : "large" });
28
+ return React.createElement(ProgressRadial, { indeterminate: true, size: props.size ?? "large" });
30
29
  }
31
30
  const useForceUpdate = () => {
32
31
  const [value, set] = React.useState(true);
@@ -1 +1 @@
1
- {"version":3,"file":"DelayedSpinner.js","sourceRoot":"","sources":["../../../../src/components-react/common/DelayedSpinner.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAetD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;;IACvD,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,KAAK,mCAAI,GAAG,CAAC;IACjC,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAEtD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,IAAI,IAAI,KAAK;YAAE,OAAO;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;QAC/C,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAE9B,OAAO,oBAAC,cAAc,IAAC,aAAa,QAAC,IAAI,EAAE,MAAA,KAAK,CAAC,IAAI,mCAAI,OAAO,GAAI,CAAC;AACvE,CAAC;AAED,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport * as React from \"react\";\nimport type { ProgressRadialProps } from \"@itwin/itwinui-react\";\nimport { ProgressRadial } from \"@itwin/itwinui-react\";\n\n/** Type for ProgressRadialProps.size */\ntype RadialSizeType = ProgressRadialProps[\"size\"];\n\n/**\n * Props for [[DelayedSpinner]] component.\n * @internal\n */\nexport interface DelayedSpinnerProps {\n loadStart?: Date;\n delay?: number;\n size?: RadialSizeType;\n}\n\n/**\n * Spinner that is rendered with delay.\n * @internal\n */\nexport function DelayedSpinner(props: DelayedSpinnerProps) {\n const delay = props.delay ?? 500;\n const [loadStart] = React.useState(props.loadStart || new Date());\n\n const currTime = new Date();\n const diff = currTime.getTime() - loadStart.getTime();\n\n const update = useForceUpdate();\n React.useEffect(() => {\n if (diff >= delay) return;\n const timer = setTimeout(update, delay - diff);\n return () => clearTimeout(timer);\n });\n\n if (diff < delay) return null;\n\n return <ProgressRadial indeterminate size={props.size ?? \"large\"} />;\n}\n\nconst useForceUpdate = () => {\n const [value, set] = React.useState(true);\n return () => set(!value);\n};\n"]}
1
+ {"version":3,"file":"DelayedSpinner.js","sourceRoot":"","sources":["../../../../src/components-react/common/DelayedSpinner.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAetD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;IACjC,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAEtD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,IAAI,IAAI,KAAK;YAAE,OAAO;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;QAC/C,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAE9B,OAAO,oBAAC,cAAc,IAAC,aAAa,QAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,OAAO,GAAI,CAAC;AACvE,CAAC;AAED,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport * as React from \"react\";\nimport type { ProgressRadialProps } from \"@itwin/itwinui-react\";\nimport { ProgressRadial } from \"@itwin/itwinui-react\";\n\n/** Type for ProgressRadialProps.size */\ntype RadialSizeType = ProgressRadialProps[\"size\"];\n\n/**\n * Props for [[DelayedSpinner]] component.\n * @internal\n */\nexport interface DelayedSpinnerProps {\n loadStart?: Date;\n delay?: number;\n size?: RadialSizeType;\n}\n\n/**\n * Spinner that is rendered with delay.\n * @internal\n */\nexport function DelayedSpinner(props: DelayedSpinnerProps) {\n const delay = props.delay ?? 500;\n const [loadStart] = React.useState(props.loadStart || new Date());\n\n const currTime = new Date();\n const diff = currTime.getTime() - loadStart.getTime();\n\n const update = useForceUpdate();\n React.useEffect(() => {\n if (diff >= delay) return;\n const timer = setTimeout(update, delay - diff);\n return () => clearTimeout(timer);\n });\n\n if (diff < delay) return null;\n\n return <ProgressRadial indeterminate size={props.size ?? \"large\"} />;\n}\n\nconst useForceUpdate = () => {\n const [value, set] = React.useState(true);\n return () => set(!value);\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module Common
3
3
  */
4
- import type { Observable } from "rxjs/internal/Observable";
4
+ import type { Observable } from "rxjs";
5
5
  /**
6
6
  * Limits concurrent observable subscriptions to one.
7
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionScheduler.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/SubscriptionScheduler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAkB3D;;;;;;;;GAQG;AACH,qBAAa,qBAAqB,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAA2C;;IAyB7D;;;;;;;;OAQG;IACI,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;CAWlE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAClC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAE1C"}
1
+ {"version":3,"file":"SubscriptionScheduler.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/SubscriptionScheduler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,MAAM,CAAC;AAmBpD;;;;;;;;GAQG;AACH,qBAAa,qBAAqB,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAiC;;IA6BnD;;;;;;;;OAQG;IACI,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;CAelE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAClC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAE1C"}
@@ -5,19 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module Common
7
7
  */
8
- import { defer } from "rxjs/internal/observable/defer";
9
- import { EMPTY } from "rxjs/internal/observable/empty";
10
- import { iif } from "rxjs/internal/observable/iif";
11
- import { finalize } from "rxjs/internal/operators/finalize";
12
- import { mergeMap } from "rxjs/internal/operators/mergeMap";
13
- import { observeOn } from "rxjs/internal/operators/observeOn";
14
- import { onErrorResumeNext } from "rxjs/internal/operators/onErrorResumeNext";
15
- import { publish } from "rxjs/internal/operators/publish";
16
- import { refCount } from "rxjs/internal/operators/refCount";
17
- import { subscribeOn } from "rxjs/internal/operators/subscribeOn";
18
- import { asapScheduler } from "rxjs/internal/scheduler/asap";
19
- import { queueScheduler } from "rxjs/internal/scheduler/queue";
20
- import { Subject } from "rxjs/internal/Subject";
8
+ import { asapScheduler, connectable, defer, EMPTY, finalize, iif, mergeMap, observeOn, onErrorResumeNextWith, queueScheduler, Subject, subscribeOn, tap, } from "rxjs";
21
9
  const MAX_CONCURRENT_SUBSCRIPTIONS = 1;
22
10
  /**
23
11
  * Limits concurrent observable subscriptions to one.
@@ -33,15 +21,19 @@ export class SubscriptionScheduler {
33
21
  this._scheduler = new Subject();
34
22
  this._scheduler
35
23
  .pipe(mergeMap((sourceObservable) => sourceObservable.pipe(
36
- // Connect the observable
37
- refCount(),
24
+ // connect source observable when scheduler subscribes
25
+ tap({
26
+ subscribe: () => {
27
+ sourceObservable.connect();
28
+ },
29
+ }),
38
30
  // Guard against stack overflow when a lot of observables are scheduled. Without this operation `mergeMap`
39
31
  // will process each observable that is present in the pipeline recursively.
40
32
  observeOn(queueScheduler),
41
33
  // Delay the connection until another event loop task
42
34
  subscribeOn(asapScheduler),
43
35
  // Ignore errors in this pipeline without suppressing them for other subscribers
44
- onErrorResumeNext()), MAX_CONCURRENT_SUBSCRIPTIONS))
36
+ onErrorResumeNextWith()), MAX_CONCURRENT_SUBSCRIPTIONS))
45
37
  // Start consuming scheduled observables
46
38
  .subscribe();
47
39
  }
@@ -58,7 +50,10 @@ export class SubscriptionScheduler {
58
50
  return defer(() => {
59
51
  let unsubscribed = false;
60
52
  // Do not subscribe to source observable if it was unsubscribed from before being processed by the scheduler
61
- const connectableObservable = iif(() => unsubscribed, EMPTY, source).pipe(publish());
53
+ const connectableObservable = connectable(iif(() => unsubscribed, EMPTY, source), {
54
+ connector: () => new Subject(),
55
+ resetOnDisconnect: false,
56
+ });
62
57
  this._scheduler.next(connectableObservable);
63
58
  return connectableObservable.pipe(finalize(() => (unsubscribed = true)));
64
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionScheduler.js","sourceRoot":"","sources":["../../../../src/components-react/common/SubscriptionScheduler.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,OAAO,qBAAqB;IAGhC;QAFQ,eAAU,GAAG,IAAI,OAAO,EAA4B,CAAC;QAG3D,IAAI,CAAC,UAAU;aACZ,IAAI,CACH,QAAQ,CACN,CAAC,gBAAgB,EAAE,EAAE,CACnB,gBAAgB,CAAC,IAAI;QACnB,yBAAyB;QACzB,QAAQ,EAAE;QACV,0GAA0G;QAC1G,4EAA4E;QAC5E,SAAS,CAAC,cAAc,CAAC;QACzB,qDAAqD;QACrD,WAAW,CAAC,aAAa,CAAC;QAC1B,gFAAgF;QAChF,iBAAiB,EAAE,CACpB,EACH,4BAA4B,CAC7B,CACF;YACD,wCAAwC;aACvC,SAAS,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACI,oBAAoB,CAAC,MAAqB;QAC/C,OAAO,KAAK,CAAC,GAAG,EAAE;YAChB,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,4GAA4G;YAC5G,MAAM,qBAAqB,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CACvE,OAAO,EAAE,CACkB,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC5C,OAAO,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAmC;IAEnC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC5D,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 Common\n */\n\nimport type { Observable } from \"rxjs/internal/Observable\";\nimport type { ConnectableObservable } from \"rxjs/internal/observable/ConnectableObservable\";\nimport { defer } from \"rxjs/internal/observable/defer\";\nimport { EMPTY } from \"rxjs/internal/observable/empty\";\nimport { iif } from \"rxjs/internal/observable/iif\";\nimport { finalize } from \"rxjs/internal/operators/finalize\";\nimport { mergeMap } from \"rxjs/internal/operators/mergeMap\";\nimport { observeOn } from \"rxjs/internal/operators/observeOn\";\nimport { onErrorResumeNext } from \"rxjs/internal/operators/onErrorResumeNext\";\nimport { publish } from \"rxjs/internal/operators/publish\";\nimport { refCount } from \"rxjs/internal/operators/refCount\";\nimport { subscribeOn } from \"rxjs/internal/operators/subscribeOn\";\nimport { asapScheduler } from \"rxjs/internal/scheduler/asap\";\nimport { queueScheduler } from \"rxjs/internal/scheduler/queue\";\nimport { Subject } from \"rxjs/internal/Subject\";\n\nconst MAX_CONCURRENT_SUBSCRIPTIONS = 1;\n\n/**\n * Limits concurrent observable subscriptions to one.\n *\n * Scheduled observables are placed at the end of a queue. Each queued observable is subscribed to and awaited until the\n * completion.\n *\n * To schedule an observable, subscribe to the result of `scheduleSubscription()` call.\n * @internal\n */\nexport class SubscriptionScheduler<T> {\n private _scheduler = new Subject<ConnectableObservable<T>>();\n\n constructor() {\n this._scheduler\n .pipe(\n mergeMap(\n (sourceObservable) =>\n sourceObservable.pipe(\n // Connect the observable\n refCount(),\n // Guard against stack overflow when a lot of observables are scheduled. Without this operation `mergeMap`\n // will process each observable that is present in the pipeline recursively.\n observeOn(queueScheduler),\n // Delay the connection until another event loop task\n subscribeOn(asapScheduler),\n // Ignore errors in this pipeline without suppressing them for other subscribers\n onErrorResumeNext()\n ),\n MAX_CONCURRENT_SUBSCRIPTIONS\n )\n )\n // Start consuming scheduled observables\n .subscribe();\n }\n\n /**\n * Schedules `source` for subscription in the current scheduler.\n *\n * The actual scheduling is performed when the returned observable is subscribed to. To cancel, remove all subscribers\n * from the returned observable.\n *\n * @param source Input observable for which to schedule a subscription.\n * @returns Hot observable which starts emitting `source` values after subscription.\n */\n public scheduleSubscription(source: Observable<T>): Observable<T> {\n return defer(() => {\n let unsubscribed = false;\n // Do not subscribe to source observable if it was unsubscribed from before being processed by the scheduler\n const connectableObservable = iif(() => unsubscribed, EMPTY, source).pipe(\n publish()\n ) as ConnectableObservable<T>;\n this._scheduler.next(connectableObservable);\n return connectableObservable.pipe(finalize(() => (unsubscribed = true)));\n });\n }\n}\n\n/**\n * Helper function for use as a `pipe()` argument with `rxjs` observables.\n * @internal\n */\nexport function scheduleSubscription<T>(\n scheduler: SubscriptionScheduler<T>\n): (source: Observable<T>) => Observable<T> {\n return (source) => scheduler.scheduleSubscription(source);\n}\n"]}
1
+ {"version":3,"file":"SubscriptionScheduler.js","sourceRoot":"","sources":["../../../../src/components-react/common/SubscriptionScheduler.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,EACL,KAAK,EACL,QAAQ,EACR,GAAG,EACH,QAAQ,EACR,SAAS,EACT,qBAAqB,EACrB,cAAc,EACd,OAAO,EACP,WAAW,EACX,GAAG,GACJ,MAAM,MAAM,CAAC;AAEd,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,OAAO,qBAAqB;IAGhC;QAFQ,eAAU,GAAG,IAAI,OAAO,EAAkB,CAAC;QAGjD,IAAI,CAAC,UAAU;aACZ,IAAI,CACH,QAAQ,CACN,CAAC,gBAAgB,EAAE,EAAE,CACnB,gBAAgB,CAAC,IAAI;QACnB,sDAAsD;QACtD,GAAG,CAAC;YACF,SAAS,EAAE,GAAG,EAAE;gBACd,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;SACF,CAAC;QACF,0GAA0G;QAC1G,4EAA4E;QAC5E,SAAS,CAAC,cAAc,CAAC;QACzB,qDAAqD;QACrD,WAAW,CAAC,aAAa,CAAC;QAC1B,gFAAgF;QAChF,qBAAqB,EAAE,CACxB,EACH,4BAA4B,CAC7B,CACF;YACD,wCAAwC;aACvC,SAAS,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACI,oBAAoB,CAAC,MAAqB;QAC/C,OAAO,KAAK,CAAC,GAAG,EAAE;YAChB,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,4GAA4G;YAC5G,MAAM,qBAAqB,GAAG,WAAW,CACvC,GAAG,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,EACtC;gBACE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,EAAK;gBACjC,iBAAiB,EAAE,KAAK;aACzB,CACF,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC5C,OAAO,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAmC;IAEnC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC5D,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 Common\n */\n\nimport type { Connectable, Observable } from \"rxjs\";\nimport {\n asapScheduler,\n connectable,\n defer,\n EMPTY,\n finalize,\n iif,\n mergeMap,\n observeOn,\n onErrorResumeNextWith,\n queueScheduler,\n Subject,\n subscribeOn,\n tap,\n} from \"rxjs\";\n\nconst MAX_CONCURRENT_SUBSCRIPTIONS = 1;\n\n/**\n * Limits concurrent observable subscriptions to one.\n *\n * Scheduled observables are placed at the end of a queue. Each queued observable is subscribed to and awaited until the\n * completion.\n *\n * To schedule an observable, subscribe to the result of `scheduleSubscription()` call.\n * @internal\n */\nexport class SubscriptionScheduler<T> {\n private _scheduler = new Subject<Connectable<T>>();\n\n constructor() {\n this._scheduler\n .pipe(\n mergeMap(\n (sourceObservable) =>\n sourceObservable.pipe(\n // connect source observable when scheduler subscribes\n tap({\n subscribe: () => {\n sourceObservable.connect();\n },\n }),\n // Guard against stack overflow when a lot of observables are scheduled. Without this operation `mergeMap`\n // will process each observable that is present in the pipeline recursively.\n observeOn(queueScheduler),\n // Delay the connection until another event loop task\n subscribeOn(asapScheduler),\n // Ignore errors in this pipeline without suppressing them for other subscribers\n onErrorResumeNextWith()\n ),\n MAX_CONCURRENT_SUBSCRIPTIONS\n )\n )\n // Start consuming scheduled observables\n .subscribe();\n }\n\n /**\n * Schedules `source` for subscription in the current scheduler.\n *\n * The actual scheduling is performed when the returned observable is subscribed to. To cancel, remove all subscribers\n * from the returned observable.\n *\n * @param source Input observable for which to schedule a subscription.\n * @returns Hot observable which starts emitting `source` values after subscription.\n */\n public scheduleSubscription(source: Observable<T>): Observable<T> {\n return defer(() => {\n let unsubscribed = false;\n // Do not subscribe to source observable if it was unsubscribed from before being processed by the scheduler\n const connectableObservable = connectable(\n iif(() => unsubscribed, EMPTY, source),\n {\n connector: () => new Subject<T>(),\n resetOnDisconnect: false,\n }\n );\n this._scheduler.next(connectableObservable);\n return connectableObservable.pipe(finalize(() => (unsubscribed = true)));\n });\n }\n}\n\n/**\n * Helper function for use as a `pipe()` argument with `rxjs` observables.\n * @internal\n */\nexport function scheduleSubscription<T>(\n scheduler: SubscriptionScheduler<T>\n): (source: Observable<T>) => Observable<T> {\n return (source) => scheduler.scheduleSubscription(source);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UseAsyncValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAQH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAiCzE"}
1
+ {"version":3,"file":"UseAsyncValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAMH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAiCzE"}
@@ -6,9 +6,7 @@
6
6
  * @module Common
7
7
  */
8
8
  import * as React from "react";
9
- import { from } from "rxjs/internal/observable/from";
10
- import { takeUntil } from "rxjs/internal/operators/takeUntil";
11
- import { Subject } from "rxjs/internal/Subject";
9
+ import { from, Subject, takeUntil } from "rxjs";
12
10
  import { isPromiseLike, useEffectSkipFirst } from "@itwin/core-react";
13
11
  /**
14
12
  * Custom hook for working with possibly async values.
@@ -1 +1 @@
1
- {"version":3,"file":"UseAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,KAAyB;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,EAAQ,EAAE,EAAE,CAAC,CAAC;IAC/D,yCAAyC;IACzC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAE3D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC9C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC;iBACR,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC1B,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,kBAAkB,CAAC,GAAG,EAAE;QACtB,MAAM,WAAW,GAAG,CAAC,QAAW,EAAE,EAAE;YAClC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;iBAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC1B,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACtE,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACzC;QAED,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAChB,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 Common\n */\n\nimport * as React from \"react\";\nimport { from } from \"rxjs/internal/observable/from\";\nimport { takeUntil } from \"rxjs/internal/operators/takeUntil\";\nimport { Subject } from \"rxjs/internal/Subject\";\nimport { isPromiseLike, useEffectSkipFirst } from \"@itwin/core-react\";\n\n/**\n * Custom hook for working with possibly async values.\n * @public\n */\nexport function useAsyncValue<T>(value: T | PromiseLike<T>): T | undefined {\n const cancelled = React.useMemo(() => new Subject<void>(), []);\n // cancel any pending promises on unmount\n React.useEffect(() => () => cancelled.next(), [cancelled]);\n\n const [result, setResult] = React.useState(() => {\n if (isPromiseLike(value)) {\n from(value)\n .pipe(takeUntil(cancelled))\n .subscribe({ next: (resolvedValue) => setResult(resolvedValue) });\n return undefined;\n }\n return value;\n });\n\n useEffectSkipFirst(() => {\n const updateValue = (newValue: T) => {\n cancelled.next();\n setResult(newValue);\n };\n\n if (isPromiseLike(value)) {\n const subscription = from(value)\n .pipe(takeUntil(cancelled))\n .subscribe({ next: (resolvedValue) => updateValue(resolvedValue) });\n return () => subscription.unsubscribe();\n }\n\n updateValue(value);\n return undefined;\n }, [value, cancelled]);\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"UseAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,KAAyB;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,EAAQ,EAAE,EAAE,CAAC,CAAC;IAC/D,yCAAyC;IACzC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAE3D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC9C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC;iBACR,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC1B,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,kBAAkB,CAAC,GAAG,EAAE;QACtB,MAAM,WAAW,GAAG,CAAC,QAAW,EAAE,EAAE;YAClC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;iBAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC1B,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACtE,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACzC;QAED,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAChB,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 Common\n */\n\nimport * as React from \"react\";\nimport { from, Subject, takeUntil } from \"rxjs\";\nimport { isPromiseLike, useEffectSkipFirst } from \"@itwin/core-react\";\n\n/**\n * Custom hook for working with possibly async values.\n * @public\n */\nexport function useAsyncValue<T>(value: T | PromiseLike<T>): T | undefined {\n const cancelled = React.useMemo(() => new Subject<void>(), []);\n // cancel any pending promises on unmount\n React.useEffect(() => () => cancelled.next(), [cancelled]);\n\n const [result, setResult] = React.useState(() => {\n if (isPromiseLike(value)) {\n from(value)\n .pipe(takeUntil(cancelled))\n .subscribe({ next: (resolvedValue) => setResult(resolvedValue) });\n return undefined;\n }\n return value;\n });\n\n useEffectSkipFirst(() => {\n const updateValue = (newValue: T) => {\n cancelled.next();\n setResult(newValue);\n };\n\n if (isPromiseLike(value)) {\n const subscription = from(value)\n .pipe(takeUntil(cancelled))\n .subscribe({ next: (resolvedValue) => updateValue(resolvedValue) });\n return () => subscription.unsubscribe();\n }\n\n updateValue(value);\n return undefined;\n }, [value, cancelled]);\n\n return result;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UseDebouncedAsyncValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAIA;;GAEG;AAWH;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAC5C,iBAAiB,EAAE,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;;;EA+CxD"}
1
+ {"version":3,"file":"UseDebouncedAsyncValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAC5C,iBAAiB,EAAE,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;;;EAsDxD"}
@@ -6,9 +6,7 @@
6
6
  * @module Common
7
7
  */
8
8
  import { useEffect, useMemo, useState } from "react";
9
- import { defer } from "rxjs/internal/observable/defer";
10
- import { publish } from "rxjs/internal/operators/publish";
11
- import { refCount } from "rxjs/internal/operators/refCount";
9
+ import { defer, share } from "rxjs";
12
10
  import { scheduleSubscription, SubscriptionScheduler, } from "./SubscriptionScheduler";
13
11
  /**
14
12
  * Custom hook for working with promise values.
@@ -20,7 +18,6 @@ import { scheduleSubscription, SubscriptionScheduler, } from "./SubscriptionSche
20
18
  * @beta
21
19
  */
22
20
  export function useDebouncedAsyncValue(valueToBeResolved) {
23
- var _a;
24
21
  const scheduler = useMemo(() => new SubscriptionScheduler(), []);
25
22
  const [value, setValue] = useState();
26
23
  const [inProgress, setInProgress] = useState(false);
@@ -37,7 +34,11 @@ export function useDebouncedAsyncValue(valueToBeResolved) {
37
34
  setInProgress(true);
38
35
  // schedule and subscribe to the observable emitting value from valueToBeResolved promise
39
36
  const subscription = defer(valueToBeResolved)
40
- .pipe(publish(), refCount(), scheduleSubscription(scheduler))
37
+ .pipe(share({
38
+ resetOnError: false,
39
+ resetOnComplete: false,
40
+ resetOnRefCountZero: true,
41
+ }), scheduleSubscription(scheduler))
41
42
  .subscribe({
42
43
  next: (data) => {
43
44
  setValue(data);
@@ -53,7 +54,7 @@ export function useDebouncedAsyncValue(valueToBeResolved) {
53
54
  };
54
55
  }, [valueToBeResolved, scheduler]);
55
56
  if (errorState.hasError)
56
- throw ((_a = errorState.error) !== null && _a !== void 0 ? _a : new Error("Exception in `useDebouncedAsyncValue`"));
57
+ throw (errorState.error ?? new Error("Exception in `useDebouncedAsyncValue`"));
57
58
  return { value, inProgress };
58
59
  }
59
60
  //# sourceMappingURL=UseDebouncedAsyncValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UseDebouncedAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,iBAAuD;;IAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAW,EAAE,EAAE,CAAC,CAAC;IAE1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAW,CAAC;IAC9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAGzC;QACD,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,iBAAiB,EAAE;YACtB,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;SACR;QAED,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,yFAAyF;QACzF,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC;aAC1C,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;aAC5D,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;gBACb,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBACb,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;SACF,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnC,IAAI,UAAU,CAAC,QAAQ;QACrB,MAAM,CACJ,MAAA,UAAU,CAAC,KAAK,mCAAI,IAAI,KAAK,CAAC,uCAAuC,CAAC,CACvE,CAAC;IAEJ,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/B,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 Common\n */\n\nimport { useEffect, useMemo, useState } from \"react\";\nimport { defer } from \"rxjs/internal/observable/defer\";\nimport { publish } from \"rxjs/internal/operators/publish\";\nimport { refCount } from \"rxjs/internal/operators/refCount\";\nimport {\n scheduleSubscription,\n SubscriptionScheduler,\n} from \"./SubscriptionScheduler\";\n\n/**\n * Custom hook for working with promise values.\n * Promises are debounced using trailing and leading edge.\n * The first promise will always be executed.\n * Any promises following the first while it is executing will be scheduled (and unscheduled), leaving only the last promise to be resolved.\n * Once the first promise finishes resolving, the last passed promise starts resolving.\n * @throws if/when `valueToBeResolved` promise is rejected. The error is thrown in the React's render loop, so it can be caught using an error boundary.\n * @beta\n */\nexport function useDebouncedAsyncValue<TReturn>(\n valueToBeResolved: undefined | (() => Promise<TReturn>)\n) {\n const scheduler = useMemo(() => new SubscriptionScheduler<TReturn>(), []);\n\n const [value, setValue] = useState<TReturn>();\n const [inProgress, setInProgress] = useState(false);\n const [errorState, setErrorState] = useState<{\n error: Error | undefined;\n hasError: boolean;\n }>({\n error: undefined,\n hasError: false,\n });\n\n useEffect(() => {\n if (!valueToBeResolved) {\n setValue(undefined);\n setInProgress(false);\n return;\n }\n\n setInProgress(true);\n // schedule and subscribe to the observable emitting value from valueToBeResolved promise\n const subscription = defer(valueToBeResolved)\n .pipe(publish(), refCount(), scheduleSubscription(scheduler))\n .subscribe({\n next: (data) => {\n setValue(data);\n setInProgress(false);\n },\n error: (err) => {\n setErrorState({ error: err, hasError: true });\n setInProgress(false);\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [valueToBeResolved, scheduler]);\n\n if (errorState.hasError)\n throw (\n errorState.error ?? new Error(\"Exception in `useDebouncedAsyncValue`\")\n );\n\n return { value, inProgress };\n}\n"]}
1
+ {"version":3,"file":"UseDebouncedAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,iBAAuD;IAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAW,EAAE,EAAE,CAAC,CAAC;IAE1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAW,CAAC;IAC9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAGzC;QACD,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,iBAAiB,EAAE;YACtB,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;SACR;QAED,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,yFAAyF;QACzF,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC;aAC1C,IAAI,CACH,KAAK,CAAC;YACJ,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,mBAAmB,EAAE,IAAI;SAC1B,CAAC,EACF,oBAAoB,CAAC,SAAS,CAAC,CAChC;aACA,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;gBACb,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBACb,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;SACF,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnC,IAAI,UAAU,CAAC,QAAQ;QACrB,MAAM,CACJ,UAAU,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,uCAAuC,CAAC,CACvE,CAAC;IAEJ,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/B,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 Common\n */\n\nimport { useEffect, useMemo, useState } from \"react\";\nimport { defer, share } from \"rxjs\";\nimport {\n scheduleSubscription,\n SubscriptionScheduler,\n} from \"./SubscriptionScheduler\";\n\n/**\n * Custom hook for working with promise values.\n * Promises are debounced using trailing and leading edge.\n * The first promise will always be executed.\n * Any promises following the first while it is executing will be scheduled (and unscheduled), leaving only the last promise to be resolved.\n * Once the first promise finishes resolving, the last passed promise starts resolving.\n * @throws if/when `valueToBeResolved` promise is rejected. The error is thrown in the React's render loop, so it can be caught using an error boundary.\n * @beta\n */\nexport function useDebouncedAsyncValue<TReturn>(\n valueToBeResolved: undefined | (() => Promise<TReturn>)\n) {\n const scheduler = useMemo(() => new SubscriptionScheduler<TReturn>(), []);\n\n const [value, setValue] = useState<TReturn>();\n const [inProgress, setInProgress] = useState(false);\n const [errorState, setErrorState] = useState<{\n error: Error | undefined;\n hasError: boolean;\n }>({\n error: undefined,\n hasError: false,\n });\n\n useEffect(() => {\n if (!valueToBeResolved) {\n setValue(undefined);\n setInProgress(false);\n return;\n }\n\n setInProgress(true);\n // schedule and subscribe to the observable emitting value from valueToBeResolved promise\n const subscription = defer(valueToBeResolved)\n .pipe(\n share({\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: true,\n }),\n scheduleSubscription(scheduler)\n )\n .subscribe({\n next: (data) => {\n setValue(data);\n setInProgress(false);\n },\n error: (err) => {\n setErrorState({ error: err, hasError: true });\n setInProgress(false);\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [valueToBeResolved, scheduler]);\n\n if (errorState.hasError)\n throw (\n errorState.error ?? new Error(\"Exception in `useDebouncedAsyncValue`\")\n );\n\n return { value, inProgress };\n}\n"]}
@@ -42,7 +42,6 @@ export class FloatTypeConverter extends NumericTypeConverterBase {
42
42
  return Number.isNaN(parsedValue) ? undefined : parsedValue;
43
43
  }
44
44
  convertToString(value) {
45
- var _a;
46
45
  if (value === undefined)
47
46
  return "";
48
47
  let numericValue = 0;
@@ -52,7 +51,7 @@ export class FloatTypeConverter extends NumericTypeConverterBase {
52
51
  numericValue = 0;
53
52
  }
54
53
  else {
55
- numericValue = (_a = FloatTypeConverter.parseString(value)) !== null && _a !== void 0 ? _a : 0;
54
+ numericValue = FloatTypeConverter.parseString(value) ?? 0;
56
55
  }
57
56
  }
58
57
  else {
@@ -83,7 +82,6 @@ export class IntTypeConverter extends NumericTypeConverterBase {
83
82
  return Number.isNaN(parsedValue) ? undefined : parsedValue;
84
83
  }
85
84
  convertToString(value) {
86
- var _a;
87
85
  if (value === undefined)
88
86
  return "";
89
87
  let numericValue = 0;
@@ -93,7 +91,7 @@ export class IntTypeConverter extends NumericTypeConverterBase {
93
91
  numericValue = 0;
94
92
  }
95
93
  else {
96
- numericValue = (_a = IntTypeConverter.parseString(value)) !== null && _a !== void 0 ? _a : 0;
94
+ numericValue = IntTypeConverter.parseString(value) ?? 0;
97
95
  }
98
96
  }
99
97
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"NumericTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/NumericTypeConverter.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 TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport type { LessGreaterOperatorProcessor } from \"./TypeConverter\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/**\n * Base Numeric Type Converter.\n * @public\n */\nexport abstract class NumericTypeConverterBase\n extends TypeConverter\n implements LessGreaterOperatorProcessor\n{\n public override get isLessGreaterType(): boolean {\n return true;\n }\n\n public isLessThan(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\n return a < b;\n }\n\n public isLessThanOrEqualTo(\n a: Primitives.Numeric,\n b: Primitives.Numeric\n ): boolean {\n return a <= b;\n }\n\n public isGreaterThan(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\n return a > b;\n }\n\n public isGreaterThanOrEqualTo(\n a: Primitives.Numeric,\n b: Primitives.Numeric\n ): boolean {\n return a >= b;\n }\n\n public sortCompare(\n a: Primitives.Numeric,\n b: Primitives.Numeric,\n _ignoreCase?: boolean\n ): number {\n return +a - +b;\n }\n}\n\n/**\n * Float Type Converter.\n * @public\n */\nexport class FloatTypeConverter extends NumericTypeConverterBase {\n private static parseString(value: string): number | undefined {\n const parsedValue = parseFloat(value);\n return Number.isNaN(parsedValue) ? undefined : parsedValue;\n }\n\n public override convertToString(value?: Primitives.Float) {\n if (value === undefined) return \"\";\n\n let numericValue = 0;\n if (typeof value === \"string\") {\n if (value === \"-\" || value === \"\" || value === \"-0.0\" || value === \"-0\") {\n // handle these semi-valid values as 0\n numericValue = 0;\n } else {\n numericValue = FloatTypeConverter.parseString(value) ?? 0;\n }\n } else {\n numericValue = value;\n }\n // this is close to calling `toFixed(2)`, but cuts of any trailing zeros\n let stringValue = (Math.round(100 * numericValue) / 100).toString();\n // because this is a _float_ converter, we want to emphasize the number is a float - make\n // sure there's a decimal part\n if (stringValue.indexOf(\".\") === -1) stringValue += \".0\";\n return stringValue;\n }\n\n public override convertFromString(value: string): number | undefined {\n return FloatTypeConverter.parseString(value);\n }\n}\nTypeConverterManager.registerConverter(\n StandardTypeNames.Float,\n FloatTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Double,\n FloatTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Number,\n FloatTypeConverter\n);\n\n/**\n * Int Type Converter.\n * @public\n */\nexport class IntTypeConverter extends NumericTypeConverterBase {\n private static parseString(value: string): number | undefined {\n const parsedValue = parseInt(value, 10);\n return Number.isNaN(parsedValue) ? undefined : parsedValue;\n }\n\n public override convertToString(value?: Primitives.Int) {\n if (value === undefined) return \"\";\n\n let numericValue = 0;\n if (typeof value === \"string\") {\n if (value === \"-\" || value === \"\" || value === \"-0\") {\n // handle these semi-valid values as 0\n numericValue = 0;\n } else {\n numericValue = IntTypeConverter.parseString(value) ?? 0;\n }\n } else {\n numericValue = value;\n }\n return Math.round(numericValue).toString();\n }\n\n public override convertFromString(value: string): number | undefined {\n return IntTypeConverter.parseString(value);\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Int, IntTypeConverter);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Integer,\n IntTypeConverter\n);\n"]}
1
+ {"version":3,"file":"NumericTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/NumericTypeConverter.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 TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport type { LessGreaterOperatorProcessor } from \"./TypeConverter\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/**\n * Base Numeric Type Converter.\n * @public\n */\nexport abstract class NumericTypeConverterBase\n extends TypeConverter\n implements LessGreaterOperatorProcessor\n{\n public override get isLessGreaterType(): boolean {\n return true;\n }\n\n public isLessThan(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\n return a < b;\n }\n\n public isLessThanOrEqualTo(\n a: Primitives.Numeric,\n b: Primitives.Numeric\n ): boolean {\n return a <= b;\n }\n\n public isGreaterThan(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\n return a > b;\n }\n\n public isGreaterThanOrEqualTo(\n a: Primitives.Numeric,\n b: Primitives.Numeric\n ): boolean {\n return a >= b;\n }\n\n public sortCompare(\n a: Primitives.Numeric,\n b: Primitives.Numeric,\n _ignoreCase?: boolean\n ): number {\n return +a - +b;\n }\n}\n\n/**\n * Float Type Converter.\n * @public\n */\nexport class FloatTypeConverter extends NumericTypeConverterBase {\n private static parseString(value: string): number | undefined {\n const parsedValue = parseFloat(value);\n return Number.isNaN(parsedValue) ? undefined : parsedValue;\n }\n\n public override convertToString(value?: Primitives.Float) {\n if (value === undefined) return \"\";\n\n let numericValue = 0;\n if (typeof value === \"string\") {\n if (value === \"-\" || value === \"\" || value === \"-0.0\" || value === \"-0\") {\n // handle these semi-valid values as 0\n numericValue = 0;\n } else {\n numericValue = FloatTypeConverter.parseString(value) ?? 0;\n }\n } else {\n numericValue = value;\n }\n // this is close to calling `toFixed(2)`, but cuts of any trailing zeros\n let stringValue = (Math.round(100 * numericValue) / 100).toString();\n // because this is a _float_ converter, we want to emphasize the number is a float - make\n // sure there's a decimal part\n if (stringValue.indexOf(\".\") === -1) stringValue += \".0\";\n return stringValue;\n }\n\n public override convertFromString(value: string): number | undefined {\n return FloatTypeConverter.parseString(value);\n }\n}\nTypeConverterManager.registerConverter(\n StandardTypeNames.Float,\n FloatTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Double,\n FloatTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Number,\n FloatTypeConverter\n);\n\n/**\n * Int Type Converter.\n * @public\n */\nexport class IntTypeConverter extends NumericTypeConverterBase {\n private static parseString(value: string): number | undefined {\n const parsedValue = parseInt(value, 10);\n return Number.isNaN(parsedValue) ? undefined : parsedValue;\n }\n\n public override convertToString(value?: Primitives.Int) {\n if (value === undefined) return \"\";\n\n let numericValue = 0;\n if (typeof value === \"string\") {\n if (value === \"-\" || value === \"\" || value === \"-0\") {\n // handle these semi-valid values as 0\n numericValue = 0;\n } else {\n numericValue = IntTypeConverter.parseString(value) ?? 0;\n }\n } else {\n numericValue = value;\n }\n return Math.round(numericValue).toString();\n }\n\n public override convertFromString(value: string): number | undefined {\n return IntTypeConverter.parseString(value);\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Int, IntTypeConverter);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Integer,\n IntTypeConverter\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StringTypeConverter.d.ts","sourceRoot":"","sources":["../../../../src/components-react/converters/StringTypeConverter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0DAA0D;IAC1D,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IAClE,wDAAwD;IACxD,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IAChE,uDAAuD;IACvD,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IAChE,+DAA+D;IAC/D,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IACtE,kEAAkE;IAClE,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IACrE,sEAAsE;IACtE,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IACxE,sCAAsC;IACtC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,0CAA0C;IAC1C,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,qBAAa,mBACX,SAAQ,aACR,YAAW,uBAAuB;IAElB,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM;IAIzC,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAIxC,WAAW,CAChB,MAAM,EAAE,UAAU,CAAC,MAAM,EACzB,MAAM,EAAE,UAAU,CAAC,MAAM,EACzB,UAAU,CAAC,EAAE,OAAO,GACnB,MAAM;IAST,IAAoB,YAAY,IAAI,OAAO,CAE1C;IAEM,UAAU,CACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAWH,QAAQ,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAgBH,QAAQ,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAYH,cAAc,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAIH,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAIH,gBAAgB,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAIH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKhC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI1C,OAAO,CAAC,aAAa;CAKtB"}
1
+ {"version":3,"file":"StringTypeConverter.d.ts","sourceRoot":"","sources":["../../../../src/components-react/converters/StringTypeConverter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0DAA0D;IAC1D,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IAClE,wDAAwD;IACxD,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IAChE,uDAAuD;IACvD,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IAChE,+DAA+D;IAC/D,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IACtE,kEAAkE;IAClE,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IACrE,sEAAsE;IACtE,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;IACxE,sCAAsC;IACtC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,0CAA0C;IAC1C,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,qBAAa,mBACX,SAAQ,aACR,YAAW,uBAAuB;IAElB,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM;IAIzC,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAIxC,WAAW,CAChB,MAAM,EAAE,UAAU,CAAC,MAAM,EACzB,MAAM,EAAE,UAAU,CAAC,MAAM,EACzB,UAAU,CAAC,EAAE,OAAO,GACnB,MAAM;IAST,IAAoB,YAAY,IAAI,OAAO,CAE1C;IAEM,UAAU,CACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAWH,QAAQ,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAgBH,QAAQ,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAYH,cAAc,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAIH,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAIH,gBAAgB,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,OAAO;IAIH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKhC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI1C,OAAO,CAAC,aAAa;CAKtB"}
@@ -5,9 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module TypeConverters
7
7
  */
8
- import { StandardTypeNames } from "@itwin/appui-abstract";
9
8
  import { TypeConverter } from "./TypeConverter";
10
- import { TypeConverterManager } from "./TypeConverterManager";
11
9
  /**
12
10
  * String Type Converter.
13
11
  * @public
@@ -89,7 +87,7 @@ export class StringTypeConverter extends TypeConverter {
89
87
  return true;
90
88
  }
91
89
  }
92
- TypeConverterManager.registerConverter(StandardTypeNames.Text, StringTypeConverter);
93
- TypeConverterManager.registerConverter(StandardTypeNames.String, StringTypeConverter);
94
- TypeConverterManager.registerConverter(StandardTypeNames.URL, StringTypeConverter);
90
+ /*
91
+ NOTE: As this is the default type converter, it's registrations are directly in TypeConverterManager file.
92
+ */
95
93
  //# sourceMappingURL=StringTypeConverter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StringTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/StringTypeConverter.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 TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/** Operators for string types\n * @public\n */\nexport interface StringOperatorProcessor {\n /** Determines if one string starts with another string */\n startsWith(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string ends with another string */\n endsWith(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string contains another string */\n contains(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string does not contain another string */\n doesNotContain(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string is contained within another string */\n isContainedIn(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string is not contained within another string */\n isNotContainedIn(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if a string is empty */\n isEmpty(a: string): boolean;\n /** Determines if a string is not empty */\n isNotEmpty(a: string): boolean;\n}\n\n/**\n * String Type Converter.\n * @public\n */\nexport class StringTypeConverter\n extends TypeConverter\n implements StringOperatorProcessor\n{\n public override convertToString(value?: Primitives.String) {\n return value ? value.toString() : \"\";\n }\n\n public override convertFromString(value: string) {\n return value;\n }\n\n public sortCompare(\n valueA: Primitives.String,\n valueB: Primitives.String,\n ignoreCase?: boolean\n ): number {\n if (!this.checkArgTypes(valueA, valueB)) return 0;\n if (ignoreCase)\n return valueA\n .toLocaleLowerCase()\n .localeCompare(valueB.toLocaleLowerCase());\n else return valueA.localeCompare(valueB);\n }\n\n public override get isStringType(): boolean {\n return true;\n }\n\n public startsWith(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB)) return false;\n\n if (caseSensitive) return valueA.substring(0, valueB.length) === valueB;\n\n return (\n valueA.toLocaleUpperCase().substring(0, valueB.length) ===\n valueB.toLocaleUpperCase()\n );\n }\n\n public endsWith(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB)) return false;\n\n const position = valueA.length - valueB.length;\n if (position < 0) return false;\n\n let lastIndex: number;\n if (caseSensitive) lastIndex = valueA.indexOf(valueB, position);\n else\n lastIndex = valueA\n .toLocaleUpperCase()\n .indexOf(valueB.toLocaleUpperCase(), position);\n\n return lastIndex !== -1 && lastIndex === position;\n }\n\n public contains(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB)) return false;\n\n if (valueB.length > valueA.length) return false;\n\n if (caseSensitive) return valueA.indexOf(valueB, 0) !== -1;\n\n return (\n valueA.toLocaleUpperCase().indexOf(valueB.toLocaleUpperCase(), 0) !== -1\n );\n }\n\n public doesNotContain(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n return !this.contains(valueA, valueB, caseSensitive);\n }\n\n public isContainedIn(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n return this.contains(valueB, valueA, caseSensitive);\n }\n\n public isNotContainedIn(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n return this.doesNotContain(valueB, valueA, caseSensitive);\n }\n\n public isEmpty(valueA: string): boolean {\n if (!this.checkArgTypes(valueA)) return true;\n return valueA.length === 0;\n }\n\n public isNotEmpty(valueA: string): boolean {\n return !this.isEmpty(valueA);\n }\n\n private checkArgTypes(valueA: string, valueB?: string): boolean {\n if (typeof valueA !== \"string\") return false;\n if (valueB && typeof valueB !== \"string\") return false;\n return true;\n }\n}\n\nTypeConverterManager.registerConverter(\n StandardTypeNames.Text,\n StringTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.String,\n StringTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.URL,\n StringTypeConverter\n);\n"]}
1
+ {"version":3,"file":"StringTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/StringTypeConverter.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 TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { TypeConverter } from \"./TypeConverter\";\n\n/** Operators for string types\n * @public\n */\nexport interface StringOperatorProcessor {\n /** Determines if one string starts with another string */\n startsWith(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string ends with another string */\n endsWith(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string contains another string */\n contains(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string does not contain another string */\n doesNotContain(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string is contained within another string */\n isContainedIn(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if one string is not contained within another string */\n isNotContainedIn(a: string, b: string, caseSensitive: boolean): boolean;\n /** Determines if a string is empty */\n isEmpty(a: string): boolean;\n /** Determines if a string is not empty */\n isNotEmpty(a: string): boolean;\n}\n\n/**\n * String Type Converter.\n * @public\n */\nexport class StringTypeConverter\n extends TypeConverter\n implements StringOperatorProcessor\n{\n public override convertToString(value?: Primitives.String) {\n return value ? value.toString() : \"\";\n }\n\n public override convertFromString(value: string) {\n return value;\n }\n\n public sortCompare(\n valueA: Primitives.String,\n valueB: Primitives.String,\n ignoreCase?: boolean\n ): number {\n if (!this.checkArgTypes(valueA, valueB)) return 0;\n if (ignoreCase)\n return valueA\n .toLocaleLowerCase()\n .localeCompare(valueB.toLocaleLowerCase());\n else return valueA.localeCompare(valueB);\n }\n\n public override get isStringType(): boolean {\n return true;\n }\n\n public startsWith(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB)) return false;\n\n if (caseSensitive) return valueA.substring(0, valueB.length) === valueB;\n\n return (\n valueA.toLocaleUpperCase().substring(0, valueB.length) ===\n valueB.toLocaleUpperCase()\n );\n }\n\n public endsWith(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB)) return false;\n\n const position = valueA.length - valueB.length;\n if (position < 0) return false;\n\n let lastIndex: number;\n if (caseSensitive) lastIndex = valueA.indexOf(valueB, position);\n else\n lastIndex = valueA\n .toLocaleUpperCase()\n .indexOf(valueB.toLocaleUpperCase(), position);\n\n return lastIndex !== -1 && lastIndex === position;\n }\n\n public contains(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB)) return false;\n\n if (valueB.length > valueA.length) return false;\n\n if (caseSensitive) return valueA.indexOf(valueB, 0) !== -1;\n\n return (\n valueA.toLocaleUpperCase().indexOf(valueB.toLocaleUpperCase(), 0) !== -1\n );\n }\n\n public doesNotContain(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n return !this.contains(valueA, valueB, caseSensitive);\n }\n\n public isContainedIn(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n return this.contains(valueB, valueA, caseSensitive);\n }\n\n public isNotContainedIn(\n valueA: string,\n valueB: string,\n caseSensitive: boolean\n ): boolean {\n return this.doesNotContain(valueB, valueA, caseSensitive);\n }\n\n public isEmpty(valueA: string): boolean {\n if (!this.checkArgTypes(valueA)) return true;\n return valueA.length === 0;\n }\n\n public isNotEmpty(valueA: string): boolean {\n return !this.isEmpty(valueA);\n }\n\n private checkArgTypes(valueA: string, valueB?: string): boolean {\n if (typeof valueA !== \"string\") return false;\n if (valueB && typeof valueB !== \"string\") return false;\n return true;\n }\n}\n\n/*\nNOTE: As this is the default type converter, it's registrations are directly in TypeConverterManager file.\n*/\n"]}
@@ -31,8 +31,7 @@ export class TypeConverter {
31
31
  }
32
32
  /** Converts a value associated with a property description to a string */
33
33
  convertPropertyToString(propertyDescription, value) {
34
- var _a;
35
- return this.convertToStringWithOptions(value, (_a = propertyDescription.converter) === null || _a === void 0 ? void 0 : _a.options);
34
+ return this.convertToStringWithOptions(value, propertyDescription.converter?.options);
36
35
  }
37
36
  /** Converts a string with a property record to a property value */
38
37
  async convertFromStringToPropertyValue(value, propertyRecord) {
@@ -1 +1 @@
1
- {"version":3,"file":"TypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAWH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAiD5D;;;GAGG;AACH,MAAM,OAAgB,aAAa;IAGjC,6CAA6C;IACtC,eAAe,CAAC,KAAwB;QAC7C,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,wEAAwE;IACjE,0BAA0B,CAC/B,KAAwB,EACxB,QAAiC;QAEjC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,6CAA6C;IACtC,iBAAiB,CACtB,MAAc;QAKd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0EAA0E;IACnE,4BAA4B,CACjC,KAAa,EACb,QAAiC;QAKjC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,0EAA0E;IACnE,uBAAuB,CAC5B,mBAAwC,EACxC,KAAwB;;QAExB,OAAO,IAAI,CAAC,0BAA0B,CACpC,KAAK,EACL,MAAA,mBAAmB,CAAC,SAAS,0CAAE,OAAO,CACvC,CAAC;IACJ,CAAC;IAED,mEAAmE;IAC5D,KAAK,CAAC,gCAAgC,CAC3C,KAAa,EACb,cAA+B;QAE/B,MAAM,gBAAgB,GACpB,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS;YACjD,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO;YAC3C,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,4BAA4B,CACzD,KAAK,EACL,gBAAgB,CACjB,CAAC;QACF,MAAM,aAAa,GAAmB;YACpC,WAAW,EAAE,mBAAmB,CAAC,SAAS;YAC1C,KAAK,EAAE,WAAW;YAClB,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IASD,mDAAmD;IAC5C,SAAS,CACd,MAAwB,EACxB,MAAwB;QAExB,OAAO,MAAM,KAAK,MAAM,CAAC;IAC3B,CAAC;IAED,uDAAuD;IAChD,YAAY,CACjB,MAAwB,EACxB,MAAwB;QAExB,OAAO,MAAM,KAAK,MAAM,CAAC;IAC3B,CAAC;IAED,2DAA2D;IACpD,MAAM,CAAC,KAAuB;QACnC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,mEAAmE;IAC5D,SAAS,CAAC,KAAuB;QACtC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,uDAAuD;IACvD,IAAW,YAAY;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,wDAAwD;IACxD,IAAW,iBAAiB;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,wDAAwD;IACxD,IAAW,aAAa;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,yDAAyD;IACzD,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;CACF","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 TypeConverters\n */\n\n// cSpell:ignore valuetypes shortdate\n\nimport type {\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n PropertyRecord,\n PropertyValue,\n} from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\n\n/** Sort compare method for types that support sorting\n * @public\n */\nexport interface SortComparer {\n /** Sort function for two primitive values */\n sortCompare(\n valueA: Primitives.Value,\n valueB: Primitives.Value,\n ignoreCase?: boolean\n ): number;\n}\n\n/** Operators for all filterable types\n * @public\n */\nexport interface OperatorProcessor {\n /** Determines if two primitive values are equal */\n isEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\n /** Determines if two primitive values are not equal */\n isNotEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\n}\n\n/** Operators for Numeric types, DateTime, TimeSpan, or any type that supports these comparisons\n * @public\n */\nexport interface LessGreaterOperatorProcessor {\n /** Determines if a primitive values is less than another primitive value */\n isLessThan(a: Primitives.Value, b: Primitives.Value): boolean;\n /** Determines if a primitive values is less than or equal to another primitive value */\n isLessThanOrEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\n /** Determines if a primitive values is greater than another primitive value */\n isGreaterThan(a: Primitives.Value, b: Primitives.Value): boolean;\n /** Determines if a primitive values is greater than or equal to another primitive value */\n isGreaterThanOrEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\n}\n\n/** Operators for all filterable null-able types\n * @public\n */\nexport interface NullableOperatorProcessor {\n /** Determines if a primitive value is null or undefined */\n isNull(value: Primitives.Value): boolean;\n /** Determines if a primitive value is not null or not undefined */\n isNotNull(value: Primitives.Value): boolean;\n}\n\n/**\n * Type Converter base class.\n * @public\n */\nexport abstract class TypeConverter\n implements SortComparer, OperatorProcessor, NullableOperatorProcessor\n{\n /** Converts a primitive value to a string */\n public convertToString(value?: Primitives.Value): string | Promise<string> {\n if (value === undefined) return \"\";\n return value.toString();\n }\n\n /** Default implementation just calls convertToString with no options */\n public convertToStringWithOptions(\n value?: Primitives.Value,\n _options?: { [key: string]: any }\n ): string | Promise<string> {\n return this.convertToString(value);\n }\n\n /** Converts a string to a primitive value */\n public convertFromString(\n _value: string\n ):\n | ConvertedPrimitives.Value\n | undefined\n | Promise<ConvertedPrimitives.Value | undefined> {\n return undefined;\n }\n\n /** Default implementation just calls convertFromString with no options */\n public convertFromStringWithOptions(\n value: string,\n _options?: { [key: string]: any }\n ):\n | ConvertedPrimitives.Value\n | undefined\n | Promise<ConvertedPrimitives.Value | undefined> {\n return this.convertFromString(value);\n }\n\n /** Converts a value associated with a property description to a string */\n public convertPropertyToString(\n propertyDescription: PropertyDescription,\n value?: Primitives.Value\n ): string | Promise<string> {\n return this.convertToStringWithOptions(\n value,\n propertyDescription.converter?.options\n );\n }\n\n /** Converts a string with a property record to a property value */\n public async convertFromStringToPropertyValue(\n value: string,\n propertyRecord?: PropertyRecord\n ): Promise<PropertyValue> {\n const converterOptions =\n propertyRecord && propertyRecord.property.converter\n ? propertyRecord.property.converter.options\n : undefined;\n const stringValue = await this.convertFromStringWithOptions(\n value,\n converterOptions\n );\n const propertyValue: PrimitiveValue = {\n valueFormat: PropertyValueFormat.Primitive,\n value: stringValue,\n displayValue: \"\",\n };\n return propertyValue;\n }\n\n /** Sort function for two primitive values */\n public abstract sortCompare(\n valueA: Primitives.Value,\n valueB: Primitives.Value,\n _ignoreCase?: boolean\n ): number;\n\n /** Determines if two primitive values are equal */\n public isEqualTo(\n valueA: Primitives.Value,\n valueB: Primitives.Value\n ): boolean {\n return valueA === valueB;\n }\n\n /** Determines if two primitive values are not equal */\n public isNotEqualTo(\n valueA: Primitives.Value,\n valueB: Primitives.Value\n ): boolean {\n return valueA !== valueB;\n }\n\n /** Determines if a primitive value is null or undefined */\n public isNull(value: Primitives.Value): boolean {\n return value === null || value === undefined;\n }\n\n /** Determines if a primitive value is not null or not undefined */\n public isNotNull(value: Primitives.Value): boolean {\n return value !== null && value !== undefined;\n }\n\n /** Determines if the converter is for a string type */\n public get isStringType(): boolean {\n return false;\n }\n /** Determines if the converter is for a numeric type */\n public get isLessGreaterType(): boolean {\n return false;\n }\n /** Determines if the converter is for a boolean type */\n public get isBooleanType(): boolean {\n return false;\n }\n /** Determines if the converter is for a nullable type */\n public get isNullableType(): boolean {\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"TypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAWH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAiD5D;;;GAGG;AACH,MAAM,OAAgB,aAAa;IAGjC,6CAA6C;IACtC,eAAe,CAAC,KAAwB;QAC7C,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,wEAAwE;IACjE,0BAA0B,CAC/B,KAAwB,EACxB,QAAiC;QAEjC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,6CAA6C;IACtC,iBAAiB,CACtB,MAAc;QAKd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0EAA0E;IACnE,4BAA4B,CACjC,KAAa,EACb,QAAiC;QAKjC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,0EAA0E;IACnE,uBAAuB,CAC5B,mBAAwC,EACxC,KAAwB;QAExB,OAAO,IAAI,CAAC,0BAA0B,CACpC,KAAK,EACL,mBAAmB,CAAC,SAAS,EAAE,OAAO,CACvC,CAAC;IACJ,CAAC;IAED,mEAAmE;IAC5D,KAAK,CAAC,gCAAgC,CAC3C,KAAa,EACb,cAA+B;QAE/B,MAAM,gBAAgB,GACpB,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS;YACjD,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO;YAC3C,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,4BAA4B,CACzD,KAAK,EACL,gBAAgB,CACjB,CAAC;QACF,MAAM,aAAa,GAAmB;YACpC,WAAW,EAAE,mBAAmB,CAAC,SAAS;YAC1C,KAAK,EAAE,WAAW;YAClB,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IASD,mDAAmD;IAC5C,SAAS,CACd,MAAwB,EACxB,MAAwB;QAExB,OAAO,MAAM,KAAK,MAAM,CAAC;IAC3B,CAAC;IAED,uDAAuD;IAChD,YAAY,CACjB,MAAwB,EACxB,MAAwB;QAExB,OAAO,MAAM,KAAK,MAAM,CAAC;IAC3B,CAAC;IAED,2DAA2D;IACpD,MAAM,CAAC,KAAuB;QACnC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,mEAAmE;IAC5D,SAAS,CAAC,KAAuB;QACtC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,uDAAuD;IACvD,IAAW,YAAY;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,wDAAwD;IACxD,IAAW,iBAAiB;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,wDAAwD;IACxD,IAAW,aAAa;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,yDAAyD;IACzD,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;CACF","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 TypeConverters\n */\n\n// cSpell:ignore valuetypes shortdate\n\nimport type {\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n PropertyRecord,\n PropertyValue,\n} from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\n\n/** Sort compare method for types that support sorting\n * @public\n */\nexport interface SortComparer {\n /** Sort function for two primitive values */\n sortCompare(\n valueA: Primitives.Value,\n valueB: Primitives.Value,\n ignoreCase?: boolean\n ): number;\n}\n\n/** Operators for all filterable types\n * @public\n */\nexport interface OperatorProcessor {\n /** Determines if two primitive values are equal */\n isEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\n /** Determines if two primitive values are not equal */\n isNotEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\n}\n\n/** Operators for Numeric types, DateTime, TimeSpan, or any type that supports these comparisons\n * @public\n */\nexport interface LessGreaterOperatorProcessor {\n /** Determines if a primitive values is less than another primitive value */\n isLessThan(a: Primitives.Value, b: Primitives.Value): boolean;\n /** Determines if a primitive values is less than or equal to another primitive value */\n isLessThanOrEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\n /** Determines if a primitive values is greater than another primitive value */\n isGreaterThan(a: Primitives.Value, b: Primitives.Value): boolean;\n /** Determines if a primitive values is greater than or equal to another primitive value */\n isGreaterThanOrEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\n}\n\n/** Operators for all filterable null-able types\n * @public\n */\nexport interface NullableOperatorProcessor {\n /** Determines if a primitive value is null or undefined */\n isNull(value: Primitives.Value): boolean;\n /** Determines if a primitive value is not null or not undefined */\n isNotNull(value: Primitives.Value): boolean;\n}\n\n/**\n * Type Converter base class.\n * @public\n */\nexport abstract class TypeConverter\n implements SortComparer, OperatorProcessor, NullableOperatorProcessor\n{\n /** Converts a primitive value to a string */\n public convertToString(value?: Primitives.Value): string | Promise<string> {\n if (value === undefined) return \"\";\n return value.toString();\n }\n\n /** Default implementation just calls convertToString with no options */\n public convertToStringWithOptions(\n value?: Primitives.Value,\n _options?: { [key: string]: any }\n ): string | Promise<string> {\n return this.convertToString(value);\n }\n\n /** Converts a string to a primitive value */\n public convertFromString(\n _value: string\n ):\n | ConvertedPrimitives.Value\n | undefined\n | Promise<ConvertedPrimitives.Value | undefined> {\n return undefined;\n }\n\n /** Default implementation just calls convertFromString with no options */\n public convertFromStringWithOptions(\n value: string,\n _options?: { [key: string]: any }\n ):\n | ConvertedPrimitives.Value\n | undefined\n | Promise<ConvertedPrimitives.Value | undefined> {\n return this.convertFromString(value);\n }\n\n /** Converts a value associated with a property description to a string */\n public convertPropertyToString(\n propertyDescription: PropertyDescription,\n value?: Primitives.Value\n ): string | Promise<string> {\n return this.convertToStringWithOptions(\n value,\n propertyDescription.converter?.options\n );\n }\n\n /** Converts a string with a property record to a property value */\n public async convertFromStringToPropertyValue(\n value: string,\n propertyRecord?: PropertyRecord\n ): Promise<PropertyValue> {\n const converterOptions =\n propertyRecord && propertyRecord.property.converter\n ? propertyRecord.property.converter.options\n : undefined;\n const stringValue = await this.convertFromStringWithOptions(\n value,\n converterOptions\n );\n const propertyValue: PrimitiveValue = {\n valueFormat: PropertyValueFormat.Primitive,\n value: stringValue,\n displayValue: \"\",\n };\n return propertyValue;\n }\n\n /** Sort function for two primitive values */\n public abstract sortCompare(\n valueA: Primitives.Value,\n valueB: Primitives.Value,\n _ignoreCase?: boolean\n ): number;\n\n /** Determines if two primitive values are equal */\n public isEqualTo(\n valueA: Primitives.Value,\n valueB: Primitives.Value\n ): boolean {\n return valueA === valueB;\n }\n\n /** Determines if two primitive values are not equal */\n public isNotEqualTo(\n valueA: Primitives.Value,\n valueB: Primitives.Value\n ): boolean {\n return valueA !== valueB;\n }\n\n /** Determines if a primitive value is null or undefined */\n public isNull(value: Primitives.Value): boolean {\n return value === null || value === undefined;\n }\n\n /** Determines if a primitive value is not null or not undefined */\n public isNotNull(value: Primitives.Value): boolean {\n return value !== null && value !== undefined;\n }\n\n /** Determines if the converter is for a string type */\n public get isStringType(): boolean {\n return false;\n }\n /** Determines if the converter is for a numeric type */\n public get isLessGreaterType(): boolean {\n return false;\n }\n /** Determines if the converter is for a boolean type */\n public get isBooleanType(): boolean {\n return false;\n }\n /** Determines if the converter is for a nullable type */\n public get isNullableType(): boolean {\n return true;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TypeConverterManager.d.ts","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverterManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,WAAW,CAA0C;IACpE,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAgB;IAEpD,OAAO,CAAC,MAAM,CAAC,oBAAoB;WASrB,iBAAiB,CAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,UAAU,aAAa,EAClC,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI;WAkBO,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI;WAYO,YAAY,CACxB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,aAAa;CAiBjB"}
1
+ {"version":3,"file":"TypeConverterManager.d.ts","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverterManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,WAAW,CAA0C;IACpE,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAgB;IAEpD,OAAO,CAAC,MAAM,CAAC,oBAAoB;WASrB,iBAAiB,CAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,UAAU,aAAa,EAClC,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI;WAkBO,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI;WAYO,YAAY,CACxB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,aAAa;CAcjB"}
@@ -5,6 +5,8 @@
5
5
  /** @packageDocumentation
6
6
  * @module TypeConverters
7
7
  */
8
+ import { StandardTypeNames } from "@itwin/appui-abstract";
9
+ import { StringTypeConverter } from "./StringTypeConverter";
8
10
  /**
9
11
  * Manages Type Converters. Type Converters are registered with and obtained from the manager.
10
12
  * @public
@@ -37,7 +39,6 @@ class TypeConverterManager {
37
39
  if (TypeConverterManager._converters.hasOwnProperty(fullConverterName))
38
40
  return TypeConverterManager._converters[fullConverterName];
39
41
  if (!TypeConverterManager._defaultTypeConverter) {
40
- const { StringTypeConverter, } = require("../converters/StringTypeConverter"); // eslint-disable-line @typescript-eslint/no-var-requires
41
42
  TypeConverterManager._defaultTypeConverter = new StringTypeConverter();
42
43
  }
43
44
  return TypeConverterManager._defaultTypeConverter;
@@ -45,4 +46,9 @@ class TypeConverterManager {
45
46
  }
46
47
  TypeConverterManager._converters = {};
47
48
  export { TypeConverterManager };
49
+ // Register these here as this is also the default type register, we always want it to be registered
50
+ // and if moved to the StringTypeConverter it causes a dependency loop issue.
51
+ TypeConverterManager.registerConverter(StandardTypeNames.Text, StringTypeConverter);
52
+ TypeConverterManager.registerConverter(StandardTypeNames.String, StringTypeConverter);
53
+ TypeConverterManager.registerConverter(StandardTypeNames.URL, StringTypeConverter);
48
54
  //# sourceMappingURL=TypeConverterManager.js.map