@itwin/grouping-mapping-widget 0.36.0 → 0.37.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 (427) hide show
  1. package/lib/cjs/GroupingMappingWidget.js +15 -28
  2. package/lib/cjs/GroupingMappingWidget.js.map +1 -1
  3. package/lib/cjs/WidgetShell/GroupingMapping.d.ts +1 -2
  4. package/lib/cjs/WidgetShell/GroupingMapping.js +1 -1
  5. package/lib/cjs/WidgetShell/GroupingMapping.js.map +1 -1
  6. package/lib/cjs/WidgetShell/GroupingMappingContent.d.ts +2 -3
  7. package/lib/cjs/WidgetShell/GroupingMappingContent.js.map +1 -1
  8. package/lib/cjs/WidgetShell/GroupingMappingHeader.d.ts +0 -1
  9. package/lib/cjs/WidgetShell/GroupingMappingWidget.js +2 -1
  10. package/lib/cjs/WidgetShell/GroupingMappingWidget.js.map +1 -1
  11. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.d.ts +2 -3
  12. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  13. package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.d.ts +0 -1
  14. package/lib/cjs/common/hooks/useIsMounted.d.ts +0 -1
  15. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js +1 -2
  16. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js.map +1 -1
  17. package/lib/cjs/common/utils.d.ts +1 -1
  18. package/lib/cjs/common/utils.js +10 -21
  19. package/lib/cjs/common/utils.js.map +1 -1
  20. package/lib/cjs/common/viewerUtils.js.map +1 -1
  21. package/lib/cjs/components/Constants.js +1 -1
  22. package/lib/cjs/components/Constants.js.map +1 -1
  23. package/lib/cjs/components/GroupingMappingContext.js.map +1 -1
  24. package/lib/cjs/components/Groups/Editing/GroupAction.d.ts +0 -1
  25. package/lib/cjs/components/Groups/Editing/GroupAction.js +9 -5
  26. package/lib/cjs/components/Groups/Editing/GroupAction.js.map +1 -1
  27. package/lib/cjs/components/Groups/Editing/GroupDetails.d.ts +0 -1
  28. package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.d.ts +0 -1
  29. package/lib/cjs/components/Groups/Editing/GroupDetailsStep.d.ts +0 -1
  30. package/lib/cjs/components/Groups/GroupColorLegend.d.ts +0 -1
  31. package/lib/cjs/components/Groups/GroupListItem.d.ts +0 -1
  32. package/lib/cjs/components/Groups/GroupListItem.js.map +1 -1
  33. package/lib/cjs/components/Groups/GroupMenuActions.d.ts +0 -1
  34. package/lib/cjs/components/Groups/GroupMenuActions.js.map +1 -1
  35. package/lib/cjs/components/Groups/GroupOverlapProgressBar.d.ts +0 -1
  36. package/lib/cjs/components/Groups/Groups.js.map +1 -1
  37. package/lib/cjs/components/Groups/GroupsAddButton.d.ts +0 -1
  38. package/lib/cjs/components/Groups/GroupsShowHideButtons.d.ts +0 -1
  39. package/lib/cjs/components/Groups/GroupsShowHideButtons.js.map +1 -1
  40. package/lib/cjs/components/Groups/GroupsView.d.ts +1 -1
  41. package/lib/cjs/components/Groups/GroupsVisualization.d.ts +0 -1
  42. package/lib/cjs/components/Groups/GroupsVisualization.js.map +1 -1
  43. package/lib/cjs/components/Groups/GroupsVisualizationActions.d.ts +0 -1
  44. package/lib/cjs/components/Groups/GroupsVisualizationActions.js.map +1 -1
  45. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.d.ts +0 -1
  46. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.js +28 -9
  47. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
  48. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilder.js +36 -33
  49. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilder.js.map +1 -1
  50. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderActionPanel.d.ts +0 -1
  51. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +0 -1
  52. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
  53. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderStep.d.ts +0 -1
  54. package/lib/cjs/components/Groups/ToggleGroupVisibility.d.ts +0 -1
  55. package/lib/cjs/components/Groups/groupsHelpers.d.ts +1 -1
  56. package/lib/cjs/components/Groups/groupsHelpers.js.map +1 -1
  57. package/lib/cjs/components/Groups/hooks/useGroupsOperations.d.ts +0 -1
  58. package/lib/cjs/components/Groups/hooks/useGroupsOperations.js.map +1 -1
  59. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.js +1 -2
  60. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
  61. package/lib/cjs/components/Groups/hooks/useVisualization.d.ts +0 -1
  62. package/lib/cjs/components/Groups/hooks/useVisualization.js.map +1 -1
  63. package/lib/cjs/components/Mappings/BlockingOverlay.d.ts +0 -1
  64. package/lib/cjs/components/Mappings/Editing/MappingAction.d.ts +0 -1
  65. package/lib/cjs/components/Mappings/Editing/MappingAction.js.map +1 -1
  66. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js +1 -2
  67. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
  68. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.d.ts +0 -1
  69. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js +8 -0
  70. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  71. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.d.ts +0 -1
  72. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.d.ts +0 -1
  73. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.d.ts +0 -1
  74. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.d.ts +0 -1
  75. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.d.ts +0 -1
  76. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js +1 -1
  77. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
  78. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.d.ts +1 -2
  79. package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
  80. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.d.ts +0 -1
  81. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js +1 -2
  82. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  83. package/lib/cjs/components/Mappings/Import/SelectIModel.d.ts +0 -1
  84. package/lib/cjs/components/Mappings/Import/SelectIModel.js.map +1 -1
  85. package/lib/cjs/components/Mappings/Import/SelectITwin.d.ts +0 -1
  86. package/lib/cjs/components/Mappings/Import/SelectITwin.js +1 -1
  87. package/lib/cjs/components/Mappings/Import/SelectITwin.js.map +1 -1
  88. package/lib/cjs/components/Mappings/Import/SelectMappings.d.ts +0 -1
  89. package/lib/cjs/components/Mappings/MappingListItem.d.ts +0 -1
  90. package/lib/cjs/components/Mappings/MappingListItem.js +1 -2
  91. package/lib/cjs/components/Mappings/MappingListItem.js.map +1 -1
  92. package/lib/cjs/components/Mappings/MappingViewActionGroup.d.ts +0 -1
  93. package/lib/cjs/components/Mappings/Mappings.d.ts +1 -2
  94. package/lib/cjs/components/Mappings/MappingsView.js +1 -1
  95. package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
  96. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
  97. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -2
  98. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js +1 -1
  99. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
  100. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.d.ts +0 -1
  101. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  102. package/lib/cjs/components/Mappings/hooks/useRunExtraction.d.ts +0 -1
  103. package/lib/cjs/components/Mappings/hooks/useRunExtraction.js.map +1 -1
  104. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +2 -3
  105. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +1 -1
  106. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  107. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +0 -1
  108. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +17 -4
  109. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  110. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.d.ts +0 -1
  111. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  112. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +0 -1
  113. package/lib/cjs/components/Properties/GroupColorToggle.d.ts +1 -2
  114. package/lib/cjs/components/Properties/GroupColorToggle.js.map +1 -1
  115. package/lib/cjs/components/Properties/GroupInformationPanel.d.ts +0 -1
  116. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.d.ts +0 -1
  117. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  118. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.d.ts +0 -1
  119. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.d.ts +0 -1
  120. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
  121. package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.d.ts +0 -1
  122. package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +4 -6
  123. package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
  124. package/lib/cjs/components/Properties/GroupProperties/SaveModal.d.ts +0 -1
  125. package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.d.ts +0 -1
  126. package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
  127. package/lib/cjs/components/Properties/PropertyAction.d.ts +0 -1
  128. package/lib/cjs/components/Properties/PropertyAction.js +7 -3
  129. package/lib/cjs/components/Properties/PropertyAction.js.map +1 -1
  130. package/lib/cjs/components/Properties/PropertyMenu.d.ts +0 -1
  131. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.d.ts +0 -1
  132. package/lib/cjs/components/Properties/PropertyNameCell.d.ts +0 -1
  133. package/lib/cjs/components/Properties/PropertyTable.d.ts +0 -1
  134. package/lib/cjs/components/Properties/PropertyTableToolbar.d.ts +0 -1
  135. package/lib/cjs/components/Properties/ScrollableExpandableBlock.js.map +1 -1
  136. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js +2 -2
  137. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  138. package/lib/cjs/components/Properties/hooks/useForwardRef.js.map +1 -1
  139. package/lib/cjs/components/Properties/hooks/useValidator.js.map +1 -1
  140. package/lib/cjs/components/SharedComponents/ActionPanel.d.ts +0 -1
  141. package/lib/cjs/components/SharedComponents/DeleteModal.d.ts +0 -1
  142. package/lib/cjs/components/SharedComponents/EmptyMessage.d.ts +0 -1
  143. package/lib/cjs/components/SharedComponents/LoadingOverlay.d.ts +0 -1
  144. package/lib/cjs/components/SharedComponents/LoadingSpinner.d.ts +0 -1
  145. package/lib/cjs/components/SharedComponents/StatusIcon.d.ts +1 -1
  146. package/lib/cjs/components/context/ExtractionClientContext.d.ts +0 -1
  147. package/lib/cjs/components/context/ExtractionClientContext.js.map +1 -1
  148. package/lib/cjs/components/context/ExtractionStateJobContext.js.map +1 -1
  149. package/lib/cjs/components/context/GroupHilitedElementsContext.js.map +1 -1
  150. package/lib/cjs/components/context/GroupingApiConfigContext.d.ts +2 -2
  151. package/lib/cjs/components/context/GroupingApiConfigContext.js.map +1 -1
  152. package/lib/cjs/components/context/GroupingMappingCustomUIContext.d.ts +0 -1
  153. package/lib/cjs/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  154. package/lib/cjs/components/context/GroupsClientContext.d.ts +0 -1
  155. package/lib/cjs/components/context/GroupsClientContext.js.map +1 -1
  156. package/lib/cjs/components/context/IModelsClientContext.d.ts +0 -1
  157. package/lib/cjs/components/context/IModelsClientContext.js.map +1 -1
  158. package/lib/cjs/components/context/ITwinsClientContext.d.ts +0 -1
  159. package/lib/cjs/components/context/ITwinsClientContext.js.map +1 -1
  160. package/lib/cjs/components/context/MappingClientContext.d.ts +0 -1
  161. package/lib/cjs/components/context/MappingClientContext.js.map +1 -1
  162. package/lib/cjs/components/context/PropertiesClientContext.d.ts +0 -1
  163. package/lib/cjs/components/context/PropertiesClientContext.js.map +1 -1
  164. package/lib/cjs/components/context/PropertiesGroupColorContext.js.map +1 -1
  165. package/lib/cjs/components/context/PropertyGridWrapperContext.d.ts +1 -0
  166. package/lib/cjs/components/context/PropertyGridWrapperContext.js.map +1 -1
  167. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.d.ts +0 -1
  168. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js +2 -1
  169. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  170. package/lib/cjs/components/customUI/GroupingMappingCustomUI.d.ts +1 -1
  171. package/lib/cjs/components/customUI/GroupingMappingCustomUI.js +1 -1
  172. package/lib/cjs/components/customUI/GroupingMappingCustomUI.js.map +1 -1
  173. package/lib/cjs/components/customUI/ManualGroupingCustomUI.d.ts +0 -1
  174. package/lib/cjs/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  175. package/lib/cjs/components/customUI/SearchGroupingCustomUI.d.ts +0 -1
  176. package/lib/cjs/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  177. package/lib/cjs/decorators/BboxDimensionsDecorator.d.ts +2 -0
  178. package/lib/cjs/decorators/BboxDimensionsDecorator.js +80 -29
  179. package/lib/cjs/decorators/BboxDimensionsDecorator.js.map +1 -1
  180. package/lib/cjs/formula/FormulaDataTypeResolver.js +1 -2
  181. package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
  182. package/lib/cjs/formula/FormulaFunctionProvider.js +3 -4
  183. package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
  184. package/lib/cjs/formula/FormulaOperatorsProvider.js +11 -11
  185. package/lib/cjs/formula/FormulaOperatorsProvider.js.map +1 -1
  186. package/lib/cjs/formula/FormulaSplitter.js +1 -2
  187. package/lib/cjs/formula/FormulaSplitter.js.map +1 -1
  188. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js +1 -2
  189. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js.map +1 -1
  190. package/lib/cjs/formula/InfixToPostfixConverter.js +3 -3
  191. package/lib/cjs/formula/InfixToPostfixConverter.js.map +1 -1
  192. package/lib/cjs/formula/InputStream.js +3 -2
  193. package/lib/cjs/formula/InputStream.js.map +1 -1
  194. package/lib/cjs/formula/ParenthesisValidator.js +3 -3
  195. package/lib/cjs/formula/ParenthesisValidator.js.map +1 -1
  196. package/lib/cjs/formula/Queue.js +1 -0
  197. package/lib/cjs/formula/Queue.js.map +1 -1
  198. package/lib/cjs/formula/Stack.js +2 -3
  199. package/lib/cjs/formula/Stack.js.map +1 -1
  200. package/lib/cjs/formula/StringBuilder.js +1 -0
  201. package/lib/cjs/formula/StringBuilder.js.map +1 -1
  202. package/lib/cjs/formula/Types.d.ts +4 -4
  203. package/lib/cjs/formula/Utils.js +6 -7
  204. package/lib/cjs/formula/Utils.js.map +1 -1
  205. package/lib/cjs/test/CalculatedPropertyActionWithVisuals.test.d.ts +2 -0
  206. package/lib/cjs/test/CalculatedPropertyActionWithVisuals.test.js +137 -0
  207. package/lib/cjs/test/CalculatedPropertyActionWithVisuals.test.js.map +1 -0
  208. package/lib/cjs/test/GroupingMappingCustomUI.test.d.ts +1 -1
  209. package/lib/cjs/test/GroupingMappingCustomUI.test.js +37 -28
  210. package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
  211. package/lib/cjs/test/MockFactory.d.ts +1 -1
  212. package/lib/cjs/test/MockFactory.js.map +1 -1
  213. package/lib/cjs/test/PropertyFieldsHelpers.d.ts +22 -20
  214. package/lib/cjs/test/QueryBuilder.test.js.map +1 -1
  215. package/lib/cjs/test/WidgetHeader.test.d.ts +1 -1
  216. package/lib/cjs/test/WidgetHeader.test.js +2 -2
  217. package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
  218. package/lib/cjs/test/setup.d.ts +1 -1
  219. package/lib/cjs/test/setup.js +1 -0
  220. package/lib/cjs/test/setup.js.map +1 -1
  221. package/lib/cjs/test/test-utils.d.ts +3 -3
  222. package/lib/cjs/test/test-utils.js +12 -6
  223. package/lib/cjs/test/test-utils.js.map +1 -1
  224. package/lib/esm/GroupingMappingWidget.js +15 -28
  225. package/lib/esm/GroupingMappingWidget.js.map +1 -1
  226. package/lib/esm/WidgetShell/GroupingMapping.d.ts +1 -2
  227. package/lib/esm/WidgetShell/GroupingMappingContent.d.ts +2 -3
  228. package/lib/esm/WidgetShell/GroupingMappingContent.js.map +1 -1
  229. package/lib/esm/WidgetShell/GroupingMappingHeader.d.ts +0 -1
  230. package/lib/esm/WidgetShell/GroupingMappingWidget.js +2 -1
  231. package/lib/esm/WidgetShell/GroupingMappingWidget.js.map +1 -1
  232. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.d.ts +2 -3
  233. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  234. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.d.ts +0 -1
  235. package/lib/esm/common/hooks/useIsMounted.d.ts +0 -1
  236. package/lib/esm/common/hooks/useMemoizedCollectionPick.js.map +1 -1
  237. package/lib/esm/common/utils.d.ts +1 -1
  238. package/lib/esm/common/utils.js +8 -19
  239. package/lib/esm/common/utils.js.map +1 -1
  240. package/lib/esm/common/viewerUtils.js.map +1 -1
  241. package/lib/esm/components/GroupingMappingContext.js.map +1 -1
  242. package/lib/esm/components/Groups/Editing/GroupAction.d.ts +0 -1
  243. package/lib/esm/components/Groups/Editing/GroupAction.js +9 -5
  244. package/lib/esm/components/Groups/Editing/GroupAction.js.map +1 -1
  245. package/lib/esm/components/Groups/Editing/GroupDetails.d.ts +0 -1
  246. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.d.ts +0 -1
  247. package/lib/esm/components/Groups/Editing/GroupDetailsStep.d.ts +0 -1
  248. package/lib/esm/components/Groups/GroupColorLegend.d.ts +0 -1
  249. package/lib/esm/components/Groups/GroupListItem.d.ts +0 -1
  250. package/lib/esm/components/Groups/GroupListItem.js.map +1 -1
  251. package/lib/esm/components/Groups/GroupMenuActions.d.ts +0 -1
  252. package/lib/esm/components/Groups/GroupMenuActions.js.map +1 -1
  253. package/lib/esm/components/Groups/GroupOverlapProgressBar.d.ts +0 -1
  254. package/lib/esm/components/Groups/Groups.js.map +1 -1
  255. package/lib/esm/components/Groups/GroupsAddButton.d.ts +0 -1
  256. package/lib/esm/components/Groups/GroupsShowHideButtons.d.ts +0 -1
  257. package/lib/esm/components/Groups/GroupsShowHideButtons.js.map +1 -1
  258. package/lib/esm/components/Groups/GroupsView.d.ts +1 -1
  259. package/lib/esm/components/Groups/GroupsVisualization.d.ts +0 -1
  260. package/lib/esm/components/Groups/GroupsVisualization.js.map +1 -1
  261. package/lib/esm/components/Groups/GroupsVisualizationActions.d.ts +0 -1
  262. package/lib/esm/components/Groups/GroupsVisualizationActions.js.map +1 -1
  263. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.d.ts +0 -1
  264. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js +1 -2
  265. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
  266. package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js +36 -33
  267. package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js.map +1 -1
  268. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderActionPanel.d.ts +0 -1
  269. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +0 -1
  270. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
  271. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderStep.d.ts +0 -1
  272. package/lib/esm/components/Groups/ToggleGroupVisibility.d.ts +0 -1
  273. package/lib/esm/components/Groups/groupsHelpers.d.ts +1 -1
  274. package/lib/esm/components/Groups/groupsHelpers.js.map +1 -1
  275. package/lib/esm/components/Groups/hooks/useGroupsOperations.d.ts +0 -1
  276. package/lib/esm/components/Groups/hooks/useGroupsOperations.js.map +1 -1
  277. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.js +1 -2
  278. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
  279. package/lib/esm/components/Groups/hooks/useVisualization.d.ts +0 -1
  280. package/lib/esm/components/Groups/hooks/useVisualization.js.map +1 -1
  281. package/lib/esm/components/Mappings/BlockingOverlay.d.ts +0 -1
  282. package/lib/esm/components/Mappings/Editing/MappingAction.d.ts +0 -1
  283. package/lib/esm/components/Mappings/Editing/MappingAction.js.map +1 -1
  284. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
  285. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.d.ts +0 -1
  286. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js +8 -0
  287. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  288. package/lib/esm/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.d.ts +0 -1
  289. package/lib/esm/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.d.ts +0 -1
  290. package/lib/esm/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.d.ts +0 -1
  291. package/lib/esm/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.d.ts +0 -1
  292. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.d.ts +0 -1
  293. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
  294. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.d.ts +1 -2
  295. package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
  296. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.d.ts +0 -1
  297. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js +1 -2
  298. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  299. package/lib/esm/components/Mappings/Import/SelectIModel.d.ts +0 -1
  300. package/lib/esm/components/Mappings/Import/SelectIModel.js.map +1 -1
  301. package/lib/esm/components/Mappings/Import/SelectITwin.d.ts +0 -1
  302. package/lib/esm/components/Mappings/Import/SelectITwin.js.map +1 -1
  303. package/lib/esm/components/Mappings/Import/SelectMappings.d.ts +0 -1
  304. package/lib/esm/components/Mappings/MappingListItem.d.ts +0 -1
  305. package/lib/esm/components/Mappings/MappingListItem.js +1 -2
  306. package/lib/esm/components/Mappings/MappingListItem.js.map +1 -1
  307. package/lib/esm/components/Mappings/MappingViewActionGroup.d.ts +0 -1
  308. package/lib/esm/components/Mappings/Mappings.d.ts +1 -2
  309. package/lib/esm/components/Mappings/MappingsView.js +1 -1
  310. package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
  311. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
  312. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -2
  313. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js +1 -1
  314. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
  315. package/lib/esm/components/Mappings/hooks/useMappingsOperations.d.ts +0 -1
  316. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  317. package/lib/esm/components/Mappings/hooks/useRunExtraction.d.ts +0 -1
  318. package/lib/esm/components/Mappings/hooks/useRunExtraction.js.map +1 -1
  319. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +2 -3
  320. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +1 -1
  321. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  322. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +0 -1
  323. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +17 -4
  324. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  325. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.d.ts +0 -1
  326. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  327. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +0 -1
  328. package/lib/esm/components/Properties/GroupColorToggle.d.ts +1 -2
  329. package/lib/esm/components/Properties/GroupColorToggle.js.map +1 -1
  330. package/lib/esm/components/Properties/GroupInformationPanel.d.ts +0 -1
  331. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.d.ts +0 -1
  332. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  333. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.d.ts +0 -1
  334. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.d.ts +0 -1
  335. package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
  336. package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.d.ts +0 -1
  337. package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +2 -4
  338. package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
  339. package/lib/esm/components/Properties/GroupProperties/SaveModal.d.ts +0 -1
  340. package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.d.ts +0 -1
  341. package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
  342. package/lib/esm/components/Properties/PropertyAction.d.ts +0 -1
  343. package/lib/esm/components/Properties/PropertyAction.js +7 -3
  344. package/lib/esm/components/Properties/PropertyAction.js.map +1 -1
  345. package/lib/esm/components/Properties/PropertyMenu.d.ts +0 -1
  346. package/lib/esm/components/Properties/PropertyMenuWithVisualization.d.ts +0 -1
  347. package/lib/esm/components/Properties/PropertyNameCell.d.ts +0 -1
  348. package/lib/esm/components/Properties/PropertyTable.d.ts +0 -1
  349. package/lib/esm/components/Properties/PropertyTableToolbar.d.ts +0 -1
  350. package/lib/esm/components/Properties/ScrollableExpandableBlock.js.map +1 -1
  351. package/lib/esm/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  352. package/lib/esm/components/Properties/hooks/useForwardRef.js.map +1 -1
  353. package/lib/esm/components/Properties/hooks/useValidator.js.map +1 -1
  354. package/lib/esm/components/SharedComponents/ActionPanel.d.ts +0 -1
  355. package/lib/esm/components/SharedComponents/DeleteModal.d.ts +0 -1
  356. package/lib/esm/components/SharedComponents/EmptyMessage.d.ts +0 -1
  357. package/lib/esm/components/SharedComponents/LoadingOverlay.d.ts +0 -1
  358. package/lib/esm/components/SharedComponents/LoadingSpinner.d.ts +0 -1
  359. package/lib/esm/components/SharedComponents/StatusIcon.d.ts +1 -1
  360. package/lib/esm/components/context/ExtractionClientContext.d.ts +0 -1
  361. package/lib/esm/components/context/ExtractionClientContext.js.map +1 -1
  362. package/lib/esm/components/context/ExtractionStateJobContext.js.map +1 -1
  363. package/lib/esm/components/context/GroupHilitedElementsContext.js.map +1 -1
  364. package/lib/esm/components/context/GroupingApiConfigContext.d.ts +2 -2
  365. package/lib/esm/components/context/GroupingApiConfigContext.js.map +1 -1
  366. package/lib/esm/components/context/GroupingMappingCustomUIContext.d.ts +0 -1
  367. package/lib/esm/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  368. package/lib/esm/components/context/GroupsClientContext.d.ts +0 -1
  369. package/lib/esm/components/context/GroupsClientContext.js.map +1 -1
  370. package/lib/esm/components/context/IModelsClientContext.d.ts +0 -1
  371. package/lib/esm/components/context/IModelsClientContext.js.map +1 -1
  372. package/lib/esm/components/context/ITwinsClientContext.d.ts +0 -1
  373. package/lib/esm/components/context/ITwinsClientContext.js.map +1 -1
  374. package/lib/esm/components/context/MappingClientContext.d.ts +0 -1
  375. package/lib/esm/components/context/MappingClientContext.js.map +1 -1
  376. package/lib/esm/components/context/PropertiesClientContext.d.ts +0 -1
  377. package/lib/esm/components/context/PropertiesClientContext.js.map +1 -1
  378. package/lib/esm/components/context/PropertiesGroupColorContext.js.map +1 -1
  379. package/lib/esm/components/context/PropertyGridWrapperContext.d.ts +1 -0
  380. package/lib/esm/components/context/PropertyGridWrapperContext.js.map +1 -1
  381. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.d.ts +0 -1
  382. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js +2 -1
  383. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  384. package/lib/esm/components/customUI/GroupingMappingCustomUI.d.ts +1 -1
  385. package/lib/esm/components/customUI/ManualGroupingCustomUI.d.ts +0 -1
  386. package/lib/esm/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  387. package/lib/esm/components/customUI/SearchGroupingCustomUI.d.ts +0 -1
  388. package/lib/esm/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  389. package/lib/esm/decorators/BboxDimensionsDecorator.d.ts +2 -0
  390. package/lib/esm/decorators/BboxDimensionsDecorator.js +79 -28
  391. package/lib/esm/decorators/BboxDimensionsDecorator.js.map +1 -1
  392. package/lib/esm/formula/FormulaDataTypeResolver.js.map +1 -1
  393. package/lib/esm/formula/FormulaFunctionProvider.js.map +1 -1
  394. package/lib/esm/formula/FormulaOperatorsProvider.js.map +1 -1
  395. package/lib/esm/formula/FormulaSplitter.js.map +1 -1
  396. package/lib/esm/formula/FormulaTokensDataTypeResolver.js.map +1 -1
  397. package/lib/esm/formula/InfixToPostfixConverter.js.map +1 -1
  398. package/lib/esm/formula/InputStream.js +3 -2
  399. package/lib/esm/formula/InputStream.js.map +1 -1
  400. package/lib/esm/formula/ParenthesisValidator.js.map +1 -1
  401. package/lib/esm/formula/Queue.js +1 -0
  402. package/lib/esm/formula/Queue.js.map +1 -1
  403. package/lib/esm/formula/Stack.js +2 -3
  404. package/lib/esm/formula/Stack.js.map +1 -1
  405. package/lib/esm/formula/StringBuilder.js +1 -0
  406. package/lib/esm/formula/StringBuilder.js.map +1 -1
  407. package/lib/esm/formula/Types.d.ts +4 -4
  408. package/lib/esm/test/CalculatedPropertyActionWithVisuals.test.d.ts +2 -0
  409. package/lib/esm/test/CalculatedPropertyActionWithVisuals.test.js +132 -0
  410. package/lib/esm/test/CalculatedPropertyActionWithVisuals.test.js.map +1 -0
  411. package/lib/esm/test/GroupingMappingCustomUI.test.d.ts +1 -1
  412. package/lib/esm/test/GroupingMappingCustomUI.test.js +37 -28
  413. package/lib/esm/test/GroupingMappingCustomUI.test.js.map +1 -1
  414. package/lib/esm/test/MockFactory.d.ts +1 -1
  415. package/lib/esm/test/MockFactory.js.map +1 -1
  416. package/lib/esm/test/PropertyFieldsHelpers.d.ts +22 -20
  417. package/lib/esm/test/QueryBuilder.test.js.map +1 -1
  418. package/lib/esm/test/WidgetHeader.test.d.ts +1 -1
  419. package/lib/esm/test/WidgetHeader.test.js +2 -2
  420. package/lib/esm/test/WidgetHeader.test.js.map +1 -1
  421. package/lib/esm/test/setup.d.ts +1 -1
  422. package/lib/esm/test/setup.js +1 -0
  423. package/lib/esm/test/setup.js.map +1 -1
  424. package/lib/esm/test/test-utils.d.ts +3 -3
  425. package/lib/esm/test/test-utils.js +3 -2
  426. package/lib/esm/test/test-utils.js.map +1 -1
  427. package/package.json +43 -66
