@itwin/grouping-mapping-widget 0.26.0 → 0.27.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 (611) hide show
  1. package/LICENSE.md +9 -9
  2. package/README.md +115 -115
  3. package/lib/cjs/WidgetShell/GroupingMapping.js +2 -4
  4. package/lib/cjs/WidgetShell/GroupingMapping.js.map +1 -1
  5. package/lib/cjs/WidgetShell/GroupingMappingContent.js +4 -4
  6. package/lib/cjs/WidgetShell/GroupingMappingContent.js.map +1 -1
  7. package/lib/cjs/WidgetShell/GroupingMappingHeader.d.ts +1 -1
  8. package/lib/cjs/WidgetShell/GroupingMappingHeader.js +5 -5
  9. package/lib/cjs/WidgetShell/GroupingMappingHeader.js.map +1 -1
  10. package/lib/cjs/WidgetShell/GroupingMappingWidget.js +1 -3
  11. package/lib/cjs/WidgetShell/GroupingMappingWidget.js.map +1 -1
  12. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js +29 -23
  13. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  14. package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.d.ts +1 -1
  15. package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.js +7 -7
  16. package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.js.map +1 -1
  17. package/lib/cjs/common/hooks/useIsMounted.js +3 -3
  18. package/lib/cjs/common/hooks/useIsMounted.js.map +1 -1
  19. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js +3 -3
  20. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js.map +1 -1
  21. package/lib/cjs/common/utils.js +3 -3
  22. package/lib/cjs/common/utils.js.map +1 -1
  23. package/lib/cjs/common/viewerUtils.js +2 -2
  24. package/lib/cjs/common/viewerUtils.js.map +1 -1
  25. package/lib/cjs/components/Constants.js +4 -4
  26. package/lib/cjs/components/Constants.js.map +1 -1
  27. package/lib/cjs/components/GroupingMappingContext.js +13 -4
  28. package/lib/cjs/components/GroupingMappingContext.js.map +1 -1
  29. package/lib/cjs/components/Groups/Editing/GroupAction.js +7 -9
  30. package/lib/cjs/components/Groups/Editing/GroupAction.js.map +1 -1
  31. package/lib/cjs/components/Groups/Editing/GroupDetails.d.ts +1 -1
  32. package/lib/cjs/components/Groups/Editing/GroupDetails.js +5 -7
  33. package/lib/cjs/components/Groups/Editing/GroupDetails.js.map +1 -1
  34. package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.d.ts +1 -1
  35. package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.js +4 -4
  36. package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.js.map +1 -1
  37. package/lib/cjs/components/Groups/Editing/GroupDetailsStep.js +4 -4
  38. package/lib/cjs/components/Groups/Editing/GroupDetailsStep.js.map +1 -1
  39. package/lib/cjs/components/Groups/GroupColorLegend.js +3 -3
  40. package/lib/cjs/components/Groups/GroupColorLegend.js.map +1 -1
  41. package/lib/cjs/components/Groups/GroupListItem.js +3 -4
  42. package/lib/cjs/components/Groups/GroupListItem.js.map +1 -1
  43. package/lib/cjs/components/Groups/GroupListItem.scss +2 -2
  44. package/lib/cjs/components/Groups/GroupMenuActions.js +17 -6
  45. package/lib/cjs/components/Groups/GroupMenuActions.js.map +1 -1
  46. package/lib/cjs/components/Groups/GroupOverlapProgressBar.js.map +1 -1
  47. package/lib/cjs/components/Groups/Groups.js +3 -3
  48. package/lib/cjs/components/Groups/Groups.js.map +1 -1
  49. package/lib/cjs/components/Groups/GroupsAddButton.d.ts +1 -1
  50. package/lib/cjs/components/Groups/GroupsAddButton.js +4 -4
  51. package/lib/cjs/components/Groups/GroupsAddButton.js.map +1 -1
  52. package/lib/cjs/components/Groups/GroupsAddButton.scss +1 -1
  53. package/lib/cjs/components/Groups/GroupsShowHideButtons.d.ts +1 -1
  54. package/lib/cjs/components/Groups/GroupsShowHideButtons.js +2 -2
  55. package/lib/cjs/components/Groups/GroupsShowHideButtons.js.map +1 -1
  56. package/lib/cjs/components/Groups/GroupsView.js +8 -10
  57. package/lib/cjs/components/Groups/GroupsView.js.map +1 -1
  58. package/lib/cjs/components/Groups/GroupsView.scss +1 -1
  59. package/lib/cjs/components/Groups/GroupsVisualization.js +19 -20
  60. package/lib/cjs/components/Groups/GroupsVisualization.js.map +1 -1
  61. package/lib/cjs/components/Groups/GroupsVisualizationActions.js +4 -4
  62. package/lib/cjs/components/Groups/GroupsVisualizationActions.js.map +1 -1
  63. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.d.ts +1 -1
  64. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.js +4 -4
  65. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
  66. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.scss +7 -7
  67. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilder.js +13 -35
  68. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilder.js.map +1 -1
  69. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderActionPanel.js +4 -4
  70. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderActionPanel.js.map +1 -1
  71. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +1 -1
  72. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.js +4 -4
  73. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
  74. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderStep.js +4 -4
  75. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderStep.js.map +1 -1
  76. package/lib/cjs/components/Groups/ToggleGroupVisibility.js +3 -3
  77. package/lib/cjs/components/Groups/ToggleGroupVisibility.js.map +1 -1
  78. package/lib/cjs/components/Groups/groupsHelpers.js +8 -4
  79. package/lib/cjs/components/Groups/groupsHelpers.js.map +1 -1
  80. package/lib/cjs/components/Groups/hooks/useFetchGroups.js.map +1 -1
  81. package/lib/cjs/components/Groups/hooks/useGroupsOperations.d.ts +1 -1
  82. package/lib/cjs/components/Groups/hooks/useGroupsOperations.js +5 -5
  83. package/lib/cjs/components/Groups/hooks/useGroupsOperations.js.map +1 -1
  84. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.d.ts +1 -1
  85. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
  86. package/lib/cjs/components/Groups/hooks/useVisualization.js +2 -4
  87. package/lib/cjs/components/Groups/hooks/useVisualization.js.map +1 -1
  88. package/lib/cjs/components/Mappings/BlockingOverlay.js +3 -3
  89. package/lib/cjs/components/Mappings/BlockingOverlay.js.map +1 -1
  90. package/lib/cjs/components/Mappings/Editing/MappingAction.js +11 -15
  91. package/lib/cjs/components/Mappings/Editing/MappingAction.js.map +1 -1
  92. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.d.ts +1 -1
  93. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js +1 -1
  94. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
  95. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js +9 -6
  96. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  97. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js +3 -3
  98. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js.map +1 -1
  99. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js +3 -3
  100. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js.map +1 -1
  101. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js +3 -3
  102. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js.map +1 -1
  103. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js +3 -3
  104. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js.map +1 -1
  105. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.d.ts +1 -1
  106. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js +9 -9
  107. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
  108. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js +4 -4
  109. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  110. package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js +26 -30
  111. package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
  112. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.d.ts +1 -1
  113. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js +3 -3
  114. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  115. package/lib/cjs/components/Mappings/Import/SelectIModel.d.ts +1 -1
  116. package/lib/cjs/components/Mappings/Import/SelectIModel.js +5 -5
  117. package/lib/cjs/components/Mappings/Import/SelectIModel.js.map +1 -1
  118. package/lib/cjs/components/Mappings/Import/SelectITwin.js +2 -2
  119. package/lib/cjs/components/Mappings/Import/SelectITwin.js.map +1 -1
  120. package/lib/cjs/components/Mappings/Import/SelectITwin.scss +1 -1
  121. package/lib/cjs/components/Mappings/Import/SelectMappings.d.ts +1 -1
  122. package/lib/cjs/components/Mappings/Import/SelectMappings.js +7 -7
  123. package/lib/cjs/components/Mappings/Import/SelectMappings.js.map +1 -1
  124. package/lib/cjs/components/Mappings/MappingListItem.js.map +1 -1
  125. package/lib/cjs/components/Mappings/MappingViewActionGroup.d.ts +1 -1
  126. package/lib/cjs/components/Mappings/MappingViewActionGroup.js +6 -7
  127. package/lib/cjs/components/Mappings/MappingViewActionGroup.js.map +1 -1
  128. package/lib/cjs/components/Mappings/Mappings.js +3 -3
  129. package/lib/cjs/components/Mappings/Mappings.js.map +1 -1
  130. package/lib/cjs/components/Mappings/MappingsView.js +14 -16
  131. package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
  132. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js +3 -1
  133. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
  134. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -1
  135. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js +3 -3
  136. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
  137. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js +1 -1
  138. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js.map +1 -1
  139. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js +36 -18
  140. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  141. package/lib/cjs/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
  142. package/lib/cjs/components/Mappings/hooks/useRunExtraction.js +8 -6
  143. package/lib/cjs/components/Mappings/hooks/useRunExtraction.js.map +1 -1
  144. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +3 -1
  145. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +10 -9
  146. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  147. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +7 -8
  148. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +24 -66
  149. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  150. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.d.ts +5 -9
  151. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +6 -17
  152. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  153. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +8 -9
  154. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js +20 -161
  155. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
  156. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.scss +5 -4
  157. package/lib/cjs/components/Properties/GroupColorToggle.js +4 -4
  158. package/lib/cjs/components/Properties/GroupColorToggle.js.map +1 -1
  159. package/lib/cjs/components/Properties/GroupInformationPanel.js +3 -3
  160. package/lib/cjs/components/Properties/GroupInformationPanel.js.map +1 -1
  161. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.d.ts +1 -1
  162. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js +90 -40
  163. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  164. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.scss +3 -2
  165. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.d.ts +1 -1
  166. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.js +5 -5
  167. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.js.map +1 -1
  168. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.d.ts +1 -1
  169. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js +24 -14
  170. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  171. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.js +20 -39
  172. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
  173. package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +20 -29
  174. package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
  175. package/lib/cjs/components/Properties/GroupProperties/SaveModal.d.ts +1 -1
  176. package/lib/cjs/components/Properties/GroupProperties/SaveModal.js +7 -7
  177. package/lib/cjs/components/Properties/GroupProperties/SaveModal.js.map +1 -1
  178. package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.js +4 -4
  179. package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
  180. package/lib/cjs/components/Properties/PropertyAction.js +9 -21
  181. package/lib/cjs/components/Properties/PropertyAction.js.map +1 -1
  182. package/lib/cjs/components/Properties/PropertyMenu.d.ts +1 -1
  183. package/lib/cjs/components/Properties/PropertyMenu.js +5 -10
  184. package/lib/cjs/components/Properties/PropertyMenu.js.map +1 -1
  185. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js +5 -5
  186. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  187. package/lib/cjs/components/Properties/PropertyNameCell.d.ts +1 -1
  188. package/lib/cjs/components/Properties/PropertyNameCell.js +4 -4
  189. package/lib/cjs/components/Properties/PropertyNameCell.js.map +1 -1
  190. package/lib/cjs/components/Properties/PropertyTable.js +5 -6
  191. package/lib/cjs/components/Properties/PropertyTable.js.map +1 -1
  192. package/lib/cjs/components/Properties/PropertyTableToolbar.d.ts +1 -1
  193. package/lib/cjs/components/Properties/PropertyTableToolbar.js +4 -4
  194. package/lib/cjs/components/Properties/PropertyTableToolbar.js.map +1 -1
  195. package/lib/cjs/components/Properties/ScrollableExpandableBlock.d.ts +11 -0
  196. package/lib/cjs/components/Properties/ScrollableExpandableBlock.js +55 -0
  197. package/lib/cjs/components/Properties/ScrollableExpandableBlock.js.map +1 -0
  198. package/lib/cjs/components/Properties/hooks/useFormulaValidation.d.ts +6 -3
  199. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js +62 -16
  200. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  201. package/lib/cjs/components/Properties/hooks/useForwardRef.d.ts +3 -0
  202. package/lib/cjs/components/Properties/hooks/useForwardRef.js +20 -0
  203. package/lib/cjs/components/Properties/hooks/useForwardRef.js.map +1 -0
  204. package/lib/cjs/components/Properties/hooks/usePropertiesQuery.js.map +1 -1
  205. package/lib/cjs/components/Properties/hooks/useValidator.js +4 -4
  206. package/lib/cjs/components/Properties/hooks/useValidator.js.map +1 -1
  207. package/lib/cjs/components/SharedComponents/ActionPanel.d.ts +3 -1
  208. package/lib/cjs/components/SharedComponents/ActionPanel.js +9 -10
  209. package/lib/cjs/components/SharedComponents/ActionPanel.js.map +1 -1
  210. package/lib/cjs/components/SharedComponents/DeleteModal.d.ts +1 -1
  211. package/lib/cjs/components/SharedComponents/DeleteModal.js +9 -10
  212. package/lib/cjs/components/SharedComponents/DeleteModal.js.map +1 -1
  213. package/lib/cjs/components/SharedComponents/EmptyMessage.js +4 -4
  214. package/lib/cjs/components/SharedComponents/EmptyMessage.js.map +1 -1
  215. package/lib/cjs/components/SharedComponents/LoadingOverlay.js +4 -4
  216. package/lib/cjs/components/SharedComponents/LoadingOverlay.js.map +1 -1
  217. package/lib/cjs/components/SharedComponents/LoadingSpinner.js +3 -3
  218. package/lib/cjs/components/SharedComponents/LoadingSpinner.js.map +1 -1
  219. package/lib/cjs/components/SharedComponents/StatusIcon.js +3 -3
  220. package/lib/cjs/components/SharedComponents/StatusIcon.js.map +1 -1
  221. package/lib/cjs/components/context/ExtractionClientContext.js.map +1 -1
  222. package/lib/cjs/components/context/ExtractionStateJobContext.js +3 -3
  223. package/lib/cjs/components/context/ExtractionStateJobContext.js.map +1 -1
  224. package/lib/cjs/components/context/GroupHilitedElementsContext.js +3 -3
  225. package/lib/cjs/components/context/GroupHilitedElementsContext.js.map +1 -1
  226. package/lib/cjs/components/context/GroupingApiConfigContext.js.map +1 -1
  227. package/lib/cjs/components/context/GroupingMappingCustomUIContext.js +3 -3
  228. package/lib/cjs/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  229. package/lib/cjs/components/context/GroupsClientContext.js.map +1 -1
  230. package/lib/cjs/components/context/IModelsClientContext.js.map +1 -1
  231. package/lib/cjs/components/context/ITwinsClientContext.js +3 -3
  232. package/lib/cjs/components/context/ITwinsClientContext.js.map +1 -1
  233. package/lib/cjs/components/context/MappingClientContext.js.map +1 -1
  234. package/lib/cjs/components/context/PropertiesClientContext.js.map +1 -1
  235. package/lib/cjs/components/context/PropertiesGroupColorContext.js +3 -3
  236. package/lib/cjs/components/context/PropertiesGroupColorContext.js.map +1 -1
  237. package/lib/cjs/components/context/PropertyGridWrapperContext.js +3 -3
  238. package/lib/cjs/components/context/PropertyGridWrapperContext.js.map +1 -1
  239. package/lib/cjs/components/customUI/DefaultGroupingUI.js +3 -3
  240. package/lib/cjs/components/customUI/DefaultGroupingUI.js.map +1 -1
  241. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
  242. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js +13 -18
  243. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  244. package/lib/cjs/components/customUI/GroupingMappingCustomUI.js.map +1 -1
  245. package/lib/cjs/components/customUI/ManualGroupingCustomUI.d.ts +1 -1
  246. package/lib/cjs/components/customUI/ManualGroupingCustomUI.js +8 -8
  247. package/lib/cjs/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  248. package/lib/cjs/components/customUI/SearchGroupingCustomUI.d.ts +1 -1
  249. package/lib/cjs/components/customUI/SearchGroupingCustomUI.js +16 -45
  250. package/lib/cjs/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  251. package/lib/cjs/decorators/BboxDimensionsDecorator.js +3 -10
  252. package/lib/cjs/decorators/BboxDimensionsDecorator.js.map +1 -1
  253. package/lib/cjs/formula/FormulaDataTypeResolver.d.ts +3 -2
  254. package/lib/cjs/formula/FormulaDataTypeResolver.js +10 -6
  255. package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
  256. package/lib/cjs/formula/FormulaFunctionProvider.js +146 -65
  257. package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
  258. package/lib/cjs/formula/FormulaOperatorsProvider.js +138 -44
  259. package/lib/cjs/formula/FormulaOperatorsProvider.js.map +1 -1
  260. package/lib/cjs/formula/FormulaSplitter.js +63 -13
  261. package/lib/cjs/formula/FormulaSplitter.js.map +1 -1
  262. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js +7 -14
  263. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js.map +1 -1
  264. package/lib/cjs/formula/IResult.js.map +1 -1
  265. package/lib/cjs/formula/InfixToPostfixConverter.js +4 -4
  266. package/lib/cjs/formula/InfixToPostfixConverter.js.map +1 -1
  267. package/lib/cjs/formula/InputStream.js +3 -3
  268. package/lib/cjs/formula/InputStream.js.map +1 -1
  269. package/lib/cjs/formula/ParenthesisValidator.js +3 -3
  270. package/lib/cjs/formula/ParenthesisValidator.js.map +1 -1
  271. package/lib/cjs/formula/Queue.js +3 -3
  272. package/lib/cjs/formula/Queue.js.map +1 -1
  273. package/lib/cjs/formula/Stack.js +3 -3
  274. package/lib/cjs/formula/Stack.js.map +1 -1
  275. package/lib/cjs/formula/StringBuilder.js +3 -3
  276. package/lib/cjs/formula/StringBuilder.js.map +1 -1
  277. package/lib/cjs/formula/Types.js.map +1 -1
  278. package/lib/cjs/formula/Utils.js +4 -4
  279. package/lib/cjs/formula/Utils.js.map +1 -1
  280. package/lib/cjs/grouping-mapping-widget.d.ts +3 -5
  281. package/lib/cjs/grouping-mapping-widget.js +4 -8
  282. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  283. package/lib/cjs/test/GroupPropertyUtils.test.js +27 -26
  284. package/lib/cjs/test/GroupPropertyUtils.test.js.map +1 -1
  285. package/lib/cjs/test/GroupingMappingCustomUI.test.js +4 -6
  286. package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
  287. package/lib/cjs/test/MockFactory.js +3 -3
  288. package/lib/cjs/test/MockFactory.js.map +1 -1
  289. package/lib/cjs/test/PropertyFieldsHelpers.js +3 -3
  290. package/lib/cjs/test/PropertyFieldsHelpers.js.map +1 -1
  291. package/lib/cjs/test/QueryBuilder.test.js +3 -3
  292. package/lib/cjs/test/QueryBuilder.test.js.map +1 -1
  293. package/lib/cjs/test/QueryBuilder.testdata.js +3 -3
  294. package/lib/cjs/test/QueryBuilder.testdata.js.map +1 -1
  295. package/lib/cjs/test/QueryBuilderTestData.js.map +1 -1
  296. package/lib/cjs/test/WidgetHeader.test.js +3 -3
  297. package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
  298. package/lib/cjs/test/test-utils.js +4 -4
  299. package/lib/cjs/test/test-utils.js.map +1 -1
  300. package/lib/esm/WidgetShell/GroupingMapping.js +3 -5
  301. package/lib/esm/WidgetShell/GroupingMapping.js.map +1 -1
  302. package/lib/esm/WidgetShell/GroupingMappingContent.js +4 -4
  303. package/lib/esm/WidgetShell/GroupingMappingContent.js.map +1 -1
  304. package/lib/esm/WidgetShell/GroupingMappingHeader.d.ts +1 -1
  305. package/lib/esm/WidgetShell/GroupingMappingHeader.js +5 -5
  306. package/lib/esm/WidgetShell/GroupingMappingHeader.js.map +1 -1
  307. package/lib/esm/WidgetShell/GroupingMappingWidget.js +2 -4
  308. package/lib/esm/WidgetShell/GroupingMappingWidget.js.map +1 -1
  309. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js +29 -23
  310. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  311. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.d.ts +1 -1
  312. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.js +7 -7
  313. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.js.map +1 -1
  314. package/lib/esm/common/hooks/useIsMounted.js +3 -3
  315. package/lib/esm/common/hooks/useIsMounted.js.map +1 -1
  316. package/lib/esm/common/hooks/useMemoizedCollectionPick.js +3 -3
  317. package/lib/esm/common/hooks/useMemoizedCollectionPick.js.map +1 -1
  318. package/lib/esm/common/utils.js +3 -3
  319. package/lib/esm/common/utils.js.map +1 -1
  320. package/lib/esm/common/viewerUtils.js +2 -2
  321. package/lib/esm/common/viewerUtils.js.map +1 -1
  322. package/lib/esm/components/Constants.js +4 -4
  323. package/lib/esm/components/Constants.js.map +1 -1
  324. package/lib/esm/components/GroupingMappingContext.js +14 -5
  325. package/lib/esm/components/GroupingMappingContext.js.map +1 -1
  326. package/lib/esm/components/Groups/Editing/GroupAction.js +8 -10
  327. package/lib/esm/components/Groups/Editing/GroupAction.js.map +1 -1
  328. package/lib/esm/components/Groups/Editing/GroupDetails.d.ts +1 -1
  329. package/lib/esm/components/Groups/Editing/GroupDetails.js +5 -7
  330. package/lib/esm/components/Groups/Editing/GroupDetails.js.map +1 -1
  331. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.d.ts +1 -1
  332. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.js +4 -4
  333. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.js.map +1 -1
  334. package/lib/esm/components/Groups/Editing/GroupDetailsStep.js +4 -4
  335. package/lib/esm/components/Groups/Editing/GroupDetailsStep.js.map +1 -1
  336. package/lib/esm/components/Groups/GroupColorLegend.js +3 -3
  337. package/lib/esm/components/Groups/GroupColorLegend.js.map +1 -1
  338. package/lib/esm/components/Groups/GroupListItem.js +3 -4
  339. package/lib/esm/components/Groups/GroupListItem.js.map +1 -1
  340. package/lib/esm/components/Groups/GroupListItem.scss +2 -2
  341. package/lib/esm/components/Groups/GroupMenuActions.js +17 -6
  342. package/lib/esm/components/Groups/GroupMenuActions.js.map +1 -1
  343. package/lib/esm/components/Groups/GroupOverlapProgressBar.js.map +1 -1
  344. package/lib/esm/components/Groups/Groups.js +3 -3
  345. package/lib/esm/components/Groups/Groups.js.map +1 -1
  346. package/lib/esm/components/Groups/GroupsAddButton.d.ts +1 -1
  347. package/lib/esm/components/Groups/GroupsAddButton.js +4 -4
  348. package/lib/esm/components/Groups/GroupsAddButton.js.map +1 -1
  349. package/lib/esm/components/Groups/GroupsAddButton.scss +1 -1
  350. package/lib/esm/components/Groups/GroupsShowHideButtons.d.ts +1 -1
  351. package/lib/esm/components/Groups/GroupsShowHideButtons.js +2 -2
  352. package/lib/esm/components/Groups/GroupsShowHideButtons.js.map +1 -1
  353. package/lib/esm/components/Groups/GroupsView.js +10 -12
  354. package/lib/esm/components/Groups/GroupsView.js.map +1 -1
  355. package/lib/esm/components/Groups/GroupsView.scss +1 -1
  356. package/lib/esm/components/Groups/GroupsVisualization.js +21 -22
  357. package/lib/esm/components/Groups/GroupsVisualization.js.map +1 -1
  358. package/lib/esm/components/Groups/GroupsVisualizationActions.js +4 -4
  359. package/lib/esm/components/Groups/GroupsVisualizationActions.js.map +1 -1
  360. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.d.ts +1 -1
  361. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js +5 -5
  362. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
  363. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.scss +7 -7
  364. package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js +13 -35
  365. package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js.map +1 -1
  366. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderActionPanel.js +4 -4
  367. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderActionPanel.js.map +1 -1
  368. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +1 -1
  369. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js +4 -4
  370. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
  371. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderStep.js +4 -4
  372. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderStep.js.map +1 -1
  373. package/lib/esm/components/Groups/ToggleGroupVisibility.js +3 -3
  374. package/lib/esm/components/Groups/ToggleGroupVisibility.js.map +1 -1
  375. package/lib/esm/components/Groups/groupsHelpers.js +9 -5
  376. package/lib/esm/components/Groups/groupsHelpers.js.map +1 -1
  377. package/lib/esm/components/Groups/hooks/useFetchGroups.js.map +1 -1
  378. package/lib/esm/components/Groups/hooks/useGroupsOperations.d.ts +1 -1
  379. package/lib/esm/components/Groups/hooks/useGroupsOperations.js +5 -5
  380. package/lib/esm/components/Groups/hooks/useGroupsOperations.js.map +1 -1
  381. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.d.ts +1 -1
  382. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
  383. package/lib/esm/components/Groups/hooks/useVisualization.js +3 -5
  384. package/lib/esm/components/Groups/hooks/useVisualization.js.map +1 -1
  385. package/lib/esm/components/Mappings/BlockingOverlay.js +3 -3
  386. package/lib/esm/components/Mappings/BlockingOverlay.js.map +1 -1
  387. package/lib/esm/components/Mappings/Editing/MappingAction.js +11 -15
  388. package/lib/esm/components/Mappings/Editing/MappingAction.js.map +1 -1
  389. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.d.ts +1 -1
  390. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.js +1 -1
  391. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
  392. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js +9 -6
  393. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  394. package/lib/esm/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js +3 -3
  395. package/lib/esm/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js.map +1 -1
  396. package/lib/esm/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js +3 -3
  397. package/lib/esm/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js.map +1 -1
  398. package/lib/esm/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js +3 -3
  399. package/lib/esm/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js.map +1 -1
  400. package/lib/esm/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js +3 -3
  401. package/lib/esm/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js.map +1 -1
  402. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.d.ts +1 -1
  403. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.js +9 -9
  404. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
  405. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js +4 -4
  406. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  407. package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js +27 -31
  408. package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
  409. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.d.ts +1 -1
  410. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js +3 -3
  411. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  412. package/lib/esm/components/Mappings/Import/SelectIModel.d.ts +1 -1
  413. package/lib/esm/components/Mappings/Import/SelectIModel.js +5 -5
  414. package/lib/esm/components/Mappings/Import/SelectIModel.js.map +1 -1
  415. package/lib/esm/components/Mappings/Import/SelectITwin.js +2 -2
  416. package/lib/esm/components/Mappings/Import/SelectITwin.js.map +1 -1
  417. package/lib/esm/components/Mappings/Import/SelectITwin.scss +1 -1
  418. package/lib/esm/components/Mappings/Import/SelectMappings.d.ts +1 -1
  419. package/lib/esm/components/Mappings/Import/SelectMappings.js +8 -8
  420. package/lib/esm/components/Mappings/Import/SelectMappings.js.map +1 -1
  421. package/lib/esm/components/Mappings/MappingListItem.js.map +1 -1
  422. package/lib/esm/components/Mappings/MappingViewActionGroup.d.ts +1 -1
  423. package/lib/esm/components/Mappings/MappingViewActionGroup.js +8 -9
  424. package/lib/esm/components/Mappings/MappingViewActionGroup.js.map +1 -1
  425. package/lib/esm/components/Mappings/Mappings.js +3 -3
  426. package/lib/esm/components/Mappings/Mappings.js.map +1 -1
  427. package/lib/esm/components/Mappings/MappingsView.js +16 -18
  428. package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
  429. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js +3 -1
  430. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
  431. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -1
  432. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js +3 -3
  433. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
  434. package/lib/esm/components/Mappings/hooks/useFetchMappings.js +1 -1
  435. package/lib/esm/components/Mappings/hooks/useFetchMappings.js.map +1 -1
  436. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js +36 -18
  437. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  438. package/lib/esm/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
  439. package/lib/esm/components/Mappings/hooks/useRunExtraction.js +8 -6
  440. package/lib/esm/components/Mappings/hooks/useRunExtraction.js.map +1 -1
  441. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +3 -1
  442. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +11 -10
  443. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  444. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +7 -8
  445. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +27 -66
  446. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  447. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.d.ts +5 -9
  448. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +8 -19
  449. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  450. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +8 -9
  451. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js +21 -139
  452. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
  453. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.scss +5 -4
  454. package/lib/esm/components/Properties/GroupColorToggle.js +4 -4
  455. package/lib/esm/components/Properties/GroupColorToggle.js.map +1 -1
  456. package/lib/esm/components/Properties/GroupInformationPanel.js +3 -3
  457. package/lib/esm/components/Properties/GroupInformationPanel.js.map +1 -1
  458. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.d.ts +1 -1
  459. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js +94 -44
  460. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  461. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.scss +3 -2
  462. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.d.ts +1 -1
  463. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.js +5 -5
  464. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.js.map +1 -1
  465. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.d.ts +1 -1
  466. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js +26 -16
  467. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  468. package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js +21 -40
  469. package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
  470. package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +26 -35
  471. package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
  472. package/lib/esm/components/Properties/GroupProperties/SaveModal.d.ts +1 -1
  473. package/lib/esm/components/Properties/GroupProperties/SaveModal.js +8 -8
  474. package/lib/esm/components/Properties/GroupProperties/SaveModal.js.map +1 -1
  475. package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.js +4 -4
  476. package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
  477. package/lib/esm/components/Properties/PropertyAction.js +9 -21
  478. package/lib/esm/components/Properties/PropertyAction.js.map +1 -1
  479. package/lib/esm/components/Properties/PropertyMenu.d.ts +1 -1
  480. package/lib/esm/components/Properties/PropertyMenu.js +5 -10
  481. package/lib/esm/components/Properties/PropertyMenu.js.map +1 -1
  482. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js +5 -5
  483. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  484. package/lib/esm/components/Properties/PropertyNameCell.d.ts +1 -1
  485. package/lib/esm/components/Properties/PropertyNameCell.js +4 -4
  486. package/lib/esm/components/Properties/PropertyNameCell.js.map +1 -1
  487. package/lib/esm/components/Properties/PropertyTable.js +5 -6
  488. package/lib/esm/components/Properties/PropertyTable.js.map +1 -1
  489. package/lib/esm/components/Properties/PropertyTableToolbar.d.ts +1 -1
  490. package/lib/esm/components/Properties/PropertyTableToolbar.js +4 -4
  491. package/lib/esm/components/Properties/PropertyTableToolbar.js.map +1 -1
  492. package/lib/esm/components/Properties/ScrollableExpandableBlock.d.ts +11 -0
  493. package/lib/esm/components/Properties/ScrollableExpandableBlock.js +29 -0
  494. package/lib/esm/components/Properties/ScrollableExpandableBlock.js.map +1 -0
  495. package/lib/esm/components/Properties/hooks/useFormulaValidation.d.ts +6 -3
  496. package/lib/esm/components/Properties/hooks/useFormulaValidation.js +60 -15
  497. package/lib/esm/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  498. package/lib/esm/components/Properties/hooks/useForwardRef.d.ts +3 -0
  499. package/lib/esm/components/Properties/hooks/useForwardRef.js +16 -0
  500. package/lib/esm/components/Properties/hooks/useForwardRef.js.map +1 -0
  501. package/lib/esm/components/Properties/hooks/usePropertiesQuery.js.map +1 -1
  502. package/lib/esm/components/Properties/hooks/useValidator.js +4 -4
  503. package/lib/esm/components/Properties/hooks/useValidator.js.map +1 -1
  504. package/lib/esm/components/SharedComponents/ActionPanel.d.ts +3 -1
  505. package/lib/esm/components/SharedComponents/ActionPanel.js +9 -10
  506. package/lib/esm/components/SharedComponents/ActionPanel.js.map +1 -1
  507. package/lib/esm/components/SharedComponents/DeleteModal.d.ts +1 -1
  508. package/lib/esm/components/SharedComponents/DeleteModal.js +10 -11
  509. package/lib/esm/components/SharedComponents/DeleteModal.js.map +1 -1
  510. package/lib/esm/components/SharedComponents/EmptyMessage.js +4 -4
  511. package/lib/esm/components/SharedComponents/EmptyMessage.js.map +1 -1
  512. package/lib/esm/components/SharedComponents/LoadingOverlay.js +4 -4
  513. package/lib/esm/components/SharedComponents/LoadingOverlay.js.map +1 -1
  514. package/lib/esm/components/SharedComponents/LoadingSpinner.js +3 -3
  515. package/lib/esm/components/SharedComponents/LoadingSpinner.js.map +1 -1
  516. package/lib/esm/components/SharedComponents/StatusIcon.js +3 -3
  517. package/lib/esm/components/SharedComponents/StatusIcon.js.map +1 -1
  518. package/lib/esm/components/context/ExtractionClientContext.js.map +1 -1
  519. package/lib/esm/components/context/ExtractionStateJobContext.js +3 -3
  520. package/lib/esm/components/context/ExtractionStateJobContext.js.map +1 -1
  521. package/lib/esm/components/context/GroupHilitedElementsContext.js +3 -3
  522. package/lib/esm/components/context/GroupHilitedElementsContext.js.map +1 -1
  523. package/lib/esm/components/context/GroupingApiConfigContext.js.map +1 -1
  524. package/lib/esm/components/context/GroupingMappingCustomUIContext.js +3 -3
  525. package/lib/esm/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  526. package/lib/esm/components/context/GroupsClientContext.js.map +1 -1
  527. package/lib/esm/components/context/IModelsClientContext.js.map +1 -1
  528. package/lib/esm/components/context/ITwinsClientContext.js +3 -3
  529. package/lib/esm/components/context/ITwinsClientContext.js.map +1 -1
  530. package/lib/esm/components/context/MappingClientContext.js.map +1 -1
  531. package/lib/esm/components/context/PropertiesClientContext.js.map +1 -1
  532. package/lib/esm/components/context/PropertiesGroupColorContext.js +3 -3
  533. package/lib/esm/components/context/PropertiesGroupColorContext.js.map +1 -1
  534. package/lib/esm/components/context/PropertyGridWrapperContext.js +3 -3
  535. package/lib/esm/components/context/PropertyGridWrapperContext.js.map +1 -1
  536. package/lib/esm/components/customUI/DefaultGroupingUI.js +3 -3
  537. package/lib/esm/components/customUI/DefaultGroupingUI.js.map +1 -1
  538. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
  539. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js +14 -19
  540. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  541. package/lib/esm/components/customUI/GroupingMappingCustomUI.js.map +1 -1
  542. package/lib/esm/components/customUI/ManualGroupingCustomUI.d.ts +1 -1
  543. package/lib/esm/components/customUI/ManualGroupingCustomUI.js +8 -8
  544. package/lib/esm/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  545. package/lib/esm/components/customUI/SearchGroupingCustomUI.d.ts +1 -1
  546. package/lib/esm/components/customUI/SearchGroupingCustomUI.js +16 -45
  547. package/lib/esm/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  548. package/lib/esm/decorators/BboxDimensionsDecorator.js +5 -12
  549. package/lib/esm/decorators/BboxDimensionsDecorator.js.map +1 -1
  550. package/lib/esm/formula/FormulaDataTypeResolver.d.ts +3 -2
  551. package/lib/esm/formula/FormulaDataTypeResolver.js +10 -6
  552. package/lib/esm/formula/FormulaDataTypeResolver.js.map +1 -1
  553. package/lib/esm/formula/FormulaFunctionProvider.js +146 -65
  554. package/lib/esm/formula/FormulaFunctionProvider.js.map +1 -1
  555. package/lib/esm/formula/FormulaOperatorsProvider.js +138 -44
  556. package/lib/esm/formula/FormulaOperatorsProvider.js.map +1 -1
  557. package/lib/esm/formula/FormulaSplitter.js +63 -13
  558. package/lib/esm/formula/FormulaSplitter.js.map +1 -1
  559. package/lib/esm/formula/FormulaTokensDataTypeResolver.js +7 -14
  560. package/lib/esm/formula/FormulaTokensDataTypeResolver.js.map +1 -1
  561. package/lib/esm/formula/IResult.js.map +1 -1
  562. package/lib/esm/formula/InfixToPostfixConverter.js +5 -5
  563. package/lib/esm/formula/InfixToPostfixConverter.js.map +1 -1
  564. package/lib/esm/formula/InputStream.js +3 -3
  565. package/lib/esm/formula/InputStream.js.map +1 -1
  566. package/lib/esm/formula/ParenthesisValidator.js +3 -3
  567. package/lib/esm/formula/ParenthesisValidator.js.map +1 -1
  568. package/lib/esm/formula/Queue.js +3 -3
  569. package/lib/esm/formula/Queue.js.map +1 -1
  570. package/lib/esm/formula/Stack.js +3 -3
  571. package/lib/esm/formula/Stack.js.map +1 -1
  572. package/lib/esm/formula/StringBuilder.js +3 -3
  573. package/lib/esm/formula/StringBuilder.js.map +1 -1
  574. package/lib/esm/formula/Types.js.map +1 -1
  575. package/lib/esm/formula/Utils.js +4 -4
  576. package/lib/esm/formula/Utils.js.map +1 -1
  577. package/lib/esm/grouping-mapping-widget.d.ts +3 -5
  578. package/lib/esm/grouping-mapping-widget.js +6 -8
  579. package/lib/esm/grouping-mapping-widget.js.map +1 -1
  580. package/lib/esm/test/GroupPropertyUtils.test.js +28 -27
  581. package/lib/esm/test/GroupPropertyUtils.test.js.map +1 -1
  582. package/lib/esm/test/GroupingMappingCustomUI.test.js +4 -6
  583. package/lib/esm/test/GroupingMappingCustomUI.test.js.map +1 -1
  584. package/lib/esm/test/MockFactory.js +3 -3
  585. package/lib/esm/test/MockFactory.js.map +1 -1
  586. package/lib/esm/test/PropertyFieldsHelpers.js +3 -3
  587. package/lib/esm/test/PropertyFieldsHelpers.js.map +1 -1
  588. package/lib/esm/test/QueryBuilder.test.js +3 -3
  589. package/lib/esm/test/QueryBuilder.test.js.map +1 -1
  590. package/lib/esm/test/QueryBuilder.testdata.js +3 -3
  591. package/lib/esm/test/QueryBuilder.testdata.js.map +1 -1
  592. package/lib/esm/test/QueryBuilderTestData.js.map +1 -1
  593. package/lib/esm/test/WidgetHeader.test.js +3 -3
  594. package/lib/esm/test/WidgetHeader.test.js.map +1 -1
  595. package/lib/esm/test/test-utils.js +4 -4
  596. package/lib/esm/test/test-utils.js.map +1 -1
  597. package/package.json +8 -4
  598. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.d.ts +0 -14
  599. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +0 -87
  600. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +0 -1
  601. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.scss +0 -9
  602. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.d.ts +0 -13
  603. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js +0 -87
  604. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js.map +0 -1
  605. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.d.ts +0 -14
  606. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +0 -60
  607. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +0 -1
  608. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.scss +0 -9
  609. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.d.ts +0 -13
  610. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js +0 -60
  611. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js.map +0 -1
