@itwin/grouping-mapping-widget 0.26.0 → 0.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) 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 +28 -8
  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.js.map +1 -1
  85. package/lib/cjs/components/Groups/hooks/useVisualization.js +2 -4
  86. package/lib/cjs/components/Groups/hooks/useVisualization.js.map +1 -1
  87. package/lib/cjs/components/Mappings/BlockingOverlay.js +3 -3
  88. package/lib/cjs/components/Mappings/BlockingOverlay.js.map +1 -1
  89. package/lib/cjs/components/Mappings/Editing/MappingAction.js +11 -15
  90. package/lib/cjs/components/Mappings/Editing/MappingAction.js.map +1 -1
  91. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.d.ts +1 -1
  92. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js +1 -1
  93. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
  94. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js +9 -6
  95. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  96. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js +3 -3
  97. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js.map +1 -1
  98. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js +3 -3
  99. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js.map +1 -1
  100. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js +3 -3
  101. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js.map +1 -1
  102. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js +3 -3
  103. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js.map +1 -1
  104. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.d.ts +1 -1
  105. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js +9 -9
  106. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
  107. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js +4 -4
  108. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  109. package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js +26 -30
  110. package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
  111. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.d.ts +1 -1
  112. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js +3 -3
  113. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  114. package/lib/cjs/components/Mappings/Import/SelectIModel.d.ts +1 -1
  115. package/lib/cjs/components/Mappings/Import/SelectIModel.js +5 -5
  116. package/lib/cjs/components/Mappings/Import/SelectIModel.js.map +1 -1
  117. package/lib/cjs/components/Mappings/Import/SelectITwin.js +2 -2
  118. package/lib/cjs/components/Mappings/Import/SelectITwin.js.map +1 -1
  119. package/lib/cjs/components/Mappings/Import/SelectITwin.scss +1 -1
  120. package/lib/cjs/components/Mappings/Import/SelectMappings.d.ts +1 -1
  121. package/lib/cjs/components/Mappings/Import/SelectMappings.js +7 -7
  122. package/lib/cjs/components/Mappings/Import/SelectMappings.js.map +1 -1
  123. package/lib/cjs/components/Mappings/MappingListItem.js.map +1 -1
  124. package/lib/cjs/components/Mappings/MappingViewActionGroup.d.ts +1 -1
  125. package/lib/cjs/components/Mappings/MappingViewActionGroup.js +6 -6
  126. package/lib/cjs/components/Mappings/MappingViewActionGroup.js.map +1 -1
  127. package/lib/cjs/components/Mappings/Mappings.js +3 -3
  128. package/lib/cjs/components/Mappings/Mappings.js.map +1 -1
  129. package/lib/cjs/components/Mappings/MappingsView.js +13 -15
  130. package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
  131. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js +3 -1
  132. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
  133. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -1
  134. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js +3 -3
  135. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
  136. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js +1 -1
  137. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js.map +1 -1
  138. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js +36 -18
  139. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  140. package/lib/cjs/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
  141. package/lib/cjs/components/Mappings/hooks/useRunExtraction.js +8 -6
  142. package/lib/cjs/components/Mappings/hooks/useRunExtraction.js.map +1 -1
  143. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +1 -1
  144. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +8 -8
  145. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  146. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +11 -13
  147. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  148. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +1 -1
  149. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +1 -1
  150. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +4 -6
  151. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  152. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +1 -1
  153. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js +27 -21
  154. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
  155. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.scss +1 -1
  156. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js +15 -11
  157. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js.map +1 -1
  158. package/lib/cjs/components/Properties/GroupColorToggle.js +4 -4
  159. package/lib/cjs/components/Properties/GroupColorToggle.js.map +1 -1
  160. package/lib/cjs/components/Properties/GroupInformationPanel.js +3 -3
  161. package/lib/cjs/components/Properties/GroupInformationPanel.js.map +1 -1
  162. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.d.ts +1 -1
  163. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js +20 -27
  164. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  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 +14 -12
  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.js +4 -4
  183. package/lib/cjs/components/Properties/PropertyMenu.js.map +1 -1
  184. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js +5 -5
  185. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  186. package/lib/cjs/components/Properties/PropertyNameCell.d.ts +1 -1
  187. package/lib/cjs/components/Properties/PropertyNameCell.js +4 -4
  188. package/lib/cjs/components/Properties/PropertyNameCell.js.map +1 -1
  189. package/lib/cjs/components/Properties/PropertyTable.js +5 -6
  190. package/lib/cjs/components/Properties/PropertyTable.js.map +1 -1
  191. package/lib/cjs/components/Properties/PropertyTableToolbar.d.ts +1 -1
  192. package/lib/cjs/components/Properties/PropertyTableToolbar.js +4 -4
  193. package/lib/cjs/components/Properties/PropertyTableToolbar.js.map +1 -1
  194. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js +3 -3
  195. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  196. package/lib/cjs/components/Properties/hooks/usePropertiesQuery.js.map +1 -1
  197. package/lib/cjs/components/Properties/hooks/useValidator.js +4 -4
  198. package/lib/cjs/components/Properties/hooks/useValidator.js.map +1 -1
  199. package/lib/cjs/components/SharedComponents/ActionPanel.d.ts +1 -1
  200. package/lib/cjs/components/SharedComponents/ActionPanel.js +9 -10
  201. package/lib/cjs/components/SharedComponents/ActionPanel.js.map +1 -1
  202. package/lib/cjs/components/SharedComponents/DeleteModal.d.ts +1 -1
  203. package/lib/cjs/components/SharedComponents/DeleteModal.js +9 -10
  204. package/lib/cjs/components/SharedComponents/DeleteModal.js.map +1 -1
  205. package/lib/cjs/components/SharedComponents/EmptyMessage.js +4 -4
  206. package/lib/cjs/components/SharedComponents/EmptyMessage.js.map +1 -1
  207. package/lib/cjs/components/SharedComponents/LoadingOverlay.js +4 -4
  208. package/lib/cjs/components/SharedComponents/LoadingOverlay.js.map +1 -1
  209. package/lib/cjs/components/SharedComponents/LoadingSpinner.js +3 -3
  210. package/lib/cjs/components/SharedComponents/LoadingSpinner.js.map +1 -1
  211. package/lib/cjs/components/SharedComponents/StatusIcon.js +3 -3
  212. package/lib/cjs/components/SharedComponents/StatusIcon.js.map +1 -1
  213. package/lib/cjs/components/context/ExtractionClientContext.js.map +1 -1
  214. package/lib/cjs/components/context/ExtractionStateJobContext.js +3 -3
  215. package/lib/cjs/components/context/ExtractionStateJobContext.js.map +1 -1
  216. package/lib/cjs/components/context/GroupHilitedElementsContext.js +3 -3
  217. package/lib/cjs/components/context/GroupHilitedElementsContext.js.map +1 -1
  218. package/lib/cjs/components/context/GroupingApiConfigContext.js.map +1 -1
  219. package/lib/cjs/components/context/GroupingMappingCustomUIContext.js +3 -3
  220. package/lib/cjs/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  221. package/lib/cjs/components/context/GroupsClientContext.js.map +1 -1
  222. package/lib/cjs/components/context/IModelsClientContext.js.map +1 -1
  223. package/lib/cjs/components/context/ITwinsClientContext.js +3 -3
  224. package/lib/cjs/components/context/ITwinsClientContext.js.map +1 -1
  225. package/lib/cjs/components/context/MappingClientContext.js.map +1 -1
  226. package/lib/cjs/components/context/PropertiesClientContext.js.map +1 -1
  227. package/lib/cjs/components/context/PropertiesGroupColorContext.js +3 -3
  228. package/lib/cjs/components/context/PropertiesGroupColorContext.js.map +1 -1
  229. package/lib/cjs/components/context/PropertyGridWrapperContext.js +3 -3
  230. package/lib/cjs/components/context/PropertyGridWrapperContext.js.map +1 -1
  231. package/lib/cjs/components/customUI/DefaultGroupingUI.js +3 -3
  232. package/lib/cjs/components/customUI/DefaultGroupingUI.js.map +1 -1
  233. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
  234. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js +13 -18
  235. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  236. package/lib/cjs/components/customUI/GroupingMappingCustomUI.js.map +1 -1
  237. package/lib/cjs/components/customUI/ManualGroupingCustomUI.d.ts +1 -1
  238. package/lib/cjs/components/customUI/ManualGroupingCustomUI.js +8 -8
  239. package/lib/cjs/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  240. package/lib/cjs/components/customUI/SearchGroupingCustomUI.d.ts +1 -1
  241. package/lib/cjs/components/customUI/SearchGroupingCustomUI.js +16 -45
  242. package/lib/cjs/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  243. package/lib/cjs/decorators/BboxDimensionsDecorator.js +3 -10
  244. package/lib/cjs/decorators/BboxDimensionsDecorator.js.map +1 -1
  245. package/lib/cjs/formula/FormulaDataTypeResolver.js +3 -3
  246. package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
  247. package/lib/cjs/formula/FormulaFunctionProvider.js +146 -65
  248. package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
  249. package/lib/cjs/formula/FormulaOperatorsProvider.js +138 -44
  250. package/lib/cjs/formula/FormulaOperatorsProvider.js.map +1 -1
  251. package/lib/cjs/formula/FormulaSplitter.js +63 -13
  252. package/lib/cjs/formula/FormulaSplitter.js.map +1 -1
  253. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js +7 -14
  254. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js.map +1 -1
  255. package/lib/cjs/formula/IResult.js.map +1 -1
  256. package/lib/cjs/formula/InfixToPostfixConverter.js +4 -4
  257. package/lib/cjs/formula/InfixToPostfixConverter.js.map +1 -1
  258. package/lib/cjs/formula/InputStream.js +3 -3
  259. package/lib/cjs/formula/InputStream.js.map +1 -1
  260. package/lib/cjs/formula/ParenthesisValidator.js +3 -3
  261. package/lib/cjs/formula/ParenthesisValidator.js.map +1 -1
  262. package/lib/cjs/formula/Queue.js +3 -3
  263. package/lib/cjs/formula/Queue.js.map +1 -1
  264. package/lib/cjs/formula/Stack.js +3 -3
  265. package/lib/cjs/formula/Stack.js.map +1 -1
  266. package/lib/cjs/formula/StringBuilder.js +3 -3
  267. package/lib/cjs/formula/StringBuilder.js.map +1 -1
  268. package/lib/cjs/formula/Types.js.map +1 -1
  269. package/lib/cjs/formula/Utils.js +4 -4
  270. package/lib/cjs/formula/Utils.js.map +1 -1
  271. package/lib/cjs/grouping-mapping-widget.d.ts +4 -4
  272. package/lib/cjs/grouping-mapping-widget.js +3 -3
  273. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  274. package/lib/cjs/test/GroupPropertyUtils.test.js +27 -26
  275. package/lib/cjs/test/GroupPropertyUtils.test.js.map +1 -1
  276. package/lib/cjs/test/GroupingMappingCustomUI.test.js +4 -6
  277. package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
  278. package/lib/cjs/test/MockFactory.js +3 -3
  279. package/lib/cjs/test/MockFactory.js.map +1 -1
  280. package/lib/cjs/test/PropertyFieldsHelpers.js +3 -3
  281. package/lib/cjs/test/PropertyFieldsHelpers.js.map +1 -1
  282. package/lib/cjs/test/QueryBuilder.test.js +3 -3
  283. package/lib/cjs/test/QueryBuilder.test.js.map +1 -1
  284. package/lib/cjs/test/QueryBuilder.testdata.js +3 -3
  285. package/lib/cjs/test/QueryBuilder.testdata.js.map +1 -1
  286. package/lib/cjs/test/QueryBuilderTestData.js.map +1 -1
  287. package/lib/cjs/test/WidgetHeader.test.js +3 -3
  288. package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
  289. package/lib/cjs/test/test-utils.js +4 -4
  290. package/lib/cjs/test/test-utils.js.map +1 -1
  291. package/lib/esm/WidgetShell/GroupingMapping.js +3 -5
  292. package/lib/esm/WidgetShell/GroupingMapping.js.map +1 -1
  293. package/lib/esm/WidgetShell/GroupingMappingContent.js +4 -4
  294. package/lib/esm/WidgetShell/GroupingMappingContent.js.map +1 -1
  295. package/lib/esm/WidgetShell/GroupingMappingHeader.d.ts +1 -1
  296. package/lib/esm/WidgetShell/GroupingMappingHeader.js +5 -5
  297. package/lib/esm/WidgetShell/GroupingMappingHeader.js.map +1 -1
  298. package/lib/esm/WidgetShell/GroupingMappingWidget.js +2 -4
  299. package/lib/esm/WidgetShell/GroupingMappingWidget.js.map +1 -1
  300. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js +28 -8
  301. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  302. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.d.ts +1 -1
  303. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.js +7 -7
  304. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.js.map +1 -1
  305. package/lib/esm/common/hooks/useIsMounted.js +3 -3
  306. package/lib/esm/common/hooks/useIsMounted.js.map +1 -1
  307. package/lib/esm/common/hooks/useMemoizedCollectionPick.js +3 -3
  308. package/lib/esm/common/hooks/useMemoizedCollectionPick.js.map +1 -1
  309. package/lib/esm/common/utils.js +3 -3
  310. package/lib/esm/common/utils.js.map +1 -1
  311. package/lib/esm/common/viewerUtils.js +2 -2
  312. package/lib/esm/common/viewerUtils.js.map +1 -1
  313. package/lib/esm/components/Constants.js +4 -4
  314. package/lib/esm/components/Constants.js.map +1 -1
  315. package/lib/esm/components/GroupingMappingContext.js +14 -5
  316. package/lib/esm/components/GroupingMappingContext.js.map +1 -1
  317. package/lib/esm/components/Groups/Editing/GroupAction.js +8 -10
  318. package/lib/esm/components/Groups/Editing/GroupAction.js.map +1 -1
  319. package/lib/esm/components/Groups/Editing/GroupDetails.d.ts +1 -1
  320. package/lib/esm/components/Groups/Editing/GroupDetails.js +5 -7
  321. package/lib/esm/components/Groups/Editing/GroupDetails.js.map +1 -1
  322. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.d.ts +1 -1
  323. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.js +4 -4
  324. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.js.map +1 -1
  325. package/lib/esm/components/Groups/Editing/GroupDetailsStep.js +4 -4
  326. package/lib/esm/components/Groups/Editing/GroupDetailsStep.js.map +1 -1
  327. package/lib/esm/components/Groups/GroupColorLegend.js +3 -3
  328. package/lib/esm/components/Groups/GroupColorLegend.js.map +1 -1
  329. package/lib/esm/components/Groups/GroupListItem.js +3 -4
  330. package/lib/esm/components/Groups/GroupListItem.js.map +1 -1
  331. package/lib/esm/components/Groups/GroupListItem.scss +2 -2
  332. package/lib/esm/components/Groups/GroupMenuActions.js +17 -6
  333. package/lib/esm/components/Groups/GroupMenuActions.js.map +1 -1
  334. package/lib/esm/components/Groups/GroupOverlapProgressBar.js.map +1 -1
  335. package/lib/esm/components/Groups/Groups.js +3 -3
  336. package/lib/esm/components/Groups/Groups.js.map +1 -1
  337. package/lib/esm/components/Groups/GroupsAddButton.d.ts +1 -1
  338. package/lib/esm/components/Groups/GroupsAddButton.js +4 -4
  339. package/lib/esm/components/Groups/GroupsAddButton.js.map +1 -1
  340. package/lib/esm/components/Groups/GroupsAddButton.scss +1 -1
  341. package/lib/esm/components/Groups/GroupsShowHideButtons.d.ts +1 -1
  342. package/lib/esm/components/Groups/GroupsShowHideButtons.js +2 -2
  343. package/lib/esm/components/Groups/GroupsShowHideButtons.js.map +1 -1
  344. package/lib/esm/components/Groups/GroupsView.js +10 -12
  345. package/lib/esm/components/Groups/GroupsView.js.map +1 -1
  346. package/lib/esm/components/Groups/GroupsView.scss +1 -1
  347. package/lib/esm/components/Groups/GroupsVisualization.js +21 -22
  348. package/lib/esm/components/Groups/GroupsVisualization.js.map +1 -1
  349. package/lib/esm/components/Groups/GroupsVisualizationActions.js +4 -4
  350. package/lib/esm/components/Groups/GroupsVisualizationActions.js.map +1 -1
  351. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.d.ts +1 -1
  352. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js +5 -5
  353. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
  354. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.scss +7 -7
  355. package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js +13 -35
  356. package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js.map +1 -1
  357. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderActionPanel.js +4 -4
  358. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderActionPanel.js.map +1 -1
  359. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +1 -1
  360. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js +4 -4
  361. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
  362. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderStep.js +4 -4
  363. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderStep.js.map +1 -1
  364. package/lib/esm/components/Groups/ToggleGroupVisibility.js +3 -3
  365. package/lib/esm/components/Groups/ToggleGroupVisibility.js.map +1 -1
  366. package/lib/esm/components/Groups/groupsHelpers.js +9 -5
  367. package/lib/esm/components/Groups/groupsHelpers.js.map +1 -1
  368. package/lib/esm/components/Groups/hooks/useFetchGroups.js.map +1 -1
  369. package/lib/esm/components/Groups/hooks/useGroupsOperations.d.ts +1 -1
  370. package/lib/esm/components/Groups/hooks/useGroupsOperations.js +5 -5
  371. package/lib/esm/components/Groups/hooks/useGroupsOperations.js.map +1 -1
  372. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
  373. package/lib/esm/components/Groups/hooks/useVisualization.js +3 -5
  374. package/lib/esm/components/Groups/hooks/useVisualization.js.map +1 -1
  375. package/lib/esm/components/Mappings/BlockingOverlay.js +3 -3
  376. package/lib/esm/components/Mappings/BlockingOverlay.js.map +1 -1
  377. package/lib/esm/components/Mappings/Editing/MappingAction.js +11 -15
  378. package/lib/esm/components/Mappings/Editing/MappingAction.js.map +1 -1
  379. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.d.ts +1 -1
  380. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.js +1 -1
  381. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
  382. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js +9 -6
  383. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  384. package/lib/esm/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js +3 -3
  385. package/lib/esm/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js.map +1 -1
  386. package/lib/esm/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js +3 -3
  387. package/lib/esm/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js.map +1 -1
  388. package/lib/esm/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js +3 -3
  389. package/lib/esm/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js.map +1 -1
  390. package/lib/esm/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js +3 -3
  391. package/lib/esm/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js.map +1 -1
  392. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.d.ts +1 -1
  393. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.js +9 -9
  394. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
  395. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js +4 -4
  396. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  397. package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js +27 -31
  398. package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
  399. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.d.ts +1 -1
  400. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js +3 -3
  401. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  402. package/lib/esm/components/Mappings/Import/SelectIModel.d.ts +1 -1
  403. package/lib/esm/components/Mappings/Import/SelectIModel.js +5 -5
  404. package/lib/esm/components/Mappings/Import/SelectIModel.js.map +1 -1
  405. package/lib/esm/components/Mappings/Import/SelectITwin.js +2 -2
  406. package/lib/esm/components/Mappings/Import/SelectITwin.js.map +1 -1
  407. package/lib/esm/components/Mappings/Import/SelectITwin.scss +1 -1
  408. package/lib/esm/components/Mappings/Import/SelectMappings.d.ts +1 -1
  409. package/lib/esm/components/Mappings/Import/SelectMappings.js +8 -8
  410. package/lib/esm/components/Mappings/Import/SelectMappings.js.map +1 -1
  411. package/lib/esm/components/Mappings/MappingListItem.js.map +1 -1
  412. package/lib/esm/components/Mappings/MappingViewActionGroup.d.ts +1 -1
  413. package/lib/esm/components/Mappings/MappingViewActionGroup.js +8 -8
  414. package/lib/esm/components/Mappings/MappingViewActionGroup.js.map +1 -1
  415. package/lib/esm/components/Mappings/Mappings.js +3 -3
  416. package/lib/esm/components/Mappings/Mappings.js.map +1 -1
  417. package/lib/esm/components/Mappings/MappingsView.js +15 -17
  418. package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
  419. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js +3 -1
  420. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
  421. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -1
  422. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js +3 -3
  423. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
  424. package/lib/esm/components/Mappings/hooks/useFetchMappings.js +1 -1
  425. package/lib/esm/components/Mappings/hooks/useFetchMappings.js.map +1 -1
  426. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js +36 -18
  427. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  428. package/lib/esm/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
  429. package/lib/esm/components/Mappings/hooks/useRunExtraction.js +8 -6
  430. package/lib/esm/components/Mappings/hooks/useRunExtraction.js.map +1 -1
  431. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +1 -1
  432. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +9 -9
  433. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  434. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +13 -15
  435. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  436. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +2 -2
  437. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +1 -1
  438. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +5 -7
  439. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  440. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +1 -1
  441. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js +28 -22
  442. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
  443. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.scss +1 -1
  444. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js +17 -13
  445. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js.map +1 -1
  446. package/lib/esm/components/Properties/GroupColorToggle.js +4 -4
  447. package/lib/esm/components/Properties/GroupColorToggle.js.map +1 -1
  448. package/lib/esm/components/Properties/GroupInformationPanel.js +3 -3
  449. package/lib/esm/components/Properties/GroupInformationPanel.js.map +1 -1
  450. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.d.ts +1 -1
  451. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js +22 -29
  452. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  453. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.d.ts +1 -1
  454. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.js +5 -5
  455. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.js.map +1 -1
  456. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.d.ts +1 -1
  457. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js +16 -14
  458. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  459. package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js +21 -40
  460. package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
  461. package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +26 -35
  462. package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
  463. package/lib/esm/components/Properties/GroupProperties/SaveModal.d.ts +1 -1
  464. package/lib/esm/components/Properties/GroupProperties/SaveModal.js +8 -8
  465. package/lib/esm/components/Properties/GroupProperties/SaveModal.js.map +1 -1
  466. package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.js +4 -4
  467. package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
  468. package/lib/esm/components/Properties/PropertyAction.js +9 -21
  469. package/lib/esm/components/Properties/PropertyAction.js.map +1 -1
  470. package/lib/esm/components/Properties/PropertyMenu.js +4 -4
  471. package/lib/esm/components/Properties/PropertyMenu.js.map +1 -1
  472. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js +5 -5
  473. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  474. package/lib/esm/components/Properties/PropertyNameCell.d.ts +1 -1
  475. package/lib/esm/components/Properties/PropertyNameCell.js +4 -4
  476. package/lib/esm/components/Properties/PropertyNameCell.js.map +1 -1
  477. package/lib/esm/components/Properties/PropertyTable.js +5 -6
  478. package/lib/esm/components/Properties/PropertyTable.js.map +1 -1
  479. package/lib/esm/components/Properties/PropertyTableToolbar.d.ts +1 -1
  480. package/lib/esm/components/Properties/PropertyTableToolbar.js +4 -4
  481. package/lib/esm/components/Properties/PropertyTableToolbar.js.map +1 -1
  482. package/lib/esm/components/Properties/hooks/useFormulaValidation.js +3 -3
  483. package/lib/esm/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  484. package/lib/esm/components/Properties/hooks/usePropertiesQuery.js.map +1 -1
  485. package/lib/esm/components/Properties/hooks/useValidator.js +4 -4
  486. package/lib/esm/components/Properties/hooks/useValidator.js.map +1 -1
  487. package/lib/esm/components/SharedComponents/ActionPanel.d.ts +1 -1
  488. package/lib/esm/components/SharedComponents/ActionPanel.js +9 -10
  489. package/lib/esm/components/SharedComponents/ActionPanel.js.map +1 -1
  490. package/lib/esm/components/SharedComponents/DeleteModal.d.ts +1 -1
  491. package/lib/esm/components/SharedComponents/DeleteModal.js +10 -11
  492. package/lib/esm/components/SharedComponents/DeleteModal.js.map +1 -1
  493. package/lib/esm/components/SharedComponents/EmptyMessage.js +4 -4
  494. package/lib/esm/components/SharedComponents/EmptyMessage.js.map +1 -1
  495. package/lib/esm/components/SharedComponents/LoadingOverlay.js +4 -4
  496. package/lib/esm/components/SharedComponents/LoadingOverlay.js.map +1 -1
  497. package/lib/esm/components/SharedComponents/LoadingSpinner.js +3 -3
  498. package/lib/esm/components/SharedComponents/LoadingSpinner.js.map +1 -1
  499. package/lib/esm/components/SharedComponents/StatusIcon.js +3 -3
  500. package/lib/esm/components/SharedComponents/StatusIcon.js.map +1 -1
  501. package/lib/esm/components/context/ExtractionClientContext.js.map +1 -1
  502. package/lib/esm/components/context/ExtractionStateJobContext.js +3 -3
  503. package/lib/esm/components/context/ExtractionStateJobContext.js.map +1 -1
  504. package/lib/esm/components/context/GroupHilitedElementsContext.js +3 -3
  505. package/lib/esm/components/context/GroupHilitedElementsContext.js.map +1 -1
  506. package/lib/esm/components/context/GroupingApiConfigContext.js.map +1 -1
  507. package/lib/esm/components/context/GroupingMappingCustomUIContext.js +3 -3
  508. package/lib/esm/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  509. package/lib/esm/components/context/GroupsClientContext.js.map +1 -1
  510. package/lib/esm/components/context/IModelsClientContext.js.map +1 -1
  511. package/lib/esm/components/context/ITwinsClientContext.js +3 -3
  512. package/lib/esm/components/context/ITwinsClientContext.js.map +1 -1
  513. package/lib/esm/components/context/MappingClientContext.js.map +1 -1
  514. package/lib/esm/components/context/PropertiesClientContext.js.map +1 -1
  515. package/lib/esm/components/context/PropertiesGroupColorContext.js +3 -3
  516. package/lib/esm/components/context/PropertiesGroupColorContext.js.map +1 -1
  517. package/lib/esm/components/context/PropertyGridWrapperContext.js +3 -3
  518. package/lib/esm/components/context/PropertyGridWrapperContext.js.map +1 -1
  519. package/lib/esm/components/customUI/DefaultGroupingUI.js +3 -3
  520. package/lib/esm/components/customUI/DefaultGroupingUI.js.map +1 -1
  521. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
  522. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js +14 -19
  523. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  524. package/lib/esm/components/customUI/GroupingMappingCustomUI.js.map +1 -1
  525. package/lib/esm/components/customUI/ManualGroupingCustomUI.d.ts +1 -1
  526. package/lib/esm/components/customUI/ManualGroupingCustomUI.js +8 -8
  527. package/lib/esm/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  528. package/lib/esm/components/customUI/SearchGroupingCustomUI.d.ts +1 -1
  529. package/lib/esm/components/customUI/SearchGroupingCustomUI.js +16 -45
  530. package/lib/esm/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  531. package/lib/esm/decorators/BboxDimensionsDecorator.js +5 -12
  532. package/lib/esm/decorators/BboxDimensionsDecorator.js.map +1 -1
  533. package/lib/esm/formula/FormulaDataTypeResolver.js +3 -3
  534. package/lib/esm/formula/FormulaDataTypeResolver.js.map +1 -1
  535. package/lib/esm/formula/FormulaFunctionProvider.js +146 -65
  536. package/lib/esm/formula/FormulaFunctionProvider.js.map +1 -1
  537. package/lib/esm/formula/FormulaOperatorsProvider.js +138 -44
  538. package/lib/esm/formula/FormulaOperatorsProvider.js.map +1 -1
  539. package/lib/esm/formula/FormulaSplitter.js +63 -13
  540. package/lib/esm/formula/FormulaSplitter.js.map +1 -1
  541. package/lib/esm/formula/FormulaTokensDataTypeResolver.js +7 -14
  542. package/lib/esm/formula/FormulaTokensDataTypeResolver.js.map +1 -1
  543. package/lib/esm/formula/IResult.js.map +1 -1
  544. package/lib/esm/formula/InfixToPostfixConverter.js +5 -5
  545. package/lib/esm/formula/InfixToPostfixConverter.js.map +1 -1
  546. package/lib/esm/formula/InputStream.js +3 -3
  547. package/lib/esm/formula/InputStream.js.map +1 -1
  548. package/lib/esm/formula/ParenthesisValidator.js +3 -3
  549. package/lib/esm/formula/ParenthesisValidator.js.map +1 -1
  550. package/lib/esm/formula/Queue.js +3 -3
  551. package/lib/esm/formula/Queue.js.map +1 -1
  552. package/lib/esm/formula/Stack.js +3 -3
  553. package/lib/esm/formula/Stack.js.map +1 -1
  554. package/lib/esm/formula/StringBuilder.js +3 -3
  555. package/lib/esm/formula/StringBuilder.js.map +1 -1
  556. package/lib/esm/formula/Types.js.map +1 -1
  557. package/lib/esm/formula/Utils.js +4 -4
  558. package/lib/esm/formula/Utils.js.map +1 -1
  559. package/lib/esm/grouping-mapping-widget.d.ts +4 -4
  560. package/lib/esm/grouping-mapping-widget.js +7 -7
  561. package/lib/esm/grouping-mapping-widget.js.map +1 -1
  562. package/lib/esm/test/GroupPropertyUtils.test.js +28 -27
  563. package/lib/esm/test/GroupPropertyUtils.test.js.map +1 -1
  564. package/lib/esm/test/GroupingMappingCustomUI.test.js +4 -6
  565. package/lib/esm/test/GroupingMappingCustomUI.test.js.map +1 -1
  566. package/lib/esm/test/MockFactory.js +3 -3
  567. package/lib/esm/test/MockFactory.js.map +1 -1
  568. package/lib/esm/test/PropertyFieldsHelpers.js +3 -3
  569. package/lib/esm/test/PropertyFieldsHelpers.js.map +1 -1
  570. package/lib/esm/test/QueryBuilder.test.js +3 -3
  571. package/lib/esm/test/QueryBuilder.test.js.map +1 -1
  572. package/lib/esm/test/QueryBuilder.testdata.js +3 -3
  573. package/lib/esm/test/QueryBuilder.testdata.js.map +1 -1
  574. package/lib/esm/test/QueryBuilderTestData.js.map +1 -1
  575. package/lib/esm/test/WidgetHeader.test.js +3 -3
  576. package/lib/esm/test/WidgetHeader.test.js.map +1 -1
  577. package/lib/esm/test/test-utils.js +4 -4
  578. package/lib/esm/test/test-utils.js.map +1 -1
  579. package/package.json +8 -4
