@highcharts/grid-pro 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/README.md +35 -0
  2. package/css/grid-pro.css +1756 -0
  3. package/es-modules/Accessibility/A11yI18n.d.ts +95 -0
  4. package/es-modules/Accessibility/A11yI18n.js +290 -0
  5. package/es-modules/Accessibility/Accessibility.d.ts +116 -0
  6. package/es-modules/Accessibility/Accessibility.js +402 -0
  7. package/es-modules/Accessibility/AccessibilityComponent.d.ts +97 -0
  8. package/es-modules/Accessibility/AccessibilityComponent.js +147 -0
  9. package/es-modules/Accessibility/Components/AnnotationsA11y.d.ts +43 -0
  10. package/es-modules/Accessibility/Components/AnnotationsA11y.js +160 -0
  11. package/es-modules/Accessibility/Components/ContainerComponent.d.ts +48 -0
  12. package/es-modules/Accessibility/Components/ContainerComponent.js +142 -0
  13. package/es-modules/Accessibility/Components/InfoRegionsComponent.d.ts +144 -0
  14. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +555 -0
  15. package/es-modules/Accessibility/Components/LegendComponent.d.ts +124 -0
  16. package/es-modules/Accessibility/Components/LegendComponent.js +474 -0
  17. package/es-modules/Accessibility/Components/MenuComponent.d.ts +93 -0
  18. package/es-modules/Accessibility/Components/MenuComponent.js +430 -0
  19. package/es-modules/Accessibility/Components/NavigatorComponent.d.ts +57 -0
  20. package/es-modules/Accessibility/Components/NavigatorComponent.js +235 -0
  21. package/es-modules/Accessibility/Components/RangeSelectorComponent.d.ts +126 -0
  22. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +473 -0
  23. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.d.ts +18 -0
  24. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +234 -0
  25. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.d.ts +87 -0
  26. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +309 -0
  27. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.d.ts +53 -0
  28. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +130 -0
  29. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.d.ts +28 -0
  30. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +415 -0
  31. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.d.ts +114 -0
  32. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +721 -0
  33. package/es-modules/Accessibility/Components/ZoomComponent.d.ts +96 -0
  34. package/es-modules/Accessibility/Components/ZoomComponent.js +314 -0
  35. package/es-modules/Accessibility/FocusBorder.d.ts +40 -0
  36. package/es-modules/Accessibility/FocusBorder.js +301 -0
  37. package/es-modules/Accessibility/HighContrastMode.d.ts +35 -0
  38. package/es-modules/Accessibility/HighContrastMode.js +100 -0
  39. package/es-modules/Accessibility/HighContrastTheme.d.ts +11 -0
  40. package/es-modules/Accessibility/HighContrastTheme.js +212 -0
  41. package/es-modules/Accessibility/KeyboardNavigation.d.ts +133 -0
  42. package/es-modules/Accessibility/KeyboardNavigation.js +450 -0
  43. package/es-modules/Accessibility/KeyboardNavigationHandler.d.ts +48 -0
  44. package/es-modules/Accessibility/KeyboardNavigationHandler.js +126 -0
  45. package/es-modules/Accessibility/Options/A11yDefaults.d.ts +68 -0
  46. package/es-modules/Accessibility/Options/A11yDefaults.js +971 -0
  47. package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +22 -0
  48. package/es-modules/Accessibility/Options/DeprecatedOptions.js +265 -0
  49. package/es-modules/Accessibility/Options/LangDefaults.d.ts +4 -0
  50. package/es-modules/Accessibility/Options/LangDefaults.js +440 -0
  51. package/es-modules/Accessibility/ProxyElement.d.ts +78 -0
  52. package/es-modules/Accessibility/ProxyElement.js +223 -0
  53. package/es-modules/Accessibility/ProxyProvider.d.ts +90 -0
  54. package/es-modules/Accessibility/ProxyProvider.js +315 -0
  55. package/es-modules/Accessibility/Utils/Announcer.d.ts +26 -0
  56. package/es-modules/Accessibility/Utils/Announcer.js +90 -0
  57. package/es-modules/Accessibility/Utils/ChartUtilities.d.ts +90 -0
  58. package/es-modules/Accessibility/Utils/ChartUtilities.js +298 -0
  59. package/es-modules/Accessibility/Utils/DOMElementProvider.d.ts +20 -0
  60. package/es-modules/Accessibility/Utils/DOMElementProvider.js +69 -0
  61. package/es-modules/Accessibility/Utils/EventProvider.d.ts +26 -0
  62. package/es-modules/Accessibility/Utils/EventProvider.js +65 -0
  63. package/es-modules/Accessibility/Utils/HTMLUtilities.d.ts +108 -0
  64. package/es-modules/Accessibility/Utils/HTMLUtilities.js +319 -0
  65. package/es-modules/Core/Animation/AnimationUtilities.d.ts +107 -0
  66. package/es-modules/Core/Animation/AnimationUtilities.js +200 -0
  67. package/es-modules/Core/Animation/Fx.d.ts +130 -0
  68. package/es-modules/Core/Animation/Fx.js +388 -0
  69. package/es-modules/Core/Chart/Chart.d.ts +1009 -0
  70. package/es-modules/Core/Chart/Chart.js +3008 -0
  71. package/es-modules/Core/Chart/Chart3D.d.ts +276 -0
  72. package/es-modules/Core/Chart/Chart3D.js +1686 -0
  73. package/es-modules/Core/Chart/ChartDefaults.d.ts +8 -0
  74. package/es-modules/Core/Chart/ChartDefaults.js +1304 -0
  75. package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +55 -0
  76. package/es-modules/Core/Chart/ChartNavigationComposition.js +90 -0
  77. package/es-modules/Core/Chart/GanttChart.d.ts +74 -0
  78. package/es-modules/Core/Chart/GanttChart.js +189 -0
  79. package/es-modules/Core/Chart/MapChart.d.ts +132 -0
  80. package/es-modules/Core/Chart/MapChart.js +232 -0
  81. package/es-modules/Core/Chart/StockChart.d.ts +117 -0
  82. package/es-modules/Core/Chart/StockChart.js +641 -0
  83. package/es-modules/Core/Color/Color.d.ts +112 -0
  84. package/es-modules/Core/Color/Color.js +418 -0
  85. package/es-modules/Core/Color/Palettes.d.ts +84 -0
  86. package/es-modules/Core/Color/Palettes.js +23 -0
  87. package/es-modules/Core/Defaults.d.ts +42 -0
  88. package/es-modules/Core/Defaults.js +2977 -0
  89. package/es-modules/Core/Foundation.d.ts +19 -0
  90. package/es-modules/Core/Foundation.js +63 -0
  91. package/es-modules/Core/Geometry/CircleUtilities.d.ts +189 -0
  92. package/es-modules/Core/Geometry/CircleUtilities.js +388 -0
  93. package/es-modules/Core/Geometry/GeometryUtilities.d.ts +48 -0
  94. package/es-modules/Core/Geometry/GeometryUtilities.js +105 -0
  95. package/es-modules/Core/Geometry/PolygonClip.d.ts +19 -0
  96. package/es-modules/Core/Geometry/PolygonClip.js +96 -0
  97. package/es-modules/Core/Globals.d.ts +110 -0
  98. package/es-modules/Core/Globals.js +127 -0
  99. package/es-modules/Core/HttpUtilities.d.ts +61 -0
  100. package/es-modules/Core/HttpUtilities.js +214 -0
  101. package/es-modules/Core/MSPointer.d.ts +74 -0
  102. package/es-modules/Core/MSPointer.js +218 -0
  103. package/es-modules/Core/Math3D.d.ts +117 -0
  104. package/es-modules/Core/Math3D.js +250 -0
  105. package/es-modules/Core/Pointer.d.ts +590 -0
  106. package/es-modules/Core/Pointer.js +1631 -0
  107. package/es-modules/Core/Renderer/HTML/AST.d.ts +163 -0
  108. package/es-modules/Core/Renderer/HTML/AST.js +562 -0
  109. package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +76 -0
  110. package/es-modules/Core/Renderer/HTML/HTMLElement.js +471 -0
  111. package/es-modules/Core/Renderer/RendererRegistry.d.ts +29 -0
  112. package/es-modules/Core/Renderer/RendererRegistry.js +76 -0
  113. package/es-modules/Core/Renderer/RendererUtilities.d.ts +26 -0
  114. package/es-modules/Core/Renderer/RendererUtilities.js +172 -0
  115. package/es-modules/Core/Responsive.d.ts +55 -0
  116. package/es-modules/Core/Responsive.js +260 -0
  117. package/es-modules/Core/Templating.d.ts +125 -0
  118. package/es-modules/Core/Templating.js +428 -0
  119. package/es-modules/Core/Time.d.ts +69 -0
  120. package/es-modules/Core/Time.js +172 -0
  121. package/es-modules/Core/Tooltip.d.ts +297 -0
  122. package/es-modules/Core/Tooltip.js +1377 -0
  123. package/es-modules/Core/Utilities.d.ts +770 -0
  124. package/es-modules/Core/Utilities.js +1989 -0
  125. package/es-modules/Data/ColumnUtils.d.ts +87 -0
  126. package/es-modules/Data/ColumnUtils.js +140 -0
  127. package/es-modules/Data/Connectors/CSVConnector.d.ts +63 -0
  128. package/es-modules/Data/Connectors/CSVConnector.js +149 -0
  129. package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +149 -0
  130. package/es-modules/Data/Connectors/DataConnector.d.ts +204 -0
  131. package/es-modules/Data/Connectors/DataConnector.js +345 -0
  132. package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +87 -0
  133. package/es-modules/Data/Connectors/DataConnectorType.d.ts +45 -0
  134. package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +65 -0
  135. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +226 -0
  136. package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +167 -0
  137. package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +77 -0
  138. package/es-modules/Data/Connectors/HTMLTableConnector.js +119 -0
  139. package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +49 -0
  140. package/es-modules/Data/Connectors/JSONConnector.d.ts +64 -0
  141. package/es-modules/Data/Connectors/JSONConnector.js +156 -0
  142. package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +185 -0
  143. package/es-modules/Data/Converters/CSVConverter.d.ts +64 -0
  144. package/es-modules/Data/Converters/CSVConverter.js +374 -0
  145. package/es-modules/Data/Converters/CSVConverterOptions.d.ts +53 -0
  146. package/es-modules/Data/Converters/DataConverter.d.ts +168 -0
  147. package/es-modules/Data/Converters/DataConverter.js +387 -0
  148. package/es-modules/Data/Converters/DataConverterType.d.ts +40 -0
  149. package/es-modules/Data/Converters/DataConverterUtils.d.ts +82 -0
  150. package/es-modules/Data/Converters/DataConverterUtils.js +216 -0
  151. package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +46 -0
  152. package/es-modules/Data/Converters/GoogleSheetsConverter.js +135 -0
  153. package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +52 -0
  154. package/es-modules/Data/Converters/HTMLTableConverter.d.ts +72 -0
  155. package/es-modules/Data/Converters/HTMLTableConverter.js +362 -0
  156. package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +51 -0
  157. package/es-modules/Data/Converters/JSONConverter.d.ts +99 -0
  158. package/es-modules/Data/Converters/JSONConverter.js +239 -0
  159. package/es-modules/Data/Converters/JSONConverterOptions.d.ts +52 -0
  160. package/es-modules/Data/DataCursor.d.ts +176 -0
  161. package/es-modules/Data/DataCursor.js +379 -0
  162. package/es-modules/Data/DataEvent.d.ts +81 -0
  163. package/es-modules/Data/DataEvent.js +14 -0
  164. package/es-modules/Data/DataPool.d.ts +130 -0
  165. package/es-modules/Data/DataPool.js +257 -0
  166. package/es-modules/Data/DataPoolOptions.d.ts +66 -0
  167. package/es-modules/Data/DataTable.d.ts +563 -0
  168. package/es-modules/Data/DataTable.js +930 -0
  169. package/es-modules/Data/DataTableCore.d.ts +165 -0
  170. package/es-modules/Data/DataTableCore.js +316 -0
  171. package/es-modules/Data/DataTableOptions.d.ts +25 -0
  172. package/es-modules/Data/DataTableOptions.js +15 -0
  173. package/es-modules/Data/Formula/Formula.d.ts +21 -0
  174. package/es-modules/Data/Formula/Formula.js +54 -0
  175. package/es-modules/Data/Formula/FormulaParser.d.ts +31 -0
  176. package/es-modules/Data/Formula/FormulaParser.js +488 -0
  177. package/es-modules/Data/Formula/FormulaProcessor.d.ts +155 -0
  178. package/es-modules/Data/Formula/FormulaProcessor.js +529 -0
  179. package/es-modules/Data/Formula/FormulaTypes.d.ts +138 -0
  180. package/es-modules/Data/Formula/FormulaTypes.js +135 -0
  181. package/es-modules/Data/Formula/Functions/ABS.d.ts +19 -0
  182. package/es-modules/Data/Formula/Functions/ABS.js +67 -0
  183. package/es-modules/Data/Formula/Functions/AND.d.ts +20 -0
  184. package/es-modules/Data/Formula/Functions/AND.js +59 -0
  185. package/es-modules/Data/Formula/Functions/AVERAGE.d.ts +20 -0
  186. package/es-modules/Data/Formula/Functions/AVERAGE.js +74 -0
  187. package/es-modules/Data/Formula/Functions/AVERAGEA.d.ts +20 -0
  188. package/es-modules/Data/Formula/Functions/AVERAGEA.js +90 -0
  189. package/es-modules/Data/Formula/Functions/COUNT.d.ts +20 -0
  190. package/es-modules/Data/Formula/Functions/COUNT.js +65 -0
  191. package/es-modules/Data/Formula/Functions/COUNTA.d.ts +20 -0
  192. package/es-modules/Data/Formula/Functions/COUNTA.js +71 -0
  193. package/es-modules/Data/Formula/Functions/IF.d.ts +21 -0
  194. package/es-modules/Data/Formula/Functions/IF.js +54 -0
  195. package/es-modules/Data/Formula/Functions/ISNA.d.ts +20 -0
  196. package/es-modules/Data/Formula/Functions/ISNA.js +52 -0
  197. package/es-modules/Data/Formula/Functions/MAX.d.ts +20 -0
  198. package/es-modules/Data/Formula/Functions/MAX.js +69 -0
  199. package/es-modules/Data/Formula/Functions/MEDIAN.d.ts +20 -0
  200. package/es-modules/Data/Formula/Functions/MEDIAN.js +78 -0
  201. package/es-modules/Data/Formula/Functions/MIN.d.ts +20 -0
  202. package/es-modules/Data/Formula/Functions/MIN.js +69 -0
  203. package/es-modules/Data/Formula/Functions/MOD.d.ts +20 -0
  204. package/es-modules/Data/Formula/Functions/MOD.js +63 -0
  205. package/es-modules/Data/Formula/Functions/MODE.d.ts +41 -0
  206. package/es-modules/Data/Formula/Functions/MODE.js +149 -0
  207. package/es-modules/Data/Formula/Functions/NOT.d.ts +20 -0
  208. package/es-modules/Data/Formula/Functions/NOT.js +60 -0
  209. package/es-modules/Data/Formula/Functions/OR.d.ts +20 -0
  210. package/es-modules/Data/Formula/Functions/OR.js +62 -0
  211. package/es-modules/Data/Formula/Functions/PRODUCT.d.ts +20 -0
  212. package/es-modules/Data/Formula/Functions/PRODUCT.js +68 -0
  213. package/es-modules/Data/Formula/Functions/SUM.d.ts +20 -0
  214. package/es-modules/Data/Formula/Functions/SUM.js +65 -0
  215. package/es-modules/Data/Formula/Functions/XOR.d.ts +20 -0
  216. package/es-modules/Data/Formula/Functions/XOR.js +81 -0
  217. package/es-modules/Data/Modifiers/ChainModifier.d.ts +128 -0
  218. package/es-modules/Data/Modifiers/ChainModifier.js +231 -0
  219. package/es-modules/Data/Modifiers/ChainModifierOptions.d.ts +20 -0
  220. package/es-modules/Data/Modifiers/ChainModifierOptions.js +14 -0
  221. package/es-modules/Data/Modifiers/DataModifier.d.ts +117 -0
  222. package/es-modules/Data/Modifiers/DataModifier.js +202 -0
  223. package/es-modules/Data/Modifiers/DataModifierEvent.d.ts +28 -0
  224. package/es-modules/Data/Modifiers/DataModifierEvent.js +15 -0
  225. package/es-modules/Data/Modifiers/DataModifierOptions.d.ts +11 -0
  226. package/es-modules/Data/Modifiers/DataModifierOptions.js +15 -0
  227. package/es-modules/Data/Modifiers/DataModifierType.d.ts +44 -0
  228. package/es-modules/Data/Modifiers/FilterModifier.d.ts +53 -0
  229. package/es-modules/Data/Modifiers/FilterModifier.js +172 -0
  230. package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +110 -0
  231. package/es-modules/Data/Modifiers/FilterModifierOptions.js +14 -0
  232. package/es-modules/Data/Modifiers/InvertModifier.d.ts +48 -0
  233. package/es-modules/Data/Modifiers/InvertModifier.js +116 -0
  234. package/es-modules/Data/Modifiers/InvertModifierOptions.d.ts +11 -0
  235. package/es-modules/Data/Modifiers/InvertModifierOptions.js +15 -0
  236. package/es-modules/Data/Modifiers/MathModifier.d.ts +68 -0
  237. package/es-modules/Data/Modifiers/MathModifier.js +165 -0
  238. package/es-modules/Data/Modifiers/MathModifierOptions.d.ts +50 -0
  239. package/es-modules/Data/Modifiers/MathModifierOptions.js +14 -0
  240. package/es-modules/Data/Modifiers/RangeModifier.d.ts +46 -0
  241. package/es-modules/Data/Modifiers/RangeModifier.js +96 -0
  242. package/es-modules/Data/Modifiers/RangeModifierOptions.d.ts +22 -0
  243. package/es-modules/Data/Modifiers/RangeModifierOptions.js +15 -0
  244. package/es-modules/Data/Modifiers/SortModifier.d.ts +54 -0
  245. package/es-modules/Data/Modifiers/SortModifier.js +144 -0
  246. package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +44 -0
  247. package/es-modules/Data/Modifiers/SortModifierOptions.js +14 -0
  248. package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +148 -0
  249. package/es-modules/Grid/Core/Accessibility/A11yOptions.js +17 -0
  250. package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +115 -0
  251. package/es-modules/Grid/Core/Accessibility/Accessibility.js +231 -0
  252. package/es-modules/Grid/Core/Credits.d.ts +57 -0
  253. package/es-modules/Grid/Core/Credits.js +125 -0
  254. package/es-modules/Grid/Core/Defaults.d.ts +20 -0
  255. package/es-modules/Grid/Core/Defaults.js +148 -0
  256. package/es-modules/Grid/Core/Globals.d.ts +103 -0
  257. package/es-modules/Grid/Core/Globals.js +134 -0
  258. package/es-modules/Grid/Core/Grid.d.ts +295 -0
  259. package/es-modules/Grid/Core/Grid.js +730 -0
  260. package/es-modules/Grid/Core/GridUtils.d.ts +110 -0
  261. package/es-modules/Grid/Core/GridUtils.js +191 -0
  262. package/es-modules/Grid/Core/Options.d.ts +599 -0
  263. package/es-modules/Grid/Core/Options.js +16 -0
  264. package/es-modules/Grid/Core/Pagination/Icons.d.ts +7 -0
  265. package/es-modules/Grid/Core/Pagination/Icons.js +7 -0
  266. package/es-modules/Grid/Core/Pagination/Pagination.d.ts +278 -0
  267. package/es-modules/Grid/Core/Pagination/Pagination.js +842 -0
  268. package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +228 -0
  269. package/es-modules/Grid/Core/Querying/FilteringController.d.ts +66 -0
  270. package/es-modules/Grid/Core/Querying/FilteringController.js +256 -0
  271. package/es-modules/Grid/Core/Querying/PaginationController.d.ts +50 -0
  272. package/es-modules/Grid/Core/Querying/PaginationController.js +101 -0
  273. package/es-modules/Grid/Core/Querying/QueryingController.d.ts +58 -0
  274. package/es-modules/Grid/Core/Querying/QueryingController.js +127 -0
  275. package/es-modules/Grid/Core/Querying/SortingController.d.ts +67 -0
  276. package/es-modules/Grid/Core/Querying/SortingController.js +136 -0
  277. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.d.ts +114 -0
  278. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +351 -0
  279. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +14 -0
  280. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +86 -0
  281. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +19 -0
  282. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +80 -0
  283. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.d.ts +52 -0
  284. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +81 -0
  285. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +56 -0
  286. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +170 -0
  287. package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.d.ts +55 -0
  288. package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +182 -0
  289. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +87 -0
  290. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +346 -0
  291. package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +88 -0
  292. package/es-modules/Grid/Core/Table/Body/TableCell.js +231 -0
  293. package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +79 -0
  294. package/es-modules/Grid/Core/Table/Body/TableRow.js +177 -0
  295. package/es-modules/Grid/Core/Table/Cell.d.ts +92 -0
  296. package/es-modules/Grid/Core/Table/Cell.js +223 -0
  297. package/es-modules/Grid/Core/Table/CellContent/CellContent.d.ts +30 -0
  298. package/es-modules/Grid/Core/Table/CellContent/CellContent.js +40 -0
  299. package/es-modules/Grid/Core/Table/CellContent/TextContent.d.ts +19 -0
  300. package/es-modules/Grid/Core/Table/CellContent/TextContent.js +98 -0
  301. package/es-modules/Grid/Core/Table/Column.d.ts +136 -0
  302. package/es-modules/Grid/Core/Table/Column.js +230 -0
  303. package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.d.ts +7 -0
  304. package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +62 -0
  305. package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.d.ts +32 -0
  306. package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +68 -0
  307. package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.d.ts +7 -0
  308. package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +53 -0
  309. package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.d.ts +7 -0
  310. package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +63 -0
  311. package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.d.ts +92 -0
  312. package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +194 -0
  313. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +68 -0
  314. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +187 -0
  315. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.d.ts +29 -0
  316. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +77 -0
  317. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.d.ts +13 -0
  318. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +79 -0
  319. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +12 -0
  320. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +71 -0
  321. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.d.ts +12 -0
  322. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +66 -0
  323. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.d.ts +25 -0
  324. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +65 -0
  325. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.d.ts +12 -0
  326. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +81 -0
  327. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.d.ts +12 -0
  328. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +80 -0
  329. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +11 -0
  330. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +81 -0
  331. package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +70 -0
  332. package/es-modules/Grid/Core/Table/Header/HeaderCell.js +225 -0
  333. package/es-modules/Grid/Core/Table/Header/HeaderRow.d.ts +53 -0
  334. package/es-modules/Grid/Core/Table/Header/HeaderRow.js +182 -0
  335. package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +65 -0
  336. package/es-modules/Grid/Core/Table/Header/TableHeader.js +159 -0
  337. package/es-modules/Grid/Core/Table/Row.d.ts +76 -0
  338. package/es-modules/Grid/Core/Table/Row.js +131 -0
  339. package/es-modules/Grid/Core/Table/Table.d.ts +181 -0
  340. package/es-modules/Grid/Core/Table/Table.js +399 -0
  341. package/es-modules/Grid/Core/UI/Button.d.ts +31 -0
  342. package/es-modules/Grid/Core/UI/Button.js +16 -0
  343. package/es-modules/Grid/Core/UI/ContextMenu.d.ts +38 -0
  344. package/es-modules/Grid/Core/UI/ContextMenu.js +132 -0
  345. package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +126 -0
  346. package/es-modules/Grid/Core/UI/ContextMenuButton.js +183 -0
  347. package/es-modules/Grid/Core/UI/Popup.d.ts +149 -0
  348. package/es-modules/Grid/Core/UI/Popup.js +271 -0
  349. package/es-modules/Grid/Core/UI/SvgIcons.d.ts +53 -0
  350. package/es-modules/Grid/Core/UI/SvgIcons.js +158 -0
  351. package/es-modules/Grid/Core/UI/Toolbar.d.ts +16 -0
  352. package/es-modules/Grid/Core/UI/Toolbar.js +16 -0
  353. package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +135 -0
  354. package/es-modules/Grid/Core/UI/ToolbarButton.js +191 -0
  355. package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +112 -0
  356. package/es-modules/Grid/Pro/CellEditing/CellEditing.d.ts +80 -0
  357. package/es-modules/Grid/Pro/CellEditing/CellEditing.js +211 -0
  358. package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.d.ts +123 -0
  359. package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +198 -0
  360. package/es-modules/Grid/Pro/CellRendering/CellContentPro.d.ts +23 -0
  361. package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +45 -0
  362. package/es-modules/Grid/Pro/CellRendering/CellRenderer.d.ts +50 -0
  363. package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +41 -0
  364. package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.d.ts +18 -0
  365. package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +58 -0
  366. package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +48 -0
  367. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +18 -0
  368. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +79 -0
  369. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +30 -0
  370. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +122 -0
  371. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.d.ts +12 -0
  372. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +39 -0
  373. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.d.ts +66 -0
  374. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +145 -0
  375. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.d.ts +12 -0
  376. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +38 -0
  377. package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.d.ts +58 -0
  378. package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +158 -0
  379. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +58 -0
  380. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +173 -0
  381. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +28 -0
  382. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +157 -0
  383. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +58 -0
  384. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +168 -0
  385. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.d.ts +13 -0
  386. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +41 -0
  387. package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.d.ts +50 -0
  388. package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +65 -0
  389. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.d.ts +37 -0
  390. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +65 -0
  391. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.d.ts +26 -0
  392. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +16 -0
  393. package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.d.ts +37 -0
  394. package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +64 -0
  395. package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.d.ts +52 -0
  396. package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +64 -0
  397. package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.d.ts +74 -0
  398. package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +66 -0
  399. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +45 -0
  400. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +89 -0
  401. package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.d.ts +54 -0
  402. package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +65 -0
  403. package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.d.ts +43 -0
  404. package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +74 -0
  405. package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.d.ts +37 -0
  406. package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +64 -0
  407. package/es-modules/Grid/Pro/ColumnTypes/ColumnDataType.d.ts +29 -0
  408. package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +118 -0
  409. package/es-modules/Grid/Pro/ColumnTypes/Validator.js +270 -0
  410. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +32 -0
  411. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +63 -0
  412. package/es-modules/Grid/Pro/Credits/CreditsPro.d.ts +35 -0
  413. package/es-modules/Grid/Pro/Credits/CreditsPro.js +112 -0
  414. package/es-modules/Grid/Pro/Credits/CreditsProComposition.d.ts +28 -0
  415. package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +61 -0
  416. package/es-modules/Grid/Pro/Export/Exporting.d.ts +68 -0
  417. package/es-modules/Grid/Pro/Export/Exporting.js +202 -0
  418. package/es-modules/Grid/Pro/Export/ExportingComposition.d.ts +68 -0
  419. package/es-modules/Grid/Pro/Export/ExportingComposition.js +55 -0
  420. package/es-modules/Grid/Pro/GridEvents.d.ts +119 -0
  421. package/es-modules/Grid/Pro/GridEvents.js +107 -0
  422. package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +75 -0
  423. package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +76 -0
  424. package/es-modules/Grid/Pro/highcharts.d.ts +7 -0
  425. package/es-modules/Grid/index.d.ts +5 -0
  426. package/es-modules/Grid/index.js +19 -0
  427. package/es-modules/Shared/BaseForm.d.ts +49 -0
  428. package/es-modules/Shared/BaseForm.js +126 -0
  429. package/es-modules/Shared/DownloadURL.d.ts +85 -0
  430. package/es-modules/Shared/DownloadURL.js +198 -0
  431. package/es-modules/Shared/LangOptionsCore.d.ts +27 -0
  432. package/es-modules/Shared/TimeBase.d.ts +353 -0
  433. package/es-modules/Shared/TimeBase.js +830 -0
  434. package/es-modules/Shared/Types.d.ts +48 -0
  435. package/es-modules/masters/grid-pro.src.d.ts +99 -0
  436. package/es-modules/masters/grid-pro.src.js +129 -0
  437. package/grid-pro.d.ts +50 -0
  438. package/grid-pro.js +12 -0
  439. package/grid-pro.js.map +1 -0
  440. package/grid-pro.src.d.ts +50 -0
  441. package/grid-pro.src.js +26623 -0
  442. package/package.json +21 -0