@@ -1,7 +1,67 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getOperatorReturnType = exports.getOperatorArgumentCountBounds = exports.isSupportedOperator = exports.getOperatorAssociativity = exports.getOperatorPrecedence = exports.getUnaryOperator = exports.getBinaryOperator = exports.isOperator = exports.OperatorAssociativity = exports.OperatorType = void 0;
4
- const allOperators = ["+", "-", "*", "%", "**", "/", "`", "~", "!", "@", "#", "$", "^", "&", "=", "[", "]", "{", "}", "\\", "|", ";", ":", "'", "\"", "<", ">", "?", "+=", "-=", "*=", "/=", "%=", "&=", "^=", "|=", "?=", "==", "!=", ">=", "<=", "++", "--", "<<", ">>", "&&", "||", "??", "?.", "**=", "<<=", ">>=", "&&=", "||=", "??=", "===", "!==", ">>>", ">>>="];
4
+ const allOperators = [
5
+ "+",
6
+ "-",
7
+ "*",
8
+ "%",
9
+ "**",
10
+ "/",
11
+ "`",
12
+ "~",
13
+ "!",
14
+ "@",
15
+ "#",
16
+ "$",
17
+ "^",
18
+ "&",
19
+ "=",
20
+ "[",
21
+ "]",
22
+ "{",
23
+ "}",
24
+ "\\",
25
+ "|",
26
+ ";",
27
+ ":",
28
+ "'",
29
+ '"',
30
+ "<",
31
+ ">",
32
+ "?",
33
+ "+=",
34
+ "-=",
35
+ "*=",
36
+ "/=",
37
+ "%=",
38
+ "&=",
39
+ "^=",
40
+ "|=",
41
+ "?=",
42
+ "==",
43
+ "!=",
44
+ ">=",
45
+ "<=",
46
+ "++",
47
+ "--",
48
+ "<<",
49
+ ">>",
50
+ "&&",
51
+ "||",
52
+ "??",
53
+ "?.",
54
+ "**=",
55
+ "<<=",
56
+ ">>=",
57
+ "&&=",
58
+ "||=",
59
+ "??=",
60
+ "===",
61
+ "!==",
62
+ ">>>",
63
+ ">>>=",
64
+ ];
5
65
  var OperatorType;