@@ -6,7 +6,10 @@ function isValidArgument(arg, argPos, expectedArg) {
6
6
  return { isValid, invalidReason: isValid ? undefined : `Expected ${formatNumericalPositionString(argPos + 1)} argument to not be null.` };
7
7
  }
8
8
  isValid = expectedArg.canBeAny || arg === expectedArg.dataType;
9
- return { isValid, invalidReason: isValid ? undefined : `Expected ${formatNumericalPositionString(argPos + 1)} argument to be of type ${expectedArg.dataType}.` };
9
+ return {
10
+ isValid,
11
+ invalidReason: isValid ? undefined : `Expected ${formatNumericalPositionString(argPos + 1)} argument to be of type ${expectedArg.dataType}.`,
12
+ };
10
13
  }
11
14
  function validateArgumentsWithTypeMatching() {
12
15
  let matchType = "Undefined";
@@ -16,7 +19,7 @@ function validateArgumentsWithTypeMatching() {
16
19
  const validation = isValidArgument(arg, argPos, expectedArg);
17
20
  if (!validation.isValid)
18
21
  return validation;
19
- const isValid = (matchType === "Undefined" || arg === matchType || (arg === "Undefined" && !!expectedArg.canBeUndefined));
22
+ const isValid = matchType === "Undefined" || arg === matchType || (arg === "Undefined" && !!expectedArg.canBeUndefined);
20
23
  if (matchType !== "Undefined" && !isValid)
21
24
  return {
22
25
  isValid,
@@ -52,81 +55,159 @@ export function getFormulaFunctionReturnType(func, args) {
52
55
  }
53
56
  function getNumericalFunction(name) {
54
57
  switch (name) {
55
- case "abs": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
56
- case "acos": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
57
- case "acosh": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
58
- case "asin": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
59
- case "asinh": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
60
- case "atan": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
61
- case "atanh": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
62
- case "atan2": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
63
- case "cbrt": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
64
- case "ceil": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
65
- case "clz32": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
66
- case "cos": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
67
- case "cosh": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
68
- case "exp": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
69
- case "expm1": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
70
- case "floor": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
71
- case "fround": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
72
- case "hypot": return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
73
- case "imul": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
74
- case "log": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
75
- case "log1p": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
76
- case "log10": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
77
- case "log2": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
78
- case "max": return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
79
- case "min": return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
80
- case "pow": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
81
- case "random": return { argumentCountBounds: [0, 0], expectedArguments: [], returnType: "Double" };
82
- case "round": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
83
- case "sign": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
84
- case "sin": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
85
- case "sinh": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
86
- case "sqrt": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
87
- case "tan": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
88
- case "tanh": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
89
- case "trunc": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
90
- case "tonumber": return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: "Double" };
91
- default: return undefined;
58
+ case "abs":
59
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
60
+ case "acos":
61
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
62
+ case "acosh":
63
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
64
+ case "asin":
65
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
66
+ case "asinh":
67
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
68
+ case "atan":
69
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
70
+ case "atanh":
71
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
72
+ case "atan2":
73
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
74
+ case "cbrt":
75
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
76
+ case "ceil":
77
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
78
+ case "clz32":
79
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
80
+ case "cos":
81
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
82
+ case "cosh":
83
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
84
+ case "exp":
85
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
86
+ case "expm1":
87
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
88
+ case "floor":
89
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
90
+ case "fround":
91
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
92
+ case "hypot":
93
+ return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
94
+ case "imul":
95
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
96
+ case "log":
97
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
98
+ case "log1p":
99
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
100
+ case "log10":
101
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
102
+ case "log2":
103
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
104
+ case "max":
105
+ return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
106
+ case "min":
107
+ return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
108
+ case "pow":
109
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "Double" }, { dataType: "Double" }], returnType: "Double" };
110
+ case "random":
111
+ return { argumentCountBounds: [0, 0], expectedArguments: [], returnType: "Double" };
112
+ case "round":
113
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
114
+ case "sign":
115
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
116
+ case "sin":
117
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
118
+ case "sinh":
119
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
120
+ case "sqrt":
121
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
122
+ case "tan":
123
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
124
+ case "tanh":
125
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
126
+ case "trunc":
127
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "Double" }], returnType: "Double" };
128
+ case "tonumber":
129
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: "Double" };
130
+ default:
131
+ return undefined;
92
132
  }