@@ -0,0 +1,488 @@
1
+ /* *
2
+ *
3
+ * (c) 2009-2025 Highsoft AS
4
+ *
5
+ * License: www.highcharts.com/license
6
+ *
7
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
8
+ *
9
+ * Authors:
10
+ * - Sophie Bremer
11
+ *
12
+ * */
13
+ 'use strict';
14
+ import U from '../../Core/Utilities.js';
15
+ const { isString } = U;
16
+ /* *
17
+ *
18
+ * Constants
19
+ *
20
+ * */
21
+ /**
22
+ * @private
23
+ */
24
+ const booleanRegExp = /^(?:FALSE|TRUE)/;
25
+ /**
26
+ * `.`-separated decimal.
27
+ * @private
28
+ */
29
+ const decimal1RegExp = /^[+\-]?\d+(?:\.\d+)?(?:e[+\-]\d+)?/;
30
+ /**
31
+ * `,`-separated decimal.
32
+ * @private
33
+ */
34
+ const decimal2RegExp = /^[+\-]?\d+(?:,\d+)?(?:e[+\-]\d+)?/;
35
+ /**
36
+ * - Group 1: Function name
37
+ * @private
38
+ */
39
+ const functionRegExp = /^([A-Z][A-Z\d\.]*)\(/;
40
+ /**
41
+ * @private
42
+ */
43
+ const operatorRegExp = /^(?:[+\-*\/^<=>]|<=|=>)/;
44
+ /**
45
+ * - Group 1: Start column
46
+ * - Group 2: Start row
47
+ * - Group 3: End column
48
+ * - Group 4: End row
49
+ * @private
50
+ */
51
+ const rangeA1RegExp = /^(\$?[A-Z]+)(\$?\d+)\:(\$?[A-Z]+)(\$?\d+)/;
52
+ /**
53
+ * - Group 1: Start row
54
+ * - Group 2: Start column
55
+ * - Group 3: End row
56
+ * - Group 4: End column
57
+ * @private
58
+ */
59
+ const rangeR1C1RegExp = /^R(\d*|\[\d+\])C(\d*|\[\d+\])\:R(\d*|\[\d+\])C(\d*|\[\d+\])/;
60
+ /**
61
+ * - Group 1: Column
62
+ * - Group 2: Row
63
+ * @private
64
+ */
65
+ const referenceA1RegExp = /^(\$?[A-Z]+)(\$?\d+)(?![\:C])/;
66
+ /**
67
+ * - Group 1: Row
68
+ * - Group 2: Column
69
+ * @private
70
+ */
71
+ const referenceR1C1RegExp = /^R(\d*|\[\d+\])C(\d*|\[\d+\])(?!\:)/;
72
+ /* *
73
+ *
74
+ * Functions
75
+ *
76
+ * */
77
+ /**
78
+ * Extracts the inner string of the most outer parantheses.
79
+ *
80
+ * @private
81
+ *
82
+ * @param {string} text
83
+ * Text string to extract from.
84
+ *
85
+ * @return {string}
86
+ * Extracted parantheses. If not found an exception will be thrown.
87
+ */
88
+ function extractParantheses(text) {
89
+ let parantheseLevel = 0;
90
+ for (let i = 0, iEnd = text.length, char, parantheseStart = 1; i < iEnd; ++i) {
91
+ char = text[i];
92
+ if (char === '(') {
93
+ if (!parantheseLevel) {
94
+ parantheseStart = i + 1;
95
+ }
96
+ ++parantheseLevel;
97
+ continue;
98
+ }
99
+ if (char === ')') {
100
+ --parantheseLevel;
101
+ if (!parantheseLevel) {
102
+ return text.substring(parantheseStart, i);
103
+ }
104
+ }
105
+ }
106
+ if (parantheseLevel > 0) {
107
+ const error = new Error('Incomplete parantheses.');
108
+ error.name = 'FormulaParseError';
109
+ throw error;
110
+ }
111
+ return '';
112
+ }
113
+ /**
114
+ * Extracts the inner string value.
115
+ *
116
+ * @private
117
+ *
118
+ * @param {string} text
119
+ * Text string to extract from.
120
+ *
121
+ * @return {string}
122
+ * Extracted string. If not found an exception will be thrown.
123
+ */
124
+ function extractString(text) {
125
+ let start = -1;
126
+ for (let i = 0, iEnd = text.length, char, escaping = false; i < iEnd; ++i) {
127
+ char = text[i];
128
+ if (char === '\\') {
129
+ escaping = !escaping;
130
+ continue;
131
+ }
132
+ if (escaping) {
133
+ escaping = false;
134
+ continue;
135
+ }
136
+ if (char === '"') {
137
+ if (start < 0) {
138
+ start = i;
139
+ }
140
+ else {
141
+ return text.substring(start + 1, i); // `ì` is excluding
142
+ }
143
+ }
144
+ }
145
+ const error = new Error('Incomplete string.');
146
+ error.name = 'FormulaParseError';
147
+ throw error;
148
+ }
149
+ /**
150
+ * Parses an argument string. Formula arrays with a single term will be
151
+ * simplified to the term.
152
+ *
153
+ * @private
154
+ *
155
+ * @param {string} text
156
+ * Argument string to parse.
157
+ *
158
+ * @param {boolean} alternativeSeparators
159
+ * Whether to expect `;` as argument separator and `,` as decimal separator.
160
+ *
161
+ * @return {Formula|Function|Range|Reference|Value}
162
+ * The recognized term structure.
163
+ */
164
+ function parseArgument(text, alternativeSeparators) {
165
+ let match;
166
+ // Check for a R1C1:R1C1 range notation
167
+ match = text.match(rangeR1C1RegExp);
168
+ if (match) {
169
+ const beginColumnRelative = (match[2] === '' || match[2][0] === '[');
170
+ const beginRowRelative = (match[1] === '' || match[1][0] === '[');
171
+ const endColumnRelative = (match[4] === '' || match[4][0] === '[');
172
+ const endRowRelative = (match[3] === '' || match[3][0] === '[');
173
+ const range = {
174
+ type: 'range',
175
+ beginColumn: (beginColumnRelative ?
176
+ parseInt(match[2].substring(1, -1) || '0', 10) :
177
+ parseInt(match[2], 10) - 1),
178
+ beginRow: (beginRowRelative ?
179
+ parseInt(match[1].substring(1, -1) || '0', 10) :
180
+ parseInt(match[1], 10) - 1),
181
+ endColumn: (endColumnRelative ?
182
+ parseInt(match[4].substring(1, -1) || '0', 10) :
183
+ parseInt(match[4], 10) - 1),
184
+ endRow: (endRowRelative ?
185
+ parseInt(match[3].substring(1, -1) || '0', 10) :
186
+ parseInt(match[3], 10) - 1)
187
+ };
188
+ if (beginColumnRelative) {
189
+ range.beginColumnRelative = true;
190
+ }
191
+ if (beginRowRelative) {
192
+ range.beginRowRelative = true;
193
+ }
194
+ if (endColumnRelative) {
195
+ range.endColumnRelative = true;
196
+ }
197
+ if (endRowRelative) {
198
+ range.endRowRelative = true;
199
+ }
200
+ return range;
201
+ }
202
+ // Check for a A1:A1 range notation
203
+ match = text.match(rangeA1RegExp);
204
+ if (match) {
205
+ const beginColumnRelative = match[1][0] !== '$';
206
+ const beginRowRelative = match[2][0] !== '$';
207
+ const endColumnRelative = match[3][0] !== '$';
208
+ const endRowRelative = match[4][0] !== '$';
209
+ const range = {
210
+ type: 'range',
211
+ beginColumn: parseReferenceColumn(beginColumnRelative ?
212
+ match[1] :
213
+ match[1].substring(1)) - 1,
214
+ beginRow: parseInt(beginRowRelative ?
215
+ match[2] :
216
+ match[2].substring(1), 10) - 1,
217
+ endColumn: parseReferenceColumn(endColumnRelative ?
218
+ match[3] :
219
+ match[3].substring(1)) - 1,
220
+ endRow: parseInt(endRowRelative ?
221
+ match[4] :
222
+ match[4].substring(1), 10) - 1
223
+ };
224
+ if (beginColumnRelative) {
225
+ range.beginColumnRelative = true;
226
+ }
227
+ if (beginRowRelative) {
228
+ range.beginRowRelative = true;
229
+ }
230
+ if (endColumnRelative) {
231
+ range.endColumnRelative = true;
232
+ }
233
+ if (endRowRelative) {
234
+ range.endRowRelative = true;
235
+ }
236
+ return range;
237
+ }
238
+ // Fallback to formula processing for other pattern types
239
+ const formula = parseFormula(text, alternativeSeparators);
240
+ return (formula.length === 1 && typeof formula[0] !== 'string' ?
241
+ formula[0] :
242
+ formula);
243
+ }
244
+ /**
245
+ * Parse arguments string inside function parantheses.
246
+ *
247
+ * @private
248
+ *
249
+ * @param {string} text
250
+ * Parantheses string of the function.
251
+ *
252
+ * @param {boolean} alternativeSeparators
253
+ * Whether to expect `;` as argument separator and `,` as decimal separator.
254
+ *
255
+ * @return {Highcharts.FormulaArguments}
256
+ * Parsed arguments array.
257
+ */
258
+ function parseArguments(text, alternativeSeparators) {
259
+ const args = [], argumentsSeparator = (alternativeSeparators ? ';' : ',');
260
+ let parantheseLevel = 0, term = '';
261
+ for (let i = 0, iEnd = text.length, char; i < iEnd; ++i) {
262
+ char = text[i];
263
+ // Check for separator
264
+ if (char === argumentsSeparator &&
265
+ !parantheseLevel &&
266
+ term) {
267
+ args.push(parseArgument(term, alternativeSeparators));
268
+ term = '';
269
+ // Check for a quoted string before skip logic
270
+ }
271
+ else if (char === '"' &&
272
+ !parantheseLevel &&
273
+ !term) {
274
+ const string = extractString(text.substring(i));
275
+ args.push(string);
276
+ i += string.length + 1; // Only +1 to cover ++i in for-loop
277
+ // Skip space and check paranthesis nesting
278
+ }
279
+ else if (char !== ' ') {
280
+ term += char;
281
+ if (char === '(') {
282
+ ++parantheseLevel;
283
+ }
284
+ else if (char === ')') {
285
+ --parantheseLevel;
286
+ }
287
+ }
288
+ }
289
+ // Look for left-overs from last argument
290
+ if (!parantheseLevel && term) {
291
+ args.push(parseArgument(term, alternativeSeparators));
292
+ }
293
+ return args;
294
+ }
295
+ /**
296
+ * Checks if there's one of the following operator before the negative number
297
+ * value: '*', '/' or '^'.
298
+ *
299
+ * Used to properly indicate a negative value reference or negate a directly
300
+ * passed number value.
301
+ */
302
+ function negativeReference(formula) {
303
+ const formulaLength = formula.length;
304
+ const priorFormula = formula[formulaLength - 2];
305
+ return (formula[formulaLength - 1] === '-' &&
306
+ isString(priorFormula) &&
307
+ !!priorFormula.match(/\*|\/|\^/));
308
+ }
309
+ /**
310
+ * Converts a spreadsheet formula string into a formula array. Throws a
311
+ * `FormulaParserError` when the string can not be parsed.
312
+ *
313
+ * @private
314
+ * @function Formula.parseFormula
315
+ *
316
+ * @param {string} text
317
+ * Spreadsheet formula string, without the leading `=`.
318
+ *
319
+ * @param {boolean} alternativeSeparators
320
+ * * `false` to expect `,` between arguments and `.` in decimals.
321
+ * * `true` to expect `;` between arguments and `,` in decimals.
322
+ *
323
+ * @return {Formula.Formula}
324
+ * Formula array representing the string.
325
+ */
326
+ function parseFormula(text, alternativeSeparators) {
327
+ const decimalRegExp = (alternativeSeparators ?
328
+ decimal2RegExp :
329
+ decimal1RegExp), formula = [];
330
+ let match, next = (text[0] === '=' ? text.substring(1) : text).trim();
331
+ while (next) {
332
+ // Check for an R1C1 reference notation
333
+ match = next.match(referenceR1C1RegExp);
334
+ if (match) {
335
+ const columnRelative = (match[2] === '' || match[2][0] === '[');
336
+ const rowRelative = (match[1] === '' || match[1][0] === '[');
337
+ const reference = {
338
+ type: 'reference',
339
+ column: (columnRelative ?
340
+ parseInt(match[2].substring(1, -1) || '0', 10) :
341
+ parseInt(match[2], 10) - 1),
342
+ row: (rowRelative ?
343
+ parseInt(match[1].substring(1, -1) || '0', 10) :
344
+ parseInt(match[1], 10) - 1)
345
+ };
346
+ if (columnRelative) {
347
+ reference.columnRelative = true;
348
+ }
349
+ if (rowRelative) {
350
+ reference.rowRelative = true;
351
+ }
352
+ if (negativeReference(formula)) {
353
+ formula.pop();
354
+ reference.isNegative = true;
355
+ }
356
+ formula.push(reference);
357
+ next = next.substring(match[0].length).trim();
358
+ continue;
359
+ }
360
+ // Check for an A1 reference notation
361
+ match = next.match(referenceA1RegExp);
362
+ if (match) {
363
+ const columnRelative = match[1][0] !== '$';
364
+ const rowRelative = match[2][0] !== '$';
365
+ const reference = {
366
+ type: 'reference',
367
+ column: parseReferenceColumn(columnRelative ?
368
+ match[1] :
369
+ match[1].substring(1)) - 1,
370
+ row: parseInt(rowRelative ?
371
+ match[2] :
372
+ match[2].substring(1), 10) - 1
373
+ };
374
+ if (columnRelative) {
375
+ reference.columnRelative = true;
376
+ }
377
+ if (rowRelative) {
378
+ reference.rowRelative = true;
379
+ }
380
+ if (negativeReference(formula)) {
381
+ formula.pop();
382
+ reference.isNegative = true;
383
+ }
384
+ formula.push(reference);
385
+ next = next.substring(match[0].length).trim();
386
+ continue;
387
+ }
388
+ // Check for a formula operator
389
+ match = next.match(operatorRegExp);
390
+ if (match) {
391
+ formula.push(match[0]);
392
+ next = next.substring(match[0].length).trim();
393
+ continue;
394
+ }
395
+ // Check for a boolean value
396
+ match = next.match(booleanRegExp);
397
+ if (match) {
398
+ formula.push(match[0] === 'TRUE');
399
+ next = next.substring(match[0].length).trim();
400
+ continue;
401
+ }
402
+ // Check for a number value
403
+ match = next.match(decimalRegExp);
404
+ if (match) {
405
+ let number = parseFloat(match[0]);
406
+ // If the current value is multiplication-related and the previous
407
+ // one is a minus sign, set the current value to negative and remove
408
+ // the minus sign.
409
+ if (negativeReference(formula)) {
410
+ formula.pop();
411
+ number = -number;
412
+ }
413
+ formula.push(number);
414
+ next = next.substring(match[0].length).trim();
415
+ continue;
416
+ }
417
+ // Check for a quoted string
418
+ if (next[0] === '"') {
419
+ const string = extractString(next);
420
+ formula.push(string.substring(1, -1));
421
+ next = next.substring(string.length + 2).trim();
422
+ continue;
423
+ }
424
+ // Check for a function
425
+ match = next.match(functionRegExp);
426
+ if (match) {
427
+ next = next.substring(match[1].length).trim();
428
+ const parantheses = extractParantheses(next);
429
+ formula.push({
430
+ type: 'function',
431
+ name: match[1],
432
+ args: parseArguments(parantheses, alternativeSeparators)
433
+ });
434
+ next = next.substring(parantheses.length + 2).trim();
435
+ continue;
436
+ }
437
+ // Check for a formula in parantheses
438
+ if (next[0] === '(') {
439
+ const paranteses = extractParantheses(next);
440
+ if (paranteses) {
441
+ formula
442
+ .push(parseFormula(paranteses, alternativeSeparators));
443
+ next = next.substring(paranteses.length + 2).trim();
444
+ continue;
445
+ }
446
+ }
447
+ // Something is not right
448
+ const position = text.length - next.length, error = new Error('Unexpected character `' +
449
+ text.substring(position, position + 1) +
450
+ '` at position ' + (position + 1) +
451
+ '. (`...' + text.substring(position - 5, position + 6) + '...`)');
452
+ error.name = 'FormulaParseError';
453
+ throw error;
454
+ }
455
+ return formula;
456
+ }
457
+ /**
458
+ * Converts a reference column `A` of `A1` into a number. Supports endless sizes
459
+ * `ZZZ...`, just limited by integer precision.
460
+ *
461
+ * @private
462
+ *
463
+ * @param {string} text
464
+ * Column string to convert.
465
+ *
466
+ * @return {number}
467
+ * Converted column index.
468
+ */
469
+ function parseReferenceColumn(text) {
470
+ let column = 0;
471
+ for (let i = 0, iEnd = text.length, code, factor = text.length - 1; i < iEnd; ++i) {
472
+ code = text.charCodeAt(i);
473
+ if (code >= 65 && code <= 90) {
474
+ column += (code - 64) * Math.pow(26, factor);
475
+ }
476
+ --factor;
477
+ }
478
+ return column;
479
+ }
480
+ /* *
481
+ *
482
+ * Default Export
483
+ *
484
+ * */
485
+ const FormulaParser = {
486
+ parseFormula
487
+ };
488
+ export default FormulaParser;
@@ -0,0 +1,155 @@
1
+ import type DataTable from '../DataTable';
2
+ import type { Arguments, Formula, Range, Reference, Term, Value } from './FormulaTypes';
3
+ /**
4
+ * Formula processor might not process a term.
5
+ * @private
6
+ */
7
+ export interface FormulaProcessError extends Error {
8
+ message: string;
9
+ name: 'FormulaProcessError';
10
+ }
11
+ export interface ProcessorFunction {
12
+ (args: Arguments, table?: DataTable, reference?: Reference): (Value | Array<Value>);
13
+ }
14
+ /**
15
+ * Converts non-number types to a logic number.
16
+ *
17
+ * @param {Highcharts.FormulaValue} value
18
+ * Value to convert.
19
+ *
20
+ * @return {number}
21
+ * Number value. `NaN` if not convertable.
22
+ */
23
+ declare function asNumber(value: Value): number;
24
+ /**
25
+ * Converts an argument to Value and in case of a range to an array of Values.
26
+ *
27
+ * @function Highcharts.Formula.getArgumentValue
28
+ *
29
+ * @param {Highcharts.FormulaRange|Highcharts.FormulaTerm} arg
30
+ * Formula range or term to convert.
31
+ *
32
+ * @param {Highcharts.DataTable} [table]
33
+ * Table to use for references and ranges.
34
+ *
35
+ * @return {Highcharts.FormulaValue|Array<Highcharts.FormulaValue>}
36
+ * Converted value.
37
+ */
38
+ declare function getArgumentValue(arg: (Range | Term), table?: DataTable): (Value | Array<Value>);
39
+ /**
40
+ * Converts all arguments to Values and in case of ranges to arrays of Values.
41
+ *
42
+ * @function Highcharts.Formula.getArgumentsValues
43
+ *
44
+ * @param {Highcharts.FormulaArguments} args
45
+ * Formula arguments to convert.
46
+ *
47
+ * @param {Highcharts.DataTable} [table]
48
+ * Table to use for references and ranges.
49
+ *
50
+ * @return {Array<(Highcharts.FormulaValue|Array<Highcharts.FormulaValue>)>}
51
+ * Converted values.
52
+ */
53
+ declare function getArgumentsValues(args: Arguments, table?: DataTable): Array<(Value | Array<Value>)>;
54
+ /**
55
+ * Extracts cell values from a table for a given range.
56
+ *
57
+ * @function Highcharts.Formula.getRangeValues
58
+ *
59
+ * @param {Highcharts.FormulaRange} range
60
+ * Formula range to use.
61
+ *
62
+ * @param {Highcharts.DataTable} table
63
+ * Table to extract from.
64
+ *
65
+ * @return {Array<Highcharts.FormulaValue>}
66
+ * Extracted values.
67
+ */
68
+ declare function getRangeValues(range: Range, table: DataTable): Array<Value>;
69
+ /**
70
+ * Extracts the cell value from a table for a given reference.
71
+ *
72
+ * @private
73
+ *
74
+ * @param {Highcharts.FormulaReference} reference
75
+ * Formula reference to use.
76
+ *
77
+ * @param {Highcharts.DataTable} table
78
+ * Table to extract from.
79
+ *
80
+ * @return {Highcharts.FormulaValue}
81
+ * Extracted value. 'undefined' might also indicate that the cell was not found.
82
+ */
83
+ declare function getReferenceValue(reference: Reference, table: DataTable): Value;
84
+ /**
85
+ * Processes a formula array on the given table. If the formula does not contain
86
+ * references or ranges, then no table has to be provided.
87
+ *
88
+ * Performs formulas considering the operators precedence.
89
+ *
90
+ * // Example of the `2 * 3 + 4` formula:
91
+ * 2 -> values: [2], operators: []
92
+ * * -> values: [2], operators: [*]
93
+ * 3 -> values: [2, 3], operators: [*]
94
+ * // Since the higher precedence operator exists (* > +), perform it first.
95
+ * + -> values: [6], operators: [+]
96
+ * 4 -> values: [6, 4], operators: [+]
97
+ * // When non-higher precedence operators remain, perform rest calculations.
98
+ * -> values: [10], operators: []
99
+ *
100
+ * @private
101
+ * @function Highcharts.processFormula
102
+ *
103
+ * @param {Highcharts.Formula} formula
104
+ * Formula array to process.
105
+ *
106
+ * @param {Highcharts.DataTable} [table]
107
+ * Table to use for references and ranges.
108
+ *
109
+ * @return {Highcharts.FormulaValue}
110
+ * Result value of the process. `NaN` indicates an error.
111
+ */
112
+ declare function processFormula(formula: Formula, table?: DataTable): Value;
113
+ /**
114
+ * Registers a function for the FormulaProcessor.
115
+ *
116
+ * @param {string} name
117
+ * Name of the function in spreadsheets notation with upper case.
118
+ *
119
+ * @param {Highcharts.FormulaFunction} processorFunction
120
+ * ProcessorFunction for the FormulaProcessor. This is an object so that it
121
+ * can take additional parameter for future validation routines.
122
+ *
123
+ * @return {boolean}
124
+ * Return true, if the ProcessorFunction has been registered.
125
+ */
126
+ declare function registerProcessorFunction(name: string, processorFunction: ProcessorFunction): boolean;
127
+ /**
128
+ * Translates relative references and ranges in-place.
129
+ *
130
+ * @param {Highcharts.Formula} formula
131
+ * Formula to translate references and ranges in.
132
+ *
133
+ * @param {number} [columnDelta=0]
134
+ * Column delta to translate to. Negative translate back.
135
+ *
136
+ * @param {number} [rowDelta=0]
137
+ * Row delta to translate to. Negative numbers translate back.
138
+ *
139
+ * @return {Highcharts.Formula}
140
+ * Formula with translated reference and ranges. This formula is equal to the
141
+ * first argument.
142
+ */
143
+ declare function translateReferences<T extends Arguments | Formula>(formula: T, columnDelta?: number, rowDelta?: number): T;
144
+ declare const FormulaProcessor: {
145
+ asNumber: typeof asNumber;
146
+ getArgumentValue: typeof getArgumentValue;
147
+ getArgumentsValues: typeof getArgumentsValues;
148
+ getRangeValues: typeof getRangeValues;
149
+ getReferenceValue: typeof getReferenceValue;
150
+ processFormula: typeof processFormula;
151
+ processorFunctions: Record<string, ProcessorFunction>;
152
+ registerProcessorFunction: typeof registerProcessorFunction;
153
+ translateReferences: typeof translateReferences;
154
+ };
155
+ export default FormulaProcessor;