6
66
  (function (OperatorType) {
7
67
  OperatorType[OperatorType["UnaryPlus"] = 0] = "UnaryPlus";
@@ -33,30 +93,49 @@ function isOperator(token) {
33
93
  exports.isOperator = isOperator;
34
94
  function getBinaryOperator(token) {
35
95
  switch (token) {
36
- case "**": return OperatorType.Exponentiation;
37
- case "*": return OperatorType.Multiplication;
38
- case "/": return OperatorType.Division;
39
- case "%": return OperatorType.Remainder;
40
- case "+": return OperatorType.Addition;
41
- case "-": return OperatorType.Subtraction;
42
- case "<": return OperatorType.LessThan;
43
- case "<=": return OperatorType.LessThanOrEqual;
44
- case ">": return OperatorType.GreaterThan;
45
- case ">=": return OperatorType.GreaterThanOrEqual;
46
- case "==": return OperatorType.Equality;
47
- case "!=": return OperatorType.Inequality;
48
- case "&&": return OperatorType.LogicalAnd;
49
- case "||": return OperatorType.LogicalOr;
50
- default: return undefined;
96
+ case "**":
97
+ return OperatorType.Exponentiation;
98
+ case "*":
99
+ return OperatorType.Multiplication;
100
+ case "/":
101
+ return OperatorType.Division;
102
+ case "%":
103
+ return OperatorType.Remainder;
104
+ case "+":
105
+ return OperatorType.Addition;
106
+ case "-":
107
+ return OperatorType.Subtraction;
108
+ case "<":
109
+ return OperatorType.LessThan;
110
+ case "<=":
111
+ return OperatorType.LessThanOrEqual;
112
+ case ">":
113
+ return OperatorType.GreaterThan;
114
+ case ">=":
115
+ return OperatorType.GreaterThanOrEqual;
116
+ case "==":
117
+ return OperatorType.Equality;
118
+ case "!=":
119
+ return OperatorType.Inequality;
120
+ case "&&":
121
+ return OperatorType.LogicalAnd;
122
+ case "||":
123
+ return OperatorType.LogicalOr;
124
+ default:
125
+ return undefined;
51
126
  }
52
127
  }
53
128
  exports.getBinaryOperator = getBinaryOperator;
54
129
  function getUnaryOperator(token) {
55
130
  switch (token) {
56
- case "+": return OperatorType.UnaryPlus;
57
- case "-": return OperatorType.UnaryNegation;
58
- case "!": return OperatorType.LogicalNot;
59
- default: return undefined;
131
+ case "+":
132
+ return OperatorType.UnaryPlus;
133
+ case "-":
134
+ return OperatorType.UnaryNegation;
135
+ case "!":
136
+ return OperatorType.LogicalNot;
137
+ default:
138
+ return undefined;
60
139
  }
61
140
  }
62
141
  exports.getUnaryOperator = getUnaryOperator;
@@ -88,7 +167,8 @@ function getOperatorPrecedence(op) {
88
167
  return 5;
89
168
  case OperatorType.LogicalOr:
90
169
  return 4;
91
- default: return 1;
170
+ default:
171
+ return 1;
92
172
  }
93
173
  }
94
174
  exports.getOperatorPrecedence = getOperatorPrecedence;
@@ -124,22 +204,38 @@ function isSupportedOperator(token) {
124
204
  exports.isSupportedOperator = isSupportedOperator;
125
205
  function getOperatorArgumentCountBounds(token) {
126
206
  switch (token) {
127
- case "**": return [2, 2];
128
- case "*": return [2, 2];
129
- case "/": return [2, 2];
130
- case "%": return [2, 2];
131
- case "+": return [1, 2];
132
- case "-": return [1, 2];
133
- case "!": return [1, 1];
134
- case "<": return [2, 2];
135
- case "<=": return [2, 2];
136
- case ">": return [2, 2];
137
- case ">=": return [2, 2];
138
- case "==": return [2, 2];
139
- case "!=": return [2, 2];
140
- case "&&": return [2, 2];
141
- case "||": return [2, 2];
142
- default: return undefined;
207
+ case "**":
208
+ return [2, 2];
209
+ case "*":
210
+ return [2, 2];
211
+ case "/":
212
+ return [2, 2];
213
+ case "%":
214
+ return [2, 2];
215
+ case "+":
216
+ return [1, 2];
217
+ case "-":
218
+ return [1, 2];
219
+ case "!":
220
+ return [1, 1];
221
+ case "<":
222
+ return [2, 2];
223
+ case "<=":
224
+ return [2, 2];
225
+ case ">":
226
+ return [2, 2];
227
+ case ">=":
228
+ return [2, 2];
229
+ case "==":
230
+ return [2, 2];
231
+ case "!=":
232
+ return [2, 2];
233
+ case "&&":
234
+ return [2, 2];
235
+ case "||":
236
+ return [2, 2];
237
+ default:
238
+ return undefined;
143
239
  }
144
240
  }
145
241
  exports.getOperatorArgumentCountBounds = getOperatorArgumentCountBounds;
@@ -148,20 +244,18 @@ function getOperatorReturnType(token, arg1, arg2) {
148
244
  return { errorMessage: `Unary operator "${token}" is not supported.` };
149
245
  if (arg2 && !getBinaryOperator(token))
150
246
  return { errorMessage: `Binary operator "${token}" is not supported.` };
151
- if ((arg1 === "Undefined" || arg2 === "Undefined") && (token !== "==" && token !== "!="))
247
+ if ((arg1 === "Undefined" || arg2 === "Undefined") && token !== "==" && token !== "!=")
152
248
  return { errorMessage: `${!arg2 ? "Unary" : "Binary"} operator "${token}" does not support null operands.` };
153
249
  switch (token) {
154
250
  case "**":
155
251
  case "*":
156
252
  case "/":
157
253
  case "%":
158
- return arg1 === "String" || arg2 === "String" ?
159
- { errorMessage: `Binary operator "${token}" does not support string operands.` } :
160
- { value: "Double" };
254
+ return arg1 === "String" || arg2 === "String" ? { errorMessage: `Binary operator "${token}" does not support string operands.` } : { value: "Double" };
161
255
  case "-":
162
- return arg1 === "String" || arg2 === "String" ?
163
- { errorMessage: `${!arg2 ? "Unary" : "Binary"} operator "${token}" does not support string operands.` } :
164
- { value: "Double" };
256
+ return arg1 === "String" || arg2 === "String"
257
+ ? { errorMessage: `${!arg2 ? "Unary" : "Binary"} operator "${token}" does not support string operands.` }
258
+ : { value: "Double" };
165
259
  case "+":
166
260
  if (!arg2)
167
261
  return { value: arg1 };
@@ -1 +1 @@
1
- {"version":3,"file":"FormulaOperatorsProvider.js","sourceRoot":"","sources":["../../../src/formula/FormulaOperatorsProvider.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 type { IResult } from \"./IResult\";\nimport type { DataType, PossibleDataType } from \"./Types\";\n\nconst allOperators = [\"+\", \"-\", \"*\", \"%\", \"**\", \"/\", \"`\", \"~\", \"!\", \"@\", \"#\", \"$\", \"^\", \"&\", \"=\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"|\", \";\", \":\", \"'\", \"\\\"\", \"<\", \">\", \"?\", \"+=\", \"-=\", \"*=\", \"/=\", \"%=\", \"&=\", \"^=\", \"|=\", \"?=\", \"==\", \"!=\", \">=\", \"<=\", \"++\", \"--\", \"<<\", \">>\", \"&&\", \"||\", \"??\", \"?.\", \"**=\", \"<<=\", \">>=\", \"&&=\", \"||=\", \"??=\", \"===\", \"!==\", \">>>\", \">>>=\"];\n\nexport enum OperatorType {\n UnaryPlus,\n UnaryNegation,\n Exponentiation,\n Multiplication,\n Division,\n Remainder,\n Addition,\n Subtraction,\n LogicalNot,\n LessThan,\n LessThanOrEqual,\n GreaterThan,\n GreaterThanOrEqual,\n Equality,\n Inequality,\n LogicalAnd,\n LogicalOr,\n}\n\nexport enum OperatorAssociativity {\n Left,\n Right,\n}\n\nexport function isOperator(token: string): boolean {\n return allOperators.includes(token);\n}\n\nexport function getBinaryOperator(token: string): OperatorType | undefined {\n switch (token) {\n case \"**\": return OperatorType.Exponentiation;\n case \"*\": return OperatorType.Multiplication;\n case \"/\": return OperatorType.Division;\n case \"%\": return OperatorType.Remainder;\n case \"+\": return OperatorType.Addition;\n case \"-\": return OperatorType.Subtraction;\n case \"<\": return OperatorType.LessThan;\n case \"<=\": return OperatorType.LessThanOrEqual;\n case \">\": return OperatorType.GreaterThan;\n case \">=\": return OperatorType.GreaterThanOrEqual;\n case \"==\": return OperatorType.Equality;\n case \"!=\": return OperatorType.Inequality;\n case \"&&\": return OperatorType.LogicalAnd;\n case \"||\": return OperatorType.LogicalOr;\n default: return undefined;\n }\n}\n\nexport function getUnaryOperator(token: string): OperatorType | undefined {\n switch (token) {\n case \"+\": return OperatorType.UnaryPlus;\n case \"-\": return OperatorType.UnaryNegation;\n case \"!\": return OperatorType.LogicalNot;\n default: return undefined;\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence\nexport function getOperatorPrecedence(op: OperatorType | undefined): number {\n switch (op) {\n case OperatorType.UnaryPlus:\n case OperatorType.UnaryNegation:\n case OperatorType.LogicalNot:\n return 15;\n case OperatorType.Exponentiation:\n return 14;\n case OperatorType.Multiplication:\n case OperatorType.Division:\n case OperatorType.Remainder:\n return 13;\n case OperatorType.Subtraction:\n case OperatorType.Addition:\n return 12;\n case OperatorType.LessThan:\n case OperatorType.LessThanOrEqual:\n case OperatorType.GreaterThan:\n case OperatorType.GreaterThanOrEqual:\n return 10;\n case OperatorType.Equality:\n case OperatorType.Inequality:\n return 9;\n case OperatorType.LogicalAnd:\n return 5;\n case OperatorType.LogicalOr:\n return 4;\n default: return 1;\n }\n}\n\nexport function getOperatorAssociativity(op: OperatorType | undefined): number {\n switch (op) {\n case OperatorType.UnaryPlus:\n case OperatorType.UnaryNegation:\n case OperatorType.Exponentiation:\n case OperatorType.LogicalNot:\n return OperatorAssociativity.Right;\n case OperatorType.Multiplication:\n case OperatorType.Division:\n case OperatorType.Remainder:\n case OperatorType.Addition:\n case OperatorType.Subtraction:\n case OperatorType.LessThan:\n case OperatorType.LessThanOrEqual:\n case OperatorType.GreaterThan:\n case OperatorType.GreaterThanOrEqual:\n case OperatorType.Equality:\n case OperatorType.Inequality:\n case OperatorType.LogicalAnd:\n case OperatorType.LogicalOr:\n return OperatorAssociativity.Left;\n default:\n return OperatorAssociativity.Left;\n }\n}\n\nexport function isSupportedOperator(token: string): boolean {\n return undefined !== getUnaryOperator(token) || undefined !== getBinaryOperator(token);\n}\n\nexport function getOperatorArgumentCountBounds(token: string): [number, number] | undefined {\n switch (token) {\n case \"**\": return [2, 2];\n case \"*\": return [2, 2];\n case \"/\": return [2, 2];\n case \"%\": return [2, 2];\n case \"+\": return [1, 2];\n case \"-\": return [1, 2];\n case \"!\": return [1, 1];\n case \"<\": return [2, 2];\n case \"<=\": return [2, 2];\n case \">\": return [2, 2];\n case \">=\": return [2, 2];\n case \"==\": return [2, 2];\n case \"!=\": return [2, 2];\n case \"&&\": return [2, 2];\n case \"||\": return [2, 2];\n default: return undefined;\n }\n}\n\nexport function getOperatorReturnType(token: string, arg1: PossibleDataType, arg2?: PossibleDataType): IResult<DataType> {\n if (!arg2 && !getUnaryOperator(token))\n return { errorMessage: `Unary operator \"${token}\" is not supported.` };\n\n if (arg2 && !getBinaryOperator(token))\n return { errorMessage: `Binary operator \"${token}\" is not supported.` };\n\n if ((arg1 === \"Undefined\" || arg2 === \"Undefined\") && (token !== \"==\" && token !== \"!=\"))\n return { errorMessage: `${!arg2 ? \"Unary\" : \"Binary\"} operator \"${token}\" does not support null operands.` };\n\n switch (token) {\n case \"**\":\n case \"*\":\n case \"/\":\n case \"%\":\n return arg1 === \"String\" || arg2 === \"String\" ?\n { errorMessage: `Binary operator \"${token}\" does not support string operands.` } :\n { value: \"Double\" };\n case \"-\":\n return arg1 === \"String\" || arg2 === \"String\" ?\n { errorMessage: `${!arg2 ? \"Unary\" : \"Binary\"} operator \"${token}\" does not support string operands.` } :\n { value: \"Double\" };\n case \"+\":\n if (!arg2)\n return { value: arg1 as DataType };\n else\n return arg1 === \"String\" || arg2 === \"String\" ? { value: \"String\" } : { value: \"Double\" };\n case \"!\":\n case \"<\":\n case \"<=\":\n case \">\":\n case \">=\":\n case \"==\":\n case \"!=\":\n case \"&&\":\n case \"||\":\n return { value: \"Boolean\" };\n default:\n return { errorMessage: `Operator \"${token}\" is not supported.` };\n }\n}\n"]}
1
+ {"version":3,"file":"FormulaOperatorsProvider.js","sourceRoot":"","sources":["../../../src/formula/FormulaOperatorsProvider.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 type { IResult } from \"./IResult\";\nimport type { DataType, PossibleDataType } from \"./Types\";\n\nconst allOperators = [\n \"+\",\n \"-\",\n \"*\",\n \"%\",\n \"**\",\n \"/\",\n \"`\",\n \"~\",\n \"!\",\n \"@\",\n \"#\",\n \"$\",\n \"^\",\n \"&\",\n \"=\",\n \"[\",\n \"]\",\n \"{\",\n \"}\",\n \"\\\\\",\n \"|\",\n \";\",\n \":\",\n \"'\",\n '\"',\n \"<\",\n \">\",\n \"?\",\n \"+=\",\n \"-=\",\n \"*=\",\n \"/=\",\n \"%=\",\n \"&=\",\n \"^=\",\n \"|=\",\n \"?=\",\n \"==\",\n \"!=\",\n \">=\",\n \"<=\",\n \"++\",\n \"--\",\n \"<<\",\n \">>\",\n \"&&\",\n \"||\",\n \"??\",\n \"?.\",\n \"**=\",\n \"<<=\",\n \">>=\",\n \"&&=\",\n \"||=\",\n \"??=\",\n \"===\",\n \"!==\",\n \">>>\",\n \">>>=\",\n];\n\nexport enum OperatorType {\n UnaryPlus,\n UnaryNegation,\n Exponentiation,\n Multiplication,\n Division,\n Remainder,\n Addition,\n Subtraction,\n LogicalNot,\n LessThan,\n LessThanOrEqual,\n GreaterThan,\n GreaterThanOrEqual,\n Equality,\n Inequality,\n LogicalAnd,\n LogicalOr,\n}\n\nexport enum OperatorAssociativity {\n Left,\n Right,\n}\n\nexport function isOperator(token: string): boolean {\n return allOperators.includes(token);\n}\n\nexport function getBinaryOperator(token: string): OperatorType | undefined {\n switch (token) {\n case \"**\":\n return OperatorType.Exponentiation;\n case \"*\":\n return OperatorType.Multiplication;\n case \"/\":\n return OperatorType.Division;\n case \"%\":\n return OperatorType.Remainder;\n case \"+\":\n return OperatorType.Addition;\n case \"-\":\n return OperatorType.Subtraction;\n case \"<\":\n return OperatorType.LessThan;\n case \"<=\":\n return OperatorType.LessThanOrEqual;\n case \">\":\n return OperatorType.GreaterThan;\n case \">=\":\n return OperatorType.GreaterThanOrEqual;\n case \"==\":\n return OperatorType.Equality;\n case \"!=\":\n return OperatorType.Inequality;\n case \"&&\":\n return OperatorType.LogicalAnd;\n case \"||\":\n return OperatorType.LogicalOr;\n default:\n return undefined;\n }\n}\n\nexport function getUnaryOperator(token: string): OperatorType | undefined {\n switch (token) {\n case \"+\":\n return OperatorType.UnaryPlus;\n case \"-\":\n return OperatorType.UnaryNegation;\n case \"!\":\n return OperatorType.LogicalNot;\n default:\n return undefined;\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence\nexport function getOperatorPrecedence(op: OperatorType | undefined): number {\n switch (op) {\n case OperatorType.UnaryPlus:\n case OperatorType.UnaryNegation:\n case OperatorType.LogicalNot:\n return 15;\n case OperatorType.Exponentiation:\n return 14;\n case OperatorType.Multiplication:\n case OperatorType.Division:\n case OperatorType.Remainder:\n return 13;\n case OperatorType.Subtraction:\n case OperatorType.Addition:\n return 12;\n case OperatorType.LessThan:\n case OperatorType.LessThanOrEqual:\n case OperatorType.GreaterThan:\n case OperatorType.GreaterThanOrEqual:\n return 10;\n case OperatorType.Equality:\n case OperatorType.Inequality:\n return 9;\n case OperatorType.LogicalAnd:\n return 5;\n case OperatorType.LogicalOr:\n return 4;\n default:\n return 1;\n }\n}\n\nexport function getOperatorAssociativity(op: OperatorType | undefined): number {\n switch (op) {\n case OperatorType.UnaryPlus:\n case OperatorType.UnaryNegation:\n case OperatorType.Exponentiation:\n case OperatorType.LogicalNot:\n return OperatorAssociativity.Right;\n case OperatorType.Multiplication:\n case OperatorType.Division:\n case OperatorType.Remainder:\n case OperatorType.Addition:\n case OperatorType.Subtraction:\n case OperatorType.LessThan:\n case OperatorType.LessThanOrEqual:\n case OperatorType.GreaterThan:\n case OperatorType.GreaterThanOrEqual:\n case OperatorType.Equality:\n case OperatorType.Inequality:\n case OperatorType.LogicalAnd:\n case OperatorType.LogicalOr:\n return OperatorAssociativity.Left;\n default:\n return OperatorAssociativity.Left;\n }\n}\n\nexport function isSupportedOperator(token: string): boolean {\n return undefined !== getUnaryOperator(token) || undefined !== getBinaryOperator(token);\n}\n\nexport function getOperatorArgumentCountBounds(token: string): [number, number] | undefined {\n switch (token) {\n case \"**\":\n return [2, 2];\n case \"*\":\n return [2, 2];\n case \"/\":\n return [2, 2];\n case \"%\":\n return [2, 2];\n case \"+\":\n return [1, 2];\n case \"-\":\n return [1, 2];\n case \"!\":\n return [1, 1];\n case \"<\":\n return [2, 2];\n case \"<=\":\n return [2, 2];\n case \">\":\n return [2, 2];\n case \">=\":\n return [2, 2];\n case \"==\":\n return [2, 2];\n case \"!=\":\n return [2, 2];\n case \"&&\":\n return [2, 2];\n case \"||\":\n return [2, 2];\n default:\n return undefined;\n }\n}\n\nexport function getOperatorReturnType(token: string, arg1: PossibleDataType, arg2?: PossibleDataType): IResult<DataType> {\n if (!arg2 && !getUnaryOperator(token)) return { errorMessage: `Unary operator \"${token}\" is not supported.` };\n\n if (arg2 && !getBinaryOperator(token)) return { errorMessage: `Binary operator \"${token}\" is not supported.` };\n\n if ((arg1 === \"Undefined\" || arg2 === \"Undefined\") && token !== \"==\" && token !== \"!=\")\n return { errorMessage: `${!arg2 ? \"Unary\" : \"Binary\"} operator \"${token}\" does not support null operands.` };\n\n switch (token) {\n case \"**\":\n case \"*\":\n case \"/\":\n case \"%\":\n return arg1 === \"String\" || arg2 === \"String\" ? { errorMessage: `Binary operator \"${token}\" does not support string operands.` } : { value: \"Double\" };\n case \"-\":\n return arg1 === \"String\" || arg2 === \"String\"\n ? { errorMessage: `${!arg2 ? \"Unary\" : \"Binary\"} operator \"${token}\" does not support string operands.` }\n : { value: \"Double\" };\n case \"+\":\n if (!arg2) return { value: arg1 as DataType };\n else return arg1 === \"String\" || arg2 === \"String\" ? { value: \"String\" } : { value: \"Double\" };\n case \"!\":\n case \"<\":\n case \"<=\":\n case \">\":\n case \">=\":\n case \"==\":\n case \"!=\":\n case \"&&\":\n case \"||\":\n return { value: \"Boolean\" };\n default:\n return { errorMessage: `Operator \"${token}\" is not supported.` };\n }\n}\n"]}
@@ -2,22 +2,69 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.splitFormula = void 0;
4
4
  /*---------------------------------------------------------------------------------------------
5
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
- * See LICENSE.md in the project root for license terms and full copyright notice.
7
- *--------------------------------------------------------------------------------------------*/
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
8
  const InputStream_1 = require("./InputStream");
9
9
  const StringBuilder_1 = require("./StringBuilder");
10
10
  const Utils_1 = require("./Utils");
11
11
  const fourSymbolCombinations = [">>>="];
12
12
  const threeSymbolCombinations = ["**=", "<<=", ">>=", "&&=", "||=", "??=", "===", "!==", ">>>"];
13
- const twoSymbolCombinations = ["+=", "-=", "*=", "/=", "%=", "&=", "^=", "|=", "?=", "==", "!=", ">=", "<=", "++", "--", "**", "<<", ">>", "&&", "||", "??", "?."];
14
- const oneSymbolCombinations = ["~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "=", "+", "[", "]", "{", "}", "\\", "|", ";", ":", ",", ".", "<", ">", "/", "?"];
15
- const symbolCombinations = [
16
- fourSymbolCombinations,
17
- threeSymbolCombinations,
18
- twoSymbolCombinations,
19
- oneSymbolCombinations,
13
+ const twoSymbolCombinations = [
14
+ "+=",
15
+ "-=",
16
+ "*=",
17
+ "/=",
18
+ "%=",
19
+ "&=",
20
+ "^=",
21
+ "|=",
22
+ "?=",
23
+ "==",
24
+ "!=",
25
+ ">=",
26
+ "<=",
27
+ "++",
28
+ "--",
29
+ "**",
30
+ "<<",
31
+ ">>",
32
+ "&&",
33
+ "||",
34
+ "??",
35
+ "?.",
20
36
  ];
37
+ const oneSymbolCombinations = [
38
+ "~",
39
+ "!",
40
+ "@",
41
+ "#",
42
+ "$",
43
+ "%",
44
+ "^",
45
+ "&",
46
+ "*",
47
+ "(",
48
+ ")",
49
+ "-",
50
+ "=",
51
+ "+",
52
+ "[",
53
+ "]",
54
+ "{",
55
+ "}",
56
+ "\\",
57
+ "|",
58
+ ";",
59
+ ":",
60
+ ",",
61
+ ".",
62
+ "<",
63
+ ">",
64
+ "/",
65
+ "?",
66
+ ];
67
+ const symbolCombinations = [fourSymbolCombinations, threeSymbolCombinations, twoSymbolCombinations, oneSymbolCombinations];
21
68
  function parseScientificNotation(stream) {
22
69
  const notationBuilder = new StringBuilder_1.StringBuilder();
23
70
  const nextChar = stream.next;
@@ -65,9 +112,12 @@ function parseNumber(stream) {
65
112
  }
66
113
  function unescape(char) {
67
114
  switch (char) {
68
- case "n": return "\n";
69
- case "t": return "\t";
70
- default: return char;
115
+ case "n":
116
+ return "\n";
117
+ case "t":
118
+ return "\t";
119
+ default:
120
+ return char;
71
121
  }
72
122
  }
73
123
  function parseStringLiteral(stream) {
@@ -1 +1 @@
1
- {"version":3,"file":"FormulaSplitter.js","sourceRoot":"","sources":["../../../src/formula/FormulaSplitter.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 { InputStream } from \"./InputStream\";\nimport { StringBuilder } from \"./StringBuilder\";\nimport { isDecimalSeparator, isDigit, isLetterOrUnderscore, isStringDelimiter, isWhitespace } from \"./Utils\";\n\nconst fourSymbolCombinations = [\">>>=\"];\nconst threeSymbolCombinations = [\"**=\", \"<<=\", \">>=\", \"&&=\", \"||=\", \"??=\", \"===\", \"!==\", \">>>\"];\nconst twoSymbolCombinations = [\"+=\", \"-=\", \"*=\", \"/=\", \"%=\", \"&=\", \"^=\", \"|=\", \"?=\", \"==\", \"!=\", \">=\", \"<=\", \"++\", \"--\", \"**\", \"<<\", \">>\", \"&&\", \"||\", \"??\", \"?.\"];\nconst oneSymbolCombinations = [\"~\", \"!\", \"@\", \"#\", \"$\", \"%\", \"^\", \"&\", \"*\", \"(\", \")\", \"-\", \"=\", \"+\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"|\", \";\", \":\", \",\", \".\", \"<\", \">\", \"/\", \"?\"];\n\nconst symbolCombinations: string[][] = [\n fourSymbolCombinations,\n threeSymbolCombinations,\n twoSymbolCombinations,\n oneSymbolCombinations,\n];\n\nfunction parseScientificNotation(stream: InputStream) {\n const notationBuilder = new StringBuilder();\n\n const nextChar = stream.next;\n const afterEChar = stream.peek;\n if (isDigit(afterEChar) || afterEChar === \"+\" || afterEChar === \"-\") {\n notationBuilder.push(nextChar);\n notationBuilder.push(stream.next);\n while (isDigit(stream.peek)) {\n notationBuilder.push(stream.next);\n }\n if (isDecimalSeparator(stream.peek)) {\n throw new Error(\"The exponent in scientific notation must be an integer.\");\n }\n } else {\n stream.undo;\n }\n\n return notationBuilder.value;\n}\n\nfunction parseNumber(stream: InputStream): string {\n const numberBuilder = new StringBuilder(stream.current);\n let hasSeparator = isDecimalSeparator(stream.current);\n\n while (true) {\n const peekedChar = stream.peek;\n if (peekedChar.toLowerCase() === \"e\") {\n numberBuilder.push(parseScientificNotation(stream));\n break;\n }\n\n if (isDecimalSeparator(peekedChar)) {\n if (hasSeparator) {\n throw new Error(\"A number cannot have multiple decimal separators.\");\n }\n hasSeparator = true;\n numberBuilder.push(stream.next);\n continue;\n }\n\n if (isDigit(peekedChar)) {\n numberBuilder.push(stream.next);\n } else {\n break;\n }\n }\n\n return numberBuilder.value;\n}\n\nfunction unescape(char: string): string {\n switch (char) {\n case \"n\": return \"\\n\";\n case \"t\": return \"\\t\";\n default: return char;\n }\n}\n\nfunction parseStringLiteral(stream: InputStream): string {\n const stringBuilder = new StringBuilder(stream.current);\n const delimiter = stream.current;\n\n while (stream.next !== delimiter) {\n if (stream.isEOF) {\n throw new Error(`Missing closing string delimiter (${delimiter}).`);\n }\n\n stringBuilder.push(stream.current === \"\\\\\" ? unescape(stream.next) : stream.current);\n }\n\n stringBuilder.push(stream.current);\n return stringBuilder.value;\n}\n\nfunction parseVariable(stream: InputStream): string {\n const variableBuilder = new StringBuilder(stream.current);\n\n while (isLetterOrUnderscore(stream.peek) || isDigit(stream.peek)) {\n variableBuilder.push(stream.next);\n }\n\n if (isDecimalSeparator(stream.peek)) {\n throw new Error(\"Decimal separator in variable.\");\n }\n\n return variableBuilder.value;\n}\n\nfunction parseSymbolCombination(stream: InputStream): string {\n const symbolComboBuilder = new StringBuilder(stream.current);\n while (symbolComboBuilder.length < symbolCombinations.length && oneSymbolCombinations.includes(stream.peek)) {\n symbolComboBuilder.push(stream.next);\n }\n\n for (let i = symbolCombinations.length - symbolComboBuilder.length; i < symbolCombinations.length - 1; i++) {\n const symbolCombo = symbolComboBuilder.value;\n if (symbolCombinations[i].includes(symbolCombo)) {\n return symbolCombo;\n }\n symbolComboBuilder.pop();\n stream.undo;\n }\n\n return symbolComboBuilder.value;\n}\n\nfunction parseFormula(formula: string): string[] {\n const tokens: string[] = [];\n const stream = new InputStream(formula);\n while (!stream.isEOF) {\n const char = stream.next;\n if (isWhitespace(char)) {\n continue;\n }\n\n if (isDigit(char) || isDecimalSeparator(char)) {\n tokens.push(parseNumber(stream));\n } else if (isLetterOrUnderscore(char)) {\n tokens.push(parseVariable(stream));\n } else if (isStringDelimiter(char)) {\n tokens.push(parseStringLiteral(stream));\n } else if (oneSymbolCombinations.includes(char)) {\n tokens.push(parseSymbolCombination(stream));\n } else {\n throw new Error(`Unknown symbol received \"${char}\".`);\n }\n }\n\n return tokens;\n}\n\nexport function splitFormula(formula: string): string[] {\n return parseFormula(formula);\n}\n"]}
1
+ {"version":3,"file":"FormulaSplitter.js","sourceRoot":"","sources":["../../../src/formula/FormulaSplitter.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 { InputStream } from \"./InputStream\";\nimport { StringBuilder } from \"./StringBuilder\";\nimport { isDecimalSeparator, isDigit, isLetterOrUnderscore, isStringDelimiter, isWhitespace } from \"./Utils\";\n\nconst fourSymbolCombinations = [\">>>=\"];\nconst threeSymbolCombinations = [\"**=\", \"<<=\", \">>=\", \"&&=\", \"||=\", \"??=\", \"===\", \"!==\", \">>>\"];\nconst twoSymbolCombinations = [\n \"+=\",\n \"-=\",\n \"*=\",\n \"/=\",\n \"%=\",\n \"&=\",\n \"^=\",\n \"|=\",\n \"?=\",\n \"==\",\n \"!=\",\n \">=\",\n \"<=\",\n \"++\",\n \"--\",\n \"**\",\n \"<<\",\n \">>\",\n \"&&\",\n \"||\",\n \"??\",\n \"?.\",\n];\nconst oneSymbolCombinations = [\n \"~\",\n \"!\",\n \"@\",\n \"#\",\n \"$\",\n \"%\",\n \"^\",\n \"&\",\n \"*\",\n \"(\",\n \")\",\n \"-\",\n \"=\",\n \"+\",\n \"[\",\n \"]\",\n \"{\",\n \"}\",\n \"\\\\\",\n \"|\",\n \";\",\n \":\",\n \",\",\n \".\",\n \"<\",\n \">\",\n \"/\",\n \"?\",\n];\n\nconst symbolCombinations: string[][] = [fourSymbolCombinations, threeSymbolCombinations, twoSymbolCombinations, oneSymbolCombinations];\n\nfunction parseScientificNotation(stream: InputStream) {\n const notationBuilder = new StringBuilder();\n\n const nextChar = stream.next;\n const afterEChar = stream.peek;\n if (isDigit(afterEChar) || afterEChar === \"+\" || afterEChar === \"-\") {\n notationBuilder.push(nextChar);\n notationBuilder.push(stream.next);\n while (isDigit(stream.peek)) {\n notationBuilder.push(stream.next);\n }\n if (isDecimalSeparator(stream.peek)) {\n throw new Error(\"The exponent in scientific notation must be an integer.\");\n }\n } else {\n stream.undo;\n }\n\n return notationBuilder.value;\n}\n\nfunction parseNumber(stream: InputStream): string {\n const numberBuilder = new StringBuilder(stream.current);\n let hasSeparator = isDecimalSeparator(stream.current);\n\n while (true) {\n const peekedChar = stream.peek;\n if (peekedChar.toLowerCase() === \"e\") {\n numberBuilder.push(parseScientificNotation(stream));\n break;\n }\n\n if (isDecimalSeparator(peekedChar)) {\n if (hasSeparator) {\n throw new Error(\"A number cannot have multiple decimal separators.\");\n }\n hasSeparator = true;\n numberBuilder.push(stream.next);\n continue;\n }\n\n if (isDigit(peekedChar)) {\n numberBuilder.push(stream.next);\n } else {\n break;\n }\n }\n\n return numberBuilder.value;\n}\n\nfunction unescape(char: string): string {\n switch (char) {\n case \"n\":\n return \"\\n\";\n case \"t\":\n return \"\\t\";\n default:\n return char;\n }\n}\n\nfunction parseStringLiteral(stream: InputStream): string {\n const stringBuilder = new StringBuilder(stream.current);\n const delimiter = stream.current;\n\n while (stream.next !== delimiter) {\n if (stream.isEOF) {\n throw new Error(`Missing closing string delimiter (${delimiter}).`);\n }\n\n stringBuilder.push(stream.current === \"\\\\\" ? unescape(stream.next) : stream.current);\n }\n\n stringBuilder.push(stream.current);\n return stringBuilder.value;\n}\n\nfunction parseVariable(stream: InputStream): string {\n const variableBuilder = new StringBuilder(stream.current);\n\n while (isLetterOrUnderscore(stream.peek) || isDigit(stream.peek)) {\n variableBuilder.push(stream.next);\n }\n\n if (isDecimalSeparator(stream.peek)) {\n throw new Error(\"Decimal separator in variable.\");\n }\n\n return variableBuilder.value;\n}\n\nfunction parseSymbolCombination(stream: InputStream): string {\n const symbolComboBuilder = new StringBuilder(stream.current);\n while (symbolComboBuilder.length < symbolCombinations.length && oneSymbolCombinations.includes(stream.peek)) {\n symbolComboBuilder.push(stream.next);\n }\n\n for (let i = symbolCombinations.length - symbolComboBuilder.length; i < symbolCombinations.length - 1; i++) {\n const symbolCombo = symbolComboBuilder.value;\n if (symbolCombinations[i].includes(symbolCombo)) {\n return symbolCombo;\n }\n symbolComboBuilder.pop();\n stream.undo;\n }\n\n return symbolComboBuilder.value;\n}\n\nfunction parseFormula(formula: string): string[] {\n const tokens: string[] = [];\n const stream = new InputStream(formula);\n while (!stream.isEOF) {\n const char = stream.next;\n if (isWhitespace(char)) {\n continue;\n }\n\n if (isDigit(char) || isDecimalSeparator(char)) {\n tokens.push(parseNumber(stream));\n } else if (isLetterOrUnderscore(char)) {\n tokens.push(parseVariable(stream));\n } else if (isStringDelimiter(char)) {\n tokens.push(parseStringLiteral(stream));\n } else if (oneSymbolCombinations.includes(char)) {\n tokens.push(parseSymbolCombination(stream));\n } else {\n throw new Error(`Unknown symbol received \"${char}\".`);\n }\n }\n\n return tokens;\n}\n\nexport function splitFormula(formula: string): string[] {\n return parseFormula(formula);\n}\n"]}
@@ -2,24 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveTokensDataType = void 0;
4
4
  /*---------------------------------------------------------------------------------------------
5
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
- * See LICENSE.md in the project root for license terms and full copyright notice.
7
- *--------------------------------------------------------------------------------------------*/
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
8
  const FormulaFunctionProvider_1 = require("./FormulaFunctionProvider");
9
9
  const FormulaOperatorsProvider_1 = require("./FormulaOperatorsProvider");
10
10
  const InfixToPostfixConverter_1 = require("./InfixToPostfixConverter");
11
11
  const Stack_1 = require("./Stack");
12
12
  function isNumericalConstant(name) {
13
- return [
14
- "e",
15
- "ln2",
16
- "ln10",
17
- "log2e",
18
- "log10e",
19
- "pi",
20
- "sqrt1_2",
21
- "sqrt2",
22
- ].includes(name.toLowerCase());
13
+ return ["e", "ln2", "ln10", "log2e", "log10e", "pi", "sqrt1_2", "sqrt2"].includes(name.toLowerCase());
23
14
  }
24
15
  function resolveTokensDataType(formulaName, tokens, properties) {
25
16
  if (tokens.length === 0)
@@ -95,7 +86,9 @@ function resolveTokensDataType(formulaName, tokens, properties) {
95
86
  return { errorMessage: `Function "${token.value}" requires at least ${fnArgBounds[0]} arguments, but only 1 argument was given.` };
96
87
  }
97
88
  else {
98
- return { errorMessage: `Function "${token.value}" requires at least ${fnArgBounds[0]} arguments, but only ${token.argCount} arguments were given.` };
89
+ return {
90
+ errorMessage: `Function "${token.value}" requires at least ${fnArgBounds[0]} arguments, but only ${token.argCount} arguments were given.`,
91
+ };
99
92
  }
100
93
  }
101
94
  }
@@ -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 [\n \"e\",\n \"ln2\",\n \"ln10\",\n \"log2e\",\n \"log10e\",\n \"pi\",\n \"sqrt1_2\",\n \"sqrt2\",\n ].includes(name.toLowerCase());\n}\n\nexport function resolveTokensDataType(formulaName: string, tokens: Queue<Token>, properties: PropertyMap): IResult<DataType> {\n if (tokens.length === 0)\n 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)\n return { errorMessage: \"Formula cannot reference itself.\" };\n\n const prop = properties[token.value];\n if (!prop)\n 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))\n return { errorMessage: `Operator \"${token.value}\" is not supported.` };\n\n const operatorBounds = getOperatorArgumentCountBounds(token.value);\n if (!operatorBounds)\n return { errorMessage: `Operator \"${token.value}\" is not supported.` };\n\n if (operatorBounds[0] === 2 && token.argCount === 1)\n 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)\n operationResult = getOperatorReturnType(token.value, opArgs[0]);\n else if (opArgs.length === 2)\n operationResult = getOperatorReturnType(token.value, opArgs[0], opArgs[1]);\n else\n return { errorMessage: `Operator \"${token.value}\" does not support ${token.argCount} operands.` };\n\n if (operationResult.errorMessage)\n return { errorMessage: operationResult.errorMessage };\n else\n argStack.push(operationResult.value!);\n\n break;\n case TokenType.Function:\n const fnArg = getFunction(token.value);\n if (!fnArg)\n 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 { errorMessage: `Function \"${token.value}\" requires at least ${fnArgBounds[0]} arguments, but only ${token.argCount} arguments were given.` };\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)\n return { errorMessage: `Function \"${token.value}\" is invalid. ${functionResult.errorMessage}` };\n else\n 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\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":"IResult.js","sourceRoot":"","sources":["../../../src/formula/IResult.ts"],"names":[],"mappings":"","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/**\n * @public\n */\nexport interface IResult<T> {\n value?: T;\n errorMessage?: string;\n}\n"]}
1
+ {"version":3,"file":"IResult.js","sourceRoot":"","sources":["../../../src/formula/IResult.ts"],"names":[],"mappings":"","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/**\n * @public\n */\nexport interface IResult<T> {\n value?: T;\n errorMessage?: string;\n}\n"]}
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertInfixToPostfix = exports.TokenType = void 0;
4
4
  /*---------------------------------------------------------------------------------------------
5
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
- * See LICENSE.md in the project root for license terms and full copyright notice.
7
- *--------------------------------------------------------------------------------------------*/
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
8
  const FormulaFunctionProvider_1 = require("./FormulaFunctionProvider");
9
9
  const FormulaOperatorsProvider_1 = require("./FormulaOperatorsProvider");
10
10
  const Queue_1 = require("./Queue");
@@ -144,7 +144,7 @@ const addOperator = (ctx) => {
144
144
  if (o2.value === "(") {
145
145
  break;
146
146
  }
147
- const o2Unary = (o2.argCount === 0) || (o2.argCount === 1 && o2.argCountIncremented === true);
147
+ const o2Unary = o2.argCount === 0 || (o2.argCount === 1 && o2.argCountIncremented === true);
148
148
  const op2 = o2Unary ? (0, FormulaOperatorsProvider_1.getUnaryOperator)(o2.value) : (0, FormulaOperatorsProvider_1.getBinaryOperator)(o2.value);
149
149
  const o2Precedence = (0, FormulaOperatorsProvider_1.getOperatorPrecedence)(op2);
150
150
  if (!(o2Precedence > o1Precedence || (o2Precedence === o1Precedence && o1Associativity === FormulaOperatorsProvider_1.OperatorAssociativity.Left))) {