93
133
  }
94
134
  function getStringFunction(name) {
95
135
  switch (name) {
96
- case "charat": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String" }, { dataType: "Double" }], returnType: "String" };
97
- case "concat": return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: "String" }, { dataType: "String" }], returnType: "String" };
98
- case "padend": return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: "String" }, { dataType: "Double" }, { dataType: "String" }], returnType: "String" };
99
- case "padstart": return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: "String" }, { dataType: "Double" }, { dataType: "String" }], returnType: "String" };
100
- case "substring": return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: "String" }, { dataType: "Double" }, { dataType: "Double" }], returnType: "String" };
101
- case "indexof": return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: "String" }, { dataType: "String" }, { dataType: "Double" }], returnType: "Double" };
102
- case "tolowercase": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
103
- case "touppercase": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
104
- case "trim": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
105
- case "trimend": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
106
- case "trimstart": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
107
- case "tostring": return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: "String" };
108
- default: return undefined;
136
+ case "charat":
137
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String" }, { dataType: "Double" }], returnType: "String" };
138
+ case "concat":
139
+ return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: "String" }, { dataType: "String" }], returnType: "String" };
140
+ case "padend":
141
+ return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: "String" }, { dataType: "Double" }, { dataType: "String" }], returnType: "String" };
142
+ case "padstart":
143
+ return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: "String" }, { dataType: "Double" }, { dataType: "String" }], returnType: "String" };
144
+ case "substring":
145
+ return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: "String" }, { dataType: "Double" }, { dataType: "Double" }], returnType: "String" };
146
+ case "indexof":
147
+ return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: "String" }, { dataType: "String" }, { dataType: "Double" }], returnType: "Double" };
148
+ case "tolowercase":
149
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
150
+ case "touppercase":
151
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
152
+ case "trim":
153
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
154
+ case "trimend":
155
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
156
+ case "trimstart":
157
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: "String" }], returnType: "String" };
158
+ case "tostring":
159
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: "String" };
160
+ default:
161
+ return undefined;
109
162
  }
