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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/lib/cjs/components-react/UiComponents.js.map +1 -1
  3. package/lib/cjs/components-react/_target.scss +9 -9
  4. package/lib/cjs/components-react/common/DateUtils.js.map +1 -1
  5. package/lib/cjs/components-react/common/DelayedSpinner.js.map +1 -1
  6. package/lib/cjs/components-react/common/HighlightedText.js.map +1 -1
  7. package/lib/cjs/components-react/common/HighlightingComponentProps.js.map +1 -1
  8. package/lib/cjs/components-react/common/IImageLoader.js.map +1 -1
  9. package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
  10. package/lib/cjs/components-react/common/Links.js.map +1 -1
  11. package/lib/cjs/components-react/common/PageOptions.js.map +1 -1
  12. package/lib/cjs/components-react/common/SubscriptionScheduler.js.map +1 -1
  13. package/lib/cjs/components-react/common/UseAsyncValue.js.map +1 -1
  14. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  15. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  16. package/lib/cjs/components-react/common/UseRerender.js.map +1 -1
  17. package/lib/cjs/components-react/common/countMatchesInString.js.map +1 -1
  18. package/lib/cjs/components-react/common/selection/SelectionHandler.js.map +1 -1
  19. package/lib/cjs/components-react/common/selection/SelectionModes.js.map +1 -1
  20. package/lib/cjs/components-react/converters/BooleanTypeConverter.js.map +1 -1
  21. package/lib/cjs/components-react/converters/CompositeTypeConverter.js.map +1 -1
  22. package/lib/cjs/components-react/converters/DateTimeTypeConverter.js.map +1 -1
  23. package/lib/cjs/components-react/converters/EnumTypeConverter.js.map +1 -1
  24. package/lib/cjs/components-react/converters/HexadecimalTypeConverter.js.map +1 -1
  25. package/lib/cjs/components-react/converters/NavigationPropertyTypeConverter.js.map +1 -1
  26. package/lib/cjs/components-react/converters/NumericTypeConverter.js.map +1 -1
  27. package/lib/cjs/components-react/converters/PointTypeConverter.js.map +1 -1
  28. package/lib/cjs/components-react/converters/StringTypeConverter.js.map +1 -1
  29. package/lib/cjs/components-react/converters/TypeConverter.js.map +1 -1
  30. package/lib/cjs/components-react/converters/TypeConverterManager.js.map +1 -1
  31. package/lib/cjs/components-react/converters/valuetypes/ConvertedTypes.js.map +1 -1
  32. package/lib/cjs/components-react/datepicker/DateField.js.map +1 -1
  33. package/lib/cjs/components-react/datepicker/DateField.scss +22 -22
  34. package/lib/cjs/components-react/datepicker/DatePicker.js.map +1 -1
  35. package/lib/cjs/components-react/datepicker/DatePicker.scss +176 -176
  36. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  37. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.scss +57 -57
  38. package/lib/cjs/components-react/datepicker/IntlFormatter.js.map +1 -1
  39. package/lib/cjs/components-react/datepicker/TimeField.js.map +1 -1
  40. package/lib/cjs/components-react/datepicker/TimeField.scss +76 -76
  41. package/lib/cjs/components-react/editors/BooleanEditor.js.map +1 -1
  42. package/lib/cjs/components-react/editors/BooleanEditor.scss +22 -22
  43. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  44. package/lib/cjs/components-react/editors/CustomNumberEditor.scss +20 -20
  45. package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
  46. package/lib/cjs/components-react/editors/DateTimeEditor.scss +9 -9
  47. package/lib/cjs/components-react/editors/EditorContainer.js.map +1 -1
  48. package/lib/cjs/components-react/editors/EditorContainer.scss +6 -6
  49. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  50. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.scss +141 -141
  51. package/lib/cjs/components-react/editors/EnumEditor.js.map +1 -1
  52. package/lib/cjs/components-react/editors/EnumEditor.scss +22 -22
  53. package/lib/cjs/components-react/editors/IconEditor.js.map +1 -1
  54. package/lib/cjs/components-react/editors/IconEditor.scss +16 -16
  55. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
  56. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.scss +24 -24
  57. package/lib/cjs/components-react/editors/NumericInputEditor.js.map +1 -1
  58. package/lib/cjs/components-react/editors/NumericInputEditor.scss +16 -16
  59. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  60. package/lib/cjs/components-react/editors/PopupButton.scss +116 -116
  61. package/lib/cjs/components-react/editors/PropertyEditorManager.js.map +1 -1
  62. package/lib/cjs/components-react/editors/SliderEditor.js.map +1 -1
  63. package/lib/cjs/components-react/editors/SliderEditor.scss +13 -13
  64. package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
  65. package/lib/cjs/components-react/editors/TextEditor.scss +20 -20
  66. package/lib/cjs/components-react/editors/TextareaEditor.js.map +1 -1
  67. package/lib/cjs/components-react/editors/TextareaEditor.scss +14 -14
  68. package/lib/cjs/components-react/editors/ToggleEditor.js.map +1 -1
  69. package/lib/cjs/components-react/editors/ToggleEditor.scss +23 -23
  70. package/lib/cjs/components-react/editors/variables.scss +7 -7
  71. package/lib/cjs/components-react/favorite/FavoritePropertiesRenderer.js.map +1 -1
  72. package/lib/cjs/components-react/favorite/FavoritePropertyList.js.map +1 -1
  73. package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
  74. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  75. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  76. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +38 -38
  77. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  78. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +68 -68
  79. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  80. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  81. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  82. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  83. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
  84. package/lib/cjs/components-react/filter-builder/Types.js.map +1 -1
  85. package/lib/cjs/components-react/filtering/FilteringInput.js.map +1 -1
  86. package/lib/cjs/components-react/filtering/FilteringInput.scss +58 -58
  87. package/lib/cjs/components-react/filtering/ResultSelector.js.map +1 -1
  88. package/lib/cjs/components-react/filtering/ResultSelector.scss +68 -68
  89. package/lib/cjs/components-react/iconpicker/IconPickerButton.js.map +1 -1
  90. package/lib/cjs/components-react/iconpicker/IconPickerButton.scss +75 -75
  91. package/lib/cjs/components-react/inputs/ParsedInput.js.map +1 -1
  92. package/lib/cjs/components-react/inputs/ParsedInput.scss +23 -23
  93. package/lib/cjs/components-react/properties/ItemStyle.js.map +1 -1
  94. package/lib/cjs/components-react/properties/LinkHandler.js.map +1 -1
  95. package/lib/cjs/components-react/properties/ValueRendererManager.js.map +1 -1
  96. package/lib/cjs/components-react/properties/renderers/ActionButtonList.js.map +1 -1
  97. package/lib/cjs/components-react/properties/renderers/ActionButtonList.scss +25 -25
  98. package/lib/cjs/components-react/properties/renderers/ActionButtonRenderer.js.map +1 -1
  99. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  100. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  101. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -17
  102. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  103. package/lib/cjs/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
  104. package/lib/cjs/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  105. package/lib/cjs/components-react/properties/renderers/PropertyView.js.map +1 -1
  106. package/lib/cjs/components-react/properties/renderers/PropertyView.scss +111 -111
  107. package/lib/cjs/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.js.map +1 -1
  108. package/lib/cjs/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.js.map +1 -1
  109. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  110. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.scss +88 -88
  111. package/lib/cjs/components-react/properties/renderers/value/ArrayPropertyValueRenderer.js.map +1 -1
  112. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  113. package/lib/cjs/components-react/properties/renderers/value/MergedPropertyValueRenderer.js.map +1 -1
  114. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  115. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  116. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  117. package/lib/cjs/components-react/properties/renderers/value/StructPropertyValueRenderer.js.map +1 -1
  118. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
  119. package/lib/cjs/components-react/properties/renderers/value/WithContextStyle.js.map +1 -1
  120. package/lib/cjs/components-react/properties/renderers/value/table/ArrayValueRenderer.js.map +1 -1
  121. package/lib/cjs/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.js.map +1 -1
  122. package/lib/cjs/components-react/properties/renderers/value/table/StructValueRenderer.js.map +1 -1
  123. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  124. package/lib/cjs/components-react/propertygrid/PropertyDataProvider.js.map +1 -1
  125. package/lib/cjs/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
  126. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  127. package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.js.map +1 -1
  128. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  129. package/lib/cjs/components-react/propertygrid/component/PropertyGrid.scss +73 -73
  130. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  131. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  132. package/lib/cjs/components-react/propertygrid/component/PropertyList.js.map +1 -1
  133. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  134. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +101 -101
  135. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  136. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  137. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  138. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  139. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js.map +1 -1
  140. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js.map +1 -1
  141. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js.map +1 -1
  142. package/lib/cjs/components-react/propertygrid/internal/PropertyGridEventHandler.js.map +1 -1
  143. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  144. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
  145. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js.map +1 -1
  146. package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
  147. package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
  148. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
  149. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js.map +1 -1
  150. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
  151. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  152. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  153. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  154. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  155. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  156. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  157. package/lib/cjs/components-react/selectable-content/SelectableContent.js.map +1 -1
  158. package/lib/cjs/components-react/selectable-content/SelectableContent.scss +20 -20
  159. package/lib/cjs/components-react/toolbar/Item.js.map +1 -1
  160. package/lib/cjs/components-react/toolbar/Item.scss +91 -91
  161. package/lib/cjs/components-react/toolbar/ItemWrapper.js.map +1 -1
  162. package/lib/cjs/components-react/toolbar/ItemWrapper.scss +10 -10
  163. package/lib/cjs/components-react/toolbar/Items.js.map +1 -1
  164. package/lib/cjs/components-react/toolbar/Items.scss +96 -96
  165. package/lib/cjs/components-react/toolbar/Overflow.js.map +1 -1
  166. package/lib/cjs/components-react/toolbar/Overflow.scss +57 -57
  167. package/lib/cjs/components-react/toolbar/OverflowPanel.js.map +1 -1
  168. package/lib/cjs/components-react/toolbar/OverflowPanel.scss +37 -37
  169. package/lib/cjs/components-react/toolbar/PopupItem.js.map +1 -1
  170. package/lib/cjs/components-react/toolbar/PopupItem.scss +88 -88
  171. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  172. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  173. package/lib/cjs/components-react/toolbar/Toolbar.js.map +1 -1
  174. package/lib/cjs/components-react/toolbar/Toolbar.scss +18 -18
  175. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  176. package/lib/cjs/components-react/toolbar/_variables.scss +34 -34
  177. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.js.map +1 -1
  178. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.scss +44 -44
  179. package/lib/cjs/components-react/toolbar/groupPanel/Column.js.map +1 -1
  180. package/lib/cjs/components-react/toolbar/groupPanel/Column.scss +9 -9
  181. package/lib/cjs/components-react/toolbar/groupPanel/Columns.js.map +1 -1
  182. package/lib/cjs/components-react/toolbar/groupPanel/Columns.scss +10 -10
  183. package/lib/cjs/components-react/toolbar/groupPanel/Panel.js.map +1 -1
  184. package/lib/cjs/components-react/toolbar/groupPanel/Panel.scss +15 -15
  185. package/lib/cjs/components-react/toolbar/groupPanel/Title.js.map +1 -1
  186. package/lib/cjs/components-react/toolbar/groupPanel/Title.scss +33 -33
  187. package/lib/cjs/components-react/toolbar/groupPanel/_variables.scss +16 -16
  188. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.js.map +1 -1
  189. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.scss +29 -29
  190. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  191. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.scss +117 -117
  192. package/lib/cjs/components-react/toolbar/groupPanel/tool/_variables.scss +12 -12
  193. package/lib/cjs/components-react/toolbar/useDragInteraction.js.map +1 -1
  194. package/lib/cjs/components-react/toolbar/utilities/Direction.js.map +1 -1
  195. package/lib/cjs/components-react/tree/HighlightingEngine.js.map +1 -1
  196. package/lib/cjs/components-react/tree/HighlightingEngine.scss +7 -7
  197. package/lib/cjs/components-react/tree/ImageLoader.js.map +1 -1
  198. package/lib/cjs/components-react/tree/SimpleTreeDataProvider.js.map +1 -1
  199. package/lib/cjs/components-react/tree/TreeComponentTestId.js.map +1 -1
  200. package/lib/cjs/components-react/tree/TreeDataProvider.js.map +1 -1
  201. package/lib/cjs/components-react/tree/controlled/Observable.js.map +1 -1
  202. package/lib/cjs/components-react/tree/controlled/TreeActions.js.map +1 -1
  203. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  204. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  205. package/lib/cjs/components-react/tree/controlled/TreeEvents.js.map +1 -1
  206. package/lib/cjs/components-react/tree/controlled/TreeHooks.js.map +1 -1
  207. package/lib/cjs/components-react/tree/controlled/TreeModel.js.map +1 -1
  208. package/lib/cjs/components-react/tree/controlled/TreeModelSource.js.map +1 -1
  209. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  210. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  211. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.scss +102 -102
  212. package/lib/cjs/components-react/tree/controlled/component/NodeContent.js.map +1 -1
  213. package/lib/cjs/components-react/tree/controlled/component/NodeContent.scss +27 -27
  214. package/lib/cjs/components-react/tree/controlled/component/TreeNodeEditor.js.map +1 -1
  215. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  216. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  217. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  218. package/lib/cjs/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  219. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  220. package/lib/cjs/components-react.js.map +1 -1
  221. package/lib/esm/components-react/UiComponents.js.map +1 -1
  222. package/lib/esm/components-react/_target.scss +9 -9
  223. package/lib/esm/components-react/common/DateUtils.js.map +1 -1
  224. package/lib/esm/components-react/common/DelayedSpinner.js.map +1 -1
  225. package/lib/esm/components-react/common/HighlightedText.js.map +1 -1
  226. package/lib/esm/components-react/common/HighlightingComponentProps.js.map +1 -1
  227. package/lib/esm/components-react/common/IImageLoader.js.map +1 -1
  228. package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
  229. package/lib/esm/components-react/common/Links.js.map +1 -1
  230. package/lib/esm/components-react/common/PageOptions.js.map +1 -1
  231. package/lib/esm/components-react/common/SubscriptionScheduler.js.map +1 -1
  232. package/lib/esm/components-react/common/UseAsyncValue.js.map +1 -1
  233. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  234. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  235. package/lib/esm/components-react/common/UseRerender.js.map +1 -1
  236. package/lib/esm/components-react/common/countMatchesInString.js.map +1 -1
  237. package/lib/esm/components-react/common/selection/SelectionHandler.js.map +1 -1
  238. package/lib/esm/components-react/common/selection/SelectionModes.js.map +1 -1
  239. package/lib/esm/components-react/converters/BooleanTypeConverter.js.map +1 -1
  240. package/lib/esm/components-react/converters/CompositeTypeConverter.js.map +1 -1
  241. package/lib/esm/components-react/converters/DateTimeTypeConverter.js.map +1 -1
  242. package/lib/esm/components-react/converters/EnumTypeConverter.js.map +1 -1
  243. package/lib/esm/components-react/converters/HexadecimalTypeConverter.js.map +1 -1
  244. package/lib/esm/components-react/converters/NavigationPropertyTypeConverter.js.map +1 -1
  245. package/lib/esm/components-react/converters/NumericTypeConverter.js.map +1 -1
  246. package/lib/esm/components-react/converters/PointTypeConverter.js.map +1 -1
  247. package/lib/esm/components-react/converters/StringTypeConverter.js.map +1 -1
  248. package/lib/esm/components-react/converters/TypeConverter.js.map +1 -1
  249. package/lib/esm/components-react/converters/TypeConverterManager.js.map +1 -1
  250. package/lib/esm/components-react/converters/valuetypes/ConvertedTypes.js.map +1 -1
  251. package/lib/esm/components-react/datepicker/DateField.js.map +1 -1
  252. package/lib/esm/components-react/datepicker/DateField.scss +22 -22
  253. package/lib/esm/components-react/datepicker/DatePicker.js.map +1 -1
  254. package/lib/esm/components-react/datepicker/DatePicker.scss +176 -176
  255. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  256. package/lib/esm/components-react/datepicker/DatePickerPopupButton.scss +57 -57
  257. package/lib/esm/components-react/datepicker/IntlFormatter.js.map +1 -1
  258. package/lib/esm/components-react/datepicker/TimeField.js.map +1 -1
  259. package/lib/esm/components-react/datepicker/TimeField.scss +76 -76
  260. package/lib/esm/components-react/editors/BooleanEditor.js.map +1 -1
  261. package/lib/esm/components-react/editors/BooleanEditor.scss +22 -22
  262. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  263. package/lib/esm/components-react/editors/CustomNumberEditor.scss +20 -20
  264. package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
  265. package/lib/esm/components-react/editors/DateTimeEditor.scss +9 -9
  266. package/lib/esm/components-react/editors/EditorContainer.js.map +1 -1
  267. package/lib/esm/components-react/editors/EditorContainer.scss +6 -6
  268. package/lib/esm/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  269. package/lib/esm/components-react/editors/EnumButtonGroupEditor.scss +141 -141
  270. package/lib/esm/components-react/editors/EnumEditor.js.map +1 -1
  271. package/lib/esm/components-react/editors/EnumEditor.scss +22 -22
  272. package/lib/esm/components-react/editors/IconEditor.js.map +1 -1
  273. package/lib/esm/components-react/editors/IconEditor.scss +16 -16
  274. package/lib/esm/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
  275. package/lib/esm/components-react/editors/ImageCheckBoxEditor.scss +24 -24
  276. package/lib/esm/components-react/editors/NumericInputEditor.js.map +1 -1
  277. package/lib/esm/components-react/editors/NumericInputEditor.scss +16 -16
  278. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  279. package/lib/esm/components-react/editors/PopupButton.scss +116 -116
  280. package/lib/esm/components-react/editors/PropertyEditorManager.js.map +1 -1
  281. package/lib/esm/components-react/editors/SliderEditor.js.map +1 -1
  282. package/lib/esm/components-react/editors/SliderEditor.scss +13 -13
  283. package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
  284. package/lib/esm/components-react/editors/TextEditor.scss +20 -20
  285. package/lib/esm/components-react/editors/TextareaEditor.js.map +1 -1
  286. package/lib/esm/components-react/editors/TextareaEditor.scss +14 -14
  287. package/lib/esm/components-react/editors/ToggleEditor.js.map +1 -1
  288. package/lib/esm/components-react/editors/ToggleEditor.scss +23 -23
  289. package/lib/esm/components-react/editors/variables.scss +7 -7
  290. package/lib/esm/components-react/favorite/FavoritePropertiesRenderer.js.map +1 -1
  291. package/lib/esm/components-react/favorite/FavoritePropertyList.js.map +1 -1
  292. package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
  293. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  294. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  295. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +38 -38
  296. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  297. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +68 -68
  298. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  299. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  300. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  301. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  302. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
  303. package/lib/esm/components-react/filter-builder/Types.js.map +1 -1
  304. package/lib/esm/components-react/filtering/FilteringInput.js.map +1 -1
  305. package/lib/esm/components-react/filtering/FilteringInput.scss +58 -58
  306. package/lib/esm/components-react/filtering/ResultSelector.js.map +1 -1
  307. package/lib/esm/components-react/filtering/ResultSelector.scss +68 -68
  308. package/lib/esm/components-react/iconpicker/IconPickerButton.js.map +1 -1
  309. package/lib/esm/components-react/iconpicker/IconPickerButton.scss +75 -75
  310. package/lib/esm/components-react/inputs/ParsedInput.js.map +1 -1
  311. package/lib/esm/components-react/inputs/ParsedInput.scss +23 -23
  312. package/lib/esm/components-react/properties/ItemStyle.js.map +1 -1
  313. package/lib/esm/components-react/properties/LinkHandler.js.map +1 -1
  314. package/lib/esm/components-react/properties/ValueRendererManager.js.map +1 -1
  315. package/lib/esm/components-react/properties/renderers/ActionButtonList.js.map +1 -1
  316. package/lib/esm/components-react/properties/renderers/ActionButtonList.scss +25 -25
  317. package/lib/esm/components-react/properties/renderers/ActionButtonRenderer.js.map +1 -1
  318. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  319. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  320. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -17
  321. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  322. package/lib/esm/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
  323. package/lib/esm/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  324. package/lib/esm/components-react/properties/renderers/PropertyView.js.map +1 -1
  325. package/lib/esm/components-react/properties/renderers/PropertyView.scss +111 -111
  326. package/lib/esm/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.js.map +1 -1
  327. package/lib/esm/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.js.map +1 -1
  328. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  329. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.scss +88 -88
  330. package/lib/esm/components-react/properties/renderers/value/ArrayPropertyValueRenderer.js.map +1 -1
  331. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  332. package/lib/esm/components-react/properties/renderers/value/MergedPropertyValueRenderer.js.map +1 -1
  333. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  334. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  335. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  336. package/lib/esm/components-react/properties/renderers/value/StructPropertyValueRenderer.js.map +1 -1
  337. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
  338. package/lib/esm/components-react/properties/renderers/value/WithContextStyle.js.map +1 -1
  339. package/lib/esm/components-react/properties/renderers/value/table/ArrayValueRenderer.js.map +1 -1
  340. package/lib/esm/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.js.map +1 -1
  341. package/lib/esm/components-react/properties/renderers/value/table/StructValueRenderer.js.map +1 -1
  342. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  343. package/lib/esm/components-react/propertygrid/PropertyDataProvider.js.map +1 -1
  344. package/lib/esm/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
  345. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  346. package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.js.map +1 -1
  347. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  348. package/lib/esm/components-react/propertygrid/component/PropertyGrid.scss +73 -73
  349. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  350. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  351. package/lib/esm/components-react/propertygrid/component/PropertyList.js.map +1 -1
  352. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  353. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +101 -101
  354. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  355. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  356. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  357. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  358. package/lib/esm/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js.map +1 -1
  359. package/lib/esm/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js.map +1 -1
  360. package/lib/esm/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js.map +1 -1
  361. package/lib/esm/components-react/propertygrid/internal/PropertyGridEventHandler.js.map +1 -1
  362. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  363. package/lib/esm/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
  364. package/lib/esm/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js.map +1 -1
  365. package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
  366. package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
  367. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
  368. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js.map +1 -1
  369. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
  370. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  371. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  372. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  373. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  374. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  375. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  376. package/lib/esm/components-react/selectable-content/SelectableContent.js.map +1 -1
  377. package/lib/esm/components-react/selectable-content/SelectableContent.scss +20 -20
  378. package/lib/esm/components-react/toolbar/Item.js.map +1 -1
  379. package/lib/esm/components-react/toolbar/Item.scss +91 -91
  380. package/lib/esm/components-react/toolbar/ItemWrapper.js.map +1 -1
  381. package/lib/esm/components-react/toolbar/ItemWrapper.scss +10 -10
  382. package/lib/esm/components-react/toolbar/Items.js.map +1 -1
  383. package/lib/esm/components-react/toolbar/Items.scss +96 -96
  384. package/lib/esm/components-react/toolbar/Overflow.js.map +1 -1
  385. package/lib/esm/components-react/toolbar/Overflow.scss +57 -57
  386. package/lib/esm/components-react/toolbar/OverflowPanel.js.map +1 -1
  387. package/lib/esm/components-react/toolbar/OverflowPanel.scss +37 -37
  388. package/lib/esm/components-react/toolbar/PopupItem.js.map +1 -1
  389. package/lib/esm/components-react/toolbar/PopupItem.scss +88 -88
  390. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  391. package/lib/esm/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  392. package/lib/esm/components-react/toolbar/Toolbar.js.map +1 -1
  393. package/lib/esm/components-react/toolbar/Toolbar.scss +18 -18
  394. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  395. package/lib/esm/components-react/toolbar/_variables.scss +34 -34
  396. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.js.map +1 -1
  397. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.scss +44 -44
  398. package/lib/esm/components-react/toolbar/groupPanel/Column.js.map +1 -1
  399. package/lib/esm/components-react/toolbar/groupPanel/Column.scss +9 -9
  400. package/lib/esm/components-react/toolbar/groupPanel/Columns.js.map +1 -1
  401. package/lib/esm/components-react/toolbar/groupPanel/Columns.scss +10 -10
  402. package/lib/esm/components-react/toolbar/groupPanel/Panel.js.map +1 -1
  403. package/lib/esm/components-react/toolbar/groupPanel/Panel.scss +15 -15
  404. package/lib/esm/components-react/toolbar/groupPanel/Title.js.map +1 -1
  405. package/lib/esm/components-react/toolbar/groupPanel/Title.scss +33 -33
  406. package/lib/esm/components-react/toolbar/groupPanel/_variables.scss +16 -16
  407. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.js.map +1 -1
  408. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.scss +29 -29
  409. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  410. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.scss +117 -117
  411. package/lib/esm/components-react/toolbar/groupPanel/tool/_variables.scss +12 -12
  412. package/lib/esm/components-react/toolbar/useDragInteraction.js.map +1 -1
  413. package/lib/esm/components-react/toolbar/utilities/Direction.js.map +1 -1
  414. package/lib/esm/components-react/tree/HighlightingEngine.js.map +1 -1
  415. package/lib/esm/components-react/tree/HighlightingEngine.scss +7 -7
  416. package/lib/esm/components-react/tree/ImageLoader.js.map +1 -1
  417. package/lib/esm/components-react/tree/SimpleTreeDataProvider.js.map +1 -1
  418. package/lib/esm/components-react/tree/TreeComponentTestId.js.map +1 -1
  419. package/lib/esm/components-react/tree/TreeDataProvider.js.map +1 -1
  420. package/lib/esm/components-react/tree/controlled/Observable.js.map +1 -1
  421. package/lib/esm/components-react/tree/controlled/TreeActions.js.map +1 -1
  422. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  423. package/lib/esm/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  424. package/lib/esm/components-react/tree/controlled/TreeEvents.js.map +1 -1
  425. package/lib/esm/components-react/tree/controlled/TreeHooks.js.map +1 -1
  426. package/lib/esm/components-react/tree/controlled/TreeModel.js.map +1 -1
  427. package/lib/esm/components-react/tree/controlled/TreeModelSource.js.map +1 -1
  428. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  429. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  430. package/lib/esm/components-react/tree/controlled/component/ControlledTree.scss +102 -102
  431. package/lib/esm/components-react/tree/controlled/component/NodeContent.js.map +1 -1
  432. package/lib/esm/components-react/tree/controlled/component/NodeContent.scss +27 -27
  433. package/lib/esm/components-react/tree/controlled/component/TreeNodeEditor.js.map +1 -1
  434. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  435. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  436. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  437. package/lib/esm/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
  438. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  439. package/lib/esm/components-react.js.map +1 -1
  440. package/lib/public/locales/en/UiComponents.json +139 -139
  441. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"UseDebouncedAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;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,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEtF;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAU,iBAAuD;;IACrG,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAW,EAAE,EAAE,CAAC,CAAC,CAAC,kDAAkD;IAE7H,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,OAAO,EAAE,EACT,QAAQ,EAAE,EACV,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,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnC,IAAI,UAAU,CAAC,QAAQ;QACrB,MAAM,MAAA,UAAU,CAAC,KAAK,mCAAI,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAE/E,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 { scheduleSubscription, SubscriptionScheduler } 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>(valueToBeResolved: undefined | (() => Promise<TReturn>)) {\n const scheduler = useMemo(() => new SubscriptionScheduler<TReturn>(), []); // eslint-disable-line react-hooks/exhaustive-deps\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 publish(),\n refCount(),\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 () => { subscription.unsubscribe(); };\n }, [valueToBeResolved, scheduler]);\n\n if (errorState.hasError)\n throw errorState.error ?? new Error(\"Exception in `useDebouncedAsyncValue`\");\n\n return { value, inProgress };\n}\n"]}