@@ -1 +1 @@
1
- {"version":3,"file":"FormulaTokensDataTypeResolver.js","sourceRoot":"","sources":["../../../src/formula/FormulaTokensDataTypeResolver.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { getFormulaFunctionReturnType, getFunction } from \"./FormulaFunctionProvider\";\nimport { getOperatorArgumentCountBounds, getOperatorReturnType, isOperator } from \"./FormulaOperatorsProvider\";\nimport type { Token } from \"./InfixToPostfixConverter\";\nimport { TokenType } from \"./InfixToPostfixConverter\";\nimport type { IResult } from \"./IResult\";\nimport type { Queue } from \"./Queue\";\nimport { Stack } from \"./Stack\";\nimport type { DataType, PossibleDataType, PropertyMap } from \"./Types\";\n\nfunction isNumericalConstant(name: string): boolean {\n return [\"e\", \"ln2\", \"ln10\", \"log2e\", \"log10e\", \"pi\", \"sqrt1_2\", \"sqrt2\"].includes(name.toLowerCase());\n}\n\nexport function resolveTokensDataType(formulaName: string, tokens: Queue<Token>, properties: PropertyMap): IResult<DataType> {\n if (tokens.length === 0) return { errorMessage: \"Formula cannot be empty.\" };\n\n const argStack = new Stack<PossibleDataType>();\n\n while (tokens.length > 0) {\n const token = tokens.dequeue()!;\n\n switch (token.type) {\n case TokenType.Number:\n argStack.push(\"Double\");\n break;\n case TokenType.String:\n argStack.push(\"String\");\n break;\n case TokenType.Boolean:\n argStack.push(\"Boolean\");\n break;\n case TokenType.Null:\n argStack.push(\"Undefined\");\n break;\n case TokenType.Variable:\n const isConstant = isNumericalConstant(token.value);\n if (isConstant) {\n argStack.push(\"Double\");\n } else {\n if (token.value === formulaName) return { errorMessage: \"Formula cannot reference itself.\" };\n\n const prop = properties[token.value];\n if (!prop) return { errorMessage: `Variable \"${token.value}\" is not available.` };\n\n argStack.push(prop);\n }\n break;\n case TokenType.Operator:\n if (!isOperator(token.value)) return { errorMessage: `Operator \"${token.value}\" is not supported.` };\n\n const operatorBounds = getOperatorArgumentCountBounds(token.value);\n if (!operatorBounds) return { errorMessage: `Operator \"${token.value}\" is not supported.` };\n\n if (operatorBounds[0] === 2 && token.argCount === 1) return { errorMessage: `Unary operator \"${token.value}\" is not supported.` };\n\n if (argStack.length < token.argCount) {\n return { errorMessage: `Too few arguments given for ${token.argCount === 1 ? \"unary\" : \"binary\"} operator \"${token.value}\".` };\n }\n const opArgs = argStack.popN(token.argCount).reverse();\n let operationResult;\n if (opArgs.length === 1) operationResult = getOperatorReturnType(token.value, opArgs[0]);\n else if (opArgs.length === 2) operationResult = getOperatorReturnType(token.value, opArgs[0], opArgs[1]);\n else return { errorMessage: `Operator \"${token.value}\" does not support ${token.argCount} operands.` };\n\n if (operationResult.errorMessage) return { errorMessage: operationResult.errorMessage };\n else argStack.push(operationResult.value!);\n\n break;\n case TokenType.Function:\n const fnArg = getFunction(token.value);\n if (!fnArg) return { errorMessage: `Function \"${token.value}\" is not supported.` };\n\n const fnArgBounds = fnArg.argumentCountBounds;\n if (fnArgBounds[0] === 0 && fnArgBounds[1] === 0 && token.argCount > 0) {\n return { errorMessage: `Function \"${token.value}\" does not accept any arguments.` };\n } else if (fnArgBounds[1] === -1 && token.argCount < fnArgBounds[0]) {\n if (fnArgBounds[0] === 1) {\n return { errorMessage: `Function \"${token.value}\" requires at least 1 argument.` };\n } else {\n if (token.argCount === 1) {\n return { errorMessage: `Function \"${token.value}\" requires at least ${fnArgBounds[0]} arguments, but only 1 argument was given.` };\n } else {\n return {\n errorMessage: `Function \"${token.value}\" requires at least ${fnArgBounds[0]} arguments, but only ${token.argCount} arguments were given.`,\n };\n }\n }\n } else if (fnArgBounds[0] === fnArgBounds[1] && token.argCount !== fnArgBounds[0]) {\n if (fnArgBounds[0] === 1) {\n return { errorMessage: `Function \"${token.value}\" requires exactly 1 argument, but ${token.argCount} arguments were given.` };\n } else {\n if (token.argCount === 1) {\n return { errorMessage: `Function \"${token.value}\" requires exactly ${fnArgBounds[0]} arguments, but 1 argument was given.` };\n } else {\n return { errorMessage: `Function \"${token.value}\" requires exactly ${fnArgBounds[0]} arguments, but ${token.argCount} arguments were given.` };\n }\n }\n }\n\n const fArgs = argStack.popN(token.argCount).reverse();\n if (fArgs.length < token.argCount) {\n return { errorMessage: `Too few arguments given for function \"${token.value}\".` };\n }\n\n const functionResult = getFormulaFunctionReturnType(fnArg, fArgs);\n if (functionResult.errorMessage) return { errorMessage: `Function \"${token.value}\" is invalid. ${functionResult.errorMessage}` };\n else argStack.push(functionResult.value!);\n\n break;\n }\n }\n\n if (argStack.length !== 1) {\n return { errorMessage: \"Formula is invalid.\" };\n }\n\n const resultType = argStack.pop();\n if (!resultType || resultType === \"Undefined\") {\n return { errorMessage: \"Formula cannot always return null.\" };\n }\n\n return { value: resultType };\n}\n"]}
1
+ {"version":3,"file":"FormulaTokensDataTypeResolver.js","sourceRoot":"","sources":["../../../src/formula/FormulaTokensDataTypeResolver.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { getFormulaFunctionReturnType, getFunction } from \"./FormulaFunctionProvider\";\nimport { getOperatorArgumentCountBounds, getOperatorReturnType, isOperator } from \"./FormulaOperatorsProvider\";\nimport type { Token } from \"./InfixToPostfixConverter\";\nimport { TokenType } from \"./InfixToPostfixConverter\";\nimport type { IResult } from \"./IResult\";\nimport type { Queue } from \"./Queue\";\nimport { Stack } from \"./Stack\";\nimport type { DataType, PossibleDataType, PropertyMap } from \"./Types\";\n\nfunction isNumericalConstant(name: string): boolean {\n return [\"e\", \"ln2\", \"ln10\", \"log2e\", \"log10e\", \"pi\", \"sqrt1_2\", \"sqrt2\"].includes(name.toLowerCase());\n}\n\nexport function resolveTokensDataType(formulaName: string, tokens: Queue<Token>, properties: PropertyMap): IResult<DataType> {\n if (tokens.length === 0) return { errorMessage: \"Formula cannot be empty.\" };\n\n const argStack = new Stack<PossibleDataType>();\n\n while (tokens.length > 0) {\n const token = tokens.dequeue()!;\n\n switch (token.type) {\n case TokenType.Number:\n argStack.push(\"Double\");\n break;\n case TokenType.String:\n argStack.push(\"String\");\n break;\n case TokenType.Boolean:\n argStack.push(\"Boolean\");\n break;\n case TokenType.Null:\n argStack.push(\"Undefined\");\n break;\n case TokenType.Variable:\n const isConstant = isNumericalConstant(token.value);\n if (isConstant) {\n argStack.push(\"Double\");\n } else {\n if (token.value === formulaName) return { errorMessage: \"Formula cannot reference itself.\" };\n\n const prop = properties[token.value];\n if (!prop) return { errorMessage: `Variable \"${token.value}\" is not available.` };\n\n argStack.push(prop);\n }\n break;\n case TokenType.Operator:\n if (!isOperator(token.value)) return { errorMessage: `Operator \"${token.value}\" is not supported.` };\n\n const operatorBounds = getOperatorArgumentCountBounds(token.value);\n if (!operatorBounds) return { errorMessage: `Operator \"${token.value}\" is not supported.` };\n\n if (operatorBounds[0] === 2 && token.argCount === 1) return { errorMessage: `Unary operator \"${token.value}\" is not supported.` };\n\n if (argStack.length < token.argCount) {\n return { errorMessage: `Too few arguments given for ${token.argCount === 1 ? \"unary\" : \"binary\"} operator \"${token.value}\".` };\n }\n const opArgs = argStack.popN(token.argCount).reverse();\n let operationResult;\n if (opArgs.length === 1) operationResult = getOperatorReturnType(token.value, opArgs[0]);\n else if (opArgs.length === 2) operationResult = getOperatorReturnType(token.value, opArgs[0], opArgs[1]);\n else return { errorMessage: `Operator \"${token.value}\" does not support ${token.argCount} operands.` };\n\n if (operationResult.errorMessage) return { errorMessage: operationResult.errorMessage };\n else argStack.push(operationResult.value!);\n\n break;\n case TokenType.Function:\n const fnArg = getFunction(token.value);\n if (!fnArg) return { errorMessage: `Function \"${token.value}\" is not supported.` };\n\n const fnArgBounds = fnArg.argumentCountBounds;\n if (fnArgBounds[0] === 0 && fnArgBounds[1] === 0 && token.argCount > 0) {\n return { errorMessage: `Function \"${token.value}\" does not accept any arguments.` };\n } else if (fnArgBounds[1] === -1 && token.argCount < fnArgBounds[0]) {\n if (fnArgBounds[0] === 1) {\n return { errorMessage: `Function \"${token.value}\" requires at least 1 argument.` };\n } else {\n if (token.argCount === 1) {\n return { errorMessage: `Function \"${token.value}\" requires at least ${fnArgBounds[0]} arguments, but only 1 argument was given.` };\n } else {\n return {\n errorMessage: `Function \"${token.value}\" requires at least ${fnArgBounds[0]} arguments, but only ${token.argCount} arguments were given.`,\n };\n }\n }\n } else if (fnArgBounds[0] === fnArgBounds[1] && token.argCount !== fnArgBounds[0]) {\n if (fnArgBounds[0] === 1) {\n return { errorMessage: `Function \"${token.value}\" requires exactly 1 argument, but ${token.argCount} arguments were given.` };\n } else {\n if (token.argCount === 1) {\n return { errorMessage: `Function \"${token.value}\" requires exactly ${fnArgBounds[0]} arguments, but 1 argument was given.` };\n } else {\n return { errorMessage: `Function \"${token.value}\" requires exactly ${fnArgBounds[0]} arguments, but ${token.argCount} arguments were given.` };\n }\n }\n }\n\n const fArgs = argStack.popN(token.argCount).reverse();\n if (fArgs.length < token.argCount) {\n return { errorMessage: `Too few arguments given for function \"${token.value}\".` };\n }\n\n const functionResult = getFormulaFunctionReturnType(fnArg, fArgs);\n if (functionResult.errorMessage) return { errorMessage: `Function \"${token.value}\" is invalid. ${functionResult.errorMessage}` };\n else argStack.push(functionResult.value!);\n\n break;\n }\n }\n\n if (argStack.length !== 1) {\n return { errorMessage: \"Formula is invalid.\" };\n }\n\n const resultType = argStack.pop();\n if (!resultType || resultType === \"Undefined\") {\n return { errorMessage: \"Formula cannot always return null.\" };\n }\n\n return { value: resultType };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"InfixToPostfixConverter.js","sourceRoot":"","sources":["../../../src/formula/InfixToPostfixConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { isFunction } from \"./FormulaFunctionProvider\";\nimport {\n getBinaryOperator,\n getOperatorAssociativity,\n getOperatorPrecedence,\n getUnaryOperator,\n isOperator,\n isSupportedOperator,\n OperatorAssociativity,\n} from \"./FormulaOperatorsProvider\";\nimport type { IResult } from \"./IResult\";\nimport { Queue } from \"./Queue\";\nimport { Stack } from \"./Stack\";\nimport { isStringDelimiter } from \"./Utils\";\n\nfunction isNumber(part: string): boolean {\n return !isNaN(Number(part)) || !isNaN(parseFloat(part));\n}\n\nfunction isStringLiteral(token: string): boolean {\n if (token.length < 2) {\n return false;\n }\n\n const firstCharacter = token[0];\n const lastCharacter = token[token.length - 1];\n return firstCharacter === lastCharacter && isStringDelimiter(firstCharacter);\n}\n\nfunction isBoolean(token: string): boolean {\n const lower = token.toLowerCase();\n return lower === \"true\" || lower === \"false\";\n}\n\nfunction isNull(token: string): boolean {\n return token.toLowerCase() === \"null\";\n}\n\nexport enum TokenType {\n Number = 0,\n Function = 1,\n Operator = 2,\n Variable = 3,\n String = 4,\n Boolean = 5,\n Null = 6,\n}\n\nenum InternalTokenType {\n Number = 0,\n Function = 1,\n Operator = 2,\n Variable = 3,\n OpeningParenthesis = 4,\n ClosingParenthesis = 5,\n ArgumentSeparator = 6,\n String = 7,\n Boolean = 8,\n Null = 9,\n}\n\nexport interface Token {\n value: string;\n type: TokenType;\n argCount: number;\n}\n\ninterface InternalToken {\n value: string;\n type: InternalTokenType;\n argCount: number;\n argCountIncremented: boolean;\n}\n\nfunction getExternalQueue(internal: Queue<InternalToken>): IResult<Queue<Token>> {\n const external = new Queue<Token>();\n while (internal.length > 0) {\n const t = internal.dequeue()!;\n\n switch (t.type) {\n case InternalTokenType.Number:\n external.enqueue({ value: t.value, type: TokenType.Number, argCount: t.argCount });\n break;\n case InternalTokenType.Function:\n external.enqueue({ value: t.value, type: TokenType.Function, argCount: t.argCount });\n break;\n case InternalTokenType.Operator:\n external.enqueue({ value: t.value, type: TokenType.Operator, argCount: t.argCount });\n break;\n case InternalTokenType.Variable:\n external.enqueue({ value: t.value, type: TokenType.Variable, argCount: t.argCount });\n break;\n case InternalTokenType.String:\n external.enqueue({ value: t.value, type: TokenType.String, argCount: t.argCount });\n break;\n case InternalTokenType.Boolean:\n external.enqueue({ value: t.value, type: TokenType.Boolean, argCount: t.argCount });\n break;\n case InternalTokenType.Null:\n external.enqueue({ value: t.value, type: TokenType.Null, argCount: t.argCount });\n break;\n default:\n return { errorMessage: `Missing closing parenthesis \")\".` };\n }\n }\n\n return { value: external };\n}\n\ninterface IConverterContext {\n resultQueue: Queue<InternalToken>;\n operatorStack: Stack<InternalToken>;\n currentToken: string;\n currentTokenType: InternalTokenType;\n previousToken?: string;\n previousTokenType?: InternalTokenType;\n}\n\ntype TokenInterpreter = (ctx: IConverterContext) => IResult<boolean>;\n\nfunction incrementArgCount(token: InternalToken) {\n if (!token.argCountIncremented) {\n token.argCount++;\n token.argCountIncremented = true;\n }\n}\n\nfunction addOperand(ctx: IConverterContext, type: InternalTokenType) {\n ctx.resultQueue.enqueue({ value: ctx.currentToken, type, argCount: 0, argCountIncremented: false });\n\n const currentOperators = ctx.operatorStack.peekN(2);\n const op1 = currentOperators[0];\n if (undefined !== op1) {\n incrementArgCount(op1);\n if (op1.argCount === 1) {\n const op2 = currentOperators[1];\n if (undefined !== op2 && op2.argCount !== 0) {\n incrementArgCount(op2);\n }\n }\n }\n}\n\nconst addNumber: TokenInterpreter = (ctx: IConverterContext) => {\n addOperand(ctx, InternalTokenType.Number);\n return { value: true };\n};\n\nconst addVariable: TokenInterpreter = (ctx: IConverterContext) => {\n ctx = { ...ctx, currentToken: ctx.currentToken.toLowerCase() };\n if (undefined !== ctx.previousToken && isNumber(ctx.previousToken)) {\n addOperator({ ...ctx, currentToken: \"*\" });\n addOperand({ ...ctx, previousToken: \"*\" }, InternalTokenType.Variable);\n } else {\n addOperand(ctx, InternalTokenType.Variable);\n }\n return { value: true };\n};\n\nconst addFunction: TokenInterpreter = (ctx: IConverterContext) => {\n const currentOperator = ctx.operatorStack.peek();\n if (undefined !== currentOperator) {\n incrementArgCount(currentOperator);\n }\n\n ctx.operatorStack.push({ value: ctx.currentToken, type: InternalTokenType.Function, argCount: 0, argCountIncremented: false });\n return { value: true };\n};\n\nconst addOperator: TokenInterpreter = (ctx: IConverterContext) => {\n if (!isSupportedOperator(ctx.currentToken)) {\n return { errorMessage: `Operator \"${ctx.currentToken}\" is not supported.` };\n }\n\n const binary = undefined !== ctx.previousToken && \"(\" !== ctx.previousToken && \",\" !== ctx.previousToken && !isOperator(ctx.previousToken);\n const unary = !binary;\n\n const op = unary ? getUnaryOperator(ctx.currentToken) : getBinaryOperator(ctx.currentToken);\n if (unary && undefined === op) {\n return { errorMessage: `Unary \"${ctx.currentToken}\" is not supported.` };\n }\n\n const o1 = ctx.currentToken;\n const o1Associativity = getOperatorAssociativity(op);\n const o1Precedence = getOperatorPrecedence(op);\n while (ctx.operatorStack.length > 0) {\n const o2 = ctx.operatorStack.peek()!;\n\n if (o2.value === \"(\") {\n break;\n }\n\n const o2Unary = o2.argCount === 0 || (o2.argCount === 1 && o2.argCountIncremented === true);\n const op2 = o2Unary ? getUnaryOperator(o2.value) : getBinaryOperator(o2.value);\n const o2Precedence = getOperatorPrecedence(op2);\n if (!(o2Precedence > o1Precedence || (o2Precedence === o1Precedence && o1Associativity === OperatorAssociativity.Left))) {\n break;\n }\n\n ctx.resultQueue.enqueue(ctx.operatorStack.pop()!);\n\n const currentOperator = ctx.operatorStack.peek();\n if (undefined !== currentOperator) {\n incrementArgCount(currentOperator);\n }\n }\n\n ctx.operatorStack.push({\n value: o1,\n type: InternalTokenType.Operator,\n argCount: binary ? 1 : 0,\n argCountIncremented: false,\n });\n\n return { value: true };\n};\n\nconst openParenthesis: TokenInterpreter = (ctx: IConverterContext) => {\n if (undefined !== ctx.previousToken) {\n if (InternalTokenType.Number === ctx.previousTokenType || InternalTokenType.ClosingParenthesis === ctx.previousTokenType) {\n addOperator({ ...ctx, currentToken: \"*\" });\n } else if (InternalTokenType.Variable === ctx.previousTokenType) {\n return { errorMessage: `Function \"${ctx.previousToken}\" is not supported.` };\n }\n }\n\n const currentOperator = ctx.operatorStack.peek();\n if (undefined !== currentOperator && currentOperator.type !== InternalTokenType.Function) {\n incrementArgCount(currentOperator);\n }\n\n ctx.operatorStack.push({ value: \"(\", type: InternalTokenType.OpeningParenthesis, argCount: 0, argCountIncremented: false });\n return { value: true };\n};\n\nconst closeParenthesis: TokenInterpreter = (ctx: IConverterContext) => {\n while (ctx.operatorStack.length > 0 && ctx.operatorStack.peek()!.value !== \"(\") {\n ctx.resultQueue.enqueue(ctx.operatorStack.pop()!);\n }\n\n const leftParenthesis = ctx.operatorStack.pop();\n if (undefined === leftParenthesis) {\n return { errorMessage: `Closing parenthesis \")\" found, but the opening parenthesis \"(\" is missing.` };\n }\n\n const potentialFnToken = ctx.operatorStack.peek();\n if (undefined !== potentialFnToken && isFunction(potentialFnToken.value)) {\n potentialFnToken.argCount = leftParenthesis.argCount;\n ctx.resultQueue.enqueue(ctx.operatorStack.pop()!);\n }\n\n return { value: true };\n};\n\nconst addString: TokenInterpreter = (ctx: IConverterContext) => {\n const withoutDelimiters = ctx.currentToken.substring(1, ctx.currentToken.length - 1);\n addOperand({ ...ctx, currentToken: withoutDelimiters }, InternalTokenType.String);\n return { value: true };\n};\n\nconst addBoolean: TokenInterpreter = (ctx: IConverterContext) => {\n addOperand({ ...ctx, currentToken: ctx.currentToken.toLowerCase() }, InternalTokenType.Boolean);\n return { value: true };\n};\n\nconst addNull: TokenInterpreter = (ctx: IConverterContext) => {\n addOperand({ ...ctx, currentToken: ctx.currentToken.toLowerCase() }, InternalTokenType.Null);\n return { value: true };\n};\n\nconst separateFunctionArgumentSeparator: TokenInterpreter = (ctx: IConverterContext) => {\n while (ctx.operatorStack.length > 0 && ctx.operatorStack.peek()!.value !== \"(\") {\n ctx.resultQueue.enqueue(ctx.operatorStack.pop()!);\n\n const currentOperator = ctx.operatorStack.peek();\n if (undefined !== currentOperator) {\n incrementArgCount(currentOperator);\n }\n }\n\n const last2Operators = ctx.operatorStack.peekN(2);\n if (last2Operators.length < 2 || last2Operators[0].type !== InternalTokenType.OpeningParenthesis || last2Operators[1].type !== InternalTokenType.Function) {\n return { errorMessage: `Function argument separator \",\" found outside of a function call.` };\n }\n\n last2Operators[0].argCountIncremented = false;\n return { value: true };\n};\n\nfunction getTokenType(token: string, nextToken: string | undefined): InternalTokenType {\n if (isNumber(token)) {\n return InternalTokenType.Number;\n } else if (isStringLiteral(token)) {\n return InternalTokenType.String;\n } else if (isBoolean(token)) {\n return InternalTokenType.Boolean;\n } else if (isNull(token)) {\n return InternalTokenType.Null;\n } else if (isFunction(token) && \"(\" === nextToken) {\n return InternalTokenType.Function;\n } else if (isOperator(token)) {\n return InternalTokenType.Operator;\n } else if (\"(\" === token) {\n return InternalTokenType.OpeningParenthesis;\n } else if (\")\" === token) {\n return InternalTokenType.ClosingParenthesis;\n } else if (\",\" === token) {\n return InternalTokenType.ArgumentSeparator;\n } else {\n return InternalTokenType.Variable;\n }\n}\n\nconst tokenInterpreters: Map<InternalTokenType, TokenInterpreter> = new Map([\n [InternalTokenType.Number, addNumber],\n [InternalTokenType.ArgumentSeparator, separateFunctionArgumentSeparator],\n [InternalTokenType.ClosingParenthesis, closeParenthesis],\n [InternalTokenType.Function, addFunction],\n [InternalTokenType.OpeningParenthesis, openParenthesis],\n [InternalTokenType.Operator, addOperator],\n [InternalTokenType.Variable, addVariable],\n [InternalTokenType.String, addString],\n [InternalTokenType.Boolean, addBoolean],\n [InternalTokenType.Null, addNull],\n]);\n\nexport function convertInfixToPostfix(infix: string[]): IResult<Queue<Token>> {\n const resultQueue = new Queue<InternalToken>();\n const operatorStack = new Stack<InternalToken>();\n\n for (let index = 0; index < infix.length; index++) {\n const token = infix[index];\n\n const ctx: IConverterContext = {\n resultQueue,\n operatorStack,\n currentToken: token,\n currentTokenType: getTokenType(token, index < infix.length - 1 ? infix[index + 1] : undefined),\n previousToken: index > 0 ? infix[index - 1] : undefined,\n previousTokenType: index > 0 ? getTokenType(infix[index - 1], token) : undefined,\n };\n\n const fn = tokenInterpreters.get(ctx.currentTokenType)!;\n\n const tmpResult = fn(ctx);\n if (undefined === tmpResult.value) {\n return { errorMessage: tmpResult.errorMessage };\n }\n }\n\n while (operatorStack.length > 0) {\n resultQueue.enqueue(operatorStack.pop()!);\n\n const currentOperator = operatorStack.peek();\n if (undefined !== currentOperator) {\n incrementArgCount(currentOperator);\n }\n }\n\n return getExternalQueue(resultQueue);\n}\n"]}
1
+ {"version":3,"file":"InfixToPostfixConverter.js","sourceRoot":"","sources":["../../../src/formula/InfixToPostfixConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { isFunction } from \"./FormulaFunctionProvider\";\nimport {\n getBinaryOperator,\n getOperatorAssociativity,\n getOperatorPrecedence,\n getUnaryOperator,\n isOperator,\n isSupportedOperator,\n OperatorAssociativity,\n} from \"./FormulaOperatorsProvider\";\nimport type { IResult } from \"./IResult\";\nimport { Queue } from \"./Queue\";\nimport { Stack } from \"./Stack\";\nimport { isStringDelimiter } from \"./Utils\";\n\nfunction isNumber(part: string): boolean {\n return !isNaN(Number(part)) || !isNaN(parseFloat(part));\n}\n\nfunction isStringLiteral(token: string): boolean {\n if (token.length < 2) {\n return false;\n }\n\n const firstCharacter = token[0];\n const lastCharacter = token[token.length - 1];\n return firstCharacter === lastCharacter && isStringDelimiter(firstCharacter);\n}\n\nfunction isBoolean(token: string): boolean {\n const lower = token.toLowerCase();\n return lower === \"true\" || lower === \"false\";\n}\n\nfunction isNull(token: string): boolean {\n return token.toLowerCase() === \"null\";\n}\n\nexport enum TokenType {\n Number = 0,\n Function = 1,\n Operator = 2,\n Variable = 3,\n String = 4,\n Boolean = 5,\n Null = 6,\n}\n\nenum InternalTokenType {\n Number = 0,\n Function = 1,\n Operator = 2,\n Variable = 3,\n OpeningParenthesis = 4,\n ClosingParenthesis = 5,\n ArgumentSeparator = 6,\n String = 7,\n Boolean = 8,\n Null = 9,\n}\n\nexport interface Token {\n value: string;\n type: TokenType;\n argCount: number;\n}\n\ninterface InternalToken {\n value: string;\n type: InternalTokenType;\n argCount: number;\n argCountIncremented: boolean;\n}\n\nfunction getExternalQueue(internal: Queue<InternalToken>): IResult<Queue<Token>> {\n const external = new Queue<Token>();\n while (internal.length > 0) {\n const t = internal.dequeue()!;\n\n switch (t.type) {\n case InternalTokenType.Number:\n external.enqueue({ value: t.value, type: TokenType.Number, argCount: t.argCount });\n break;\n case InternalTokenType.Function:\n external.enqueue({ value: t.value, type: TokenType.Function, argCount: t.argCount });\n break;\n case InternalTokenType.Operator:\n external.enqueue({ value: t.value, type: TokenType.Operator, argCount: t.argCount });\n break;\n case InternalTokenType.Variable:\n external.enqueue({ value: t.value, type: TokenType.Variable, argCount: t.argCount });\n break;\n case InternalTokenType.String:\n external.enqueue({ value: t.value, type: TokenType.String, argCount: t.argCount });\n break;\n case InternalTokenType.Boolean:\n external.enqueue({ value: t.value, type: TokenType.Boolean, argCount: t.argCount });\n break;\n case InternalTokenType.Null:\n external.enqueue({ value: t.value, type: TokenType.Null, argCount: t.argCount });\n break;\n default:\n return { errorMessage: `Missing closing parenthesis \")\".` };\n }\n }\n\n return { value: external };\n}\n\ninterface IConverterContext {\n resultQueue: Queue<InternalToken>;\n operatorStack: Stack<InternalToken>;\n currentToken: string;\n currentTokenType: InternalTokenType;\n previousToken?: string;\n previousTokenType?: InternalTokenType;\n}\n\ntype TokenInterpreter = (ctx: IConverterContext) => IResult<boolean>;\n\nfunction incrementArgCount(token: InternalToken) {\n if (!token.argCountIncremented) {\n token.argCount++;\n token.argCountIncremented = true;\n }\n}\n\nfunction addOperand(ctx: IConverterContext, type: InternalTokenType) {\n ctx.resultQueue.enqueue({ value: ctx.currentToken, type, argCount: 0, argCountIncremented: false });\n\n const currentOperators = ctx.operatorStack.peekN(2);\n const op1 = currentOperators[0];\n if (undefined !== op1) {\n incrementArgCount(op1);\n if (op1.argCount === 1) {\n const op2 = currentOperators[1];\n if (undefined !== op2 && op2.argCount !== 0) {\n incrementArgCount(op2);\n }\n }\n }\n}\n\nconst addNumber: TokenInterpreter = (ctx: IConverterContext) => {\n addOperand(ctx, InternalTokenType.Number);\n return { value: true };\n};\n\nconst addVariable: TokenInterpreter = (ctx: IConverterContext) => {\n ctx = { ...ctx, currentToken: ctx.currentToken.toLowerCase() };\n if (undefined !== ctx.previousToken && isNumber(ctx.previousToken)) {\n addOperator({ ...ctx, currentToken: \"*\" });\n addOperand({ ...ctx, previousToken: \"*\" }, InternalTokenType.Variable);\n } else {\n addOperand(ctx, InternalTokenType.Variable);\n }\n return { value: true };\n};\n\nconst addFunction: TokenInterpreter = (ctx: IConverterContext) => {\n const currentOperator = ctx.operatorStack.peek();\n if (undefined !== currentOperator) {\n incrementArgCount(currentOperator);\n }\n\n ctx.operatorStack.push({ value: ctx.currentToken, type: InternalTokenType.Function, argCount: 0, argCountIncremented: false });\n return { value: true };\n};\n\nconst addOperator: TokenInterpreter = (ctx: IConverterContext) => {\n if (!isSupportedOperator(ctx.currentToken)) {\n return { errorMessage: `Operator \"${ctx.currentToken}\" is not supported.` };\n }\n\n const binary = undefined !== ctx.previousToken && \"(\" !== ctx.previousToken && \",\" !== ctx.previousToken && !isOperator(ctx.previousToken);\n const unary = !binary;\n\n const op = unary ? getUnaryOperator(ctx.currentToken) : getBinaryOperator(ctx.currentToken);\n if (unary && undefined === op) {\n return { errorMessage: `Unary \"${ctx.currentToken}\" is not supported.` };\n }\n\n const o1 = ctx.currentToken;\n const o1Associativity = getOperatorAssociativity(op);\n const o1Precedence = getOperatorPrecedence(op);\n while (ctx.operatorStack.length > 0) {\n const o2 = ctx.operatorStack.peek()!;\n\n if (o2.value === \"(\") {\n break;\n }\n\n const o2Unary = o2.argCount === 0 || (o2.argCount === 1 && o2.argCountIncremented === true);\n const op2 = o2Unary ? getUnaryOperator(o2.value) : getBinaryOperator(o2.value);\n const o2Precedence = getOperatorPrecedence(op2);\n if (!(o2Precedence > o1Precedence || (o2Precedence === o1Precedence && o1Associativity === OperatorAssociativity.Left))) {\n break;\n }\n\n ctx.resultQueue.enqueue(ctx.operatorStack.pop()!);\n\n const currentOperator = ctx.operatorStack.peek();\n if (undefined !== currentOperator) {\n incrementArgCount(currentOperator);\n }\n }\n\n ctx.operatorStack.push({\n value: o1,\n type: InternalTokenType.Operator,\n argCount: binary ? 1 : 0,\n argCountIncremented: false,\n });\n\n return { value: true };\n};\n\nconst openParenthesis: TokenInterpreter = (ctx: IConverterContext) => {\n if (undefined !== ctx.previousToken) {\n if (InternalTokenType.Number === ctx.previousTokenType || InternalTokenType.ClosingParenthesis === ctx.previousTokenType) {\n addOperator({ ...ctx, currentToken: \"*\" });\n } else if (InternalTokenType.Variable === ctx.previousTokenType) {\n return { errorMessage: `Function \"${ctx.previousToken}\" is not supported.` };\n }\n }\n\n const currentOperator = ctx.operatorStack.peek();\n if (undefined !== currentOperator && currentOperator.type !== InternalTokenType.Function) {\n incrementArgCount(currentOperator);\n }\n\n ctx.operatorStack.push({ value: \"(\", type: InternalTokenType.OpeningParenthesis, argCount: 0, argCountIncremented: false });\n return { value: true };\n};\n\nconst closeParenthesis: TokenInterpreter = (ctx: IConverterContext) => {\n while (ctx.operatorStack.length > 0 && ctx.operatorStack.peek()!.value !== \"(\") {\n ctx.resultQueue.enqueue(ctx.operatorStack.pop()!);\n }\n\n const leftParenthesis = ctx.operatorStack.pop();\n if (undefined === leftParenthesis) {\n return { errorMessage: `Closing parenthesis \")\" found, but the opening parenthesis \"(\" is missing.` };\n }\n\n const potentialFnToken = ctx.operatorStack.peek();\n if (undefined !== potentialFnToken && isFunction(potentialFnToken.value)) {\n potentialFnToken.argCount = leftParenthesis.argCount;\n ctx.resultQueue.enqueue(ctx.operatorStack.pop()!);\n }\n\n return { value: true };\n};\n\nconst addString: TokenInterpreter = (ctx: IConverterContext) => {\n const withoutDelimiters = ctx.currentToken.substring(1, ctx.currentToken.length - 1);\n addOperand({ ...ctx, currentToken: withoutDelimiters }, InternalTokenType.String);\n return { value: true };\n};\n\nconst addBoolean: TokenInterpreter = (ctx: IConverterContext) => {\n addOperand({ ...ctx, currentToken: ctx.currentToken.toLowerCase() }, InternalTokenType.Boolean);\n return { value: true };\n};\n\nconst addNull: TokenInterpreter = (ctx: IConverterContext) => {\n addOperand({ ...ctx, currentToken: ctx.currentToken.toLowerCase() }, InternalTokenType.Null);\n return { value: true };\n};\n\nconst separateFunctionArgumentSeparator: TokenInterpreter = (ctx: IConverterContext) => {\n while (ctx.operatorStack.length > 0 && ctx.operatorStack.peek()!.value !== \"(\") {\n ctx.resultQueue.enqueue(ctx.operatorStack.pop()!);\n\n const currentOperator = ctx.operatorStack.peek();\n if (undefined !== currentOperator) {\n incrementArgCount(currentOperator);\n }\n }\n\n const last2Operators = ctx.operatorStack.peekN(2);\n if (last2Operators.length < 2 || last2Operators[0].type !== InternalTokenType.OpeningParenthesis || last2Operators[1].type !== InternalTokenType.Function) {\n return { errorMessage: `Function argument separator \",\" found outside of a function call.` };\n }\n\n last2Operators[0].argCountIncremented = false;\n return { value: true };\n};\n\nfunction getTokenType(token: string, nextToken: string | undefined): InternalTokenType {\n if (isNumber(token)) {\n return InternalTokenType.Number;\n } else if (isStringLiteral(token)) {\n return InternalTokenType.String;\n } else if (isBoolean(token)) {\n return InternalTokenType.Boolean;\n } else if (isNull(token)) {\n return InternalTokenType.Null;\n } else if (isFunction(token) && \"(\" === nextToken) {\n return InternalTokenType.Function;\n } else if (isOperator(token)) {\n return InternalTokenType.Operator;\n } else if (\"(\" === token) {\n return InternalTokenType.OpeningParenthesis;\n } else if (\")\" === token) {\n return InternalTokenType.ClosingParenthesis;\n } else if (\",\" === token) {\n return InternalTokenType.ArgumentSeparator;\n } else {\n return InternalTokenType.Variable;\n }\n}\n\nconst tokenInterpreters: Map<InternalTokenType, TokenInterpreter> = new Map([\n [InternalTokenType.Number, addNumber],\n [InternalTokenType.ArgumentSeparator, separateFunctionArgumentSeparator],\n [InternalTokenType.ClosingParenthesis, closeParenthesis],\n [InternalTokenType.Function, addFunction],\n [InternalTokenType.OpeningParenthesis, openParenthesis],\n [InternalTokenType.Operator, addOperator],\n [InternalTokenType.Variable, addVariable],\n [InternalTokenType.String, addString],\n [InternalTokenType.Boolean, addBoolean],\n [InternalTokenType.Null, addNull],\n]);\n\nexport function convertInfixToPostfix(infix: string[]): IResult<Queue<Token>> {\n const resultQueue = new Queue<InternalToken>();\n const operatorStack = new Stack<InternalToken>();\n\n for (let index = 0; index < infix.length; index++) {\n const token = infix[index];\n\n const ctx: IConverterContext = {\n resultQueue,\n operatorStack,\n currentToken: token,\n currentTokenType: getTokenType(token, index < infix.length - 1 ? infix[index + 1] : undefined),\n previousToken: index > 0 ? infix[index - 1] : undefined,\n previousTokenType: index > 0 ? getTokenType(infix[index - 1], token) : undefined,\n };\n\n const fn = tokenInterpreters.get(ctx.currentTokenType)!;\n\n const tmpResult = fn(ctx);\n if (undefined === tmpResult.value) {\n return { errorMessage: tmpResult.errorMessage };\n }\n }\n\n while (operatorStack.length > 0) {\n resultQueue.enqueue(operatorStack.pop()!);\n\n const currentOperator = operatorStack.peek();\n if (undefined !== currentOperator) {\n incrementArgCount(currentOperator);\n }\n }\n\n return getExternalQueue(resultQueue);\n}\n"]}
@@ -3,10 +3,11 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  export class InputStream {
6
+ _stream;
7
+ _nextIndex = 0;
8
+ _current = "";
6
9
  constructor(_stream) {
7
10
  this._stream = _stream;
8
- this._nextIndex = 0;
9
- this._current = "";
10
11
  }
11
12
  get next() {
12
13
  this._current = this.isEOF ? "" : this._stream[this._nextIndex++];
@@ -1 +1 @@
1
- {"version":3,"file":"InputStream.js","sourceRoot":"","sources":["../../../src/formula/InputStream.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,MAAM,OAAO,WAAW;IAItB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAHpC,eAAU,GAAG,CAAC,CAAC;QACf,aAAQ,GAAG,EAAE,CAAC;IAEyB,CAAC;IAEhD,IAAW,IAAI;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,IAAI;QACb,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAE/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAChD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport class InputStream {\n private _nextIndex = 0;\n private _current = \"\";\n\n constructor(private readonly _stream: string) {}\n\n public get next(): string {\n this._current = this.isEOF ? \"\" : this._stream[this._nextIndex++];\n return this.current;\n }\n\n public get undo(): string {\n if (this._nextIndex === 0) return this.current;\n\n this._nextIndex--;\n this._current = this._nextIndex === 0 ? \"\" : this._stream[this._nextIndex - 1];\n return this.current;\n }\n\n public get current(): string {\n return this._current;\n }\n\n public get peek(): string {\n return this.isEOF ? \"\" : this._stream[this._nextIndex];\n }\n\n public get isEOF(): boolean {\n return this._nextIndex >= this._stream.length;\n }\n}\n"]}
1
+ {"version":3,"file":"InputStream.js","sourceRoot":"","sources":["../../../src/formula/InputStream.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,MAAM,OAAO,WAAW;IAIO;IAHrB,UAAU,GAAG,CAAC,CAAC;IACf,QAAQ,GAAG,EAAE,CAAC;IAEtB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEhD,IAAW,IAAI;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,IAAI;QACb,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAE/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAChD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport class InputStream {\n private _nextIndex = 0;\n private _current = \"\";\n\n constructor(private readonly _stream: string) {}\n\n public get next(): string {\n this._current = this.isEOF ? \"\" : this._stream[this._nextIndex++];\n return this.current;\n }\n\n public get undo(): string {\n if (this._nextIndex === 0) return this.current;\n\n this._nextIndex--;\n this._current = this._nextIndex === 0 ? \"\" : this._stream[this._nextIndex - 1];\n return this.current;\n }\n\n public get current(): string {\n return this._current;\n }\n\n public get peek(): string {\n return this.isEOF ? \"\" : this._stream[this._nextIndex];\n }\n\n public get isEOF(): boolean {\n return this._nextIndex >= this._stream.length;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ParenthesisValidator.js","sourceRoot":"","sources":["../../../src/formula/ParenthesisValidator.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,yDAAS,CAAA;IACT,iEAAa,CAAA;IACb,iEAAa,CAAA;AACf,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,CAAC,GAAG,IAAI,KAAK,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;QAC5B,IAAI,CAAC,KAAK,GAAG,EAAE;YACb,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACb;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE;YACpB,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE;gBAC1B,OAAO,gBAAgB,CAAC,SAAS,CAAC;aACnC;YACD,CAAC,CAAC,GAAG,EAAE,CAAC;SACT;KACF;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAClB,OAAO,gBAAgB,CAAC,SAAS,CAAC;KACnC;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC;AAChC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { Stack } from \"./Stack\";\n\nexport enum ParenthesisState {\n Valid = 0,\n NotClosed = 1,\n NotOpened = 2,\n}\n\nexport function validateParenthesis(infixFormula: string): ParenthesisState {\n const s = new Stack<string>();\n for (const c of infixFormula) {\n if (c === \"(\") {\n s.push(\"(\");\n } else if (c === \")\") {\n if (s.peek() === undefined) {\n return ParenthesisState.NotOpened;\n }\n s.pop();\n }\n }\n if (s.length !== 0) {\n return ParenthesisState.NotClosed;\n }\n return ParenthesisState.Valid;\n}\n"]}
1
+ {"version":3,"file":"ParenthesisValidator.js","sourceRoot":"","sources":["../../../src/formula/ParenthesisValidator.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,yDAAS,CAAA;IACT,iEAAa,CAAA;IACb,iEAAa,CAAA;AACf,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,CAAC,GAAG,IAAI,KAAK,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,gBAAgB,CAAC,SAAS,CAAC;YACpC,CAAC;YACD,CAAC,CAAC,GAAG,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,gBAAgB,CAAC,SAAS,CAAC;IACpC,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC;AAChC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { Stack } from \"./Stack\";\n\nexport enum ParenthesisState {\n Valid = 0,\n NotClosed = 1,\n NotOpened = 2,\n}\n\nexport function validateParenthesis(infixFormula: string): ParenthesisState {\n const s = new Stack<string>();\n for (const c of infixFormula) {\n if (c === \"(\") {\n s.push(\"(\");\n } else if (c === \")\") {\n if (s.peek() === undefined) {\n return ParenthesisState.NotOpened;\n }\n s.pop();\n }\n }\n if (s.length !== 0) {\n return ParenthesisState.NotClosed;\n }\n return ParenthesisState.Valid;\n}\n"]}
@@ -3,6 +3,7 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  export class Queue {
6
+ _dataStore;
6
7
  constructor(_dataStore = []) {
7
8
  this._dataStore = _dataStore;
8
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/formula/Queue.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,MAAM,OAAO,KAAK;IAChB,YAAoB,aAAsB,EAAE;QAAxB,eAAU,GAAV,UAAU,CAAc;IAAG,CAAC;IAEzC,OAAO,CAAC,OAAc;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAEM,QAAQ,CAAC,CAAS;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,OAAO,EAAE,CAAC;SACX;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport class Queue<TData> {\n constructor(private _dataStore: TData[] = []) {}\n\n public enqueue(element: TData): Queue<TData> {\n this._dataStore.push(element);\n return this;\n }\n\n public dequeue(): TData | undefined {\n if (this._dataStore.length === 0) {\n return undefined;\n }\n\n return this._dataStore.splice(0, 1)[0];\n }\n\n public dequeueN(n: number): TData[] {\n if (n <= 0 || this._dataStore.length === 0) {\n return [];\n }\n\n return this._dataStore.splice(0, n);\n }\n\n public peek(): TData | undefined {\n if (this._dataStore.length === 0) {\n return undefined;\n }\n return this._dataStore[0];\n }\n\n public get length(): number {\n return this._dataStore.length;\n }\n\n public get asArray(): TData[] {\n return [...this._dataStore];\n }\n}\n"]}
1
+ {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/formula/Queue.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,MAAM,OAAO,KAAK;IACI;IAApB,YAAoB,aAAsB,EAAE;QAAxB,eAAU,GAAV,UAAU,CAAc;IAAG,CAAC;IAEzC,OAAO,CAAC,OAAc;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAEM,QAAQ,CAAC,CAAS;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport class Queue<TData> {\n constructor(private _dataStore: TData[] = []) {}\n\n public enqueue(element: TData): Queue<TData> {\n this._dataStore.push(element);\n return this;\n }\n\n public dequeue(): TData | undefined {\n if (this._dataStore.length === 0) {\n return undefined;\n }\n\n return this._dataStore.splice(0, 1)[0];\n }\n\n public dequeueN(n: number): TData[] {\n if (n <= 0 || this._dataStore.length === 0) {\n return [];\n }\n\n return this._dataStore.splice(0, n);\n }\n\n public peek(): TData | undefined {\n if (this._dataStore.length === 0) {\n return undefined;\n }\n return this._dataStore[0];\n }\n\n public get length(): number {\n return this._dataStore.length;\n }\n\n public get asArray(): TData[] {\n return [...this._dataStore];\n }\n}\n"]}
@@ -3,9 +3,8 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  export class Stack {
6
- constructor() {
7
- this._dataStore = [];
8
- }
6
+ _dataStore = [];
7
+ constructor() { }
9
8
  push(element) {
10
9
  this._dataStore.push(element);
11
10
  return this;
@@ -1 +1 @@
1
- {"version":3,"file":"Stack.js","sourceRoot":"","sources":["../../../src/formula/Stack.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,MAAM,OAAO,KAAK;IAEhB;QADQ,eAAU,GAAY,EAAE,CAAC;IAClB,CAAC;IAET,IAAI,CAAC,OAAc;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,GAAG;QACR,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEM,IAAI,CAAC,CAAS;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,OAAO,EAAE,CAAC;SACX;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/B,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAC1E;aAAM;YACL,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB;IACH,CAAC;IAEM,IAAI;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,CAAS;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,OAAO,EAAE,CAAC;SACX;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAC5C;aAAM;YACL,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;SACvC;IACH,CAAC;IAEM,OAAO,CAAC,OAAc;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEM,SAAS,CAAC,MAAmC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC3D,OAAO,CAAC,CAAC;aACV;SACF;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport class Stack<TData> {\n private _dataStore: TData[] = [];\n constructor() {}\n\n public push(element: TData): Stack<TData> {\n this._dataStore.push(element);\n return this;\n }\n\n public pop(): TData | undefined {\n if (this._dataStore.length === 0) {\n return undefined;\n }\n return this._dataStore.pop();\n }\n\n public popN(n: number): TData[] {\n if (n <= 0 || this._dataStore.length === 0) {\n return [];\n }\n\n if (this._dataStore.length >= n) {\n return [...this._dataStore.splice(this._dataStore.length - n)].reverse();\n } else {\n const result = [...this._dataStore];\n this._dataStore = [];\n return result.reverse();\n }\n }\n\n public peek(): TData | undefined {\n if (this._dataStore.length === 0) {\n return undefined;\n }\n return this._dataStore[this._dataStore.length - 1];\n }\n\n public peekN(n: number): TData[] {\n if (n <= 0 || this._dataStore.length === 0) {\n return [];\n }\n\n if (this._dataStore.length >= n) {\n return this._dataStore.slice(-n).reverse();\n } else {\n return [...this._dataStore].reverse();\n }\n }\n\n public indexOf(element: TData): number {\n return this.findIndex((e) => e === element);\n }\n\n public findIndex(filter: (element: TData) => boolean): number {\n for (let i = 0; i < this._dataStore.length; i++) {\n if (filter(this._dataStore[this._dataStore.length - 1 - i])) {\n return i;\n }\n }\n return -1;\n }\n\n public get length(): number {\n return this._dataStore.length;\n }\n\n public get asArray(): TData[] {\n return [...this._dataStore].reverse();\n }\n}\n"]}
1
+ {"version":3,"file":"Stack.js","sourceRoot":"","sources":["../../../src/formula/Stack.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,MAAM,OAAO,KAAK;IACR,UAAU,GAAY,EAAE,CAAC;IACjC,gBAAe,CAAC;IAET,IAAI,CAAC,OAAc;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,GAAG;QACR,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEM,IAAI,CAAC,CAAS;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAEM,IAAI;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,CAAS;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,OAAc;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEM,SAAS,CAAC,MAAmC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport class Stack<TData> {\n private _dataStore: TData[] = [];\n constructor() {}\n\n public push(element: TData): Stack<TData> {\n this._dataStore.push(element);\n return this;\n }\n\n public pop(): TData | undefined {\n if (this._dataStore.length === 0) {\n return undefined;\n }\n return this._dataStore.pop();\n }\n\n public popN(n: number): TData[] {\n if (n <= 0 || this._dataStore.length === 0) {\n return [];\n }\n\n if (this._dataStore.length >= n) {\n return [...this._dataStore.splice(this._dataStore.length - n)].reverse();\n } else {\n const result = [...this._dataStore];\n this._dataStore = [];\n return result.reverse();\n }\n }\n\n public peek(): TData | undefined {\n if (this._dataStore.length === 0) {\n return undefined;\n }\n return this._dataStore[this._dataStore.length - 1];\n }\n\n public peekN(n: number): TData[] {\n if (n <= 0 || this._dataStore.length === 0) {\n return [];\n }\n\n if (this._dataStore.length >= n) {\n return this._dataStore.slice(-n).reverse();\n } else {\n return [...this._dataStore].reverse();\n }\n }\n\n public indexOf(element: TData): number {\n return this.findIndex((e) => e === element);\n }\n\n public findIndex(filter: (element: TData) => boolean): number {\n for (let i = 0; i < this._dataStore.length; i++) {\n if (filter(this._dataStore[this._dataStore.length - 1 - i])) {\n return i;\n }\n }\n return -1;\n }\n\n public get length(): number {\n return this._dataStore.length;\n }\n\n public get asArray(): TData[] {\n return [...this._dataStore].reverse();\n }\n}\n"]}
@@ -3,6 +3,7 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  export class StringBuilder {
6
+ _stringParts;
6
7
  constructor(...initial) {
7
8
  this._stringParts = initial.filter((v) => !!v);
8
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StringBuilder.js","sourceRoot":"","sources":["../../../src/formula/StringBuilder.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,MAAM,OAAO,aAAa;IAGxB,YAAY,GAAG,OAAiB;QAC9B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAEM,IAAI,CAAC,KAAa;QACvB,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport class StringBuilder {\n private readonly _stringParts: string[];\n\n constructor(...initial: string[]) {\n this._stringParts = initial.filter((v) => !!v);\n }\n\n public push(value: string) {\n value && this._stringParts.push(value);\n }\n\n public pop() {\n return this._stringParts.pop();\n }\n\n public get length() {\n return this._stringParts.length;\n }\n\n public get value() {\n return this._stringParts.join(\"\");\n }\n}\n"]}
1
+ {"version":3,"file":"StringBuilder.js","sourceRoot":"","sources":["../../../src/formula/StringBuilder.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,MAAM,OAAO,aAAa;IACP,YAAY,CAAW;IAExC,YAAY,GAAG,OAAiB;QAC9B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAEM,IAAI,CAAC,KAAa;QACvB,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport class StringBuilder {\n private readonly _stringParts: string[];\n\n constructor(...initial: string[]) {\n this._stringParts = initial.filter((v) => !!v);\n }\n\n public push(value: string) {\n value && this._stringParts.push(value);\n }\n\n public pop() {\n return this._stringParts.pop();\n }\n\n public get length() {\n return this._stringParts.length;\n }\n\n public get value() {\n return this._stringParts.join(\"\");\n }\n}\n"]}
@@ -1,19 +1,19 @@
1
1
  /**
2
2
  * @public
3
3
  */
4
- export declare type ValueType = number | string | boolean;
4
+ export type ValueType = number | string | boolean;
5
5
  /**
6
6
  * @public
7
7
  */
8
- export declare type PossibleValueType = ValueType | undefined;
8
+ export type PossibleValueType = ValueType | undefined;
9
9
  /**
10
10
  * @public
11
11
  */
12
- export declare type DataType = "Double" | "String" | "Boolean" | "Integer";
12
+ export type DataType = "Double" | "String" | "Boolean" | "Integer";
13
13
  /**
14
14
  * @public
15
15
  */
16
- export declare type PossibleDataType = DataType | "Undefined";
16
+ export type PossibleDataType = DataType | "Undefined";
17
17
  /**
18
18
  * @public
19
19
  */
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CalculatedPropertyActionWithVisuals.test.d.ts.map
@@ -0,0 +1,132 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import React from "react";
6
+ import { vi } from "vitest";
7
+ import { render, screen, waitFor } from "./test-utils";
8
+ import { CalculatedPropertyActionWithVisuals } from "../components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals";
9
+ const { addDecoratorMock, dropDecoratorMock, setContextMock, getInferredSpatialDataMock, clearContextMock, visualizeElementsMock, zoomToElementsMock, clearAllMock, useGroupKeySetQueryMock, } = vi.hoisted(() => ({
10
+ addDecoratorMock: vi.fn(),
11
+ dropDecoratorMock: vi.fn(),
12
+ setContextMock: vi.fn(),
13
+ getInferredSpatialDataMock: vi.fn(),
14
+ clearContextMock: vi.fn(),
15
+ visualizeElementsMock: vi.fn(),
16
+ zoomToElementsMock: vi.fn(async () => { }),
17
+ clearAllMock: vi.fn(),
18
+ useGroupKeySetQueryMock: vi.fn(),
19
+ }));
20
+ vi.mock("@itwin/core-frontend", async () => {
21
+ const actual = await vi.importActual("@itwin/core-frontend");
22
+ return {
23
+ ...actual,
24
+ IModelApp: {
25
+ viewManager: {
26
+ addDecorator: addDecoratorMock,
27
+ dropDecorator: dropDecoratorMock,
28
+ },
29
+ },
30
+ };
31
+ });
32
+ vi.mock("../components/context/GroupingApiConfigContext", async () => {
33
+ const actual = await vi.importActual("../components/context/GroupingApiConfigContext");
34
+ return {
35
+ ...actual,
36
+ useGroupingMappingApiConfig: () => ({ iModelConnection: {} }),
37
+ };
38
+ });
39
+ vi.mock("../components/Groups/hooks/useKeySetHiliteQueries", () => ({
40
+ useGroupKeySetQuery: (...args) => useGroupKeySetQueryMock(...args),
41
+ }));
42
+ vi.mock("../common/viewerUtils", () => ({
43
+ visualizeElements: (...args) => visualizeElementsMock(...args),
44
+ zoomToElements: (...args) => zoomToElementsMock(...args),
45
+ clearAll: (...args) => clearAllMock(...args),
46
+ }));
47
+ vi.mock("../decorators/BboxDimensionsDecorator", () => {
48
+ class MockBboxDimensionsDecorator {
49
+ async setContext(instanceId) {
50
+ return setContextMock(instanceId);
51
+ }
52
+ getInferredSpatialData() {
53
+ return getInferredSpatialDataMock();
54
+ }
55
+ drawContext() {
56
+ return true;
57
+ }
58
+ clearContext() {
59
+ clearContextMock();
60
+ }
61
+ }
62
+ return {
63
+ BboxDimension: {
64
+ BoundingBoxShortestEdgeLength: "Shortest Edge Length",
65
+ },
66
+ BboxDimensionsDecorator: MockBboxDimensionsDecorator,
67
+ };
68
+ });
69
+ vi.mock("../components/Properties/CalculatedProperties/SharedCalculatedPropertyForms", () => ({
70
+ SharedCalculatedPropertyForms: () => React.createElement("div", null),
71
+ }));
72
+ describe("CalculatedPropertyActionWithVisuals", () => {
73
+ const group = {
74
+ id: "group-1",
75
+ groupName: "group-1",
76
+ description: "group-1",
77
+ query: "SELECT * FROM test",
78
+ _links: {
79
+ iModel: { href: "" },
80
+ mapping: { href: "" },
81
+ },
82
+ };
83
+ beforeEach(() => {
84
+ vi.clearAllMocks();
85
+ useGroupKeySetQueryMock.mockReturnValue({
86
+ data: {
87
+ result: {
88
+ ids: ["0xnoSpatial", "0xhasSpatial", "0xshouldNotBeUsed"],
89
+ },
90
+ },
91
+ });
92
+ getInferredSpatialDataMock.mockReturnValue(new Map());
93
+ });
94
+ it("tries next highlighted ID when first one cannot create context", async () => {
95
+ setContextMock.mockResolvedValueOnce(false).mockResolvedValueOnce(true);
96
+ const { user, container } = render(React.createElement(CalculatedPropertyActionWithVisuals, { group: group, calculatedPropertyType: undefined, isLoading: false, setCalculatedPropertyType: vi.fn() }));
97
+ const toggle = screen.queryByRole("switch", { name: /properties\.visualizeDimensions/i }) ??
98
+ screen.queryByRole("checkbox", { name: /properties\.visualizeDimensions/i }) ??
99
+ container.querySelector("input[type='checkbox']");
100
+ expect(toggle).toBeTruthy();
101
+ await user.click(toggle);
102
+ await waitFor(() => {
103
+ expect(setContextMock).toHaveBeenCalledTimes(2);
104
+ });
105
+ expect(setContextMock).toHaveBeenNthCalledWith(1, "0xnoSpatial");
106
+ expect(setContextMock).toHaveBeenNthCalledWith(2, "0xhasSpatial");
107
+ expect(setContextMock).not.toHaveBeenCalledWith("0xshouldNotBeUsed");
108
+ });
109
+ it("limits context attempts to 25 highlighted IDs", async () => {
110
+ const ids = Array.from({ length: 30 }, (_unused, index) => `0x${index.toString(16)}`);
111
+ useGroupKeySetQueryMock.mockReturnValue({
112
+ data: {
113
+ result: {
114
+ ids,
115
+ },
116
+ },
117
+ });
118
+ setContextMock.mockResolvedValue(false);
119
+ const { user, container } = render(React.createElement(CalculatedPropertyActionWithVisuals, { group: group, calculatedPropertyType: undefined, isLoading: false, setCalculatedPropertyType: vi.fn() }));
120
+ const toggle = screen.queryByRole("switch", { name: /properties\.visualizeDimensions/i }) ??
121
+ screen.queryByRole("checkbox", { name: /properties\.visualizeDimensions/i }) ??
122
+ container.querySelector("input[type='checkbox']");
123
+ expect(toggle).toBeTruthy();
124
+ await user.click(toggle);
125
+ await waitFor(() => {
126
+ expect(setContextMock).toHaveBeenCalledTimes(25);
127
+ });
128
+ expect(setContextMock).toHaveBeenNthCalledWith(25, "0x18");
129
+ expect(setContextMock).not.toHaveBeenCalledWith("0x19");
130
+ });
131
+ });
132
+ //# sourceMappingURL=CalculatedPropertyActionWithVisuals.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalculatedPropertyActionWithVisuals.test.js","sourceRoot":"","sources":["../../../src/test/CalculatedPropertyActionWithVisuals.test.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { vi } from \"vitest\";\nimport type { GroupMinimal } from \"@itwin/insights-client\";\nimport { render, screen, waitFor } from \"./test-utils\";\nimport { CalculatedPropertyActionWithVisuals } from \"../components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals\";\n\nconst {\n addDecoratorMock,\n dropDecoratorMock,\n setContextMock,\n getInferredSpatialDataMock,\n clearContextMock,\n visualizeElementsMock,\n zoomToElementsMock,\n clearAllMock,\n useGroupKeySetQueryMock,\n} = vi.hoisted(() => ({\n addDecoratorMock: vi.fn(),\n dropDecoratorMock: vi.fn(),\n setContextMock: vi.fn<(instanceId: string) => Promise<boolean>>(),\n getInferredSpatialDataMock: vi.fn(),\n clearContextMock: vi.fn(),\n visualizeElementsMock: vi.fn(),\n zoomToElementsMock: vi.fn(async () => {}),\n clearAllMock: vi.fn(),\n useGroupKeySetQueryMock: vi.fn(),\n}));\n\nvi.mock(\"@itwin/core-frontend\", async () => {\n const actual = await vi.importActual<Record<string, unknown>>(\"@itwin/core-frontend\");\n return {\n ...actual,\n IModelApp: {\n viewManager: {\n addDecorator: addDecoratorMock,\n dropDecorator: dropDecoratorMock,\n },\n },\n };\n});\n\nvi.mock(\"../components/context/GroupingApiConfigContext\", async () => {\n const actual = await vi.importActual<Record<string, unknown>>(\"../components/context/GroupingApiConfigContext\");\n return {\n ...actual,\n useGroupingMappingApiConfig: () => ({ iModelConnection: {} }),\n };\n});\n\nvi.mock(\"../components/Groups/hooks/useKeySetHiliteQueries\", () => ({\n useGroupKeySetQuery: (...args: unknown[]) => useGroupKeySetQueryMock(...args),\n}));\n\nvi.mock(\"../common/viewerUtils\", () => ({\n visualizeElements: (...args: unknown[]) => visualizeElementsMock(...args),\n zoomToElements: (...args: unknown[]) => zoomToElementsMock(...args),\n clearAll: (...args: unknown[]) => clearAllMock(...args),\n}));\n\nvi.mock(\"../decorators/BboxDimensionsDecorator\", () => {\n class MockBboxDimensionsDecorator {\n public async setContext(instanceId: string): Promise<boolean> {\n return setContextMock(instanceId);\n }\n public getInferredSpatialData() {\n return getInferredSpatialDataMock();\n }\n public drawContext(): boolean {\n return true;\n }\n public clearContext(): void {\n clearContextMock();\n }\n }\n return {\n BboxDimension: {\n BoundingBoxShortestEdgeLength: \"Shortest Edge Length\",\n },\n BboxDimensionsDecorator: MockBboxDimensionsDecorator,\n };\n});\n\nvi.mock(\"../components/Properties/CalculatedProperties/SharedCalculatedPropertyForms\", () => ({\n SharedCalculatedPropertyForms: () => <div />,\n}));\n\ndescribe(\"CalculatedPropertyActionWithVisuals\", () => {\n const group: GroupMinimal = {\n id: \"group-1\",\n groupName: \"group-1\",\n description: \"group-1\",\n query: \"SELECT * FROM test\",\n _links: {\n iModel: { href: \"\" },\n mapping: { href: \"\" },\n },\n };\n\n beforeEach(() => {\n vi.clearAllMocks();\n useGroupKeySetQueryMock.mockReturnValue({\n data: {\n result: {\n ids: [\"0xnoSpatial\", \"0xhasSpatial\", \"0xshouldNotBeUsed\"],\n },\n },\n });\n getInferredSpatialDataMock.mockReturnValue(new Map());\n });\n\n it(\"tries next highlighted ID when first one cannot create context\", async () => {\n setContextMock.mockResolvedValueOnce(false).mockResolvedValueOnce(true);\n\n const { user, container } = render(\n <CalculatedPropertyActionWithVisuals\n group={group}\n calculatedPropertyType={undefined}\n isLoading={false}\n setCalculatedPropertyType={vi.fn()}\n />,\n );\n\n const toggle =\n screen.queryByRole(\"switch\", { name: /properties\\.visualizeDimensions/i }) ??\n screen.queryByRole(\"checkbox\", { name: /properties\\.visualizeDimensions/i }) ??\n container.querySelector(\"input[type='checkbox']\");\n expect(toggle).toBeTruthy();\n\n await user.click(toggle as Element);\n\n await waitFor(() => {\n expect(setContextMock).toHaveBeenCalledTimes(2);\n });\n expect(setContextMock).toHaveBeenNthCalledWith(1, \"0xnoSpatial\");\n expect(setContextMock).toHaveBeenNthCalledWith(2, \"0xhasSpatial\");\n expect(setContextMock).not.toHaveBeenCalledWith(\"0xshouldNotBeUsed\");\n });\n\n it(\"limits context attempts to 25 highlighted IDs\", async () => {\n const ids = Array.from({ length: 30 }, (_unused, index) => `0x${index.toString(16)}`);\n useGroupKeySetQueryMock.mockReturnValue({\n data: {\n result: {\n ids,\n },\n },\n });\n setContextMock.mockResolvedValue(false);\n\n const { user, container } = render(\n <CalculatedPropertyActionWithVisuals\n group={group}\n calculatedPropertyType={undefined}\n isLoading={false}\n setCalculatedPropertyType={vi.fn()}\n />,\n );\n\n const toggle =\n screen.queryByRole(\"switch\", { name: /properties\\.visualizeDimensions/i }) ??\n screen.queryByRole(\"checkbox\", { name: /properties\\.visualizeDimensions/i }) ??\n container.querySelector(\"input[type='checkbox']\");\n expect(toggle).toBeTruthy();\n await user.click(toggle as Element);\n\n await waitFor(() => {\n expect(setContextMock).toHaveBeenCalledTimes(25);\n });\n expect(setContextMock).toHaveBeenNthCalledWith(25, \"0x18\");\n expect(setContextMock).not.toHaveBeenCalledWith(\"0x19\");\n });\n});\n"]}
@@ -1,2 +1,2 @@
1
- import "@testing-library/jest-dom";
1
+ export {};
2
2
  //# sourceMappingURL=GroupingMappingCustomUI.test.d.ts.map
@@ -3,7 +3,7 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import React from "react";
6
- import "@testing-library/jest-dom";
6
+ import { vi } from "vitest";
7
7
  import { faker } from "@faker-js/faker";
8
8
  import { GroupingMappingCustomUIType, Groups } from "../grouping-mapping-widget";
9
9
  import * as moq from "typemoq";
@@ -53,34 +53,43 @@ const connectionMock = moq.Mock.ofType();
53
53
  const viewManagerMock = moq.Mock.ofType();
54
54
  const mappingClientMock = moq.Mock.ofType();
55
55
  const groupsClientMock = moq.Mock.ofType();
56
- jest.mock("@itwin/appui-react", () => ({
57
- ...jest.requireActual("@itwin/appui-react"),
58
- useActiveIModelConnection: () => connectionMock.object,
59
- }));
60
- jest.mock("@itwin/core-frontend", () => ({
61
- ...jest.requireActual("@itwin/core-frontend"),
62
- IModelApp: {
63
- viewManager: {},
64
- },
65
- }));
66
- jest.mock("../components/context/MappingClientContext", () => {
67
- const actualMappingContextModule = jest.requireActual("../components/context/MappingClientContext");
56
+ vi.mock("@itwin/appui-react", async () => {
57
+ const actual = await vi.importActual("@itwin/appui-react");
58
+ return {
59
+ ...actual,
60
+ useActiveIModelConnection: () => connectionMock.object,
61
+ };
62
+ });
63
+ vi.mock("@itwin/core-frontend", async () => {
64
+ const actual = await vi.importActual("@itwin/core-frontend");
68
65
  return {
69
- ...actualMappingContextModule,
66
+ ...actual,
67
+ IModelApp: {
68
+ viewManager: {},
69
+ },
70
+ };
71
+ });
72
+ vi.mock("../components/context/MappingClientContext", async () => {
73
+ const actual = await vi.importActual("../components/context/MappingClientContext");
74
+ return {
75
+ ...actual,
70
76
  useMappingClient: () => mappingClientMock.object,
71
77
  };
72
78
  });
73
- jest.mock("../components/context/GroupsClientContext", () => {
74
- const actualGroupsContextModule = jest.requireActual("../components/context/GroupsClientContext");
79
+ vi.mock("../components/context/GroupsClientContext", async () => {
80
+ const actual = await vi.importActual("../components/context/GroupsClientContext");
75
81
  return {
76
- ...actualGroupsContextModule,
82
+ ...actual,
77
83
  useGroupsClient: () => groupsClientMock.object,
78
84
  };
79
85
  });
80
- jest.mock("../common/utils", () => ({
81
- ...jest.requireActual("../common/utils"),
82
- enableExperimentalFeatures: jest.fn,
83
- }));
86
+ vi.mock("../common/utils", async () => {
87
+ const actual = await vi.importActual("../common/utils");
88
+ return {
89
+ ...actual,
90
+ enableExperimentalFeatures: vi.fn,
91
+ };
92
+ });
84
93
  const mockGroups = groupsFactory();
85
94
  describe("Groups View", () => {
86
95
  beforeEach(async () => {
@@ -97,7 +106,7 @@ describe("Groups View", () => {
97
106
  // Arange
98
107
  // Act
99
108
  const user = userEvent.setup();
100
- render(React.createElement(Groups, { mapping: mockMapping, onClickAddGroup: jest.fn(), onClickGroupModify: jest.fn(), onClickGroupTitle: jest.fn, onClickRenderContextCustomUI: jest.fn() }));
109
+ render(React.createElement(Groups, { mapping: mockMapping, onClickAddGroup: vi.fn(), onClickGroupModify: vi.fn(), onClickGroupTitle: vi.fn, onClickRenderContextCustomUI: vi.fn() }));
101
110
  await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
102
111
  // Assert
103
112
  // Should have the correct random mockGroups.groups count listed
@@ -128,7 +137,7 @@ describe("Groups View", () => {
128
137
  };
129
138
  const groupingMappingCustomUIMock = [mockGroupingUI];
130
139
  // Act
131
- const { user } = render(React.createElement(Groups, { mapping: mockMapping, onClickAddGroup: jest.fn(), onClickGroupModify: jest.fn(), onClickGroupTitle: jest.fn, onClickRenderContextCustomUI: jest.fn() }), groupingMappingCustomUIMock);
140
+ const { user } = render(React.createElement(Groups, { mapping: mockMapping, onClickAddGroup: vi.fn(), onClickGroupModify: vi.fn(), onClickGroupTitle: vi.fn, onClickRenderContextCustomUI: vi.fn() }), groupingMappingCustomUIMock);
132
141
  await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
133
142
  // Assert
134
143
  const addButton = screen.getAllByTestId("gmw-add-group-button");
@@ -170,9 +179,9 @@ describe("Groups View", () => {
170
179
  uiComponent: mockedUIComponent,
171
180
  };
172
181
  const groupingMappingCustomUIMock = [mockContextUI];
173
- const onClickRenderContextCustomUIMock = jest.fn();
182
+ const onClickRenderContextCustomUIMock = vi.fn();
174
183
  // Act
175
- const { user } = render(React.createElement(Groups, { mapping: mockMapping, onClickAddGroup: jest.fn(), onClickGroupModify: jest.fn(), onClickGroupTitle: jest.fn, onClickRenderContextCustomUI: onClickRenderContextCustomUIMock }), groupingMappingCustomUIMock);
184
+ const { user } = render(React.createElement(Groups, { mapping: mockMapping, onClickAddGroup: vi.fn(), onClickGroupModify: vi.fn(), onClickGroupTitle: vi.fn, onClickRenderContextCustomUI: onClickRenderContextCustomUIMock }), groupingMappingCustomUIMock);
176
185
  await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
177
186
  // Assert
178
187
  // Should have the right group number
@@ -209,10 +218,10 @@ describe("Groups View", () => {
209
218
  uiComponent: mockedContextUIComponent,
210
219
  };
211
220
  const groupingMappingCustomUIMock = [mockContextUI, mockGroupingUI];
212
- const onClickAddGroup = jest.fn();
213
- const onClickRenderContextCustomUIMock = jest.fn();
221
+ const onClickAddGroup = vi.fn();
222
+ const onClickRenderContextCustomUIMock = vi.fn();
214
223
  // Act
215
- const { user } = render(React.createElement(Groups, { mapping: mockMapping, onClickAddGroup: onClickAddGroup, onClickGroupModify: jest.fn(), onClickGroupTitle: jest.fn, onClickRenderContextCustomUI: onClickRenderContextCustomUIMock }), groupingMappingCustomUIMock);
224
+ const { user } = render(React.createElement(Groups, { mapping: mockMapping, onClickAddGroup: onClickAddGroup, onClickGroupModify: vi.fn(), onClickGroupTitle: vi.fn, onClickRenderContextCustomUI: onClickRenderContextCustomUIMock }), groupingMappingCustomUIMock);
216
225
  await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
217
226
  // Assert
218
227
  const addButton = screen.getAllByTestId("gmw-add-group-button");