110
163
  }
111
164
  function getConditionalFunction(name) {
112
165
  switch (name) {
113
- case "if": return { argumentCountBounds: [3, 3], expectedArguments: [{ dataType: "Boolean" }, { canBeAny: true, canBeUndefined: true }, { canBeAny: true, canBeUndefined: true }], typesMatchFromIndex: 1, isreturnTypeFromTypeMatch: true };
114
- case "ifnull": return { argumentCountBounds: [2, 2], expectedArguments: [{ canBeAny: true, canBeUndefined: true }, { canBeAny: true }], typesMatchFromIndex: 0, isreturnTypeFromTypeMatch: true };
115
- case "ifnotnull": return { argumentCountBounds: [2, 2], expectedArguments: [{ canBeAny: true, canBeUndefined: true }, { canBeAny: true }], typesMatchFromIndex: 0, isreturnTypeFromTypeMatch: true };
116
- case "ifempty": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String" }, { dataType: "String" }], returnType: "String" };
117
- case "ifnotempty": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String" }, { dataType: "String" }], returnType: "String" };
118
- case "ifnullorempty": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String", canBeUndefined: true }, { dataType: "String" }], returnType: "String" };
119
- case "ifnotnullorempty": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String", canBeUndefined: true }, { dataType: "String" }], returnType: "String" };
120
- case "ifnullorwhitespace": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String", canBeUndefined: true }, { dataType: "String" }], returnType: "String" };
121
- case "ifnotnullorwhitespace": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String", canBeUndefined: true }, { dataType: "String" }], returnType: "String" };
122
- default: return undefined;
166
+ case "if":
167
+ return {
168
+ argumentCountBounds: [3, 3],
169
+ expectedArguments: [{ dataType: "Boolean" }, { canBeAny: true, canBeUndefined: true }, { canBeAny: true, canBeUndefined: true }],
170
+ typesMatchFromIndex: 1,
171
+ isreturnTypeFromTypeMatch: true,
172
+ };
173
+ case "ifnull":
174
+ return {
175
+ argumentCountBounds: [2, 2],
176
+ expectedArguments: [{ canBeAny: true, canBeUndefined: true }, { canBeAny: true }],
177
+ typesMatchFromIndex: 0,
178
+ isreturnTypeFromTypeMatch: true,
179
+ };
180
+ case "ifnotnull":
181
+ return {
182
+ argumentCountBounds: [2, 2],
183
+ expectedArguments: [{ canBeAny: true, canBeUndefined: true }, { canBeAny: true }],
184
+ typesMatchFromIndex: 0,
185
+ isreturnTypeFromTypeMatch: true,
186
+ };
187
+ case "ifempty":
188
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String" }, { dataType: "String" }], returnType: "String" };
189
+ case "ifnotempty":
190
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String" }, { dataType: "String" }], returnType: "String" };
191
+ case "ifnullorempty":
192
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String", canBeUndefined: true }, { dataType: "String" }], returnType: "String" };
193
+ case "ifnotnullorempty":
194
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String", canBeUndefined: true }, { dataType: "String" }], returnType: "String" };
195
+ case "ifnullorwhitespace":
196
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String", canBeUndefined: true }, { dataType: "String" }], returnType: "String" };
197
+ case "ifnotnullorwhitespace":
198
+ return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: "String", canBeUndefined: true }, { dataType: "String" }], returnType: "String" };
199
+ default:
200
+ return undefined;
123
201
  }