1
+ {"version":3,"file":"UseDebouncedAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;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,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEtF;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAU,iBAAuD;;IACrG,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAW,EAAE,EAAE,CAAC,CAAC,CAAC,kDAAkD;IAE7H,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,OAAO,EAAE,EACT,QAAQ,EAAE,EACV,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,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnC,IAAI,UAAU,CAAC,QAAQ;QACrB,MAAM,MAAA,UAAU,CAAC,KAAK,mCAAI,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAE/E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport { defer } from \"rxjs/internal/observable/defer\";\r\nimport { publish } from \"rxjs/internal/operators/publish\";\r\nimport { refCount } from \"rxjs/internal/operators/refCount\";\r\nimport { scheduleSubscription, SubscriptionScheduler } from \"./SubscriptionScheduler\";\r\n\r\n/**\r\n * Custom hook for working with promise values.\r\n * Promises are debounced using trailing and leading edge.\r\n * The first promise will always be executed.\r\n * Any promises following the first while it is executing will be scheduled (and unscheduled), leaving only the last promise to be resolved.\r\n * Once the first promise finishes resolving, the last passed promise starts resolving.\r\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.\r\n * @beta\r\n */\r\nexport function useDebouncedAsyncValue<TReturn>(valueToBeResolved: undefined | (() => Promise<TReturn>)) {\r\n const scheduler = useMemo(() => new SubscriptionScheduler<TReturn>(), []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const [value, setValue] = useState<TReturn>();\r\n const [inProgress, setInProgress] = useState(false);\r\n const [errorState, setErrorState] = useState<{\r\n error: Error | undefined;\r\n hasError: boolean;\r\n }>({\r\n error: undefined,\r\n hasError: false,\r\n });\r\n\r\n useEffect(() => {\r\n if (!valueToBeResolved) {\r\n setValue(undefined);\r\n setInProgress(false);\r\n return;\r\n }\r\n\r\n setInProgress(true);\r\n // schedule and subscribe to the observable emitting value from valueToBeResolved promise\r\n const subscription = defer(valueToBeResolved)\r\n .pipe(\r\n publish(),\r\n refCount(),\r\n scheduleSubscription(scheduler),\r\n )\r\n .subscribe({\r\n next: (data) => {\r\n setValue(data);\r\n setInProgress(false);\r\n },\r\n error: (err) => {\r\n setErrorState({ error: err, hasError: true });\r\n setInProgress(false);\r\n },\r\n });\r\n\r\n return () => { subscription.unsubscribe(); };\r\n }, [valueToBeResolved, scheduler]);\r\n\r\n if (errorState.hasError)\r\n throw errorState.error ?? new Error(\"Exception in `useDebouncedAsyncValue`\");\r\n\r\n return { value, inProgress };\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UseRerender.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseRerender.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAuBzC,gBAAgB;AAChB,MAAM,UAAU,WAAW,CAAI,cAAkB;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC;IACpG,IAAI,IAAI,CAAC,iBAAiB,EAAE;QAC1B,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;SAAM;QACL,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;KACvB;IAED,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO;QACL,eAAe,EAAE,IAAI,CAAC,OAAO;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE;YACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;YAC1B,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { useRef, useState } from \"react\";\n\n/** @internal */\ninterface RerenderData<T extends (arg: any) => void> {\n /** Data specific to the current rerender cycle. */\n rerenderContext: Parameters<T>[0];\n /** Identifies the current rerender cycle. Starts at 0. */\n numRerenders: number;\n /** Rerenders component with new `rerenderContext`, if one is provided. */\n rerender: T;\n}\n\n/**\n * @internal\n * Makes component able to rerender itself.\n */\nexport function useRerender(): RerenderData<() => void>;\n/**\n * @internal\n * Makes component able to rerender itself while preserving some data between rerenders.\n * @param initialContext Data that component receives on first render cycle.\n */\nexport function useRerender<T>(initialContext: T): RerenderData<(newContext: T) => void>;\n/** @internal */\nexport function useRerender<T>(initialContext?: T): RerenderData<(newContext?: T) => void> {\n const data = useRef({ numRerenders: 0, rerenderRequested: false, context: initialContext }).current;\n if (data.rerenderRequested) {\n data.numRerenders += 1;\n data.rerenderRequested = false;\n } else {\n data.context = initialContext;\n data.numRerenders = 0;\n }\n\n const [_, setState] = useState({});\n return {\n rerenderContext: data.context,\n numRerenders: data.numRerenders,\n rerender: (newContext) => {\n data.rerenderRequested = true;\n data.context = newContext;\n setState({});\n },\n };\n}\n"]}
1
+ {"version":3,"file":"UseRerender.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseRerender.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAuBzC,gBAAgB;AAChB,MAAM,UAAU,WAAW,CAAI,cAAkB;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC;IACpG,IAAI,IAAI,CAAC,iBAAiB,EAAE;QAC1B,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;SAAM;QACL,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;KACvB;IAED,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO;QACL,eAAe,EAAE,IAAI,CAAC,OAAO;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE;YACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;YAC1B,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { useRef, useState } from \"react\";\r\n\r\n/** @internal */\r\ninterface RerenderData<T extends (arg: any) => void> {\r\n /** Data specific to the current rerender cycle. */\r\n rerenderContext: Parameters<T>[0];\r\n /** Identifies the current rerender cycle. Starts at 0. */\r\n numRerenders: number;\r\n /** Rerenders component with new `rerenderContext`, if one is provided. */\r\n rerender: T;\r\n}\r\n\r\n/**\r\n * @internal\r\n * Makes component able to rerender itself.\r\n */\r\nexport function useRerender(): RerenderData<() => void>;\r\n/**\r\n * @internal\r\n * Makes component able to rerender itself while preserving some data between rerenders.\r\n * @param initialContext Data that component receives on first render cycle.\r\n */\r\nexport function useRerender<T>(initialContext: T): RerenderData<(newContext: T) => void>;\r\n/** @internal */\r\nexport function useRerender<T>(initialContext?: T): RerenderData<(newContext?: T) => void> {\r\n const data = useRef({ numRerenders: 0, rerenderRequested: false, context: initialContext }).current;\r\n if (data.rerenderRequested) {\r\n data.numRerenders += 1;\r\n data.rerenderRequested = false;\r\n } else {\r\n data.context = initialContext;\r\n data.numRerenders = 0;\r\n }\r\n\r\n const [_, setState] = useState({});\r\n return {\r\n rerenderContext: data.context,\r\n numRerenders: data.numRerenders,\r\n rerender: (newContext) => {\r\n data.rerenderRequested = true;\r\n data.context = newContext;\r\n setState({});\r\n },\r\n };\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"countMatchesInString.js","sourceRoot":"","sources":["../../../../src/components-react/common/countMatchesInString.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,gEAAgE;AAEhE;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,MAAc;IAC9D,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;QAC/B,OAAO,CAAC,CAAC;IAEX,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAE3B,OAAO,IAAI,EAAE;QACX,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,CAAC,EAAE;YACZ,EAAE,CAAC,CAAC;YACJ,GAAG,IAAI,IAAI,CAAC;SACb;;YACC,MAAM;KACT;IACD,OAAO,CAAC,CAAC;AACX,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/* @author Vitim.us https://gist.github.com/victornpb/7736865 */\n\n/** @packageDocumentation\n * @module Common\n */\n\n/** Counts how many times string 'lookup' is repeated in string 'str'.\n * @internal\n */\nexport function countMatchesInString(str: string, lookup: string) {\n if (!str.length || !lookup.length)\n return 0;\n\n let n = 0, pos = 0;\n const step = lookup.length;\n\n while (true) {\n pos = str.indexOf(lookup, pos);\n if (pos >= 0) {\n ++n;\n pos += step;\n } else\n break;\n }\n return n;\n}\n"]}
1
+ {"version":3,"file":"countMatchesInString.js","sourceRoot":"","sources":["../../../../src/components-react/common/countMatchesInString.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,gEAAgE;AAEhE;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,MAAc;IAC9D,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;QAC/B,OAAO,CAAC,CAAC;IAEX,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAE3B,OAAO,IAAI,EAAE;QACX,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,CAAC,EAAE;YACZ,EAAE,CAAC,CAAC;YACJ,GAAG,IAAI,IAAI,CAAC;SACb;;YACC,MAAM;KACT;IACD,OAAO,CAAC,CAAC;AACX,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/* @author Vitim.us https://gist.github.com/victornpb/7736865 */\r\n\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\n/** Counts how many times string 'lookup' is repeated in string 'str'.\r\n * @internal\r\n */\r\nexport function countMatchesInString(str: string, lookup: string) {\r\n if (!str.length || !lookup.length)\r\n return 0;\r\n\r\n let n = 0, pos = 0;\r\n const step = lookup.length;\r\n\r\n while (true) {\r\n pos = str.indexOf(lookup, pos);\r\n if (pos >= 0) {\r\n ++n;\r\n pos += step;\r\n } else\r\n break;\r\n }\r\n return n;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionHandler.js","sourceRoot":"","sources":["../../../../../src/components-react/common/selection/SelectionHandler.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 Common\n */\n\nimport { Rectangle } from \"@itwin/core-react\";\nimport { hasSelectionModeFlag, SelectionMode, SelectionModeFlags } from \"./SelectionModes\";\n\n/** Prototype for a Selection Changed handler\n * @public\n */\nexport declare type OnSelectionChanged = (shiftDown?: boolean, ctrlDown?: boolean) => void;\n\n/**\n * Contains single item specific methods required by selection handler.\n * @internal\n */\nexport interface SingleSelectionHandler<TItem> {\n /**\n * Callback for before an item is selected.\n */\n preselect: () => void;\n\n /**\n * Selects the item.\n */\n select: () => void;\n\n /**\n * Deselects the item.\n */\n deselect: () => void;\n\n /**\n * Returns true if item is selected.\n */\n isSelected: () => boolean;\n\n /**\n * Returns the item.\n */\n item: () => TItem;\n}\n\n/**\n * Contains multi-selection methods required by selection handler.\n * @internal\n */\nexport interface MultiSelectionHandler<TItem> {\n /**\n * Shift selects between two items.\n * Returns items that were selected.\n */\n selectBetween: (item1: TItem, item2: TItem) => TItem[];\n\n /**\n * Updates selection.\n * @param selections Items to be added to selection.\n * @param deselections Items to be removed from selection.\n */\n updateSelection: (selections: TItem[], deselections: TItem[]) => void;\n\n /**\n * Deselects all items.\n */\n deselectAll: () => void;\n\n /**\n * Returns true if items are equal.\n */\n areEqual: (item1: TItem, item2: TItem) => boolean;\n}\n\n/**\n * Called after items were selected.\n * @param items Items that were selected.\n * @param replace Should replace current selection.\n * @public\n */\nexport declare type OnItemsSelectedCallback<TItem> = (items: TItem[], replace: boolean) => void | boolean;\n\n/**\n * Called after items were deselected.\n * @param items Items that were deselected.\n * @public\n */\nexport declare type OnItemsDeselectedCallback<Item> = (items: Item[]) => void | boolean;\n\nclass BatchSelectionOperation<Item> {\n public readonly selections = new Array<Item>();\n public readonly deselections = new Array<Item>();\n public readonly shouldReplace: boolean;\n\n private _componentSelectionHandler: MultiSelectionHandler<Item>;\n\n public constructor(componentSelectionHandler: MultiSelectionHandler<Item>, shouldReplace: boolean) {\n this.shouldReplace = shouldReplace;\n this._componentSelectionHandler = componentSelectionHandler;\n }\n\n public select(node: Item | Item[]) {\n this.addNodes(node, this.selections, this.shouldReplace ? undefined : this.deselections);\n }\n\n public deselect(node: Item | Item[]) {\n this.addNodes(node, this.deselections, this.shouldReplace ? undefined : this.selections);\n }\n\n private addNodes(node: Item | Item[], addTo: Item[], removeFrom?: Item[]) {\n if (Array.isArray(node)) {\n for (const n of node) {\n if (removeFrom) {\n const index = removeFrom.findIndex((x) => this._componentSelectionHandler.areEqual(x, n));\n if (index > -1) {\n removeFrom.splice(index, 1);\n continue;\n }\n }\n addTo.push(n);\n }\n } else {\n this.addNodes([node], addTo, removeFrom);\n }\n }\n}\n\n/** @internal */\nexport class DragAction<Item> {\n private _itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>;\n private _componentSelectionHandler: MultiSelectionHandler<Item>;\n private _previousRow: number;\n private _previousColumn: number;\n private _firstItemRow: number;\n private _firstItemColumn: number;\n private _firstItemSelected: boolean;\n\n public constructor(componentSelectionHandler: MultiSelectionHandler<Item>, itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>, firstItem: Item) {\n this._itemSelectionHandlers = itemSelectionHandlers;\n this._componentSelectionHandler = componentSelectionHandler;\n const itemPos = this.findItem(this._itemSelectionHandlers, firstItem);\n this._previousRow = itemPos.y;\n this._previousColumn = itemPos.x;\n this._firstItemRow = itemPos.y;\n this._firstItemColumn = itemPos.x;\n this._firstItemSelected = false;\n }\n\n public updateDragAction(latestItem: Item): { selections: Item[], deselections: Item[] } {\n const currentPos = this.findItem(this._itemSelectionHandlers, latestItem);\n if (currentPos.y === this._previousRow && currentPos.x === this._previousColumn || currentPos.x < 0 || currentPos.y < 0)\n return { selections: [], deselections: [] };\n\n const currentRange = Rectangle.createXYXY(this._firstItemColumn, this._firstItemRow, currentPos.x, currentPos.y);\n const previousRange = Rectangle.createXYXY(this._firstItemColumn, this._firstItemRow, this._previousColumn, this._previousRow);\n const wholeRange = Rectangle.createXYXY(\n currentRange.right > previousRange.right ? currentRange.right : previousRange.right,\n currentRange.bottom > previousRange.bottom ? currentRange.bottom : previousRange.bottom,\n currentRange.left < previousRange.left ? currentRange.left : previousRange.left,\n currentRange.top < previousRange.top ? currentRange.top : previousRange.top,\n );\n const selections = [];\n const deselections = [];\n\n // have to select first item separately since it is will always be in both previous and current ranges.\n if (!this._firstItemSelected) {\n const handler = this._itemSelectionHandlers[this._firstItemRow][this._firstItemColumn];\n if (handler.isSelected())\n deselections.push(handler.item());\n else\n selections.push(handler.item());\n this._firstItemSelected = true;\n }\n\n for (let r = wholeRange.top; r <= wholeRange.bottom; r++) {\n for (let c = wholeRange.left; c <= wholeRange.right; c++) {\n const insidePrevious = previousRange.containsXY(c, r);\n const insideCurrent = currentRange.containsXY(c, r);\n // If item is in only one of the ranges that means it's selection needs to be toggled.\n if ((insidePrevious || insideCurrent) && insideCurrent !== insidePrevious) {\n const itemHandler = this._itemSelectionHandlers[r][c];\n if (itemHandler.isSelected())\n deselections.push(itemHandler.item());\n else\n selections.push(itemHandler.item());\n }\n }\n }\n\n this._previousRow = currentPos.y;\n this._previousColumn = currentPos.x;\n return { selections, deselections };\n }\n\n private findItem(itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>, item: Item): { x: number, y: number } {\n if (this._previousRow !== undefined && this._previousRow !== -1 && this._previousColumn !== undefined && this._previousColumn !== -1 &&\n this._componentSelectionHandler.areEqual(itemSelectionHandlers[this._previousRow][this._previousColumn].item(), item)) {\n return { y: this._previousRow, x: this._previousColumn };\n }\n for (let row = 0; row < itemSelectionHandlers.length; row++) {\n for (let column = 0; column < itemSelectionHandlers[row].length; column++) {\n if (this._componentSelectionHandler.areEqual(itemSelectionHandlers[row][column].item(), item))\n return { x: column, y: row };\n }\n }\n return { x: -1, y: -1 };\n }\n\n}\n\n/** @internal */\nexport class SelectionHandler<Item> {\n\n /** Selection mode. */\n public selectionMode: SelectionMode;\n public onItemsSelectedCallback?: OnItemsSelectedCallback<Item>;\n public onItemsDeselectedCallback?: OnItemsDeselectedCallback<Item>;\n\n private _currentOperation?: BatchSelectionOperation<Item>;\n private _lastItem?: Item; // keeps track of last item interacted with for shift selection\n private _processedItem?: Item; // last item interacted with\n private _dragAction?: DragAction<Item>;\n private _componentSelectionHandler?: MultiSelectionHandler<Item>; // needed for drag selection\n\n constructor(selectionMode: SelectionMode, onItemsSelectedCallback?: OnItemsSelectedCallback<Item>, onItemsDeselectedCallback?: OnItemsDeselectedCallback<Item>) {\n this.selectionMode = selectionMode;\n this.onItemsSelectedCallback = onItemsSelectedCallback;\n this.onItemsDeselectedCallback = onItemsDeselectedCallback;\n }\n\n /** Get the onSelectionChange processed item */\n public get processedItem(): Item | undefined { return this._processedItem; }\n\n /** Creates a function that should be called when selection changes. */\n public createSelectionFunction(componentHandler: MultiSelectionHandler<Item>, itemHandler: SingleSelectionHandler<Item>): OnSelectionChanged {\n const onSelectionChange: OnSelectionChanged = (shiftDown, ctrlDown) => {\n this._processedItem = itemHandler.item();\n\n if (this.selectionMode === SelectionMode.None) {\n return;\n }\n\n let operationCreated = false;\n let shiftSelected = false;\n if (!this._currentOperation) {\n // will replace selection if it is limited to one or keys are enabled but ctrl is not down\n const shouldReplace = (hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.KeysEnabled) && !ctrlDown)\n || hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.SelectionLimitOne);\n this._currentOperation = new BatchSelectionOperation<Item>(componentHandler, shouldReplace);\n operationCreated = true;\n }\n\n if (hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.KeysEnabled)) {\n if (!ctrlDown)\n componentHandler.deselectAll();\n if (shiftDown && this._lastItem !== undefined) {\n const selected = componentHandler.selectBetween(this._lastItem, itemHandler.item());\n this._currentOperation.select(selected);\n shiftSelected = true;\n }\n }\n\n if (!shiftSelected) {\n itemHandler.preselect();\n\n if (hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.SelectionLimitOne)\n && !(hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.ToggleEnabled) && itemHandler.isSelected())) {\n componentHandler.deselectAll();\n }\n\n if (itemHandler.isSelected()) {\n itemHandler.deselect();\n this._currentOperation.deselect(itemHandler.item());\n } else {\n itemHandler.select();\n this._currentOperation.select(itemHandler.item());\n }\n this._lastItem = itemHandler.item();\n }\n\n if (operationCreated)\n this.completeOperation();\n };\n return onSelectionChange.bind(this);\n }\n\n private completeOperation(): void {\n if (!this._currentOperation)\n return;\n\n if (0 !== this._currentOperation.selections.length) {\n if (this.onItemsSelectedCallback) {\n this.onItemsSelectedCallback(this._currentOperation.selections, this._currentOperation.shouldReplace);\n if (this._currentOperation.shouldReplace) {\n this._currentOperation = undefined;\n return;\n }\n }\n }\n if (0 !== this._currentOperation.deselections.length) {\n if (this.onItemsDeselectedCallback)\n this.onItemsDeselectedCallback(this._currentOperation.deselections);\n }\n this._currentOperation = undefined;\n }\n\n /**\n * Creates drag action.\n * @param componentSelectionHandler Component selection handler.\n * @param items Ordered item selection handlers separated into arrays by rows.\n * @param firstItem Item on which drag action was started.\n */\n public createDragAction(componentSelectionHandler: MultiSelectionHandler<Item>, items: Array<Array<SingleSelectionHandler<Item>>>, firstItem: Item): void {\n if (!hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.DragEnabled))\n return;\n\n this._dragAction = new DragAction(componentSelectionHandler, items, firstItem);\n this._componentSelectionHandler = componentSelectionHandler;\n }\n\n /**\n * Updates existing drag action.\n * @param latestItem Latest item in drag action.\n */\n public updateDragAction(latestItem: Item): void {\n if (!hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.DragEnabled))\n return;\n\n if (!this._dragAction || !this._componentSelectionHandler)\n return;\n\n this._lastItem = latestItem;\n const selectionChanges = this._dragAction.updateDragAction(latestItem);\n\n if (selectionChanges.deselections.length !== 0 || selectionChanges.selections.length !== 0) {\n if (!this._currentOperation)\n this._currentOperation = new BatchSelectionOperation(this._componentSelectionHandler, false);\n this._currentOperation.select(selectionChanges.selections);\n this._currentOperation.deselect(selectionChanges.deselections);\n this._componentSelectionHandler.updateSelection(selectionChanges.selections, selectionChanges.deselections);\n }\n }\n\n /**\n * Completes drag action.\n */\n public completeDragAction() {\n this._dragAction = undefined;\n this._componentSelectionHandler = undefined;\n this.completeOperation();\n }\n}\n"]}
1
+ {"version":3,"file":"SelectionHandler.js","sourceRoot":"","sources":["../../../../../src/components-react/common/selection/SelectionHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\nimport { Rectangle } from \"@itwin/core-react\";\r\nimport { hasSelectionModeFlag, SelectionMode, SelectionModeFlags } from \"./SelectionModes\";\r\n\r\n/** Prototype for a Selection Changed handler\r\n * @public\r\n */\r\nexport declare type OnSelectionChanged = (shiftDown?: boolean, ctrlDown?: boolean) => void;\r\n\r\n/**\r\n * Contains single item specific methods required by selection handler.\r\n * @internal\r\n */\r\nexport interface SingleSelectionHandler<TItem> {\r\n /**\r\n * Callback for before an item is selected.\r\n */\r\n preselect: () => void;\r\n\r\n /**\r\n * Selects the item.\r\n */\r\n select: () => void;\r\n\r\n /**\r\n * Deselects the item.\r\n */\r\n deselect: () => void;\r\n\r\n /**\r\n * Returns true if item is selected.\r\n */\r\n isSelected: () => boolean;\r\n\r\n /**\r\n * Returns the item.\r\n */\r\n item: () => TItem;\r\n}\r\n\r\n/**\r\n * Contains multi-selection methods required by selection handler.\r\n * @internal\r\n */\r\nexport interface MultiSelectionHandler<TItem> {\r\n /**\r\n * Shift selects between two items.\r\n * Returns items that were selected.\r\n */\r\n selectBetween: (item1: TItem, item2: TItem) => TItem[];\r\n\r\n /**\r\n * Updates selection.\r\n * @param selections Items to be added to selection.\r\n * @param deselections Items to be removed from selection.\r\n */\r\n updateSelection: (selections: TItem[], deselections: TItem[]) => void;\r\n\r\n /**\r\n * Deselects all items.\r\n */\r\n deselectAll: () => void;\r\n\r\n /**\r\n * Returns true if items are equal.\r\n */\r\n areEqual: (item1: TItem, item2: TItem) => boolean;\r\n}\r\n\r\n/**\r\n * Called after items were selected.\r\n * @param items Items that were selected.\r\n * @param replace Should replace current selection.\r\n * @public\r\n */\r\nexport declare type OnItemsSelectedCallback<TItem> = (items: TItem[], replace: boolean) => void | boolean;\r\n\r\n/**\r\n * Called after items were deselected.\r\n * @param items Items that were deselected.\r\n * @public\r\n */\r\nexport declare type OnItemsDeselectedCallback<Item> = (items: Item[]) => void | boolean;\r\n\r\nclass BatchSelectionOperation<Item> {\r\n public readonly selections = new Array<Item>();\r\n public readonly deselections = new Array<Item>();\r\n public readonly shouldReplace: boolean;\r\n\r\n private _componentSelectionHandler: MultiSelectionHandler<Item>;\r\n\r\n public constructor(componentSelectionHandler: MultiSelectionHandler<Item>, shouldReplace: boolean) {\r\n this.shouldReplace = shouldReplace;\r\n this._componentSelectionHandler = componentSelectionHandler;\r\n }\r\n\r\n public select(node: Item | Item[]) {\r\n this.addNodes(node, this.selections, this.shouldReplace ? undefined : this.deselections);\r\n }\r\n\r\n public deselect(node: Item | Item[]) {\r\n this.addNodes(node, this.deselections, this.shouldReplace ? undefined : this.selections);\r\n }\r\n\r\n private addNodes(node: Item | Item[], addTo: Item[], removeFrom?: Item[]) {\r\n if (Array.isArray(node)) {\r\n for (const n of node) {\r\n if (removeFrom) {\r\n const index = removeFrom.findIndex((x) => this._componentSelectionHandler.areEqual(x, n));\r\n if (index > -1) {\r\n removeFrom.splice(index, 1);\r\n continue;\r\n }\r\n }\r\n addTo.push(n);\r\n }\r\n } else {\r\n this.addNodes([node], addTo, removeFrom);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DragAction<Item> {\r\n private _itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>;\r\n private _componentSelectionHandler: MultiSelectionHandler<Item>;\r\n private _previousRow: number;\r\n private _previousColumn: number;\r\n private _firstItemRow: number;\r\n private _firstItemColumn: number;\r\n private _firstItemSelected: boolean;\r\n\r\n public constructor(componentSelectionHandler: MultiSelectionHandler<Item>, itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>, firstItem: Item) {\r\n this._itemSelectionHandlers = itemSelectionHandlers;\r\n this._componentSelectionHandler = componentSelectionHandler;\r\n const itemPos = this.findItem(this._itemSelectionHandlers, firstItem);\r\n this._previousRow = itemPos.y;\r\n this._previousColumn = itemPos.x;\r\n this._firstItemRow = itemPos.y;\r\n this._firstItemColumn = itemPos.x;\r\n this._firstItemSelected = false;\r\n }\r\n\r\n public updateDragAction(latestItem: Item): { selections: Item[], deselections: Item[] } {\r\n const currentPos = this.findItem(this._itemSelectionHandlers, latestItem);\r\n if (currentPos.y === this._previousRow && currentPos.x === this._previousColumn || currentPos.x < 0 || currentPos.y < 0)\r\n return { selections: [], deselections: [] };\r\n\r\n const currentRange = Rectangle.createXYXY(this._firstItemColumn, this._firstItemRow, currentPos.x, currentPos.y);\r\n const previousRange = Rectangle.createXYXY(this._firstItemColumn, this._firstItemRow, this._previousColumn, this._previousRow);\r\n const wholeRange = Rectangle.createXYXY(\r\n currentRange.right > previousRange.right ? currentRange.right : previousRange.right,\r\n currentRange.bottom > previousRange.bottom ? currentRange.bottom : previousRange.bottom,\r\n currentRange.left < previousRange.left ? currentRange.left : previousRange.left,\r\n currentRange.top < previousRange.top ? currentRange.top : previousRange.top,\r\n );\r\n const selections = [];\r\n const deselections = [];\r\n\r\n // have to select first item separately since it is will always be in both previous and current ranges.\r\n if (!this._firstItemSelected) {\r\n const handler = this._itemSelectionHandlers[this._firstItemRow][this._firstItemColumn];\r\n if (handler.isSelected())\r\n deselections.push(handler.item());\r\n else\r\n selections.push(handler.item());\r\n this._firstItemSelected = true;\r\n }\r\n\r\n for (let r = wholeRange.top; r <= wholeRange.bottom; r++) {\r\n for (let c = wholeRange.left; c <= wholeRange.right; c++) {\r\n const insidePrevious = previousRange.containsXY(c, r);\r\n const insideCurrent = currentRange.containsXY(c, r);\r\n // If item is in only one of the ranges that means it's selection needs to be toggled.\r\n if ((insidePrevious || insideCurrent) && insideCurrent !== insidePrevious) {\r\n const itemHandler = this._itemSelectionHandlers[r][c];\r\n if (itemHandler.isSelected())\r\n deselections.push(itemHandler.item());\r\n else\r\n selections.push(itemHandler.item());\r\n }\r\n }\r\n }\r\n\r\n this._previousRow = currentPos.y;\r\n this._previousColumn = currentPos.x;\r\n return { selections, deselections };\r\n }\r\n\r\n private findItem(itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>, item: Item): { x: number, y: number } {\r\n if (this._previousRow !== undefined && this._previousRow !== -1 && this._previousColumn !== undefined && this._previousColumn !== -1 &&\r\n this._componentSelectionHandler.areEqual(itemSelectionHandlers[this._previousRow][this._previousColumn].item(), item)) {\r\n return { y: this._previousRow, x: this._previousColumn };\r\n }\r\n for (let row = 0; row < itemSelectionHandlers.length; row++) {\r\n for (let column = 0; column < itemSelectionHandlers[row].length; column++) {\r\n if (this._componentSelectionHandler.areEqual(itemSelectionHandlers[row][column].item(), item))\r\n return { x: column, y: row };\r\n }\r\n }\r\n return { x: -1, y: -1 };\r\n }\r\n\r\n}\r\n\r\n/** @internal */\r\nexport class SelectionHandler<Item> {\r\n\r\n /** Selection mode. */\r\n public selectionMode: SelectionMode;\r\n public onItemsSelectedCallback?: OnItemsSelectedCallback<Item>;\r\n public onItemsDeselectedCallback?: OnItemsDeselectedCallback<Item>;\r\n\r\n private _currentOperation?: BatchSelectionOperation<Item>;\r\n private _lastItem?: Item; // keeps track of last item interacted with for shift selection\r\n private _processedItem?: Item; // last item interacted with\r\n private _dragAction?: DragAction<Item>;\r\n private _componentSelectionHandler?: MultiSelectionHandler<Item>; // needed for drag selection\r\n\r\n constructor(selectionMode: SelectionMode, onItemsSelectedCallback?: OnItemsSelectedCallback<Item>, onItemsDeselectedCallback?: OnItemsDeselectedCallback<Item>) {\r\n this.selectionMode = selectionMode;\r\n this.onItemsSelectedCallback = onItemsSelectedCallback;\r\n this.onItemsDeselectedCallback = onItemsDeselectedCallback;\r\n }\r\n\r\n /** Get the onSelectionChange processed item */\r\n public get processedItem(): Item | undefined { return this._processedItem; }\r\n\r\n /** Creates a function that should be called when selection changes. */\r\n public createSelectionFunction(componentHandler: MultiSelectionHandler<Item>, itemHandler: SingleSelectionHandler<Item>): OnSelectionChanged {\r\n const onSelectionChange: OnSelectionChanged = (shiftDown, ctrlDown) => {\r\n this._processedItem = itemHandler.item();\r\n\r\n if (this.selectionMode === SelectionMode.None) {\r\n return;\r\n }\r\n\r\n let operationCreated = false;\r\n let shiftSelected = false;\r\n if (!this._currentOperation) {\r\n // will replace selection if it is limited to one or keys are enabled but ctrl is not down\r\n const shouldReplace = (hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.KeysEnabled) && !ctrlDown)\r\n || hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.SelectionLimitOne);\r\n this._currentOperation = new BatchSelectionOperation<Item>(componentHandler, shouldReplace);\r\n operationCreated = true;\r\n }\r\n\r\n if (hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.KeysEnabled)) {\r\n if (!ctrlDown)\r\n componentHandler.deselectAll();\r\n if (shiftDown && this._lastItem !== undefined) {\r\n const selected = componentHandler.selectBetween(this._lastItem, itemHandler.item());\r\n this._currentOperation.select(selected);\r\n shiftSelected = true;\r\n }\r\n }\r\n\r\n if (!shiftSelected) {\r\n itemHandler.preselect();\r\n\r\n if (hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.SelectionLimitOne)\r\n && !(hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.ToggleEnabled) && itemHandler.isSelected())) {\r\n componentHandler.deselectAll();\r\n }\r\n\r\n if (itemHandler.isSelected()) {\r\n itemHandler.deselect();\r\n this._currentOperation.deselect(itemHandler.item());\r\n } else {\r\n itemHandler.select();\r\n this._currentOperation.select(itemHandler.item());\r\n }\r\n this._lastItem = itemHandler.item();\r\n }\r\n\r\n if (operationCreated)\r\n this.completeOperation();\r\n };\r\n return onSelectionChange.bind(this);\r\n }\r\n\r\n private completeOperation(): void {\r\n if (!this._currentOperation)\r\n return;\r\n\r\n if (0 !== this._currentOperation.selections.length) {\r\n if (this.onItemsSelectedCallback) {\r\n this.onItemsSelectedCallback(this._currentOperation.selections, this._currentOperation.shouldReplace);\r\n if (this._currentOperation.shouldReplace) {\r\n this._currentOperation = undefined;\r\n return;\r\n }\r\n }\r\n }\r\n if (0 !== this._currentOperation.deselections.length) {\r\n if (this.onItemsDeselectedCallback)\r\n this.onItemsDeselectedCallback(this._currentOperation.deselections);\r\n }\r\n this._currentOperation = undefined;\r\n }\r\n\r\n /**\r\n * Creates drag action.\r\n * @param componentSelectionHandler Component selection handler.\r\n * @param items Ordered item selection handlers separated into arrays by rows.\r\n * @param firstItem Item on which drag action was started.\r\n */\r\n public createDragAction(componentSelectionHandler: MultiSelectionHandler<Item>, items: Array<Array<SingleSelectionHandler<Item>>>, firstItem: Item): void {\r\n if (!hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.DragEnabled))\r\n return;\r\n\r\n this._dragAction = new DragAction(componentSelectionHandler, items, firstItem);\r\n this._componentSelectionHandler = componentSelectionHandler;\r\n }\r\n\r\n /**\r\n * Updates existing drag action.\r\n * @param latestItem Latest item in drag action.\r\n */\r\n public updateDragAction(latestItem: Item): void {\r\n if (!hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.DragEnabled))\r\n return;\r\n\r\n if (!this._dragAction || !this._componentSelectionHandler)\r\n return;\r\n\r\n this._lastItem = latestItem;\r\n const selectionChanges = this._dragAction.updateDragAction(latestItem);\r\n\r\n if (selectionChanges.deselections.length !== 0 || selectionChanges.selections.length !== 0) {\r\n if (!this._currentOperation)\r\n this._currentOperation = new BatchSelectionOperation(this._componentSelectionHandler, false);\r\n this._currentOperation.select(selectionChanges.selections);\r\n this._currentOperation.deselect(selectionChanges.deselections);\r\n this._componentSelectionHandler.updateSelection(selectionChanges.selections, selectionChanges.deselections);\r\n }\r\n }\r\n\r\n /**\r\n * Completes drag action.\r\n */\r\n public completeDragAction() {\r\n this._dragAction = undefined;\r\n this._componentSelectionHandler = undefined;\r\n this.completeOperation();\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionModes.js","sourceRoot":"","sources":["../../../../../src/components-react/common/selection/SelectionModes.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,qFAA0B,CAAA;IAC1B,yEAAoB,CAAA;IACpB,6EAAsB,CAAA;IACtB,yEAAoB,CAAA;IACpB,4DAAa,CAAA;AACf,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,wCAAwC;IACxC,qDAA6C,CAAA;IAC7C,mDAAmD;IACnD,yDAA4E,CAAA;IAC5E,oEAAoE;IACpE,0DAA4E,CAAA;IAC5E,iEAAiE;IACjE,+EAA6F,CAAA;IAC7F,uCAAuC;IACvC,kDAA8B,CAAA;AAChC,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,aAA4B,EAAE,IAAwB,EAAW,EAAE;IACtG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,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\n/** Selection mode flags for Tree row selection\n * @public\n */\nexport enum SelectionModeFlags {\n SelectionLimitOne = 1 << 0,\n DragEnabled = 1 << 1,\n ToggleEnabled = 1 << 2,\n KeysEnabled = 1 << 3,\n None = 1 << 4,\n}\n\n/** Selection modes for Tree row selection\n * @public\n */\nexport enum SelectionMode {\n /** Only one item selected at a time. */\n Single = SelectionModeFlags.SelectionLimitOne,\n /** Toggles items; drag only applies to desktop. */\n Multiple = SelectionModeFlags.DragEnabled | SelectionModeFlags.ToggleEnabled,\n /** Allows the use of Ctrl & Shift Keys in a desktop environment. */\n Extended = SelectionModeFlags.KeysEnabled | SelectionModeFlags.ToggleEnabled,\n /** Only one item selected at a time; also allows deselecting. */\n SingleAllowDeselect = SelectionModeFlags.SelectionLimitOne | SelectionModeFlags.ToggleEnabled,\n /** Do not allow (disable) selection */\n None = SelectionModeFlags.None,\n}\n\n/** Determines if a SelectionMode is active\n * @public\n */\nexport const hasSelectionModeFlag = (selectionMode: SelectionMode, flag: SelectionModeFlags): boolean => {\n return (selectionMode & flag) !== 0;\n};\n"]}
1
+ {"version":3,"file":"SelectionModes.js","sourceRoot":"","sources":["../../../../../src/components-react/common/selection/SelectionModes.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,qFAA0B,CAAA;IAC1B,yEAAoB,CAAA;IACpB,6EAAsB,CAAA;IACtB,yEAAoB,CAAA;IACpB,4DAAa,CAAA;AACf,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,wCAAwC;IACxC,qDAA6C,CAAA;IAC7C,mDAAmD;IACnD,yDAA4E,CAAA;IAC5E,oEAAoE;IACpE,0DAA4E,CAAA;IAC5E,iEAAiE;IACjE,+EAA6F,CAAA;IAC7F,uCAAuC;IACvC,kDAA8B,CAAA;AAChC,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,aAA4B,EAAE,IAAwB,EAAW,EAAE;IACtG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\n/** Selection mode flags for Tree row selection\r\n * @public\r\n */\r\nexport enum SelectionModeFlags {\r\n SelectionLimitOne = 1 << 0,\r\n DragEnabled = 1 << 1,\r\n ToggleEnabled = 1 << 2,\r\n KeysEnabled = 1 << 3,\r\n None = 1 << 4,\r\n}\r\n\r\n/** Selection modes for Tree row selection\r\n * @public\r\n */\r\nexport enum SelectionMode {\r\n /** Only one item selected at a time. */\r\n Single = SelectionModeFlags.SelectionLimitOne,\r\n /** Toggles items; drag only applies to desktop. */\r\n Multiple = SelectionModeFlags.DragEnabled | SelectionModeFlags.ToggleEnabled,\r\n /** Allows the use of Ctrl & Shift Keys in a desktop environment. */\r\n Extended = SelectionModeFlags.KeysEnabled | SelectionModeFlags.ToggleEnabled,\r\n /** Only one item selected at a time; also allows deselecting. */\r\n SingleAllowDeselect = SelectionModeFlags.SelectionLimitOne | SelectionModeFlags.ToggleEnabled,\r\n /** Do not allow (disable) selection */\r\n None = SelectionModeFlags.None,\r\n}\r\n\r\n/** Determines if a SelectionMode is active\r\n * @public\r\n */\r\nexport const hasSelectionModeFlag = (selectionMode: SelectionMode, flag: SelectionModeFlags): boolean => {\r\n return (selectionMode & flag) !== 0;\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/BooleanTypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAa,oBAAqB,SAAQ,aAAa;IAMrD,gBAAgB;IACT,MAAM,CAAC,qBAAqB;QACjC,IAAI,CAAC,oBAAoB,CAAC,SAAS;YACjC,oBAAoB,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1E,IAAI,CAAC,oBAAoB,CAAC,UAAU;YAClC,oBAAoB,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC;IAEe,eAAe,CAAC,KAA0B;QACxD,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,EAAE,CAAC;QAEZ,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAE7C,IAAI,KAAK,KAAK,oBAAoB,CAAC,SAAS,IAAI,KAAK,KAAK,oBAAoB,CAAC,UAAU;YACvF,OAAO,KAAK,CAAC;QAEf,OAAO,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC;IAClF,CAAC;IAEe,iBAAiB,CAAC,KAAa;QAC7C,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAE7C,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACzH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,WAAW,CAAC,CAAqB,EAAE,CAAqB,EAAE,WAAqB;QACpF,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACX,OAAO,CAAC,CAAC;QACX,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAoB,aAAa,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;;AAxC7D,gBAAgB;AACF,8BAAS,GAAW,EAAE,CAAC;AACrC,gBAAgB;AACF,+BAAU,GAAW,EAAE,CAAC;SAJ3B,oBAAoB;AA4CjC,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AACxF,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,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 TypeConverters\n */\n\nimport type { Primitives} from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { UiComponents } from \"../UiComponents\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/** Boolean Type Converter.\n * @public\n */\nexport class BooleanTypeConverter extends TypeConverter {\n /** @internal */\n public static sl10nTrue: string = \"\";\n /** @internal */\n public static sl10nFalse: string = \"\";\n\n /** @internal */\n public static getLocalizedTrueFalse() {\n if (!BooleanTypeConverter.sl10nTrue)\n BooleanTypeConverter.sl10nTrue = UiComponents.translate(\"general.true\");\n if (!BooleanTypeConverter.sl10nFalse)\n BooleanTypeConverter.sl10nFalse = UiComponents.translate(\"general.false\");\n }\n\n public override convertToString(value?: Primitives.Boolean) {\n if (value === undefined)\n return \"\";\n\n BooleanTypeConverter.getLocalizedTrueFalse();\n\n if (value === BooleanTypeConverter.sl10nTrue || value === BooleanTypeConverter.sl10nFalse)\n return value;\n\n return value ? BooleanTypeConverter.sl10nTrue : BooleanTypeConverter.sl10nFalse;\n }\n\n public override convertFromString(value: string) {\n BooleanTypeConverter.getLocalizedTrueFalse();\n\n const booleanValue = (0 === value.toLocaleLowerCase().localeCompare(BooleanTypeConverter.sl10nTrue.toLocaleLowerCase()));\n return booleanValue;\n }\n\n public sortCompare(a: Primitives.Boolean, b: Primitives.Boolean, _ignoreCase?: boolean): number {\n if (!!a === !!b)\n return 0;\n if (!!a && !b)\n return 1;\n return -1;\n }\n\n public override get isBooleanType(): boolean { return true; }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Boolean, BooleanTypeConverter);\nTypeConverterManager.registerConverter(StandardTypeNames.Bool, BooleanTypeConverter);\n"]}
1
+ {"version":3,"file":"BooleanTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/BooleanTypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAa,oBAAqB,SAAQ,aAAa;IAMrD,gBAAgB;IACT,MAAM,CAAC,qBAAqB;QACjC,IAAI,CAAC,oBAAoB,CAAC,SAAS;YACjC,oBAAoB,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1E,IAAI,CAAC,oBAAoB,CAAC,UAAU;YAClC,oBAAoB,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC;IAEe,eAAe,CAAC,KAA0B;QACxD,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,EAAE,CAAC;QAEZ,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAE7C,IAAI,KAAK,KAAK,oBAAoB,CAAC,SAAS,IAAI,KAAK,KAAK,oBAAoB,CAAC,UAAU;YACvF,OAAO,KAAK,CAAC;QAEf,OAAO,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC;IAClF,CAAC;IAEe,iBAAiB,CAAC,KAAa;QAC7C,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAE7C,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACzH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,WAAW,CAAC,CAAqB,EAAE,CAAqB,EAAE,WAAqB;QACpF,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACX,OAAO,CAAC,CAAC;QACX,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAoB,aAAa,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;;AAxC7D,gBAAgB;AACF,8BAAS,GAAW,EAAE,CAAC;AACrC,gBAAgB;AACF,+BAAU,GAAW,EAAE,CAAC;SAJ3B,oBAAoB;AA4CjC,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AACxF,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport type { Primitives} from \"@itwin/appui-abstract\";\r\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport { TypeConverter } from \"./TypeConverter\";\r\nimport { TypeConverterManager } from \"./TypeConverterManager\";\r\n\r\n/** Boolean Type Converter.\r\n * @public\r\n */\r\nexport class BooleanTypeConverter extends TypeConverter {\r\n /** @internal */\r\n public static sl10nTrue: string = \"\";\r\n /** @internal */\r\n public static sl10nFalse: string = \"\";\r\n\r\n /** @internal */\r\n public static getLocalizedTrueFalse() {\r\n if (!BooleanTypeConverter.sl10nTrue)\r\n BooleanTypeConverter.sl10nTrue = UiComponents.translate(\"general.true\");\r\n if (!BooleanTypeConverter.sl10nFalse)\r\n BooleanTypeConverter.sl10nFalse = UiComponents.translate(\"general.false\");\r\n }\r\n\r\n public override convertToString(value?: Primitives.Boolean) {\r\n if (value === undefined)\r\n return \"\";\r\n\r\n BooleanTypeConverter.getLocalizedTrueFalse();\r\n\r\n if (value === BooleanTypeConverter.sl10nTrue || value === BooleanTypeConverter.sl10nFalse)\r\n return value;\r\n\r\n return value ? BooleanTypeConverter.sl10nTrue : BooleanTypeConverter.sl10nFalse;\r\n }\r\n\r\n public override convertFromString(value: string) {\r\n BooleanTypeConverter.getLocalizedTrueFalse();\r\n\r\n const booleanValue = (0 === value.toLocaleLowerCase().localeCompare(BooleanTypeConverter.sl10nTrue.toLocaleLowerCase()));\r\n return booleanValue;\r\n }\r\n\r\n public sortCompare(a: Primitives.Boolean, b: Primitives.Boolean, _ignoreCase?: boolean): number {\r\n if (!!a === !!b)\r\n return 0;\r\n if (!!a && !b)\r\n return 1;\r\n return -1;\r\n }\r\n\r\n public override get isBooleanType(): boolean { return true; }\r\n}\r\n\r\nTypeConverterManager.registerConverter(StandardTypeNames.Boolean, BooleanTypeConverter);\r\nTypeConverterManager.registerConverter(StandardTypeNames.Bool, BooleanTypeConverter);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/CompositeTypeConverter.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/**\n * Composite type converter\n * @public\n */\nexport class CompositeTypeConverter extends TypeConverter {\n public override convertToString(value?: Primitives.Composite): string | Promise<string> {\n if (value === undefined)\n return \"\";\n return createDisplayValue(value);\n }\n\n public sortCompare(valueA: Primitives.Composite, valueB: Primitives.Composite, ignoreCase?: boolean | undefined): number {\n const length = Math.min(valueA.parts.length, valueB.parts.length);\n const separatorComparison = compareStrings(valueA.separator, valueB.separator, ignoreCase);\n for (let i = 0; i < length; i++) {\n const lhs = valueA.parts[i];\n const rhs = valueB.parts[i];\n const compareResult = lhs.typeName !== rhs.typeName ? compareStrings(lhs.displayValue, rhs.displayValue, ignoreCase)\n : TypeConverterManager.getConverter(lhs.typeName).sortCompare(lhs.rawValue, rhs.rawValue, ignoreCase);\n if (compareResult !== 0)\n return compareResult;\n\n if (i === 0 && separatorComparison !== 0)\n return separatorComparison;\n }\n\n if (valueA.parts.length !== valueB.parts.length)\n return valueA.parts.length - valueB.parts.length;\n\n return 0;\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Composite, CompositeTypeConverter);\n\nconst compareStrings = (lhs: string, rhs: string, ignoreCase?: boolean) => {\n if (ignoreCase)\n return lhs.toLocaleLowerCase().localeCompare(rhs.toLocaleLowerCase());\n else\n return lhs.localeCompare(rhs);\n};\n\nconst createDisplayValue = async (compositeValue: Primitives.Composite): Promise<string> => {\n const parts: string[] = [];\n for (const part of compositeValue.parts) {\n let valueString: string;\n if (part.typeName === \"composite\") {\n valueString = await createDisplayValue(part.rawValue as Primitives.Composite);\n } else {\n valueString = await TypeConverterManager.getConverter(part.typeName).convertToString(part.rawValue);\n }\n\n parts.push(valueString);\n }\n\n return parts.join(compositeValue.separator);\n};\n"]}
1
+ {"version":3,"file":"CompositeTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/CompositeTypeConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport type { Primitives} from \"@itwin/appui-abstract\";\r\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { TypeConverter } from \"./TypeConverter\";\r\nimport { TypeConverterManager } from \"./TypeConverterManager\";\r\n\r\n/**\r\n * Composite type converter\r\n * @public\r\n */\r\nexport class CompositeTypeConverter extends TypeConverter {\r\n public override convertToString(value?: Primitives.Composite): string | Promise<string> {\r\n if (value === undefined)\r\n return \"\";\r\n return createDisplayValue(value);\r\n }\r\n\r\n public sortCompare(valueA: Primitives.Composite, valueB: Primitives.Composite, ignoreCase?: boolean | undefined): number {\r\n const length = Math.min(valueA.parts.length, valueB.parts.length);\r\n const separatorComparison = compareStrings(valueA.separator, valueB.separator, ignoreCase);\r\n for (let i = 0; i < length; i++) {\r\n const lhs = valueA.parts[i];\r\n const rhs = valueB.parts[i];\r\n const compareResult = lhs.typeName !== rhs.typeName ? compareStrings(lhs.displayValue, rhs.displayValue, ignoreCase)\r\n : TypeConverterManager.getConverter(lhs.typeName).sortCompare(lhs.rawValue, rhs.rawValue, ignoreCase);\r\n if (compareResult !== 0)\r\n return compareResult;\r\n\r\n if (i === 0 && separatorComparison !== 0)\r\n return separatorComparison;\r\n }\r\n\r\n if (valueA.parts.length !== valueB.parts.length)\r\n return valueA.parts.length - valueB.parts.length;\r\n\r\n return 0;\r\n }\r\n}\r\n\r\nTypeConverterManager.registerConverter(StandardTypeNames.Composite, CompositeTypeConverter);\r\n\r\nconst compareStrings = (lhs: string, rhs: string, ignoreCase?: boolean) => {\r\n if (ignoreCase)\r\n return lhs.toLocaleLowerCase().localeCompare(rhs.toLocaleLowerCase());\r\n else\r\n return lhs.localeCompare(rhs);\r\n};\r\n\r\nconst createDisplayValue = async (compositeValue: Primitives.Composite): Promise<string> => {\r\n const parts: string[] = [];\r\n for (const part of compositeValue.parts) {\r\n let valueString: string;\r\n if (part.typeName === \"composite\") {\r\n valueString = await createDisplayValue(part.rawValue as Primitives.Composite);\r\n } else {\r\n valueString = await TypeConverterManager.getConverter(part.typeName).convertToString(part.rawValue);\r\n }\r\n\r\n parts.push(valueString);\r\n }\r\n\r\n return parts.join(compositeValue.separator);\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/DateTimeTypeConverter.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 { Logger } from \"@itwin/core-bentley\";\nimport type { Primitives} from \"@itwin/appui-abstract\";\nimport { AlternateDateFormats, StandardTypeNames, TimeDisplay } from \"@itwin/appui-abstract\";\nimport { TimeFormat } from \"@itwin/core-react\";\nimport { formatInputDate } from \"../datepicker/DateField\";\nimport { adjustDateToTimezone } from \"../common/DateUtils\";\nimport { UiComponents } from \"../UiComponents\";\nimport type { LessGreaterOperatorProcessor} from \"./TypeConverter\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\n\n// cSpell:ignore datepicker valuetypes\n\n/**\n * DateTime Type Converter.\n * @public\n */\nexport abstract class DateTimeTypeConverterBase extends TypeConverter implements LessGreaterOperatorProcessor {\n public override convertToString(value?: Primitives.Value) {\n if (value === undefined)\n return \"\";\n\n if (typeof value === \"string\")\n value = new Date(value);\n\n // istanbul ignore else\n if (value instanceof Date) {\n switch (this.getTimeFormat()) {\n case TimeFormat.Short: return value.toLocaleDateString();\n case TimeFormat.Long: return value.toLocaleString();\n }\n return value.toISOString();\n }\n\n // istanbul ignore next\n return value.toString();\n }\n\n public static isValidTimeDisplay(type: TimeDisplay): boolean {\n return Object.keys(TimeDisplay).some((key) => (TimeDisplay as any)[key] === type);\n }\n\n public static isAlternateDateFormats(type: AlternateDateFormats): boolean {\n return Object.keys(AlternateDateFormats).some((key) => (AlternateDateFormats as any)[key] === type);\n }\n\n // supported options:\n // timeDisplay?: TimeDisplay\n // alternateDateFormat?: AlternateDateFormats\n public override convertToStringWithOptions(value?: Primitives.Value, options?: { [key: string]: any }): string | Promise<string> {\n if (value === undefined)\n return \"\";\n\n if (options) {\n let timeDisplay: TimeDisplay | undefined = (this.getTimeFormat() === TimeFormat.Long) ? TimeDisplay.H12MC : undefined;\n let alternateDateFormat = AlternateDateFormats.None;\n\n // istanbul ignore else\n if (\"alternateDateFormat\" in options && DateTimeTypeConverterBase.isAlternateDateFormats(options.alternateDateFormat)) {\n alternateDateFormat = options.alternateDateFormat;\n }\n\n if (this.getTimeFormat() === TimeFormat.Long) {\n // istanbul ignore else\n if (\"timeDisplay\" in options) {\n // istanbul ignore if\n if (alternateDateFormat) {\n Logger.logInfo(UiComponents.loggerCategory(this), `Invalid specification of timeDisplay with alternateDateFormat specification`);\n } else {\n // istanbul ignore else\n if (DateTimeTypeConverterBase.isValidTimeDisplay(options.timeDisplay))\n timeDisplay = options.timeDisplay;\n }\n }\n }\n\n // istanbul ignore else\n if (typeof value === \"string\") {\n value = new Date(value); // this value will be based on local time zone\n // istanbul ignore else\n if (value instanceof Date && alternateDateFormat) {\n // alternateDateFormat displays UTC time, so assume string is specifying UTC Date and Time\n value = adjustDateToTimezone(value, value.getTimezoneOffset() * -1);\n }\n }\n\n // istanbul ignore else\n if (value instanceof Date) {\n // Ensure if alternateDateFormat is specified make sure it matches proper Long/Short format.\n if (this.getTimeFormat() === TimeFormat.Long) {\n if (alternateDateFormat === AlternateDateFormats.IsoShort)\n alternateDateFormat = AlternateDateFormats.IsoDateTime;\n if (alternateDateFormat === AlternateDateFormats.UtcShort)\n alternateDateFormat = AlternateDateFormats.UtcDateTime;\n if (alternateDateFormat === AlternateDateFormats.UtcShortWithDay)\n alternateDateFormat = AlternateDateFormats.UtcDateTimeWithDay;\n } else {\n // short time format\n if (alternateDateFormat === AlternateDateFormats.IsoDateTime)\n alternateDateFormat = AlternateDateFormats.IsoShort;\n if (alternateDateFormat === AlternateDateFormats.UtcDateTime)\n alternateDateFormat = AlternateDateFormats.UtcShort;\n if (alternateDateFormat === AlternateDateFormats.UtcDateTimeWithDay)\n alternateDateFormat = AlternateDateFormats.UtcShortWithDay;\n }\n\n const formattedDateTime = formatInputDate(value, timeDisplay, undefined, alternateDateFormat);\n // istanbul ignore else\n if (formattedDateTime)\n return formattedDateTime;\n }\n }\n\n return this.convertToString(value);\n }\n\n /** Default implementation just calls convertFromString with no options */\n public override convertFromStringWithOptions(value: string, options?: { [key: string]: any }): ConvertedPrimitives.Value | undefined | Promise<ConvertedPrimitives.Value | undefined> {\n if (!value)\n return undefined;\n\n if (options) {\n let alternateDateFormat = AlternateDateFormats.None;\n\n // istanbul ignore else\n if (\"alternateDateFormat\" in options && DateTimeTypeConverterBase.isAlternateDateFormats(options.alternateDateFormat)) {\n alternateDateFormat = options.alternateDateFormat;\n }\n\n // istanbul ignore else\n let date = new Date(value); // this value will be based on local time zone\n // istanbul ignore else\n if (date instanceof Date && alternateDateFormat) {\n // alternateDateFormat displays UTC time, so assume string is specifying UTC Date and Time\n date = adjustDateToTimezone(date, date.getTimezoneOffset() * -1);\n }\n }\n\n return this.convertFromString(value);\n }\n\n private isDateValid(date: Date) {\n return date instanceof Date && !isNaN(+date);\n }\n\n public override convertFromString(value: string) {\n if (!value)\n return undefined;\n\n const dateValue = new Date(value);\n\n if (!this.isDateValid(dateValue))\n return undefined;\n\n return dateValue;\n }\n\n protected abstract getTimeFormat(): TimeFormat;\n\n public override get isLessGreaterType(): boolean { return true; }\n\n public sortCompare(valueA: Date, valueB: Date, _ignoreCase?: boolean): number {\n return valueA.valueOf() - valueB.valueOf();\n }\n\n public override isEqualTo(valueA: Date, valueB: Date): boolean {\n return valueA.valueOf() === valueB.valueOf();\n }\n\n public override isNotEqualTo(valueA: Date, valueB: Date): boolean {\n return valueA.valueOf() !== valueB.valueOf();\n }\n\n public isLessThan(a: Date, b: Date): boolean {\n return a.valueOf() < b.valueOf();\n }\n\n public isLessThanOrEqualTo(a: Date, b: Date): boolean {\n return a.valueOf() <= b.valueOf();\n }\n\n public isGreaterThan(a: Date, b: Date): boolean {\n return a.valueOf() > b.valueOf();\n }\n\n public isGreaterThanOrEqualTo(a: Date, b: Date): boolean {\n return a.valueOf() >= b.valueOf();\n }\n}\n\n/**\n * Short Date Type Converter.\n * @public\n */\nexport class ShortDateTypeConverter extends DateTimeTypeConverterBase {\n protected getTimeFormat(): TimeFormat { return TimeFormat.Short; }\n}\nTypeConverterManager.registerConverter(StandardTypeNames.ShortDate, ShortDateTypeConverter);\n\n/**\n * Date Time Type Converter.\n * @public\n */\nexport class DateTimeTypeConverter extends DateTimeTypeConverterBase {\n protected getTimeFormat(): TimeFormat { return TimeFormat.Long; }\n}\nTypeConverterManager.registerConverter(StandardTypeNames.DateTime, DateTimeTypeConverter);\n"]}
1
+ {"version":3,"file":"DateTimeTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/DateTimeTypeConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport type { Primitives} from \"@itwin/appui-abstract\";\r\nimport { AlternateDateFormats, StandardTypeNames, TimeDisplay } from \"@itwin/appui-abstract\";\r\nimport { TimeFormat } from \"@itwin/core-react\";\r\nimport { formatInputDate } from \"../datepicker/DateField\";\r\nimport { adjustDateToTimezone } from \"../common/DateUtils\";\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport type { LessGreaterOperatorProcessor} from \"./TypeConverter\";\r\nimport { TypeConverter } from \"./TypeConverter\";\r\nimport { TypeConverterManager } from \"./TypeConverterManager\";\r\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\r\n\r\n// cSpell:ignore datepicker valuetypes\r\n\r\n/**\r\n * DateTime Type Converter.\r\n * @public\r\n */\r\nexport abstract class DateTimeTypeConverterBase extends TypeConverter implements LessGreaterOperatorProcessor {\r\n public override convertToString(value?: Primitives.Value) {\r\n if (value === undefined)\r\n return \"\";\r\n\r\n if (typeof value === \"string\")\r\n value = new Date(value);\r\n\r\n // istanbul ignore else\r\n if (value instanceof Date) {\r\n switch (this.getTimeFormat()) {\r\n case TimeFormat.Short: return value.toLocaleDateString();\r\n case TimeFormat.Long: return value.toLocaleString();\r\n }\r\n return value.toISOString();\r\n }\r\n\r\n // istanbul ignore next\r\n return value.toString();\r\n }\r\n\r\n public static isValidTimeDisplay(type: TimeDisplay): boolean {\r\n return Object.keys(TimeDisplay).some((key) => (TimeDisplay as any)[key] === type);\r\n }\r\n\r\n public static isAlternateDateFormats(type: AlternateDateFormats): boolean {\r\n return Object.keys(AlternateDateFormats).some((key) => (AlternateDateFormats as any)[key] === type);\r\n }\r\n\r\n // supported options:\r\n // timeDisplay?: TimeDisplay\r\n // alternateDateFormat?: AlternateDateFormats\r\n public override convertToStringWithOptions(value?: Primitives.Value, options?: { [key: string]: any }): string | Promise<string> {\r\n if (value === undefined)\r\n return \"\";\r\n\r\n if (options) {\r\n let timeDisplay: TimeDisplay | undefined = (this.getTimeFormat() === TimeFormat.Long) ? TimeDisplay.H12MC : undefined;\r\n let alternateDateFormat = AlternateDateFormats.None;\r\n\r\n // istanbul ignore else\r\n if (\"alternateDateFormat\" in options && DateTimeTypeConverterBase.isAlternateDateFormats(options.alternateDateFormat)) {\r\n alternateDateFormat = options.alternateDateFormat;\r\n }\r\n\r\n if (this.getTimeFormat() === TimeFormat.Long) {\r\n // istanbul ignore else\r\n if (\"timeDisplay\" in options) {\r\n // istanbul ignore if\r\n if (alternateDateFormat) {\r\n Logger.logInfo(UiComponents.loggerCategory(this), `Invalid specification of timeDisplay with alternateDateFormat specification`);\r\n } else {\r\n // istanbul ignore else\r\n if (DateTimeTypeConverterBase.isValidTimeDisplay(options.timeDisplay))\r\n timeDisplay = options.timeDisplay;\r\n }\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (typeof value === \"string\") {\r\n value = new Date(value); // this value will be based on local time zone\r\n // istanbul ignore else\r\n if (value instanceof Date && alternateDateFormat) {\r\n // alternateDateFormat displays UTC time, so assume string is specifying UTC Date and Time\r\n value = adjustDateToTimezone(value, value.getTimezoneOffset() * -1);\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (value instanceof Date) {\r\n // Ensure if alternateDateFormat is specified make sure it matches proper Long/Short format.\r\n if (this.getTimeFormat() === TimeFormat.Long) {\r\n if (alternateDateFormat === AlternateDateFormats.IsoShort)\r\n alternateDateFormat = AlternateDateFormats.IsoDateTime;\r\n if (alternateDateFormat === AlternateDateFormats.UtcShort)\r\n alternateDateFormat = AlternateDateFormats.UtcDateTime;\r\n if (alternateDateFormat === AlternateDateFormats.UtcShortWithDay)\r\n alternateDateFormat = AlternateDateFormats.UtcDateTimeWithDay;\r\n } else {\r\n // short time format\r\n if (alternateDateFormat === AlternateDateFormats.IsoDateTime)\r\n alternateDateFormat = AlternateDateFormats.IsoShort;\r\n if (alternateDateFormat === AlternateDateFormats.UtcDateTime)\r\n alternateDateFormat = AlternateDateFormats.UtcShort;\r\n if (alternateDateFormat === AlternateDateFormats.UtcDateTimeWithDay)\r\n alternateDateFormat = AlternateDateFormats.UtcShortWithDay;\r\n }\r\n\r\n const formattedDateTime = formatInputDate(value, timeDisplay, undefined, alternateDateFormat);\r\n // istanbul ignore else\r\n if (formattedDateTime)\r\n return formattedDateTime;\r\n }\r\n }\r\n\r\n return this.convertToString(value);\r\n }\r\n\r\n /** Default implementation just calls convertFromString with no options */\r\n public override convertFromStringWithOptions(value: string, options?: { [key: string]: any }): ConvertedPrimitives.Value | undefined | Promise<ConvertedPrimitives.Value | undefined> {\r\n if (!value)\r\n return undefined;\r\n\r\n if (options) {\r\n let alternateDateFormat = AlternateDateFormats.None;\r\n\r\n // istanbul ignore else\r\n if (\"alternateDateFormat\" in options && DateTimeTypeConverterBase.isAlternateDateFormats(options.alternateDateFormat)) {\r\n alternateDateFormat = options.alternateDateFormat;\r\n }\r\n\r\n // istanbul ignore else\r\n let date = new Date(value); // this value will be based on local time zone\r\n // istanbul ignore else\r\n if (date instanceof Date && alternateDateFormat) {\r\n // alternateDateFormat displays UTC time, so assume string is specifying UTC Date and Time\r\n date = adjustDateToTimezone(date, date.getTimezoneOffset() * -1);\r\n }\r\n }\r\n\r\n return this.convertFromString(value);\r\n }\r\n\r\n private isDateValid(date: Date) {\r\n return date instanceof Date && !isNaN(+date);\r\n }\r\n\r\n public override convertFromString(value: string) {\r\n if (!value)\r\n return undefined;\r\n\r\n const dateValue = new Date(value);\r\n\r\n if (!this.isDateValid(dateValue))\r\n return undefined;\r\n\r\n return dateValue;\r\n }\r\n\r\n protected abstract getTimeFormat(): TimeFormat;\r\n\r\n public override get isLessGreaterType(): boolean { return true; }\r\n\r\n public sortCompare(valueA: Date, valueB: Date, _ignoreCase?: boolean): number {\r\n return valueA.valueOf() - valueB.valueOf();\r\n }\r\n\r\n public override isEqualTo(valueA: Date, valueB: Date): boolean {\r\n return valueA.valueOf() === valueB.valueOf();\r\n }\r\n\r\n public override isNotEqualTo(valueA: Date, valueB: Date): boolean {\r\n return valueA.valueOf() !== valueB.valueOf();\r\n }\r\n\r\n public isLessThan(a: Date, b: Date): boolean {\r\n return a.valueOf() < b.valueOf();\r\n }\r\n\r\n public isLessThanOrEqualTo(a: Date, b: Date): boolean {\r\n return a.valueOf() <= b.valueOf();\r\n }\r\n\r\n public isGreaterThan(a: Date, b: Date): boolean {\r\n return a.valueOf() > b.valueOf();\r\n }\r\n\r\n public isGreaterThanOrEqualTo(a: Date, b: Date): boolean {\r\n return a.valueOf() >= b.valueOf();\r\n }\r\n}\r\n\r\n/**\r\n * Short Date Type Converter.\r\n * @public\r\n */\r\nexport class ShortDateTypeConverter extends DateTimeTypeConverterBase {\r\n protected getTimeFormat(): TimeFormat { return TimeFormat.Short; }\r\n}\r\nTypeConverterManager.registerConverter(StandardTypeNames.ShortDate, ShortDateTypeConverter);\r\n\r\n/**\r\n * Date Time Type Converter.\r\n * @public\r\n */\r\nexport class DateTimeTypeConverter extends DateTimeTypeConverterBase {\r\n protected getTimeFormat(): TimeFormat { return TimeFormat.Long; }\r\n}\r\nTypeConverterManager.registerConverter(StandardTypeNames.DateTime, DateTimeTypeConverter);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EnumTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/EnumTypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClC,uBAAuB,CAAC,mBAAwC,EAAE,KAAuB;QACvG,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,EAAE,CAAC;QAEZ,IAAI,mBAAmB,CAAC,IAAI,EAAE;YAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACrE;QAED,OAAO,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,OAA+B,EAAE,KAAsB;QAC1F,IAAI,OAAO,GAAwB,EAAE,CAAC;QAEtC,IAAI,OAAO,CAAC,OAAO,YAAY,OAAO,EAAE;YACtC,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;SACjC;aAAM;YACL,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;SAC3B;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,KAAK,GAAG;YACZ,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAE5B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,WAAW,CAAC,OAA4B,EAAE,KAAsB;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACvC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK;gBAC5B,OAAO,CAAC,CAAC;SACZ;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAEM,WAAW,CAAC,CAAkB,EAAE,CAAkB,EAAE,UAAoB;QAC7E,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1B,OAAO,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;SAClF;QAED,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;CACF;AAED,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,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 TypeConverters\n */\n\nimport type { EnumerationChoice, EnumerationChoicesInfo, Primitives, PropertyDescription} from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/**\n * Enum Type Converter.\n * @public\n */\nexport class EnumTypeConverter extends TypeConverter {\n public override convertPropertyToString(propertyDescription: PropertyDescription, value?: Primitives.Enum): string | Promise<string> {\n if (value === undefined)\n return \"\";\n\n if (propertyDescription.enum) {\n return this.getMatchingStringValue(propertyDescription.enum, value);\n }\n\n return super.convertToString(value);\n }\n\n private async getMatchingStringValue(enumVal: EnumerationChoicesInfo, value: Primitives.Enum) {\n let choices: EnumerationChoice[] = [];\n\n if (enumVal.choices instanceof Promise) {\n choices = await enumVal.choices;\n } else {\n choices = enumVal.choices;\n }\n\n const pos = this.getPosition(choices, value);\n if (-1 !== pos)\n return choices[pos].label;\n\n return this.convertToString(value);\n }\n\n private getPosition(choices: EnumerationChoice[], value: Primitives.Enum): number {\n for (let i = 0; i < choices.length; ++i) {\n if (choices[i].value === value)\n return i;\n }\n return -1;\n }\n\n public sortCompare(a: Primitives.Enum, b: Primitives.Enum, ignoreCase?: boolean): number {\n if (isNaN(+a) || isNaN(+b)) {\n return TypeConverterManager.getConverter(\"string\").sortCompare(a, b, ignoreCase);\n }\n\n return (+a) - (+b);\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Enum, EnumTypeConverter);\n"]}
1
+ {"version":3,"file":"EnumTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/EnumTypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClC,uBAAuB,CAAC,mBAAwC,EAAE,KAAuB;QACvG,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,EAAE,CAAC;QAEZ,IAAI,mBAAmB,CAAC,IAAI,EAAE;YAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACrE;QAED,OAAO,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,OAA+B,EAAE,KAAsB;QAC1F,IAAI,OAAO,GAAwB,EAAE,CAAC;QAEtC,IAAI,OAAO,CAAC,OAAO,YAAY,OAAO,EAAE;YACtC,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;SACjC;aAAM;YACL,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;SAC3B;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,KAAK,GAAG;YACZ,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAE5B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,WAAW,CAAC,OAA4B,EAAE,KAAsB;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACvC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK;gBAC5B,OAAO,CAAC,CAAC;SACZ;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAEM,WAAW,CAAC,CAAkB,EAAE,CAAkB,EAAE,UAAoB;QAC7E,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1B,OAAO,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;SAClF;QAED,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;CACF;AAED,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport type { EnumerationChoice, EnumerationChoicesInfo, Primitives, PropertyDescription} from \"@itwin/appui-abstract\";\r\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { TypeConverter } from \"./TypeConverter\";\r\nimport { TypeConverterManager } from \"./TypeConverterManager\";\r\n\r\n/**\r\n * Enum Type Converter.\r\n * @public\r\n */\r\nexport class EnumTypeConverter extends TypeConverter {\r\n public override convertPropertyToString(propertyDescription: PropertyDescription, value?: Primitives.Enum): string | Promise<string> {\r\n if (value === undefined)\r\n return \"\";\r\n\r\n if (propertyDescription.enum) {\r\n return this.getMatchingStringValue(propertyDescription.enum, value);\r\n }\r\n\r\n return super.convertToString(value);\r\n }\r\n\r\n private async getMatchingStringValue(enumVal: EnumerationChoicesInfo, value: Primitives.Enum) {\r\n let choices: EnumerationChoice[] = [];\r\n\r\n if (enumVal.choices instanceof Promise) {\r\n choices = await enumVal.choices;\r\n } else {\r\n choices = enumVal.choices;\r\n }\r\n\r\n const pos = this.getPosition(choices, value);\r\n if (-1 !== pos)\r\n return choices[pos].label;\r\n\r\n return this.convertToString(value);\r\n }\r\n\r\n private getPosition(choices: EnumerationChoice[], value: Primitives.Enum): number {\r\n for (let i = 0; i < choices.length; ++i) {\r\n if (choices[i].value === value)\r\n return i;\r\n }\r\n return -1;\r\n }\r\n\r\n public sortCompare(a: Primitives.Enum, b: Primitives.Enum, ignoreCase?: boolean): number {\r\n if (isNaN(+a) || isNaN(+b)) {\r\n return TypeConverterManager.getConverter(\"string\").sortCompare(a, b, ignoreCase);\r\n }\r\n\r\n return (+a) - (+b);\r\n }\r\n}\r\n\r\nTypeConverterManager.registerConverter(StandardTypeNames.Enum, EnumTypeConverter);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"HexadecimalTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/HexadecimalTypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,aAAa;IACzC,eAAe,CAAC,KAA8B;QAC5D,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,EAAE,CAAC;QAEZ,6CAA6C;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IACvE,CAAC;IAEe,iBAAiB,CAAC,KAAa;QAC7C,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI;YAChC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC;QAEvB,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACzB,OAAO,KAAK,CAAC;QAEf,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,WAAW,CAAC,CAAyB,EAAE,CAAyB;QACrE,wBAAwB;QACxB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,KAAK,CAAC;YACT,OAAO,CAAC,CAAC;QACX,IAAI,CAAC,GAAG,CAAC;YACP,OAAO,CAAC,CAAC;QACX,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;CACF;AAED,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;AACxF,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,EAAE,wBAAwB,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 TypeConverters\n */\n\nimport { Id64 } from \"@itwin/core-bentley\";\nimport type { Primitives} from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/** Hexadecimal Type Converter.\n * @public\n */\nexport class HexadecimalTypeConverter extends TypeConverter {\n public override convertToString(value?: Primitives.Hexadecimal) {\n if (value === undefined)\n return \"\";\n\n // Need to Uppercase without changing 0x part\n const hexString = value.toString();\n return `0x${hexString.substring(2, hexString.length).toUpperCase()}`;\n }\n\n public override convertFromString(value: string) {\n if (value.substring(0, 2) !== \"0x\")\n value = `0x${value}`;\n\n value = Id64.fromString(value);\n if (Id64.isValidId64(value))\n return value;\n\n return undefined;\n }\n\n public sortCompare(a: Primitives.Hexadecimal, b: Primitives.Hexadecimal): number {\n // Normalize the strings\n a = Id64.fromString(a);\n b = Id64.fromString(b);\n\n if (a === b)\n return 0;\n if (a > b)\n return 1;\n return -1;\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Hex, HexadecimalTypeConverter);\nTypeConverterManager.registerConverter(StandardTypeNames.Hexadecimal, HexadecimalTypeConverter);\n"]}
1
+ {"version":3,"file":"HexadecimalTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/HexadecimalTypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,aAAa;IACzC,eAAe,CAAC,KAA8B;QAC5D,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,EAAE,CAAC;QAEZ,6CAA6C;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IACvE,CAAC;IAEe,iBAAiB,CAAC,KAAa;QAC7C,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI;YAChC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC;QAEvB,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACzB,OAAO,KAAK,CAAC;QAEf,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,WAAW,CAAC,CAAyB,EAAE,CAAyB;QACrE,wBAAwB;QACxB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,KAAK,CAAC;YACT,OAAO,CAAC,CAAC;QACX,IAAI,CAAC,GAAG,CAAC;YACP,OAAO,CAAC,CAAC;QACX,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;CACF;AAED,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;AACxF,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\nimport type { Primitives} from \"@itwin/appui-abstract\";\r\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { TypeConverter } from \"./TypeConverter\";\r\nimport { TypeConverterManager } from \"./TypeConverterManager\";\r\n\r\n/** Hexadecimal Type Converter.\r\n * @public\r\n */\r\nexport class HexadecimalTypeConverter extends TypeConverter {\r\n public override convertToString(value?: Primitives.Hexadecimal) {\r\n if (value === undefined)\r\n return \"\";\r\n\r\n // Need to Uppercase without changing 0x part\r\n const hexString = value.toString();\r\n return `0x${hexString.substring(2, hexString.length).toUpperCase()}`;\r\n }\r\n\r\n public override convertFromString(value: string) {\r\n if (value.substring(0, 2) !== \"0x\")\r\n value = `0x${value}`;\r\n\r\n value = Id64.fromString(value);\r\n if (Id64.isValidId64(value))\r\n return value;\r\n\r\n return undefined;\r\n }\r\n\r\n public sortCompare(a: Primitives.Hexadecimal, b: Primitives.Hexadecimal): number {\r\n // Normalize the strings\r\n a = Id64.fromString(a);\r\n b = Id64.fromString(b);\r\n\r\n if (a === b)\r\n return 0;\r\n if (a > b)\r\n return 1;\r\n return -1;\r\n }\r\n}\r\n\r\nTypeConverterManager.registerConverter(StandardTypeNames.Hex, HexadecimalTypeConverter);\r\nTypeConverterManager.registerConverter(StandardTypeNames.Hexadecimal, HexadecimalTypeConverter);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationPropertyTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/NavigationPropertyTypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAO,+BAAgC,SAAQ,aAAa;IAChD,uBAAuB,CAAC,mBAAwC,EAAE,KAAwB;QACxG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC;IACrE,CAAC;IAEM,WAAW,CAAC,CAAmB,EAAE,CAAmB,EAAE,UAAoB;QAC/E,OAAO,oBAAoB;aACxB,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC;aAC3C,WAAW,CAAE,CAA4B,CAAC,EAAE,EAAG,CAA4B,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACjG,CAAC;CACF;AAED,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/**\n * @packageDocumentation\n * @module TypeConverters\n */\n\nimport type { Primitives, PropertyDescription} from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/**\n * Navigation property type converter.\n * @public\n */\nexport class NavigationPropertyTypeConverter extends TypeConverter {\n public override convertPropertyToString(propertyDescription: PropertyDescription, value?: Primitives.Value) {\n return value === undefined ? \"\" : propertyDescription.displayLabel;\n }\n\n public sortCompare(a: Primitives.Value, b: Primitives.Value, ignoreCase?: boolean): number {\n return TypeConverterManager\n .getConverter(StandardTypeNames.Hexadecimal)\n .sortCompare((a as Primitives.InstanceKey).id, (b as Primitives.InstanceKey).id, ignoreCase);\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Navigation, NavigationPropertyTypeConverter);\n"]}
1
+ {"version":3,"file":"NavigationPropertyTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/NavigationPropertyTypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAO,+BAAgC,SAAQ,aAAa;IAChD,uBAAuB,CAAC,mBAAwC,EAAE,KAAwB;QACxG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC;IACrE,CAAC;IAEM,WAAW,CAAC,CAAmB,EAAE,CAAmB,EAAE,UAAoB;QAC/E,OAAO,oBAAoB;aACxB,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC;aAC3C,WAAW,CAAE,CAA4B,CAAC,EAAE,EAAG,CAA4B,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACjG,CAAC;CACF;AAED,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/**\r\n * @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport type { Primitives, PropertyDescription} from \"@itwin/appui-abstract\";\r\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { TypeConverter } from \"./TypeConverter\";\r\nimport { TypeConverterManager } from \"./TypeConverterManager\";\r\n\r\n/**\r\n * Navigation property type converter.\r\n * @public\r\n */\r\nexport class NavigationPropertyTypeConverter extends TypeConverter {\r\n public override convertPropertyToString(propertyDescription: PropertyDescription, value?: Primitives.Value) {\r\n return value === undefined ? \"\" : propertyDescription.displayLabel;\r\n }\r\n\r\n public sortCompare(a: Primitives.Value, b: Primitives.Value, ignoreCase?: boolean): number {\r\n return TypeConverterManager\r\n .getConverter(StandardTypeNames.Hexadecimal)\r\n .sortCompare((a as Primitives.InstanceKey).id, (b as Primitives.InstanceKey).id, ignoreCase);\r\n }\r\n}\r\n\r\nTypeConverterManager.registerConverter(StandardTypeNames.Navigation, NavigationPropertyTypeConverter);\r\n"]}
@@ -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 extends TypeConverter implements LessGreaterOperatorProcessor {\n public override get isLessGreaterType(): boolean { return true; }\n\n public isLessThan(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\n return a < b;\n }\n\n public isLessThanOrEqualTo(a: Primitives.Numeric, b: Primitives.Numeric): 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(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\n return a >= b;\n }\n\n public sortCompare(a: Primitives.Numeric, b: Primitives.Numeric, _ignoreCase?: boolean): 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)\n 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)\n stringValue += \".0\";\n return stringValue;\n }\n\n public override convertFromString(value: string): number | undefined {\n return FloatTypeConverter.parseString(value);\n }\n}\nTypeConverterManager.registerConverter(StandardTypeNames.Float, FloatTypeConverter);\nTypeConverterManager.registerConverter(StandardTypeNames.Double, FloatTypeConverter);\nTypeConverterManager.registerConverter(StandardTypeNames.Number, FloatTypeConverter);\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)\n 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(StandardTypeNames.Integer, IntTypeConverter);\n"]}
1
+ {"version":3,"file":"NumericTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/NumericTypeConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport type { Primitives} from \"@itwin/appui-abstract\";\r\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport type { LessGreaterOperatorProcessor} from \"./TypeConverter\";\r\nimport { TypeConverter } from \"./TypeConverter\";\r\nimport { TypeConverterManager } from \"./TypeConverterManager\";\r\n\r\n/**\r\n * Base Numeric Type Converter.\r\n * @public\r\n */\r\nexport abstract class NumericTypeConverterBase extends TypeConverter implements LessGreaterOperatorProcessor {\r\n public override get isLessGreaterType(): boolean { return true; }\r\n\r\n public isLessThan(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\r\n return a < b;\r\n }\r\n\r\n public isLessThanOrEqualTo(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\r\n return a <= b;\r\n }\r\n\r\n public isGreaterThan(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\r\n return a > b;\r\n }\r\n\r\n public isGreaterThanOrEqualTo(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\r\n return a >= b;\r\n }\r\n\r\n public sortCompare(a: Primitives.Numeric, b: Primitives.Numeric, _ignoreCase?: boolean): number {\r\n return (+a) - (+b);\r\n }\r\n}\r\n\r\n/**\r\n * Float Type Converter.\r\n * @public\r\n */\r\nexport class FloatTypeConverter extends NumericTypeConverterBase {\r\n private static parseString(value: string): number | undefined {\r\n const parsedValue = parseFloat(value);\r\n return Number.isNaN(parsedValue) ? undefined : parsedValue;\r\n }\r\n\r\n public override convertToString(value?: Primitives.Float) {\r\n if (value === undefined)\r\n return \"\";\r\n\r\n let numericValue = 0;\r\n if (typeof value === \"string\") {\r\n if (value === \"-\" || value === \"\" || value === \"-0.0\" || value === \"-0\") {\r\n // handle these semi-valid values as 0\r\n numericValue = 0;\r\n } else {\r\n numericValue = FloatTypeConverter.parseString(value) ?? 0;\r\n }\r\n } else {\r\n numericValue = value;\r\n }\r\n // this is close to calling `toFixed(2)`, but cuts of any trailing zeros\r\n let stringValue = (Math.round(100 * numericValue) / 100).toString();\r\n // because this is a _float_ converter, we want to emphasize the number is a float - make\r\n // sure there's a decimal part\r\n if (stringValue.indexOf(\".\") === -1)\r\n stringValue += \".0\";\r\n return stringValue;\r\n }\r\n\r\n public override convertFromString(value: string): number | undefined {\r\n return FloatTypeConverter.parseString(value);\r\n }\r\n}\r\nTypeConverterManager.registerConverter(StandardTypeNames.Float, FloatTypeConverter);\r\nTypeConverterManager.registerConverter(StandardTypeNames.Double, FloatTypeConverter);\r\nTypeConverterManager.registerConverter(StandardTypeNames.Number, FloatTypeConverter);\r\n\r\n/**\r\n * Int Type Converter.\r\n * @public\r\n */\r\nexport class IntTypeConverter extends NumericTypeConverterBase {\r\n private static parseString(value: string): number | undefined {\r\n const parsedValue = parseInt(value, 10);\r\n return Number.isNaN(parsedValue) ? undefined : parsedValue;\r\n }\r\n\r\n public override convertToString(value?: Primitives.Int) {\r\n if (value === undefined)\r\n return \"\";\r\n\r\n let numericValue = 0;\r\n if (typeof value === \"string\") {\r\n if (value === \"-\" || value === \"\" || value === \"-0\") {\r\n // handle these semi-valid values as 0\r\n numericValue = 0;\r\n } else {\r\n numericValue = IntTypeConverter.parseString(value) ?? 0;\r\n }\r\n } else {\r\n numericValue = value;\r\n }\r\n return Math.round(numericValue).toString();\r\n }\r\n\r\n public override convertFromString(value: string): number | undefined {\r\n return IntTypeConverter.parseString(value);\r\n }\r\n}\r\n\r\nTypeConverterManager.registerConverter(StandardTypeNames.Int, IntTypeConverter);\r\nTypeConverterManager.registerConverter(StandardTypeNames.Integer, IntTypeConverter);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PointTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/PointTypeConverter.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 { isPromiseLike } from \"@itwin/core-react\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\n\n// cSpell:ignore valuetypes\n\n/**\n * Point type converter.\n * @public\n */\nexport abstract class BasePointTypeConverter extends TypeConverter {\n\n public componentConverterName: string;\n\n public constructor(componentConverterName: string = StandardTypeNames.Double) {\n super();\n this.componentConverterName = componentConverterName;\n }\n\n private formatValue(value: number | string): string | Promise<string> {\n if (typeof value === \"string\")\n value = parseFloat(value);\n return TypeConverterManager.getConverter(this.componentConverterName).convertToString(value);\n }\n\n public override convertToString(value?: Primitives.Point): string | Promise<string> {\n if (!value)\n return \"\";\n\n let components = new Array<string | Promise<string>>();\n if (Array.isArray(value)) {\n if (value.length === 0)\n return \"\";\n components = (value as Array<string | number>).map((c): string | Promise<string> => this.formatValue(c));\n } else {\n components = [this.formatValue(value.x), this.formatValue(value.y)];\n if (undefined !== (value as any).z)\n components.push(this.formatValue((value as any).z));\n }\n const hasAsyncComponents = components.some(isPromiseLike);\n if (hasAsyncComponents) {\n return Promise.all(components.map(async (c) => isPromiseLike(c) ? c : Promise.resolve(c))).then((c) => c.join(\", \"));\n }\n return components.join(\", \");\n }\n\n public override convertFromString(value: string) {\n return this.constructPoint(value.split(\",\"));\n }\n protected abstract constructPoint(_values: Primitives.Point): ConvertedPrimitives.Point | undefined;\n\n protected abstract getVectorLength(point: Primitives.Point): number | undefined;\n\n public sortCompare(a: Primitives.Point, b: Primitives.Point, _ignoreCase?: boolean): number {\n const aLength = this.getVectorLength(a);\n const bLength = this.getVectorLength(b);\n\n if (aLength === bLength)\n return 0;\n if (aLength === undefined)\n return -1;\n if (bLength === undefined)\n return 1;\n\n return aLength - bLength;\n }\n}\n\n/**\n * Point2d type converter.\n * @public\n */\nexport class Point2dTypeConverter extends BasePointTypeConverter {\n\n public constructor(componentConverterName?: string) {\n super(componentConverterName);\n }\n\n protected getVectorLength(point: Primitives.Point): number | undefined {\n const derivedPoint = this.constructPoint(point);\n\n if (derivedPoint === undefined)\n return undefined;\n\n return Math.sqrt(Math.pow(derivedPoint.x, 2) + Math.pow(derivedPoint.y, 2));\n }\n\n protected constructPoint(values: Primitives.Point): ConvertedPrimitives.Point2d | undefined {\n if (Array.isArray(values)) {\n if (values.length !== 2 || isNaN(+values[0]) || isNaN(+values[1]))\n return undefined;\n return { x: +values[0], y: +values[1] };\n }\n return values;\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Point2d, Point2dTypeConverter);\n\n/**\n * Point3d type converter.\n * @public\n */\nexport class Point3dTypeConverter extends BasePointTypeConverter {\n\n public constructor(componentConverterName?: string) {\n super(componentConverterName);\n }\n\n protected getVectorLength(point: Primitives.Point): number | undefined {\n const derivedPoint = this.constructPoint(point);\n\n if (derivedPoint === undefined)\n return undefined;\n\n return Math.sqrt(Math.pow(derivedPoint.x, 2) + Math.pow(derivedPoint.y, 2) + Math.pow(derivedPoint.z, 2));\n }\n\n protected constructPoint(values: Primitives.Point): ConvertedPrimitives.Point3d | undefined {\n if (Array.isArray(values)) {\n if (values.length !== 3 || isNaN(+values[0]) || isNaN(+values[1]) || isNaN(+values[2]))\n return undefined;\n return { x: +values[0], y: +values[1], z: +values[2] };\n }\n const z = (values as any).z;\n return { ...values, z: z ? z : 0 };\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Point3d, Point3dTypeConverter);\n"]}
1
+ {"version":3,"file":"PointTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/PointTypeConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport type { Primitives} from \"@itwin/appui-abstract\";\r\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { isPromiseLike } from \"@itwin/core-react\";\r\nimport { TypeConverter } from \"./TypeConverter\";\r\nimport { TypeConverterManager } from \"./TypeConverterManager\";\r\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\r\n\r\n// cSpell:ignore valuetypes\r\n\r\n/**\r\n * Point type converter.\r\n * @public\r\n */\r\nexport abstract class BasePointTypeConverter extends TypeConverter {\r\n\r\n public componentConverterName: string;\r\n\r\n public constructor(componentConverterName: string = StandardTypeNames.Double) {\r\n super();\r\n this.componentConverterName = componentConverterName;\r\n }\r\n\r\n private formatValue(value: number | string): string | Promise<string> {\r\n if (typeof value === \"string\")\r\n value = parseFloat(value);\r\n return TypeConverterManager.getConverter(this.componentConverterName).convertToString(value);\r\n }\r\n\r\n public override convertToString(value?: Primitives.Point): string | Promise<string> {\r\n if (!value)\r\n return \"\";\r\n\r\n let components = new Array<string | Promise<string>>();\r\n if (Array.isArray(value)) {\r\n if (value.length === 0)\r\n return \"\";\r\n components = (value as Array<string | number>).map((c): string | Promise<string> => this.formatValue(c));\r\n } else {\r\n components = [this.formatValue(value.x), this.formatValue(value.y)];\r\n if (undefined !== (value as any).z)\r\n components.push(this.formatValue((value as any).z));\r\n }\r\n const hasAsyncComponents = components.some(isPromiseLike);\r\n if (hasAsyncComponents) {\r\n return Promise.all(components.map(async (c) => isPromiseLike(c) ? c : Promise.resolve(c))).then((c) => c.join(\", \"));\r\n }\r\n return components.join(\", \");\r\n }\r\n\r\n public override convertFromString(value: string) {\r\n return this.constructPoint(value.split(\",\"));\r\n }\r\n protected abstract constructPoint(_values: Primitives.Point): ConvertedPrimitives.Point | undefined;\r\n\r\n protected abstract getVectorLength(point: Primitives.Point): number | undefined;\r\n\r\n public sortCompare(a: Primitives.Point, b: Primitives.Point, _ignoreCase?: boolean): number {\r\n const aLength = this.getVectorLength(a);\r\n const bLength = this.getVectorLength(b);\r\n\r\n if (aLength === bLength)\r\n return 0;\r\n if (aLength === undefined)\r\n return -1;\r\n if (bLength === undefined)\r\n return 1;\r\n\r\n return aLength - bLength;\r\n }\r\n}\r\n\r\n/**\r\n * Point2d type converter.\r\n * @public\r\n */\r\nexport class Point2dTypeConverter extends BasePointTypeConverter {\r\n\r\n public constructor(componentConverterName?: string) {\r\n super(componentConverterName);\r\n }\r\n\r\n protected getVectorLength(point: Primitives.Point): number | undefined {\r\n const derivedPoint = this.constructPoint(point);\r\n\r\n if (derivedPoint === undefined)\r\n return undefined;\r\n\r\n return Math.sqrt(Math.pow(derivedPoint.x, 2) + Math.pow(derivedPoint.y, 2));\r\n }\r\n\r\n protected constructPoint(values: Primitives.Point): ConvertedPrimitives.Point2d | undefined {\r\n if (Array.isArray(values)) {\r\n if (values.length !== 2 || isNaN(+values[0]) || isNaN(+values[1]))\r\n return undefined;\r\n return { x: +values[0], y: +values[1] };\r\n }\r\n return values;\r\n }\r\n}\r\n\r\nTypeConverterManager.registerConverter(StandardTypeNames.Point2d, Point2dTypeConverter);\r\n\r\n/**\r\n * Point3d type converter.\r\n * @public\r\n */\r\nexport class Point3dTypeConverter extends BasePointTypeConverter {\r\n\r\n public constructor(componentConverterName?: string) {\r\n super(componentConverterName);\r\n }\r\n\r\n protected getVectorLength(point: Primitives.Point): number | undefined {\r\n const derivedPoint = this.constructPoint(point);\r\n\r\n if (derivedPoint === undefined)\r\n return undefined;\r\n\r\n return Math.sqrt(Math.pow(derivedPoint.x, 2) + Math.pow(derivedPoint.y, 2) + Math.pow(derivedPoint.z, 2));\r\n }\r\n\r\n protected constructPoint(values: Primitives.Point): ConvertedPrimitives.Point3d | undefined {\r\n if (Array.isArray(values)) {\r\n if (values.length !== 3 || isNaN(+values[0]) || isNaN(+values[1]) || isNaN(+values[2]))\r\n return undefined;\r\n return { x: +values[0], y: +values[1], z: +values[2] };\r\n }\r\n const z = (values as any).z;\r\n return { ...values, z: z ? z : 0 };\r\n }\r\n}\r\n\r\nTypeConverterManager.registerConverter(StandardTypeNames.Point3d, Point3dTypeConverter);\r\n"]}
@@ -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 extends TypeConverter implements StringOperatorProcessor {\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(valueA: Primitives.String, valueB: Primitives.String, ignoreCase?: boolean): number {\n if (!this.checkArgTypes(valueA, valueB))\n return 0;\n if (ignoreCase)\n return valueA.toLocaleLowerCase().localeCompare(valueB.toLocaleLowerCase());\n else\n return valueA.localeCompare(valueB);\n }\n\n public override get isStringType(): boolean { return true; }\n\n public startsWith(valueA: string, valueB: string, caseSensitive: boolean): boolean {\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB))\n return false;\n\n if (caseSensitive)\n return (valueA.substring(0, valueB.length) === valueB);\n\n return (valueA.toLocaleUpperCase().substring(0, valueB.length) === valueB.toLocaleUpperCase());\n }\n\n public endsWith(valueA: string, valueB: string, caseSensitive: boolean): boolean {\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB))\n return false;\n\n const position = valueA.length - valueB.length;\n if (position < 0)\n return false;\n\n let lastIndex: number;\n if (caseSensitive)\n lastIndex = valueA.indexOf(valueB, position);\n else\n lastIndex = valueA.toLocaleUpperCase().indexOf(valueB.toLocaleUpperCase(), position);\n\n return lastIndex !== -1 && lastIndex === position;\n }\n\n public contains(valueA: string, valueB: string, caseSensitive: boolean): boolean {\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB))\n return false;\n\n if (valueB.length > valueA.length)\n return false;\n\n if (caseSensitive)\n return valueA.indexOf(valueB, 0) !== -1;\n\n return valueA.toLocaleUpperCase().indexOf(valueB.toLocaleUpperCase(), 0) !== -1;\n }\n\n public doesNotContain(valueA: string, valueB: string, caseSensitive: boolean): boolean {\n return !this.contains(valueA, valueB, caseSensitive);\n }\n\n public isContainedIn(valueA: string, valueB: string, caseSensitive: boolean): boolean {\n return this.contains(valueB, valueA, caseSensitive);\n }\n\n public isNotContainedIn(valueA: string, valueB: string, caseSensitive: boolean): boolean {\n return this.doesNotContain(valueB, valueA, caseSensitive);\n }\n\n public isEmpty(valueA: string): boolean {\n if (!this.checkArgTypes(valueA))\n 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\")\n return false;\n if (valueB && typeof valueB !== \"string\")\n return false;\n return true;\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Text, StringTypeConverter);\nTypeConverterManager.registerConverter(StandardTypeNames.String, StringTypeConverter);\nTypeConverterManager.registerConverter(StandardTypeNames.URL, StringTypeConverter);\n"]}
1
+ {"version":3,"file":"StringTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/StringTypeConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport type { Primitives} from \"@itwin/appui-abstract\";\r\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { TypeConverter } from \"./TypeConverter\";\r\nimport { TypeConverterManager } from \"./TypeConverterManager\";\r\n\r\n/** Operators for string types\r\n * @public\r\n */\r\nexport interface StringOperatorProcessor {\r\n /** Determines if one string starts with another string */\r\n startsWith(a: string, b: string, caseSensitive: boolean): boolean;\r\n /** Determines if one string ends with another string */\r\n endsWith(a: string, b: string, caseSensitive: boolean): boolean;\r\n /** Determines if one string contains another string */\r\n contains(a: string, b: string, caseSensitive: boolean): boolean;\r\n /** Determines if one string does not contain another string */\r\n doesNotContain(a: string, b: string, caseSensitive: boolean): boolean;\r\n /** Determines if one string is contained within another string */\r\n isContainedIn(a: string, b: string, caseSensitive: boolean): boolean;\r\n /** Determines if one string is not contained within another string */\r\n isNotContainedIn(a: string, b: string, caseSensitive: boolean): boolean;\r\n /** Determines if a string is empty */\r\n isEmpty(a: string): boolean;\r\n /** Determines if a string is not empty */\r\n isNotEmpty(a: string): boolean;\r\n}\r\n\r\n/**\r\n * String Type Converter.\r\n * @public\r\n */\r\nexport class StringTypeConverter extends TypeConverter implements StringOperatorProcessor {\r\n public override convertToString(value?: Primitives.String) {\r\n return value ? value.toString() : \"\";\r\n }\r\n\r\n public override convertFromString(value: string) {\r\n return value;\r\n }\r\n\r\n public sortCompare(valueA: Primitives.String, valueB: Primitives.String, ignoreCase?: boolean): number {\r\n if (!this.checkArgTypes(valueA, valueB))\r\n return 0;\r\n if (ignoreCase)\r\n return valueA.toLocaleLowerCase().localeCompare(valueB.toLocaleLowerCase());\r\n else\r\n return valueA.localeCompare(valueB);\r\n }\r\n\r\n public override get isStringType(): boolean { return true; }\r\n\r\n public startsWith(valueA: string, valueB: string, caseSensitive: boolean): boolean {\r\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB))\r\n return false;\r\n\r\n if (caseSensitive)\r\n return (valueA.substring(0, valueB.length) === valueB);\r\n\r\n return (valueA.toLocaleUpperCase().substring(0, valueB.length) === valueB.toLocaleUpperCase());\r\n }\r\n\r\n public endsWith(valueA: string, valueB: string, caseSensitive: boolean): boolean {\r\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB))\r\n return false;\r\n\r\n const position = valueA.length - valueB.length;\r\n if (position < 0)\r\n return false;\r\n\r\n let lastIndex: number;\r\n if (caseSensitive)\r\n lastIndex = valueA.indexOf(valueB, position);\r\n else\r\n lastIndex = valueA.toLocaleUpperCase().indexOf(valueB.toLocaleUpperCase(), position);\r\n\r\n return lastIndex !== -1 && lastIndex === position;\r\n }\r\n\r\n public contains(valueA: string, valueB: string, caseSensitive: boolean): boolean {\r\n if (!valueA || !valueB || !this.checkArgTypes(valueA, valueB))\r\n return false;\r\n\r\n if (valueB.length > valueA.length)\r\n return false;\r\n\r\n if (caseSensitive)\r\n return valueA.indexOf(valueB, 0) !== -1;\r\n\r\n return valueA.toLocaleUpperCase().indexOf(valueB.toLocaleUpperCase(), 0) !== -1;\r\n }\r\n\r\n public doesNotContain(valueA: string, valueB: string, caseSensitive: boolean): boolean {\r\n return !this.contains(valueA, valueB, caseSensitive);\r\n }\r\n\r\n public isContainedIn(valueA: string, valueB: string, caseSensitive: boolean): boolean {\r\n return this.contains(valueB, valueA, caseSensitive);\r\n }\r\n\r\n public isNotContainedIn(valueA: string, valueB: string, caseSensitive: boolean): boolean {\r\n return this.doesNotContain(valueB, valueA, caseSensitive);\r\n }\r\n\r\n public isEmpty(valueA: string): boolean {\r\n if (!this.checkArgTypes(valueA))\r\n return true;\r\n return valueA.length === 0;\r\n }\r\n\r\n public isNotEmpty(valueA: string): boolean {\r\n return !this.isEmpty(valueA);\r\n }\r\n\r\n private checkArgTypes(valueA: string, valueB?: string): boolean {\r\n if (typeof valueA !== \"string\")\r\n return false;\r\n if (valueB && typeof valueB !== \"string\")\r\n return false;\r\n return true;\r\n }\r\n}\r\n\r\nTypeConverterManager.registerConverter(StandardTypeNames.Text, StringTypeConverter);\r\nTypeConverterManager.registerConverter(StandardTypeNames.String, StringTypeConverter);\r\nTypeConverterManager.registerConverter(StandardTypeNames.URL, StringTypeConverter);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA6C5D;;;GAGG;AACH,MAAM,OAAgB,aAAa;IACjC,6CAA6C;IACtC,eAAe,CAAC,KAAwB;QAC7C,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,wEAAwE;IACjE,0BAA0B,CAAC,KAAwB,EAAE,QAAiC;QAC3F,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,6CAA6C;IACtC,iBAAiB,CAAC,MAAc;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0EAA0E;IACnE,4BAA4B,CAAC,KAAa,EAAE,QAAiC;QAClF,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,0EAA0E;IACnE,uBAAuB,CAAC,mBAAwC,EAAE,KAAwB;;QAC/F,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAA,mBAAmB,CAAC,SAAS,0CAAE,OAAO,CAAC,CAAC;IACxF,CAAC;IAED,mEAAmE;IAC5D,KAAK,CAAC,gCAAgC,CAAC,KAAa,EAAE,cAA+B;QAC1F,MAAM,gBAAgB,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACvI,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACrF,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;IAKD,mDAAmD;IAC5C,SAAS,CAAC,MAAwB,EAAE,MAAwB;QACjE,OAAO,MAAM,KAAK,MAAM,CAAC;IAC3B,CAAC;IAED,uDAAuD;IAChD,YAAY,CAAC,MAAwB,EAAE,MAAwB;QACpE,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,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACpD,wDAAwD;IACxD,IAAW,iBAAiB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACzD,wDAAwD;IACxD,IAAW,aAAa,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACrD,yDAAyD;IACzD,IAAW,cAAc,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;CACtD","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 { Primitives, PrimitiveValue, PropertyDescription, PropertyRecord, PropertyValue} 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(valueA: Primitives.Value, valueB: Primitives.Value, ignoreCase?: boolean): 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 implements SortComparer, OperatorProcessor, NullableOperatorProcessor {\n /** Converts a primitive value to a string */\n public convertToString(value?: Primitives.Value): string | Promise<string> {\n if (value === undefined)\n return \"\";\n return value.toString();\n }\n\n /** Default implementation just calls convertToString with no options */\n public convertToStringWithOptions(value?: Primitives.Value, _options?: { [key: string]: any }): string | Promise<string> {\n return this.convertToString(value);\n }\n\n /** Converts a string to a primitive value */\n public convertFromString(_value: string): ConvertedPrimitives.Value | undefined | Promise<ConvertedPrimitives.Value | undefined> {\n return undefined;\n }\n\n /** Default implementation just calls convertFromString with no options */\n public convertFromStringWithOptions(value: string, _options?: { [key: string]: any }): ConvertedPrimitives.Value | undefined | 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(propertyDescription: PropertyDescription, value?: Primitives.Value): string | Promise<string> {\n return this.convertToStringWithOptions(value, propertyDescription.converter?.options);\n }\n\n /** Converts a string with a property record to a property value */\n public async convertFromStringToPropertyValue(value: string, propertyRecord?: PropertyRecord): Promise<PropertyValue> {\n const converterOptions = (propertyRecord && propertyRecord.property.converter) ? propertyRecord.property.converter.options : undefined;\n const stringValue = await this.convertFromStringWithOptions(value, converterOptions);\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(valueA: Primitives.Value, valueB: Primitives.Value, _ignoreCase?: boolean): number;\n\n /** Determines if two primitive values are equal */\n public isEqualTo(valueA: Primitives.Value, valueB: Primitives.Value): boolean {\n return valueA === valueB;\n }\n\n /** Determines if two primitive values are not equal */\n public isNotEqualTo(valueA: Primitives.Value, valueB: Primitives.Value): 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 { return false; }\n /** Determines if the converter is for a numeric type */\n public get isLessGreaterType(): boolean { return false; }\n /** Determines if the converter is for a boolean type */\n public get isBooleanType(): boolean { return false; }\n /** Determines if the converter is for a nullable type */\n public get isNullableType(): boolean { return true; }\n}\n"]}
1
+ {"version":3,"file":"TypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA6C5D;;;GAGG;AACH,MAAM,OAAgB,aAAa;IACjC,6CAA6C;IACtC,eAAe,CAAC,KAAwB;QAC7C,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,wEAAwE;IACjE,0BAA0B,CAAC,KAAwB,EAAE,QAAiC;QAC3F,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,6CAA6C;IACtC,iBAAiB,CAAC,MAAc;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0EAA0E;IACnE,4BAA4B,CAAC,KAAa,EAAE,QAAiC;QAClF,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,0EAA0E;IACnE,uBAAuB,CAAC,mBAAwC,EAAE,KAAwB;;QAC/F,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAA,mBAAmB,CAAC,SAAS,0CAAE,OAAO,CAAC,CAAC;IACxF,CAAC;IAED,mEAAmE;IAC5D,KAAK,CAAC,gCAAgC,CAAC,KAAa,EAAE,cAA+B;QAC1F,MAAM,gBAAgB,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACvI,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACrF,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;IAKD,mDAAmD;IAC5C,SAAS,CAAC,MAAwB,EAAE,MAAwB;QACjE,OAAO,MAAM,KAAK,MAAM,CAAC;IAC3B,CAAC;IAED,uDAAuD;IAChD,YAAY,CAAC,MAAwB,EAAE,MAAwB;QACpE,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,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACpD,wDAAwD;IACxD,IAAW,iBAAiB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACzD,wDAAwD;IACxD,IAAW,aAAa,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACrD,yDAAyD;IACzD,IAAW,cAAc,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;CACtD","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\n// cSpell:ignore valuetypes shortdate\r\n\r\nimport type { Primitives, PrimitiveValue, PropertyDescription, PropertyRecord, PropertyValue} from \"@itwin/appui-abstract\";\r\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\r\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\r\n\r\n/** Sort compare method for types that support sorting\r\n * @public\r\n */\r\nexport interface SortComparer {\r\n /** Sort function for two primitive values */\r\n sortCompare(valueA: Primitives.Value, valueB: Primitives.Value, ignoreCase?: boolean): number;\r\n}\r\n\r\n/** Operators for all filterable types\r\n * @public\r\n */\r\nexport interface OperatorProcessor {\r\n /** Determines if two primitive values are equal */\r\n isEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\r\n /** Determines if two primitive values are not equal */\r\n isNotEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\r\n}\r\n\r\n/** Operators for Numeric types, DateTime, TimeSpan, or any type that supports these comparisons\r\n * @public\r\n */\r\nexport interface LessGreaterOperatorProcessor {\r\n /** Determines if a primitive values is less than another primitive value */\r\n isLessThan(a: Primitives.Value, b: Primitives.Value): boolean;\r\n /** Determines if a primitive values is less than or equal to another primitive value */\r\n isLessThanOrEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\r\n /** Determines if a primitive values is greater than another primitive value */\r\n isGreaterThan(a: Primitives.Value, b: Primitives.Value): boolean;\r\n /** Determines if a primitive values is greater than or equal to another primitive value */\r\n isGreaterThanOrEqualTo(a: Primitives.Value, b: Primitives.Value): boolean;\r\n}\r\n\r\n/** Operators for all filterable null-able types\r\n * @public\r\n */\r\nexport interface NullableOperatorProcessor {\r\n /** Determines if a primitive value is null or undefined */\r\n isNull(value: Primitives.Value): boolean;\r\n /** Determines if a primitive value is not null or not undefined */\r\n isNotNull(value: Primitives.Value): boolean;\r\n}\r\n\r\n/**\r\n * Type Converter base class.\r\n * @public\r\n */\r\nexport abstract class TypeConverter implements SortComparer, OperatorProcessor, NullableOperatorProcessor {\r\n /** Converts a primitive value to a string */\r\n public convertToString(value?: Primitives.Value): string | Promise<string> {\r\n if (value === undefined)\r\n return \"\";\r\n return value.toString();\r\n }\r\n\r\n /** Default implementation just calls convertToString with no options */\r\n public convertToStringWithOptions(value?: Primitives.Value, _options?: { [key: string]: any }): string | Promise<string> {\r\n return this.convertToString(value);\r\n }\r\n\r\n /** Converts a string to a primitive value */\r\n public convertFromString(_value: string): ConvertedPrimitives.Value | undefined | Promise<ConvertedPrimitives.Value | undefined> {\r\n return undefined;\r\n }\r\n\r\n /** Default implementation just calls convertFromString with no options */\r\n public convertFromStringWithOptions(value: string, _options?: { [key: string]: any }): ConvertedPrimitives.Value | undefined | Promise<ConvertedPrimitives.Value | undefined> {\r\n return this.convertFromString(value);\r\n }\r\n\r\n /** Converts a value associated with a property description to a string */\r\n public convertPropertyToString(propertyDescription: PropertyDescription, value?: Primitives.Value): string | Promise<string> {\r\n return this.convertToStringWithOptions(value, propertyDescription.converter?.options);\r\n }\r\n\r\n /** Converts a string with a property record to a property value */\r\n public async convertFromStringToPropertyValue(value: string, propertyRecord?: PropertyRecord): Promise<PropertyValue> {\r\n const converterOptions = (propertyRecord && propertyRecord.property.converter) ? propertyRecord.property.converter.options : undefined;\r\n const stringValue = await this.convertFromStringWithOptions(value, converterOptions);\r\n const propertyValue: PrimitiveValue = {\r\n valueFormat: PropertyValueFormat.Primitive,\r\n value: stringValue,\r\n displayValue: \"\",\r\n };\r\n return propertyValue;\r\n }\r\n\r\n /** Sort function for two primitive values */\r\n public abstract sortCompare(valueA: Primitives.Value, valueB: Primitives.Value, _ignoreCase?: boolean): number;\r\n\r\n /** Determines if two primitive values are equal */\r\n public isEqualTo(valueA: Primitives.Value, valueB: Primitives.Value): boolean {\r\n return valueA === valueB;\r\n }\r\n\r\n /** Determines if two primitive values are not equal */\r\n public isNotEqualTo(valueA: Primitives.Value, valueB: Primitives.Value): boolean {\r\n return valueA !== valueB;\r\n }\r\n\r\n /** Determines if a primitive value is null or undefined */\r\n public isNull(value: Primitives.Value): boolean {\r\n return value === null || value === undefined;\r\n }\r\n\r\n /** Determines if a primitive value is not null or not undefined */\r\n public isNotNull(value: Primitives.Value): boolean {\r\n return value !== null && value !== undefined;\r\n }\r\n\r\n /** Determines if the converter is for a string type */\r\n public get isStringType(): boolean { return false; }\r\n /** Determines if the converter is for a numeric type */\r\n public get isLessGreaterType(): boolean { return false; }\r\n /** Determines if the converter is for a boolean type */\r\n public get isBooleanType(): boolean { return false; }\r\n /** Determines if the converter is for a nullable type */\r\n public get isNullableType(): boolean { return true; }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TypeConverterManager.js","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverterManager.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH;;;GAGG;AACH,MAAa,oBAAoB;IAIvB,MAAM,CAAC,oBAAoB,CAAC,QAAgB,EAAE,aAAsB;QAC1E,IAAI,iBAAiB,GAAG,QAAQ,CAAC;QACjC,IAAI,aAAa;YACf,iBAAiB,IAAI,IAAI,aAAa,EAAE,CAAC;QAC3C,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,QAAgB,EAAE,SAAkC,EAAE,aAAsB;QAC1G,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAE7F,IAAI,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;YACtE,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;YAC7F,MAAM,KAAK,CAAC,uDAAuD,QAAQ,4BAA4B,eAAe,GAAG,CAAC,CAAC;SAC5H;QAED,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QACjC,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC;IACjE,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,QAAgB,EAAE,aAAsB;QACxE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAE7F,uBAAuB;QACvB,IAAI,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;YACtE,OAAO,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;SAC5D;IACH,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,QAAgB,EAAE,aAAsB;QACjE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAE7F,IAAI,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC;YACpE,OAAO,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE7D,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE;YAC/C,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC,yDAAyD;YACvI,oBAAoB,CAAC,qBAAqB,GAAG,IAAI,mBAAmB,EAAE,CAAC;SACxE;QACD,OAAO,oBAAoB,CAAC,qBAAqB,CAAC;IACpD,CAAC;;AA1Cc,gCAAW,GAAyC,EAAE,CAAC;SAD3D,oBAAoB","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 { TypeConverter } from \"./TypeConverter\";\n\n/**\n * Manages Type Converters. Type Converters are registered with and obtained from the manager.\n * @public\n */\nexport class TypeConverterManager {\n private static _converters: { [index: string]: (TypeConverter) } = {};\n private static _defaultTypeConverter: TypeConverter;\n\n private static getFullConverterName(typename: string, converterName?: string): string {\n let fullConverterName = typename;\n if (converterName)\n fullConverterName += `:${converterName}`;\n return fullConverterName;\n }\n\n public static registerConverter(typename: string, converter: new () => TypeConverter, converterName?: string): void {\n const fullConverterName = TypeConverterManager.getFullConverterName(typename, converterName);\n\n if (TypeConverterManager._converters.hasOwnProperty(fullConverterName)) {\n const nameOfConverter = TypeConverterManager._converters[fullConverterName].constructor.name;\n throw Error(`TypeConverterManager.registerConverter error: type '${typename}' already registered to '${nameOfConverter}'`);\n }\n\n const instance = new converter();\n TypeConverterManager._converters[fullConverterName] = instance;\n }\n\n public static unregisterConverter(typename: string, converterName?: string): void {\n const fullConverterName = TypeConverterManager.getFullConverterName(typename, converterName);\n\n // istanbul ignore else\n if (TypeConverterManager._converters.hasOwnProperty(fullConverterName)) {\n delete TypeConverterManager._converters[fullConverterName];\n }\n }\n\n public static getConverter(typename: string, converterName?: string): TypeConverter {\n const fullConverterName = TypeConverterManager.getFullConverterName(typename, converterName);\n\n if (TypeConverterManager._converters.hasOwnProperty(fullConverterName))\n return TypeConverterManager._converters[fullConverterName];\n\n if (!TypeConverterManager._defaultTypeConverter) {\n const { StringTypeConverter } = require(\"../converters/StringTypeConverter\"); // eslint-disable-line @typescript-eslint/no-var-requires\n TypeConverterManager._defaultTypeConverter = new StringTypeConverter();\n }\n return TypeConverterManager._defaultTypeConverter;\n }\n}\n"]}
1
+ {"version":3,"file":"TypeConverterManager.js","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverterManager.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH;;;GAGG;AACH,MAAa,oBAAoB;IAIvB,MAAM,CAAC,oBAAoB,CAAC,QAAgB,EAAE,aAAsB;QAC1E,IAAI,iBAAiB,GAAG,QAAQ,CAAC;QACjC,IAAI,aAAa;YACf,iBAAiB,IAAI,IAAI,aAAa,EAAE,CAAC;QAC3C,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,QAAgB,EAAE,SAAkC,EAAE,aAAsB;QAC1G,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAE7F,IAAI,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;YACtE,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;YAC7F,MAAM,KAAK,CAAC,uDAAuD,QAAQ,4BAA4B,eAAe,GAAG,CAAC,CAAC;SAC5H;QAED,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QACjC,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC;IACjE,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,QAAgB,EAAE,aAAsB;QACxE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAE7F,uBAAuB;QACvB,IAAI,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;YACtE,OAAO,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;SAC5D;IACH,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,QAAgB,EAAE,aAAsB;QACjE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAE7F,IAAI,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC;YACpE,OAAO,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE7D,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE;YAC/C,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC,yDAAyD;YACvI,oBAAoB,CAAC,qBAAqB,GAAG,IAAI,mBAAmB,EAAE,CAAC;SACxE;QACD,OAAO,oBAAoB,CAAC,qBAAqB,CAAC;IACpD,CAAC;;AA1Cc,gCAAW,GAAyC,EAAE,CAAC;SAD3D,oBAAoB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TypeConverters\r\n */\r\n\r\nimport type { TypeConverter } from \"./TypeConverter\";\r\n\r\n/**\r\n * Manages Type Converters. Type Converters are registered with and obtained from the manager.\r\n * @public\r\n */\r\nexport class TypeConverterManager {\r\n private static _converters: { [index: string]: (TypeConverter) } = {};\r\n private static _defaultTypeConverter: TypeConverter;\r\n\r\n private static getFullConverterName(typename: string, converterName?: string): string {\r\n let fullConverterName = typename;\r\n if (converterName)\r\n fullConverterName += `:${converterName}`;\r\n return fullConverterName;\r\n }\r\n\r\n public static registerConverter(typename: string, converter: new () => TypeConverter, converterName?: string): void {\r\n const fullConverterName = TypeConverterManager.getFullConverterName(typename, converterName);\r\n\r\n if (TypeConverterManager._converters.hasOwnProperty(fullConverterName)) {\r\n const nameOfConverter = TypeConverterManager._converters[fullConverterName].constructor.name;\r\n throw Error(`TypeConverterManager.registerConverter error: type '${typename}' already registered to '${nameOfConverter}'`);\r\n }\r\n\r\n const instance = new converter();\r\n TypeConverterManager._converters[fullConverterName] = instance;\r\n }\r\n\r\n public static unregisterConverter(typename: string, converterName?: string): void {\r\n const fullConverterName = TypeConverterManager.getFullConverterName(typename, converterName);\r\n\r\n // istanbul ignore else\r\n if (TypeConverterManager._converters.hasOwnProperty(fullConverterName)) {\r\n delete TypeConverterManager._converters[fullConverterName];\r\n }\r\n }\r\n\r\n public static getConverter(typename: string, converterName?: string): TypeConverter {\r\n const fullConverterName = TypeConverterManager.getFullConverterName(typename, converterName);\r\n\r\n if (TypeConverterManager._converters.hasOwnProperty(fullConverterName))\r\n return TypeConverterManager._converters[fullConverterName];\r\n\r\n if (!TypeConverterManager._defaultTypeConverter) {\r\n const { StringTypeConverter } = require(\"../converters/StringTypeConverter\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n TypeConverterManager._defaultTypeConverter = new StringTypeConverter();\r\n }\r\n return TypeConverterManager._defaultTypeConverter;\r\n }\r\n}\r\n"]}