124
202
  }
125
203
  function getBooleanFunction(name) {
126
204
  switch (name) {
127
- case "isin": return { argumentCountBounds: [2, -1], expectedArguments: [{ canBeAny: true }, { canBeAny: true }], typesMatchFromIndex: 0, returnType: "Boolean" };
128
- case "toboolean": return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: "Boolean" };
129
- default: return undefined;
205
+ case "isin":
206
+ return { argumentCountBounds: [2, -1], expectedArguments: [{ canBeAny: true }, { canBeAny: true }], typesMatchFromIndex: 0, returnType: "Boolean" };
207
+ case "toboolean":
208
+ return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: "Boolean" };
209
+ default:
210
+ return undefined;
130
211
  }
131
212
  }
132
213
  export function getFunction(name) {
@@ -1 +1 @@
1
- {"version":3,"file":"FormulaFunctionProvider.js","sourceRoot":"","sources":["../../../src/formula/FormulaFunctionProvider.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\";\nimport { formatNumericalPositionString } from \"./Utils\";\n\nexport interface FormulaFunctionArgument {\n dataType?: DataType;\n canBeAny?: boolean;\n canBeUndefined?: boolean;\n}\n\nexport interface FormulaFunction {\n argumentCountBounds: [number, number];\n expectedArguments: FormulaFunctionArgument[];\n returnType?: DataType;\n typesMatchFromIndex?: number;\n isreturnTypeFromTypeMatch?: boolean;\n}\n\ninterface ArgumentValidationResult {\n isValid: boolean;\n matchingType?: PossibleDataType;\n invalidReason?: string;\n}\n\nfunction isValidArgument(arg: PossibleDataType, argPos: number, expectedArg: FormulaFunctionArgument): ArgumentValidationResult {\n let isValid: boolean;\n if (arg === \"Undefined\") {\n isValid = !!expectedArg.canBeUndefined;\n return { isValid, invalidReason: isValid ? undefined : `Expected ${formatNumericalPositionString(argPos + 1)} argument to not be null.` };\n }\n\n isValid = expectedArg.canBeAny || arg === expectedArg.dataType;\n return { isValid, invalidReason: isValid ? undefined : `Expected ${formatNumericalPositionString(argPos + 1)} argument to be of type ${expectedArg.dataType}.` };\n}\n\nfunction validateArgumentsWithTypeMatching(): (arg: PossibleDataType, argPos: number, expectedArg: FormulaFunctionArgument, shouldTypeMatch: boolean) => ArgumentValidationResult {\n let matchType: PossibleDataType = \"Undefined\";\n return (arg: PossibleDataType, argPos: number, expectedArg: FormulaFunctionArgument, shouldMatchType: boolean) => {\n if (shouldMatchType && matchType === \"Undefined\")\n matchType = arg;\n\n const validation = isValidArgument(arg, argPos, expectedArg);\n if (!validation.isValid)\n return validation;\n\n const isValid = (matchType === \"Undefined\" || arg === matchType || (arg === \"Undefined\" && !!expectedArg.canBeUndefined));\n if (matchType !== \"Undefined\" && !isValid)\n return {\n isValid,\n matchingType: matchType,\n invalidReason: `Expected ${formatNumericalPositionString(argPos + 1)} argument to be of type ${matchType}.`,\n };\n\n return {\n isValid,\n matchingType: matchType,\n invalidReason: isValid ? undefined : `${formatNumericalPositionString(argPos + 1)} argument is invalid.`,\n };\n };\n}\n\nexport function getFormulaFunctionReturnType(func: FormulaFunction, args: PossibleDataType[]): IResult<PossibleDataType> {\n const hasUnlimitedArguments = func.argumentCountBounds[1] === -1;\n if (args.length < func.argumentCountBounds[0])\n return { errorMessage: `Too few arguments received. Expected a minimum of ${func.argumentCountBounds[0]} argument(s)` };\n if (!hasUnlimitedArguments && args.length > func.argumentCountBounds[1])\n return { errorMessage: `Too many arguments received. Expected a maximum of ${func.argumentCountBounds[1]} argument(s)` };\n\n let returnType: PossibleDataType = func.returnType ?? \"Undefined\";\n const validationFunc = func.typesMatchFromIndex === undefined ? isValidArgument : validateArgumentsWithTypeMatching();\n\n for (let i = 0; i < args.length; i++) {\n const shouldTypeMatch = func.typesMatchFromIndex !== undefined && i >= func.typesMatchFromIndex;\n const expectedTypeIndex = hasUnlimitedArguments && i > func.argumentCountBounds[0] - 1 ? func.argumentCountBounds[0] - 1 : i;\n const expectedArg = func.expectedArguments[expectedTypeIndex];\n const validationResult = validationFunc(args[i], i, expectedArg, shouldTypeMatch);\n if (!validationResult.isValid)\n return { errorMessage: validationResult.invalidReason };\n\n if (func.isreturnTypeFromTypeMatch && shouldTypeMatch)\n returnType = validationResult.matchingType ?? \"Undefined\";\n }\n\n return { value: returnType };\n}\n\nfunction getNumericalFunction(name: string): FormulaFunction | undefined {\n switch (name) {\n case \"abs\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"acos\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"acosh\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"asin\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"asinh\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"atan\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"atanh\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"atan2\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"cbrt\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"ceil\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"clz32\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"cos\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"cosh\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"exp\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"expm1\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"floor\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"fround\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"hypot\": return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"imul\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"log\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"log1p\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"log10\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"log2\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"max\": return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"min\": return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"pow\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"random\": return { argumentCountBounds: [0, 0], expectedArguments: [], returnType: \"Double\" };\n case \"round\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"sign\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"sin\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"sinh\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"sqrt\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"tan\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"tanh\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"trunc\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"tonumber\": return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: \"Double\" };\n default: return undefined;\n }\n}\n\nfunction getStringFunction(name: string): FormulaFunction | undefined {\n switch (name) {\n case \"charat\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\" }, { dataType: \"Double\" }], returnType: \"String\" };\n case \"concat\": return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: \"String\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"padend\": return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: \"String\" }, { dataType: \"Double\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"padstart\": return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: \"String\" }, { dataType: \"Double\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"substring\": return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: \"String\" }, { dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"String\" };\n case \"indexof\": return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: \"String\" }, { dataType: \"String\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"tolowercase\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"touppercase\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"trim\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"trimend\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"trimstart\": return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"tostring\": return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: \"String\" };\n default: return undefined;\n }\n}\n\nfunction getConditionalFunction(name: string): FormulaFunction | undefined {\n switch (name) {\n case \"if\": return { argumentCountBounds: [3, 3], expectedArguments: [{ dataType: \"Boolean\" }, { canBeAny: true, canBeUndefined: true }, { canBeAny: true, canBeUndefined: true }], typesMatchFromIndex: 1, isreturnTypeFromTypeMatch: true };\n case \"ifnull\": return { argumentCountBounds: [2, 2], expectedArguments: [{ canBeAny: true, canBeUndefined: true }, { canBeAny: true }], typesMatchFromIndex: 0, isreturnTypeFromTypeMatch: true };\n case \"ifnotnull\": return { argumentCountBounds: [2, 2], expectedArguments: [{ canBeAny: true, canBeUndefined: true }, { canBeAny: true }], typesMatchFromIndex: 0, isreturnTypeFromTypeMatch: true };\n case \"ifempty\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnotempty\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnullorempty\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\", canBeUndefined: true }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnotnullorempty\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\", canBeUndefined: true }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnullorwhitespace\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\", canBeUndefined: true }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnotnullorwhitespace\": return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\", canBeUndefined: true }, { dataType: \"String\" }], returnType: \"String\" };\n default: return undefined;\n }\n}\n\nfunction getBooleanFunction(name: string): FormulaFunction | undefined {\n switch (name) {\n case \"isin\": return { argumentCountBounds: [2, -1], expectedArguments: [{ canBeAny: true }, { canBeAny: true }], typesMatchFromIndex: 0, returnType: \"Boolean\"};\n case \"toboolean\": return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: \"Boolean\"};\n default: return undefined;\n }\n}\n\nexport function getFunction(name: string): FormulaFunction | undefined {\n const nameLowerCase = name.toLowerCase();\n return getNumericalFunction(nameLowerCase) || getStringFunction(nameLowerCase) || getConditionalFunction(nameLowerCase) || getBooleanFunction(nameLowerCase);\n}\n\nexport function isFunction(name: string): boolean {\n return !!getFunction(name);\n}\n"]}
1
+ {"version":3,"file":"FormulaFunctionProvider.js","sourceRoot":"","sources":["../../../src/formula/FormulaFunctionProvider.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\";\nimport { formatNumericalPositionString } from \"./Utils\";\n\nexport interface FormulaFunctionArgument {\n dataType?: DataType;\n canBeAny?: boolean;\n canBeUndefined?: boolean;\n}\n\nexport interface FormulaFunction {\n argumentCountBounds: [number, number];\n expectedArguments: FormulaFunctionArgument[];\n returnType?: DataType;\n typesMatchFromIndex?: number;\n isreturnTypeFromTypeMatch?: boolean;\n}\n\ninterface ArgumentValidationResult {\n isValid: boolean;\n matchingType?: PossibleDataType;\n invalidReason?: string;\n}\n\nfunction isValidArgument(arg: PossibleDataType, argPos: number, expectedArg: FormulaFunctionArgument): ArgumentValidationResult {\n let isValid: boolean;\n if (arg === \"Undefined\") {\n isValid = !!expectedArg.canBeUndefined;\n return { isValid, invalidReason: isValid ? undefined : `Expected ${formatNumericalPositionString(argPos + 1)} argument to not be null.` };\n }\n\n isValid = expectedArg.canBeAny || arg === expectedArg.dataType;\n return {\n isValid,\n invalidReason: isValid ? undefined : `Expected ${formatNumericalPositionString(argPos + 1)} argument to be of type ${expectedArg.dataType}.`,\n };\n}\n\nfunction validateArgumentsWithTypeMatching(): (\n arg: PossibleDataType,\n argPos: number,\n expectedArg: FormulaFunctionArgument,\n shouldTypeMatch: boolean,\n) => ArgumentValidationResult {\n let matchType: PossibleDataType = \"Undefined\";\n return (arg: PossibleDataType, argPos: number, expectedArg: FormulaFunctionArgument, shouldMatchType: boolean) => {\n if (shouldMatchType && matchType === \"Undefined\") matchType = arg;\n\n const validation = isValidArgument(arg, argPos, expectedArg);\n if (!validation.isValid) return validation;\n\n const isValid = matchType === \"Undefined\" || arg === matchType || (arg === \"Undefined\" && !!expectedArg.canBeUndefined);\n if (matchType !== \"Undefined\" && !isValid)\n return {\n isValid,\n matchingType: matchType,\n invalidReason: `Expected ${formatNumericalPositionString(argPos + 1)} argument to be of type ${matchType}.`,\n };\n\n return {\n isValid,\n matchingType: matchType,\n invalidReason: isValid ? undefined : `${formatNumericalPositionString(argPos + 1)} argument is invalid.`,\n };\n };\n}\n\nexport function getFormulaFunctionReturnType(func: FormulaFunction, args: PossibleDataType[]): IResult<PossibleDataType> {\n const hasUnlimitedArguments = func.argumentCountBounds[1] === -1;\n if (args.length < func.argumentCountBounds[0])\n return { errorMessage: `Too few arguments received. Expected a minimum of ${func.argumentCountBounds[0]} argument(s)` };\n if (!hasUnlimitedArguments && args.length > func.argumentCountBounds[1])\n return { errorMessage: `Too many arguments received. Expected a maximum of ${func.argumentCountBounds[1]} argument(s)` };\n\n let returnType: PossibleDataType = func.returnType ?? \"Undefined\";\n const validationFunc = func.typesMatchFromIndex === undefined ? isValidArgument : validateArgumentsWithTypeMatching();\n\n for (let i = 0; i < args.length; i++) {\n const shouldTypeMatch = func.typesMatchFromIndex !== undefined && i >= func.typesMatchFromIndex;\n const expectedTypeIndex = hasUnlimitedArguments && i > func.argumentCountBounds[0] - 1 ? func.argumentCountBounds[0] - 1 : i;\n const expectedArg = func.expectedArguments[expectedTypeIndex];\n const validationResult = validationFunc(args[i], i, expectedArg, shouldTypeMatch);\n if (!validationResult.isValid) return { errorMessage: validationResult.invalidReason };\n\n if (func.isreturnTypeFromTypeMatch && shouldTypeMatch) returnType = validationResult.matchingType ?? \"Undefined\";\n }\n\n return { value: returnType };\n}\n\nfunction getNumericalFunction(name: string): FormulaFunction | undefined {\n switch (name) {\n case \"abs\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"acos\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"acosh\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"asin\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"asinh\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"atan\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"atanh\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"atan2\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"cbrt\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"ceil\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"clz32\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"cos\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"cosh\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"exp\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"expm1\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"floor\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"fround\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"hypot\":\n return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"imul\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"log\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"log1p\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"log10\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"log2\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"max\":\n return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"min\":\n return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"pow\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"random\":\n return { argumentCountBounds: [0, 0], expectedArguments: [], returnType: \"Double\" };\n case \"round\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"sign\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"sin\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"sinh\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"sqrt\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"tan\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"tanh\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"trunc\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"Double\" }], returnType: \"Double\" };\n case \"tonumber\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: \"Double\" };\n default:\n return undefined;\n }\n}\n\nfunction getStringFunction(name: string): FormulaFunction | undefined {\n switch (name) {\n case \"charat\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\" }, { dataType: \"Double\" }], returnType: \"String\" };\n case \"concat\":\n return { argumentCountBounds: [2, -1], expectedArguments: [{ dataType: \"String\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"padend\":\n return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: \"String\" }, { dataType: \"Double\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"padstart\":\n return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: \"String\" }, { dataType: \"Double\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"substring\":\n return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: \"String\" }, { dataType: \"Double\" }, { dataType: \"Double\" }], returnType: \"String\" };\n case \"indexof\":\n return { argumentCountBounds: [2, 3], expectedArguments: [{ dataType: \"String\" }, { dataType: \"String\" }, { dataType: \"Double\" }], returnType: \"Double\" };\n case \"tolowercase\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"touppercase\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"trim\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"trimend\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"trimstart\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ dataType: \"String\" }], returnType: \"String\" };\n case \"tostring\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: \"String\" };\n default:\n return undefined;\n }\n}\n\nfunction getConditionalFunction(name: string): FormulaFunction | undefined {\n switch (name) {\n case \"if\":\n return {\n argumentCountBounds: [3, 3],\n expectedArguments: [{ dataType: \"Boolean\" }, { canBeAny: true, canBeUndefined: true }, { canBeAny: true, canBeUndefined: true }],\n typesMatchFromIndex: 1,\n isreturnTypeFromTypeMatch: true,\n };\n case \"ifnull\":\n return {\n argumentCountBounds: [2, 2],\n expectedArguments: [{ canBeAny: true, canBeUndefined: true }, { canBeAny: true }],\n typesMatchFromIndex: 0,\n isreturnTypeFromTypeMatch: true,\n };\n case \"ifnotnull\":\n return {\n argumentCountBounds: [2, 2],\n expectedArguments: [{ canBeAny: true, canBeUndefined: true }, { canBeAny: true }],\n typesMatchFromIndex: 0,\n isreturnTypeFromTypeMatch: true,\n };\n case \"ifempty\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnotempty\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\" }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnullorempty\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\", canBeUndefined: true }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnotnullorempty\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\", canBeUndefined: true }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnullorwhitespace\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\", canBeUndefined: true }, { dataType: \"String\" }], returnType: \"String\" };\n case \"ifnotnullorwhitespace\":\n return { argumentCountBounds: [2, 2], expectedArguments: [{ dataType: \"String\", canBeUndefined: true }, { dataType: \"String\" }], returnType: \"String\" };\n default:\n return undefined;\n }\n}\n\nfunction getBooleanFunction(name: string): FormulaFunction | undefined {\n switch (name) {\n case \"isin\":\n return { argumentCountBounds: [2, -1], expectedArguments: [{ canBeAny: true }, { canBeAny: true }], typesMatchFromIndex: 0, returnType: \"Boolean\" };\n case \"toboolean\":\n return { argumentCountBounds: [1, 1], expectedArguments: [{ canBeAny: true }], returnType: \"Boolean\" };\n default:\n return undefined;\n }\n}\n\nexport function getFunction(name: string): FormulaFunction | undefined {\n const nameLowerCase = name.toLowerCase();\n return getNumericalFunction(nameLowerCase) || getStringFunction(nameLowerCase) || getConditionalFunction(nameLowerCase) || getBooleanFunction(nameLowerCase);\n}\n\nexport function isFunction(name: string): boolean {\n return !!getFunction(name);\n}\n"]}
@@ -1,4 +1,64 @@
1
- const allOperators = ["+", "-", "*", "%", "**", "/", "`", "~", "!", "@", "#", "$", "^", "&", "=", "[", "]", "{", "}", "\\", "|", ";", ":", "'", "\"", "<", ">", "?", "+=", "-=", "*=", "/=", "%=", "&=", "^=", "|=", "?=", "==", "!=", ">=", "<=", "++", "--", "<<", ">>", "&&", "||", "??", "?.", "**=", "<<=", ">>=", "&&=", "||=", "??=", "===", "!==", ">>>", ">>>="];
1
+ const allOperators = [
2
+ "+",
3
+ "-",
4
+ "*",
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
+ ];
2
62
  export var OperatorType;
3
63
  (function (OperatorType) {
4
64
  OperatorType[OperatorType["UnaryPlus"] = 0] = "UnaryPlus";
@@ -29,29 +89,48 @@ export function isOperator(token) {
29
89
  }
30
90
  export function getBinaryOperator(token) {
31
91
  switch (token) {
32
- case "**": return OperatorType.Exponentiation;
33
- case "*": return OperatorType.Multiplication;
34
- case "/": return OperatorType.Division;
35
- case "%": return OperatorType.Remainder;
36
- case "+": return OperatorType.Addition;
37
- case "-": return OperatorType.Subtraction;
38
- case "<": return OperatorType.LessThan;
39
- case "<=": return OperatorType.LessThanOrEqual;
40
- case ">": return OperatorType.GreaterThan;
41
- case ">=": return OperatorType.GreaterThanOrEqual;
42
- case "==": return OperatorType.Equality;
43
- case "!=": return OperatorType.Inequality;
44
- case "&&": return OperatorType.LogicalAnd;
45
- case "||": return OperatorType.LogicalOr;
46
- default: return undefined;
92
+ case "**":
93
+ return OperatorType.Exponentiation;
94
+ case "*":
95
+ return OperatorType.Multiplication;
96
+ case "/":
97
+ return OperatorType.Division;
98
+ case "%":
99
+ return OperatorType.Remainder;
100
+ case "+":
101
+ return OperatorType.Addition;
102
+ case "-":
103
+ return OperatorType.Subtraction;
104
+ case "<":
105
+ return OperatorType.LessThan;
106
+ case "<=":
107
+ return OperatorType.LessThanOrEqual;
108
+ case ">":
109
+ return OperatorType.GreaterThan;
110
+ case ">=":
111
+ return OperatorType.GreaterThanOrEqual;
112
+ case "==":
113
+ return OperatorType.Equality;
114
+ case "!=":
115
+ return OperatorType.Inequality;
116
+ case "&&":
117
+ return OperatorType.LogicalAnd;
118
+ case "||":
119
+ return OperatorType.LogicalOr;
120
+ default:
121
+ return undefined;
47
122
  }
48
123
  }
49
124
  export function getUnaryOperator(token) {
50
125
  switch (token) {
51
- case "+": return OperatorType.UnaryPlus;
52
- case "-": return OperatorType.UnaryNegation;
53
- case "!": return OperatorType.LogicalNot;
54
- default: return undefined;
126
+ case "+":
127
+ return OperatorType.UnaryPlus;
128
+ case "-":
129
+ return OperatorType.UnaryNegation;
130
+ case "!":
131
+ return OperatorType.LogicalNot;
132
+ default:
133
+ return undefined;
55
134
  }
56
135
  }
57
136
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
@@ -82,7 +161,8 @@ export function getOperatorPrecedence(op) {
82
161
  return 5;
83
162
  case OperatorType.LogicalOr:
84
163
  return 4;
85
- default: return 1;
164
+ default:
165
+ return 1;
86
166
  }
87
167
  }
88
168
  export function getOperatorAssociativity(op) {
@@ -115,22 +195,38 @@ export function isSupportedOperator(token) {
115
195
  }
116
196
  export function getOperatorArgumentCountBounds(token) {
117
197
  switch (token) {
118
- case "**": return [2, 2];
119
- case "*": return [2, 2];
120
- case "/": return [2, 2];
121
- case "%": return [2, 2];
122
- case "+": return [1, 2];
123
- case "-": return [1, 2];
124
- case "!": return [1, 1];
125
- case "<": return [2, 2];
126
- case "<=": return [2, 2];
127
- case ">": return [2, 2];
128
- case ">=": return [2, 2];
129
- case "==": return [2, 2];
130
- case "!=": return [2, 2];
131
- case "&&": return [2, 2];
132
- case "||": return [2, 2];
133
- default: return undefined;
198
+ case "**":
199
+ return [2, 2];
200
+ case "*":
201
+ return [2, 2];
202
+ case "/":
203
+ return [2, 2];
204
+ case "%":
205
+ return [2, 2];
206
+ case "+":
207
+ return [1, 2];
208
+ case "-":
209
+ return [1, 2];
210
+ case "!":
211
+ return [1, 1];
212
+ case "<":
213
+ return [2, 2];
214
+ case "<=":
215
+ return [2, 2];
216
+ case ">":
217
+ return [2, 2];
218
+ case ">=":
219
+ return [2, 2];
220
+ case "==":
221
+ return [2, 2];
222
+ case "!=":
223
+ return [2, 2];
224
+ case "&&":
225
+ return [2, 2];
226
+ case "||":
227
+ return [2, 2];
228
+ default:
229
+ return undefined;
134
230
  }
135
231
  }
136
232
  export function getOperatorReturnType(token, arg1, arg2) {
@@ -138,20 +234,18 @@ export function getOperatorReturnType(token, arg1, arg2) {
138
234
  return { errorMessage: `Unary operator "${token}" is not supported.` };
139
235
  if (arg2 && !getBinaryOperator(token))
140
236
  return { errorMessage: `Binary operator "${token}" is not supported.` };
141
- if ((arg1 === "Undefined" || arg2 === "Undefined") && (token !== "==" && token !== "!="))
237
+ if ((arg1 === "Undefined" || arg2 === "Undefined") && token !== "==" && token !== "!=")
142
238
  return { errorMessage: `${!arg2 ? "Unary" : "Binary"} operator "${token}" does not support null operands.` };
143
239
  switch (token) {
144
240
  case "**":
145
241
  case "*":
146
242
  case "/":
147
243
  case "%":
148
- return arg1 === "String" || arg2 === "String" ?
149
- { errorMessage: `Binary operator "${token}" does not support string operands.` } :
150
- { value: "Double" };
244
+ return arg1 === "String" || arg2 === "String" ? { errorMessage: `Binary operator "${token}" does not support string operands.` } : { value: "Double" };
151
245
  case "-":
152
- return arg1 === "String" || arg2 === "String" ?
153
- { errorMessage: `${!arg2 ? "Unary" : "Binary"} operator "${token}" does not support string operands.` } :
154
- { value: "Double" };
246
+ return arg1 === "String" || arg2 === "String"
247
+ ? { errorMessage: `${!arg2 ? "Unary" : "Binary"} operator "${token}" does not support string operands.` }
248
+ : { value: "Double" };
155
249
  case "+":
156
250
  if (!arg2)
157
251
  return { value: arg1 };