@highcharts/grid-pro 2.1.1 → 2.3.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 (455) hide show
  1. package/LICENSE.txt +6 -0
  2. package/README.md +15 -9
  3. package/css/grid-pro.css +1289 -1153
  4. package/css/modules/grid-base-variables.css +131 -0
  5. package/css/modules/grid-button-variables.css +140 -0
  6. package/css/modules/grid-caption-variables.css +11 -0
  7. package/css/modules/grid-description-variables.css +11 -0
  8. package/css/modules/grid-input-variables.css +114 -0
  9. package/css/modules/grid-link-variables.css +18 -0
  10. package/css/modules/grid-menu-variables.css +50 -0
  11. package/css/modules/grid-pagination-variables.css +12 -0
  12. package/css/modules/grid-popup-variables.css +24 -0
  13. package/css/modules/grid-pro.css +234 -0
  14. package/css/modules/grid-table-variables.css +385 -0
  15. package/css/modules/grid-theme-default.css +55 -0
  16. package/es-modules/Accessibility/A11yI18n.js +4 -5
  17. package/es-modules/Accessibility/Accessibility.js +5 -5
  18. package/es-modules/Accessibility/AccessibilityComponent.d.ts +3 -3
  19. package/es-modules/Accessibility/AccessibilityComponent.js +4 -3
  20. package/es-modules/Accessibility/Components/AnnotationsA11y.js +4 -3
  21. package/es-modules/Accessibility/Components/ContainerComponent.js +4 -3
  22. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +9 -9
  23. package/es-modules/Accessibility/Components/LegendComponent.js +5 -5
  24. package/es-modules/Accessibility/Components/MenuComponent.js +5 -5
  25. package/es-modules/Accessibility/Components/NavigatorComponent.js +6 -7
  26. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +5 -5
  27. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +15 -5
  28. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +7 -7
  29. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +4 -3
  30. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +7 -7
  31. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +5 -5
  32. package/es-modules/Accessibility/Components/ZoomComponent.js +5 -5
  33. package/es-modules/Accessibility/FocusBorder.js +5 -5
  34. package/es-modules/Accessibility/HighContrastMode.js +4 -3
  35. package/es-modules/Accessibility/HighContrastTheme.js +4 -3
  36. package/es-modules/Accessibility/KeyboardNavigation.js +5 -5
  37. package/es-modules/Accessibility/KeyboardNavigationHandler.js +5 -5
  38. package/es-modules/Accessibility/Options/A11yDefaults.d.ts +11 -0
  39. package/es-modules/Accessibility/Options/A11yDefaults.js +15 -3
  40. package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +58 -0
  41. package/es-modules/Accessibility/Options/DeprecatedOptions.js +11 -5
  42. package/es-modules/Accessibility/Options/LangDefaults.js +13 -3
  43. package/es-modules/Accessibility/ProxyElement.js +6 -8
  44. package/es-modules/Accessibility/ProxyProvider.js +5 -5
  45. package/es-modules/Accessibility/Utils/Announcer.js +6 -6
  46. package/es-modules/Accessibility/Utils/ChartUtilities.js +5 -5
  47. package/es-modules/Accessibility/Utils/DOMElementProvider.js +4 -3
  48. package/es-modules/Accessibility/Utils/EventProvider.d.ts +3 -3
  49. package/es-modules/Accessibility/Utils/EventProvider.js +10 -5
  50. package/es-modules/Accessibility/Utils/HTMLUtilities.js +5 -5
  51. package/es-modules/Core/Animation/AnimationOptions.d.ts +42 -0
  52. package/es-modules/Core/Animation/AnimationOptions.js +10 -0
  53. package/es-modules/Core/Animation/AnimationUtilities.js +40 -5
  54. package/es-modules/Core/Animation/Fx.d.ts +1 -130
  55. package/es-modules/Core/Animation/Fx.js +14 -8
  56. package/es-modules/Core/Animation/FxBase.d.ts +1 -0
  57. package/es-modules/Core/Animation/FxBase.js +11 -0
  58. package/es-modules/Core/Callback.d.ts +56 -0
  59. package/es-modules/Core/Callback.js +10 -0
  60. package/es-modules/Core/Chart/Chart.d.ts +659 -400
  61. package/es-modules/Core/Chart/Chart.js +112 -95
  62. package/es-modules/Core/Chart/Chart3D.d.ts +123 -233
  63. package/es-modules/Core/Chart/Chart3D.js +23 -37
  64. package/es-modules/Core/Chart/ChartBase.d.ts +3 -0
  65. package/es-modules/Core/Chart/ChartBase.js +11 -0
  66. package/es-modules/Core/Chart/ChartDefaults.js +18 -12
  67. package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +1 -55
  68. package/es-modules/Core/Chart/ChartNavigationComposition.js +13 -13
  69. package/es-modules/Core/Chart/ChartOptions.d.ts +1225 -0
  70. package/es-modules/Core/Chart/ChartOptions.js +10 -0
  71. package/es-modules/Core/Chart/GanttChart.d.ts +0 -38
  72. package/es-modules/Core/Chart/GanttChart.js +5 -5
  73. package/es-modules/Core/Chart/MapChart.d.ts +9 -4
  74. package/es-modules/Core/Chart/MapChart.js +14 -5
  75. package/es-modules/Core/Chart/StockChart.d.ts +0 -85
  76. package/es-modules/Core/Chart/StockChart.js +35 -18
  77. package/es-modules/Core/Color/Color.d.ts +16 -24
  78. package/es-modules/Core/Color/Color.js +27 -10
  79. package/es-modules/Core/Color/ColorString.d.ts +0 -23
  80. package/es-modules/Core/Color/ColorString.js +11 -0
  81. package/es-modules/Core/Color/ColorType.d.ts +0 -33
  82. package/es-modules/Core/Color/ColorType.js +11 -0
  83. package/es-modules/Core/Color/GradientColor.d.ts +0 -33
  84. package/es-modules/Core/Color/GradientColor.js +11 -0
  85. package/es-modules/Core/Color/Palettes.d.ts +1 -84
  86. package/es-modules/Core/Color/Palettes.js +2 -1
  87. package/es-modules/Core/Defaults.d.ts +6 -0
  88. package/es-modules/Core/Defaults.js +66 -75
  89. package/es-modules/Core/Delaunay.d.ts +52 -0
  90. package/es-modules/Core/Delaunay.js +310 -0
  91. package/es-modules/Core/Foundation.d.ts +1 -19
  92. package/es-modules/Core/Foundation.js +8 -6
  93. package/es-modules/Core/Geometry/CircleObject.d.ts +5 -0
  94. package/es-modules/Core/Geometry/CircleObject.js +10 -0
  95. package/es-modules/Core/Geometry/CircleUtilities.d.ts +1 -189
  96. package/es-modules/Core/Geometry/CircleUtilities.js +18 -17
  97. package/es-modules/Core/Geometry/GeometryObject.d.ts +7 -0
  98. package/es-modules/Core/Geometry/GeometryObject.js +10 -0
  99. package/es-modules/Core/Geometry/GeometryUtilities.d.ts +1 -48
  100. package/es-modules/Core/Geometry/GeometryUtilities.js +9 -7
  101. package/es-modules/Core/Geometry/IntersectionObject.d.ts +7 -0
  102. package/es-modules/Core/Geometry/IntersectionObject.js +10 -0
  103. package/es-modules/Core/Geometry/PolygonClip.d.ts +1 -19
  104. package/es-modules/Core/Geometry/PolygonClip.js +9 -7
  105. package/es-modules/Core/Globals.d.ts +9 -31
  106. package/es-modules/Core/Globals.js +9 -10
  107. package/es-modules/Core/GlobalsBase.d.ts +35 -0
  108. package/es-modules/Core/GlobalsBase.js +11 -0
  109. package/es-modules/Core/HttpUtilities.d.ts +54 -17
  110. package/es-modules/Core/HttpUtilities.js +16 -16
  111. package/es-modules/Core/JSON.d.ts +29 -0
  112. package/es-modules/Core/JSON.js +13 -0
  113. package/es-modules/Core/KeyboardEvent.d.ts +1 -0
  114. package/es-modules/Core/KeyboardEvent.js +11 -0
  115. package/es-modules/Core/MSPointer.d.ts +1 -74
  116. package/es-modules/Core/MSPointer.js +24 -15
  117. package/es-modules/Core/Math3D.d.ts +1 -117
  118. package/es-modules/Core/Math3D.js +14 -12
  119. package/es-modules/Core/Options.d.ts +338 -0
  120. package/es-modules/Core/Options.js +10 -0
  121. package/es-modules/Core/Pointer.d.ts +71 -445
  122. package/es-modules/Core/Pointer.js +74 -69
  123. package/es-modules/Core/PointerEvent.d.ts +20 -0
  124. package/es-modules/Core/PointerEvent.js +11 -0
  125. package/es-modules/Core/Renderer/AlignObject.d.ts +25 -27
  126. package/es-modules/Core/Renderer/AlignObject.js +11 -0
  127. package/es-modules/Core/Renderer/BBoxObject.d.ts +20 -31
  128. package/es-modules/Core/Renderer/BBoxObject.js +11 -0
  129. package/es-modules/Core/Renderer/CSSObject.d.ts +268 -59
  130. package/es-modules/Core/Renderer/CSSObject.js +10 -0
  131. package/es-modules/Core/Renderer/DOMElementType.d.ts +1 -33
  132. package/es-modules/Core/Renderer/DOMElementType.js +11 -0
  133. package/es-modules/Core/Renderer/DashStyleValue.d.ts +1 -27
  134. package/es-modules/Core/Renderer/DashStyleValue.js +11 -0
  135. package/es-modules/Core/Renderer/FontMetricsObject.d.ts +6 -26
  136. package/es-modules/Core/Renderer/FontMetricsObject.js +11 -0
  137. package/es-modules/Core/Renderer/HTML/AST.d.ts +3 -15
  138. package/es-modules/Core/Renderer/HTML/AST.js +24 -15
  139. package/es-modules/Core/Renderer/HTML/HTMLAttributes.d.ts +1 -25
  140. package/es-modules/Core/Renderer/HTML/HTMLAttributes.js +11 -0
  141. package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +0 -54
  142. package/es-modules/Core/Renderer/HTML/HTMLElement.js +28 -24
  143. package/es-modules/Core/Renderer/PolygonBoxObject.d.ts +15 -12
  144. package/es-modules/Core/Renderer/PolygonBoxObject.js +11 -0
  145. package/es-modules/Core/Renderer/Position3DObject.d.ts +6 -30
  146. package/es-modules/Core/Renderer/Position3DObject.js +11 -0
  147. package/es-modules/Core/Renderer/PositionObject.d.ts +9 -23
  148. package/es-modules/Core/Renderer/PositionObject.js +11 -0
  149. package/es-modules/Core/Renderer/RectangleObject.d.ts +6 -30
  150. package/es-modules/Core/Renderer/RectangleObject.js +11 -0
  151. package/es-modules/Core/Renderer/RendererRegistry.d.ts +1 -29
  152. package/es-modules/Core/Renderer/RendererRegistry.js +6 -3
  153. package/es-modules/Core/Renderer/RendererType.d.ts +1 -53
  154. package/es-modules/Core/Renderer/RendererType.js +11 -0
  155. package/es-modules/Core/Renderer/RendererUtilities.d.ts +1 -26
  156. package/es-modules/Core/Renderer/RendererUtilities.js +41 -23
  157. package/es-modules/Core/Renderer/SVG/ButtonThemeObject.d.ts +26 -31
  158. package/es-modules/Core/Renderer/SVG/SVGArc3D.d.ts +1 -44
  159. package/es-modules/Core/Renderer/SVG/SVGAttributes.d.ts +15 -51
  160. package/es-modules/Core/Renderer/SVG/SVGAttributes3D.d.ts +1 -42
  161. package/es-modules/Core/Renderer/SVG/SVGCuboid.d.ts +1 -42
  162. package/es-modules/Core/Renderer/SVG/SVGElement.d.ts +459 -0
  163. package/es-modules/Core/Renderer/SVG/SVGElement3D.d.ts +1 -0
  164. package/es-modules/Core/Renderer/SVG/SVGElementBase.d.ts +0 -23
  165. package/es-modules/Core/Renderer/SVG/SVGLabel.d.ts +14 -0
  166. package/es-modules/Core/Renderer/SVG/SVGPath.d.ts +18 -56
  167. package/es-modules/Core/Renderer/SVG/SVGPath3D.d.ts +0 -30
  168. package/es-modules/Core/Renderer/SVG/SVGRenderer.d.ts +652 -0
  169. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.d.ts +1 -0
  170. package/es-modules/Core/Renderer/SVG/SVGRendererBase.d.ts +0 -24
  171. package/es-modules/Core/Renderer/SVG/SymbolOptions.d.ts +3 -26
  172. package/es-modules/Core/Renderer/SVG/SymbolType.d.ts +1 -41
  173. package/es-modules/Core/Renderer/SVG/Symbols.d.ts +146 -0
  174. package/es-modules/Core/Renderer/SVG/TextBuilder.d.ts +1 -0
  175. package/es-modules/Core/Renderer/ShadowOptionsObject.d.ts +21 -30
  176. package/es-modules/Core/Renderer/ShadowOptionsObject.js +11 -0
  177. package/es-modules/Core/Renderer/SizeObject.d.ts +0 -23
  178. package/es-modules/Core/Renderer/SizeObject.js +11 -0
  179. package/es-modules/Core/Responsive.d.ts +94 -29
  180. package/es-modules/Core/Responsive.js +17 -12
  181. package/es-modules/Core/Templating.d.ts +17 -1
  182. package/es-modules/Core/Templating.js +12 -8
  183. package/es-modules/Core/Time.d.ts +18 -1
  184. package/es-modules/Core/Time.js +6 -5
  185. package/es-modules/Core/Tooltip.d.ts +67 -123
  186. package/es-modules/Core/Tooltip.js +161 -108
  187. package/es-modules/Core/TooltipOptions.d.ts +724 -0
  188. package/es-modules/Core/TooltipOptions.js +10 -0
  189. package/es-modules/Core/Utilities.d.ts +32 -703
  190. package/es-modules/Core/Utilities.js +28 -1443
  191. package/es-modules/Data/ColumnUtils.d.ts +83 -80
  192. package/es-modules/Data/ColumnUtils.js +106 -116
  193. package/es-modules/Data/Connectors/CSVConnector.d.ts +9 -14
  194. package/es-modules/Data/Connectors/CSVConnector.js +6 -7
  195. package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +3 -3
  196. package/es-modules/Data/Connectors/DataConnector.d.ts +63 -54
  197. package/es-modules/Data/Connectors/DataConnector.js +67 -56
  198. package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +3 -3
  199. package/es-modules/Data/Connectors/DataConnectorType.d.ts +3 -3
  200. package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +40 -42
  201. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +76 -91
  202. package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +7 -5
  203. package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +23 -28
  204. package/es-modules/Data/Connectors/HTMLTableConnector.js +6 -7
  205. package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +3 -3
  206. package/es-modules/Data/Connectors/JSONConnector.d.ts +9 -14
  207. package/es-modules/Data/Connectors/JSONConnector.js +6 -7
  208. package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +3 -3
  209. package/es-modules/Data/Converters/CSVConverter.d.ts +5 -5
  210. package/es-modules/Data/Converters/CSVConverter.js +6 -7
  211. package/es-modules/Data/Converters/CSVConverterOptions.d.ts +5 -5
  212. package/es-modules/Data/Converters/DataConverter.d.ts +76 -78
  213. package/es-modules/Data/Converters/DataConverter.js +29 -56
  214. package/es-modules/Data/Converters/DataConverterType.d.ts +3 -3
  215. package/es-modules/Data/Converters/DataConverterUtils.d.ts +88 -81
  216. package/es-modules/Data/Converters/DataConverterUtils.js +172 -184
  217. package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +4 -4
  218. package/es-modules/Data/Converters/GoogleSheetsConverter.js +6 -6
  219. package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +5 -5
  220. package/es-modules/Data/Converters/HTMLTableConverter.d.ts +4 -4
  221. package/es-modules/Data/Converters/HTMLTableConverter.js +5 -6
  222. package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +5 -5
  223. package/es-modules/Data/Converters/JSONConverter.d.ts +7 -7
  224. package/es-modules/Data/Converters/JSONConverter.js +9 -9
  225. package/es-modules/Data/Converters/JSONConverterOptions.d.ts +5 -5
  226. package/es-modules/Data/DataCursor.d.ts +65 -70
  227. package/es-modules/Data/DataCursor.js +122 -142
  228. package/es-modules/Data/DataEvent.d.ts +55 -57
  229. package/es-modules/Data/DataEvent.js +3 -3
  230. package/es-modules/Data/DataPool.d.ts +10 -17
  231. package/es-modules/Data/DataPool.js +23 -12
  232. package/es-modules/Data/DataPoolOptions.d.ts +3 -3
  233. package/es-modules/Data/DataTable.d.ts +115 -117
  234. package/es-modules/Data/DataTable.js +67 -33
  235. package/es-modules/Data/DataTableCore.d.ts +11 -11
  236. package/es-modules/Data/DataTableCore.js +7 -7
  237. package/es-modules/Data/DataTableOptions.js +3 -3
  238. package/es-modules/Data/Formula/Formula.js +3 -3
  239. package/es-modules/Data/Formula/FormulaParser.js +4 -5
  240. package/es-modules/Data/Formula/FormulaProcessor.js +4 -5
  241. package/es-modules/Data/Formula/FormulaTypes.js +3 -3
  242. package/es-modules/Data/Formula/Functions/ABS.js +3 -3
  243. package/es-modules/Data/Formula/Functions/AND.js +3 -3
  244. package/es-modules/Data/Formula/Functions/AVERAGE.js +3 -3
  245. package/es-modules/Data/Formula/Functions/AVERAGEA.js +3 -3
  246. package/es-modules/Data/Formula/Functions/COUNT.js +3 -3
  247. package/es-modules/Data/Formula/Functions/COUNTA.js +3 -3
  248. package/es-modules/Data/Formula/Functions/IF.js +3 -3
  249. package/es-modules/Data/Formula/Functions/ISNA.js +3 -3
  250. package/es-modules/Data/Formula/Functions/MAX.js +3 -3
  251. package/es-modules/Data/Formula/Functions/MEDIAN.js +3 -3
  252. package/es-modules/Data/Formula/Functions/MIN.js +3 -3
  253. package/es-modules/Data/Formula/Functions/MOD.js +3 -3
  254. package/es-modules/Data/Formula/Functions/MODE.js +3 -3
  255. package/es-modules/Data/Formula/Functions/NOT.js +3 -3
  256. package/es-modules/Data/Formula/Functions/OR.js +3 -3
  257. package/es-modules/Data/Formula/Functions/PRODUCT.js +3 -3
  258. package/es-modules/Data/Formula/Functions/SUM.js +3 -3
  259. package/es-modules/Data/Formula/Functions/XOR.js +3 -3
  260. package/es-modules/Data/Modifiers/ChainModifier.d.ts +29 -34
  261. package/es-modules/Data/Modifiers/ChainModifier.js +10 -11
  262. package/es-modules/Data/Modifiers/ChainModifierOptions.js +3 -3
  263. package/es-modules/Data/Modifiers/DataModifier.d.ts +36 -41
  264. package/es-modules/Data/Modifiers/DataModifier.js +34 -56
  265. package/es-modules/Data/Modifiers/DataModifierEvent.js +3 -3
  266. package/es-modules/Data/Modifiers/DataModifierOptions.js +3 -3
  267. package/es-modules/Data/Modifiers/DataModifierType.d.ts +3 -3
  268. package/es-modules/Data/Modifiers/FilterModifier.d.ts +4 -4
  269. package/es-modules/Data/Modifiers/FilterModifier.js +6 -7
  270. package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +3 -2
  271. package/es-modules/Data/Modifiers/FilterModifierOptions.js +3 -3
  272. package/es-modules/Data/Modifiers/InvertModifier.d.ts +4 -4
  273. package/es-modules/Data/Modifiers/InvertModifier.js +6 -7
  274. package/es-modules/Data/Modifiers/InvertModifierOptions.js +3 -3
  275. package/es-modules/Data/Modifiers/MathModifier.d.ts +5 -4
  276. package/es-modules/Data/Modifiers/MathModifier.js +3 -3
  277. package/es-modules/Data/Modifiers/MathModifierOptions.js +3 -3
  278. package/es-modules/Data/Modifiers/RangeModifier.d.ts +4 -4
  279. package/es-modules/Data/Modifiers/RangeModifier.js +6 -7
  280. package/es-modules/Data/Modifiers/RangeModifierOptions.js +3 -3
  281. package/es-modules/Data/Modifiers/SortModifier.d.ts +6 -11
  282. package/es-modules/Data/Modifiers/SortModifier.js +35 -10
  283. package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +43 -6
  284. package/es-modules/Data/Modifiers/SortModifierOptions.js +3 -3
  285. package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +77 -0
  286. package/es-modules/Grid/Core/Accessibility/A11yOptions.js +4 -3
  287. package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +68 -1
  288. package/es-modules/Grid/Core/Accessibility/Accessibility.js +179 -7
  289. package/es-modules/Grid/Core/Credits.js +3 -3
  290. package/es-modules/Grid/Core/Data/DataProvider.d.ts +97 -0
  291. package/es-modules/Grid/Core/Data/DataProvider.js +89 -0
  292. package/es-modules/Grid/Core/Data/DataProviderRegistry.d.ts +20 -0
  293. package/es-modules/Grid/Core/Data/DataProviderRegistry.js +52 -0
  294. package/es-modules/Grid/Core/Data/DataProviderType.d.ts +19 -0
  295. package/es-modules/Grid/Core/Data/DataProviderType.js +15 -0
  296. package/es-modules/Grid/Core/Data/LocalDataProvider.d.ts +165 -0
  297. package/es-modules/Grid/Core/Data/LocalDataProvider.js +341 -0
  298. package/es-modules/Grid/Core/Defaults.js +21 -7
  299. package/es-modules/Grid/Core/Globals.d.ts +20 -16
  300. package/es-modules/Grid/Core/Globals.js +13 -11
  301. package/es-modules/Grid/Core/Grid.d.ts +43 -23
  302. package/es-modules/Grid/Core/Grid.js +316 -136
  303. package/es-modules/Grid/Core/GridUtils.d.ts +33 -0
  304. package/es-modules/Grid/Core/GridUtils.js +53 -6
  305. package/es-modules/Grid/Core/Options.d.ts +162 -5
  306. package/es-modules/Grid/Core/Options.js +3 -3
  307. package/es-modules/Grid/Core/Pagination/Pagination.d.ts +3 -0
  308. package/es-modules/Grid/Core/Pagination/Pagination.js +66 -26
  309. package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +4 -40
  310. package/es-modules/Grid/Core/Pagination/PaginationOptions.js +11 -0
  311. package/es-modules/Grid/Core/Querying/FilteringController.js +4 -5
  312. package/es-modules/Grid/Core/Querying/PaginationController.d.ts +2 -2
  313. package/es-modules/Grid/Core/Querying/PaginationController.js +6 -6
  314. package/es-modules/Grid/Core/Querying/QueryingController.d.ts +1 -1
  315. package/es-modules/Grid/Core/Querying/QueryingController.js +5 -29
  316. package/es-modules/Grid/Core/Querying/SortingController.d.ts +15 -0
  317. package/es-modules/Grid/Core/Querying/SortingController.js +89 -51
  318. package/es-modules/Grid/Core/Responsive/ResponsiveComposition.d.ts +53 -0
  319. package/es-modules/Grid/Core/Responsive/ResponsiveComposition.js +229 -0
  320. package/es-modules/Grid/Core/Responsive/ResponsiveOptions.d.ts +58 -0
  321. package/es-modules/Grid/Core/Responsive/ResponsiveOptions.js +15 -0
  322. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +5 -6
  323. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +3 -3
  324. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +6 -7
  325. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +1 -1
  326. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +5 -5
  327. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +3 -3
  328. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +29 -3
  329. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +136 -26
  330. package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +4 -6
  331. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +94 -3
  332. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +481 -91
  333. package/es-modules/Grid/Core/Table/Body/CellContextMenu.d.ts +11 -0
  334. package/es-modules/Grid/Core/Table/Body/CellContextMenu.js +84 -0
  335. package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +36 -15
  336. package/es-modules/Grid/Core/Table/Body/TableCell.js +89 -33
  337. package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +15 -5
  338. package/es-modules/Grid/Core/Table/Body/TableRow.js +70 -19
  339. package/es-modules/Grid/Core/Table/Cell.d.ts +16 -10
  340. package/es-modules/Grid/Core/Table/Cell.js +41 -6
  341. package/es-modules/Grid/Core/Table/CellContent/CellContent.js +3 -3
  342. package/es-modules/Grid/Core/Table/CellContent/TextContent.js +7 -12
  343. package/es-modules/Grid/Core/Table/Column.d.ts +11 -5
  344. package/es-modules/Grid/Core/Table/Column.js +26 -37
  345. package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +3 -3
  346. package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +3 -3
  347. package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +3 -3
  348. package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +12 -11
  349. package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +7 -6
  350. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +5 -0
  351. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +21 -7
  352. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +4 -5
  353. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +4 -5
  354. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +9 -0
  355. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +37 -9
  356. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +5 -4
  357. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +11 -7
  358. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +4 -5
  359. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +4 -5
  360. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +4 -1
  361. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +88 -15
  362. package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +8 -3
  363. package/es-modules/Grid/Core/Table/Header/HeaderCell.js +36 -15
  364. package/es-modules/Grid/Core/Table/Header/HeaderRow.js +7 -8
  365. package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +1 -1
  366. package/es-modules/Grid/Core/Table/Header/TableHeader.js +6 -6
  367. package/es-modules/Grid/Core/Table/Row.d.ts +1 -1
  368. package/es-modules/Grid/Core/Table/Row.js +5 -5
  369. package/es-modules/Grid/Core/Table/Table.d.ts +68 -12
  370. package/es-modules/Grid/Core/Table/Table.js +296 -92
  371. package/es-modules/Grid/Core/UI/Button.js +3 -3
  372. package/es-modules/Grid/Core/UI/ContextMenu.js +3 -3
  373. package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +6 -7
  374. package/es-modules/Grid/Core/UI/ContextMenuButton.js +8 -6
  375. package/es-modules/Grid/Core/UI/Popup.js +10 -12
  376. package/es-modules/Grid/Core/UI/SvgIcons.d.ts +42 -7
  377. package/es-modules/Grid/Core/UI/SvgIcons.js +209 -36
  378. package/es-modules/Grid/Core/UI/Toolbar.d.ts +5 -0
  379. package/es-modules/Grid/Core/UI/Toolbar.js +3 -3
  380. package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +4 -12
  381. package/es-modules/Grid/Core/UI/ToolbarButton.js +11 -29
  382. package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +4 -45
  383. package/es-modules/Grid/Pro/CellEditing/CellEditMode.js +16 -0
  384. package/es-modules/Grid/Pro/CellEditing/CellEditing.js +13 -13
  385. package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +4 -5
  386. package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +3 -3
  387. package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +3 -3
  388. package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +3 -3
  389. package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +1 -34
  390. package/es-modules/Grid/Pro/CellRendering/CellRendererType.js +15 -0
  391. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +1 -1
  392. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +7 -5
  393. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +2 -2
  394. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +3 -3
  395. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +3 -3
  396. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +3 -3
  397. package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +3 -3
  398. package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +4 -5
  399. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +2 -2
  400. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +3 -3
  401. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +7 -5
  402. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +4 -5
  403. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +2 -2
  404. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +4 -5
  405. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +3 -3
  406. package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +4 -5
  407. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +4 -5
  408. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +3 -3
  409. package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +4 -5
  410. package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +4 -5
  411. package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +4 -5
  412. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +4 -4
  413. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +4 -5
  414. package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +4 -5
  415. package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +4 -5
  416. package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +4 -5
  417. package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +10 -1
  418. package/es-modules/Grid/Pro/ColumnTypes/Validator.js +56 -12
  419. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +1 -1
  420. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +6 -7
  421. package/es-modules/Grid/Pro/Credits/CreditsPro.js +3 -3
  422. package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +4 -6
  423. package/es-modules/Grid/Pro/Data/DataSourceHelper.d.ts +74 -0
  424. package/es-modules/Grid/Pro/Data/DataSourceHelper.js +246 -0
  425. package/es-modules/Grid/Pro/Data/QuerySerializer.d.ts +46 -0
  426. package/es-modules/Grid/Pro/Data/QuerySerializer.js +169 -0
  427. package/es-modules/Grid/Pro/Data/RemoteDataProvider.d.ts +187 -0
  428. package/es-modules/Grid/Pro/Data/RemoteDataProvider.js +500 -0
  429. package/es-modules/Grid/Pro/Export/Exporting.js +5 -7
  430. package/es-modules/Grid/Pro/Export/ExportingComposition.js +4 -5
  431. package/es-modules/Grid/Pro/GridEvents.d.ts +1 -0
  432. package/es-modules/Grid/Pro/GridEvents.js +4 -5
  433. package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +0 -1
  434. package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +4 -5
  435. package/es-modules/Grid/index.js +3 -3
  436. package/es-modules/Shared/BaseForm.js +4 -5
  437. package/es-modules/Shared/DownloadURL.d.ts +1 -85
  438. package/es-modules/Shared/DownloadURL.js +15 -13
  439. package/es-modules/Shared/LangOptionsCore.d.ts +4 -3
  440. package/es-modules/Shared/TimeBase.d.ts +1 -46
  441. package/es-modules/Shared/TimeBase.js +11 -10
  442. package/es-modules/Shared/Types.d.ts +11 -3
  443. package/es-modules/Shared/Utilities.d.ts +576 -0
  444. package/es-modules/Shared/Utilities.js +1368 -0
  445. package/es-modules/masters/grid-pro.src.d.ts +18 -19
  446. package/es-modules/masters/grid-pro.src.js +24 -9
  447. package/grid-pro.d.ts +18 -19
  448. package/grid-pro.js +6 -5
  449. package/grid-pro.js.map +1 -1
  450. package/grid-pro.src.d.ts +18 -19
  451. package/grid-pro.src.js +8132 -4531
  452. package/package.json +1 -1
  453. package/es-modules/Grid/Core/Pagination/Icons.d.ts +0 -7
  454. package/es-modules/Grid/Core/Pagination/Icons.js +0 -7
  455. package/es-modules/Grid/Pro/highcharts.d.ts +0 -7
@@ -0,0 +1,500 @@
1
+ /* *
2
+ *
3
+ * Remote Data Provider class
4
+ *
5
+ * (c) 2020-2025 Highsoft AS
6
+ *
7
+ * License: www.highcharts.com/license
8
+ *
9
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
+ *
11
+ * Authors:
12
+ * - Dawid Dragula
13
+ *
14
+ * */
15
+ 'use strict';
16
+ import { DataProvider } from '../../Core/Data/DataProvider.js';
17
+ import DataProviderRegistry from '../../Core/Data/DataProviderRegistry.js';
18
+ import { createQueryFingerprint } from './QuerySerializer.js';
19
+ import { dataSourceFetch } from './DataSourceHelper.js';
20
+ /* *
21
+ *
22
+ * Class
23
+ *
24
+ * */
25
+ /**
26
+ * Remote data provider for the Grid.
27
+ *
28
+ * Fetches tabular data from a remote API in chunks and exposes it through the
29
+ * standard `DataProvider` interface used by the Grid viewport.
30
+ *
31
+ * - Caches fetched chunks (optionally with an LRU eviction policy).
32
+ * - Deduplicates concurrent requests for the same chunk.
33
+ * - Uses a query fingerprint to invalidate caches when the query changes.
34
+ */
35
+ export class RemoteDataProvider extends DataProvider {
36
+ constructor() {
37
+ /* *
38
+ *
39
+ * Static Properties
40
+ *
41
+ * */
42
+ super(...arguments);
43
+ /**
44
+ * Total row count before pagination (from API metadata `totalRowCount`).
45
+ */
46
+ this.prePaginationRowCount = null;
47
+ /**
48
+ * Current row count after pagination (actual rows returned in the chunk).
49
+ * When pagination is disabled, this equals prePaginationRowCount.
50
+ */
51
+ this.rowCount = null;
52
+ /**
53
+ * Array of column IDs that have been fetched from the remote server.
54
+ */
55
+ this.columnIds = null;
56
+ /**
57
+ * Cached chunks are used to store the data for the chunks that have been
58
+ * fetched from the remote server.
59
+ */
60
+ this.dataChunks = null;
61
+ /**
62
+ * Pending chunks are used to deduplicate concurrent requests for the same
63
+ * chunk.
64
+ */
65
+ this.pendingChunks = null;
66
+ /**
67
+ * Reverse lookup map from rowId to { chunkIndex, localIndex } for O(1)
68
+ * lookup in getRowIndex.
69
+ */
70
+ this.rowIdToChunkInfo = null;
71
+ /**
72
+ * Fingerprint of the last applied query; used to avoid clearing caches
73
+ * when the query did not actually change.
74
+ */
75
+ this.lastQueryFingerprint = null;
76
+ /**
77
+ * Epoch used to invalidate stale in-flight requests when the query changes.
78
+ */
79
+ this.requestEpoch = 0;
80
+ /**
81
+ * Abort controllers for in-flight requests (latest-only policy).
82
+ */
83
+ this.pendingControllers = new Set();
84
+ }
85
+ /**
86
+ * Returns the effective chunk size.
87
+ * When pagination is enabled, uses the page size as chunk size,
88
+ * so that one chunk = one page.
89
+ */
90
+ get maxChunkSize() {
91
+ const pagination = this.querying.pagination;
92
+ // When pagination is enabled, chunk size = page size
93
+ if (pagination.enabled) {
94
+ return pagination.currentPageSize;
95
+ }
96
+ return this.options.chunkSize ?? RemoteDataProvider.DEFAULT_CHUNK_SIZE;
97
+ }
98
+ /* *
99
+ *
100
+ * Methods
101
+ *
102
+ * */
103
+ get requestPolicy() {
104
+ return this.options.requestPolicy ?? 'latest';
105
+ }
106
+ abortPendingRequests() {
107
+ for (const controller of this.pendingControllers) {
108
+ controller.abort();
109
+ }
110
+ this.pendingControllers.clear();
111
+ }
112
+ async getChunkForRowIndex(rowIndex) {
113
+ // When pagination enabled, all rows for current page are in chunk 0
114
+ // When disabled, calculate chunk from global index
115
+ if (this.querying.pagination.enabled) {
116
+ return await this.fetchChunk(0);
117
+ }
118
+ const chunkIndex = Math.floor(rowIndex / this.maxChunkSize);
119
+ return await this.fetchChunk(chunkIndex);
120
+ }
121
+ /**
122
+ * Gets the chunk index for a given row index.
123
+ * When pagination is enabled, all rows are in chunk 0.
124
+ *
125
+ * @param rowIndex
126
+ * The row index passed from the grid.
127
+ *
128
+ * @returns
129
+ * The chunk index.
130
+ */
131
+ getChunkIndexForRow(rowIndex) {
132
+ if (this.querying.pagination.enabled) {
133
+ return 0;
134
+ }
135
+ return Math.floor(rowIndex / this.maxChunkSize);
136
+ }
137
+ /**
138
+ * Gets the local index within the cached chunk data.
139
+ * When pagination is enabled, rowIndex is already 0-based within the page.
140
+ * When disabled, need to calculate offset within the chunk.
141
+ *
142
+ * @param rowIndex
143
+ * The row index passed from the grid.
144
+ *
145
+ * @returns
146
+ * The local index within the chunk.
147
+ */
148
+ getLocalIndexInChunk(rowIndex) {
149
+ // When pagination enabled, rowIndex is already page-relative
150
+ if (this.querying.pagination.enabled) {
151
+ return rowIndex;
152
+ }
153
+ // Standard chunking: calculate local offset within chunk
154
+ const chunkIndex = Math.floor(rowIndex / this.maxChunkSize);
155
+ return rowIndex - (chunkIndex * this.maxChunkSize);
156
+ }
157
+ /**
158
+ * Evicts the least recently used chunk if the cache limit is reached.
159
+ * Also cleans up the reverse lookup map for evicted rowIds.
160
+ */
161
+ evictLRUChunkIfNeeded() {
162
+ const { chunksLimit } = this.options;
163
+ if (!chunksLimit ||
164
+ !this.dataChunks ||
165
+ this.dataChunks.size < chunksLimit) {
166
+ return;
167
+ }
168
+ // Get the first (oldest/LRU) chunk
169
+ const oldestKey = this.dataChunks.keys().next().value;
170
+ if (oldestKey === void 0) {
171
+ return;
172
+ }
173
+ const oldestChunk = this.dataChunks.get(oldestKey);
174
+ // Clean up reverse lookup map for evicted chunk's rowIds
175
+ if (oldestChunk && this.rowIdToChunkInfo) {
176
+ for (const rowId of oldestChunk.rowIds) {
177
+ this.rowIdToChunkInfo.delete(rowId);
178
+ }
179
+ }
180
+ this.dataChunks.delete(oldestKey);
181
+ }
182
+ /**
183
+ * Fetches a chunk from the remote server and caches it.
184
+ * Deduplicates concurrent requests for the same chunk.
185
+ *
186
+ * @param chunkIndex
187
+ * The index of the chunk to fetch.
188
+ *
189
+ * @returns
190
+ * The cached chunk.
191
+ */
192
+ async fetchChunk(chunkIndex) {
193
+ if (!this.dataChunks) {
194
+ this.dataChunks = new Map();
195
+ }
196
+ // Check if chunk is already cached (with LRU update)
197
+ const existingChunk = this.dataChunks.get(chunkIndex);
198
+ if (existingChunk) {
199
+ // Move to end (most recently used) by re-inserting
200
+ this.dataChunks.delete(chunkIndex);
201
+ this.dataChunks.set(chunkIndex, existingChunk);
202
+ return existingChunk;
203
+ }
204
+ // Check if there's already a pending request for this chunk
205
+ if (!this.pendingChunks) {
206
+ this.pendingChunks = new Map();
207
+ }
208
+ if (this.pendingChunks.has(chunkIndex)) {
209
+ // Return the existing pending request to avoid duplicate fetches
210
+ const pendingRequest = this.pendingChunks.get(chunkIndex);
211
+ return pendingRequest;
212
+ }
213
+ // Start a new fetch
214
+ const requestEpoch = this.requestEpoch;
215
+ const controller = this.requestPolicy === 'latest' ?
216
+ new AbortController() :
217
+ null;
218
+ if (controller) {
219
+ this.pendingControllers.add(controller);
220
+ }
221
+ const fetchPromise = (async () => {
222
+ try {
223
+ const pagination = this.querying.pagination;
224
+ let offset;
225
+ let limit;
226
+ if (pagination.enabled) {
227
+ // When pagination is enabled, fetch the current page
228
+ offset = (pagination.currentPage - 1) *
229
+ pagination.currentPageSize;
230
+ limit = pagination.currentPageSize;
231
+ }
232
+ else {
233
+ // Standard chunking
234
+ offset = chunkIndex * this.maxChunkSize;
235
+ limit = this.maxChunkSize;
236
+ }
237
+ let result;
238
+ const { fetchCallback, dataSource } = this.options;
239
+ if (fetchCallback) {
240
+ result = await fetchCallback.call(this, this.querying, offset, limit, controller?.signal);
241
+ }
242
+ else if (dataSource) {
243
+ result = await dataSourceFetch(dataSource, {
244
+ query: this.querying,
245
+ offset,
246
+ limit,
247
+ signal: controller?.signal
248
+ });
249
+ }
250
+ else {
251
+ throw new Error('RemoteDataProvider: Either `dataSource` or ' +
252
+ '`fetchCallback` must be provided in options.');
253
+ }
254
+ if (requestEpoch !== this.requestEpoch ||
255
+ controller?.signal.aborted) {
256
+ return {
257
+ index: chunkIndex,
258
+ data: {},
259
+ rowIds: []
260
+ };
261
+ }
262
+ this.columnIds = Object.keys(result.columns);
263
+ this.prePaginationRowCount = result.totalRowCount;
264
+ // Calculate actual row count from returned data
265
+ const firstColumn = result.columns[this.columnIds[0]];
266
+ const chunkRowCount = firstColumn ? firstColumn.length : 0;
267
+ // When pagination enabled: rowCount = actual rows on page
268
+ // When disabled: rowCount = prePaginationRowCount (same value)
269
+ if (pagination.enabled) {
270
+ this.rowCount = chunkRowCount;
271
+ }
272
+ else {
273
+ this.rowCount = result.totalRowCount;
274
+ }
275
+ const idColId = this.options.idColumn;
276
+ let idColumn;
277
+ if (idColId) {
278
+ idColumn = result.columns[idColId];
279
+ }
280
+ if (!idColumn) {
281
+ idColumn = result.rowIds ?? Array.from({ length: chunkRowCount }, (_, i) => i + offset);
282
+ }
283
+ const chunk = {
284
+ index: chunkIndex,
285
+ data: result.columns,
286
+ rowIds: idColumn
287
+ };
288
+ // Evict LRU chunk if limit is reached
289
+ this.evictLRUChunkIfNeeded();
290
+ // DataChunks guaranteed to exist (checked at start)
291
+ this.dataChunks?.set(chunkIndex, chunk);
292
+ // Populate reverse lookup map for getRowIndex
293
+ if (!this.rowIdToChunkInfo) {
294
+ this.rowIdToChunkInfo = new Map();
295
+ }
296
+ for (let i = 0; i < chunk.rowIds.length; i++) {
297
+ this.rowIdToChunkInfo.set(chunk.rowIds[i], {
298
+ chunkIndex,
299
+ localIndex: i
300
+ });
301
+ }
302
+ return chunk;
303
+ }
304
+ catch (err) {
305
+ if (controller?.signal.aborted ||
306
+ (err instanceof DOMException && err.name === 'AbortError')) {
307
+ return {
308
+ index: chunkIndex,
309
+ data: {},
310
+ rowIds: []
311
+ };
312
+ }
313
+ // eslint-disable-next-line no-console
314
+ console.error('Error fetching data from remote server.\n', err);
315
+ return {
316
+ index: chunkIndex,
317
+ data: {},
318
+ rowIds: []
319
+ };
320
+ }
321
+ finally {
322
+ // Remove from pending requests when done (success or error)
323
+ this.pendingChunks?.delete(chunkIndex);
324
+ if (controller) {
325
+ this.pendingControllers.delete(controller);
326
+ }
327
+ }
328
+ })();
329
+ // Store the pending request
330
+ this.pendingChunks.set(chunkIndex, fetchPromise);
331
+ return fetchPromise;
332
+ }
333
+ async getColumnIds() {
334
+ if (this.columnIds) {
335
+ return Promise.resolve(this.columnIds);
336
+ }
337
+ // Fetch first chunk to get columnIds
338
+ await this.fetchChunk(0);
339
+ return this.columnIds ?? [];
340
+ }
341
+ async getRowId(rowIndex) {
342
+ const chunk = await this.getChunkForRowIndex(rowIndex);
343
+ const localIndex = this.getLocalIndexInChunk(rowIndex);
344
+ if (localIndex < chunk.rowIds.length) {
345
+ return chunk.rowIds[localIndex];
346
+ }
347
+ return void 0;
348
+ }
349
+ getRowIndex(rowId) {
350
+ // Check reverse lookup map (O(1))
351
+ const info = this.rowIdToChunkInfo?.get(rowId);
352
+ if (info) {
353
+ if (this.querying.pagination.enabled) {
354
+ // When pagination is enabled, return page-relative index
355
+ return Promise.resolve(info.localIndex);
356
+ }
357
+ // Global index: chunk offset + local index
358
+ return Promise.resolve(info.chunkIndex * this.maxChunkSize + info.localIndex);
359
+ }
360
+ // Not found in cached chunks - return undefined
361
+ // (the chunk containing this rowId hasn't been fetched yet)
362
+ return Promise.resolve(void 0);
363
+ }
364
+ async getRowObject(rowIndex) {
365
+ // Ensure the chunk is fetched and cached
366
+ await this.getChunkForRowIndex(rowIndex);
367
+ // Return from cache
368
+ return this.getRowObjectFromCache(rowIndex);
369
+ }
370
+ async getPrePaginationRowCount() {
371
+ if (this.prePaginationRowCount !== null) {
372
+ return this.prePaginationRowCount;
373
+ }
374
+ // Fetch first chunk to get row count from API metadata
375
+ await this.fetchChunk(0);
376
+ return this.prePaginationRowCount ?? 0;
377
+ }
378
+ async getRowCount() {
379
+ if (this.rowCount !== null) {
380
+ return this.rowCount;
381
+ }
382
+ // Fetch first chunk to get row count
383
+ await this.fetchChunk(0);
384
+ return this.rowCount ?? 0;
385
+ }
386
+ async getValue(columnId, rowIndex) {
387
+ // Get the chunk containing this row
388
+ const chunk = await this.getChunkForRowIndex(rowIndex);
389
+ // Calculate local index within the chunk.
390
+ // When pagination is enabled, rowIndex is already page-relative.
391
+ // When disabled, need to calculate from global index.
392
+ const localIndex = this.getLocalIndexInChunk(rowIndex);
393
+ // Get the column from chunk data
394
+ const column = chunk.data[columnId];
395
+ if (!column || localIndex >= column.length) {
396
+ return null;
397
+ }
398
+ return column[localIndex];
399
+ }
400
+ async setValue(value, columnId, rowId) {
401
+ const { setValueCallback } = this.options;
402
+ if (!setValueCallback) {
403
+ throw new Error('The `setValueCallback` option is not defined.');
404
+ }
405
+ try {
406
+ await setValueCallback.call(this, columnId, rowId, value);
407
+ this.lastQueryFingerprint = null;
408
+ // TODO(optim): Can be optimized by checking if the value was
409
+ // changed in the specific, queried column.
410
+ await this.applyQuery();
411
+ }
412
+ catch (err) {
413
+ const prefix = 'Error persisting value to remote server.';
414
+ if (err instanceof Error) {
415
+ err.message = err.message ?
416
+ `${prefix} ${err.message}` :
417
+ prefix;
418
+ throw err;
419
+ }
420
+ throw new Error(`${prefix} ${String(err)}`);
421
+ }
422
+ }
423
+ /**
424
+ * Gets a row object from the local cache without fetching.
425
+ * Returns undefined if the row is not cached.
426
+ *
427
+ * @param rowIndex
428
+ * The row index as passed from the grid.
429
+ *
430
+ * @returns
431
+ * The row object or undefined if not in cache.
432
+ */
433
+ getRowObjectFromCache(rowIndex) {
434
+ if (!this.dataChunks || !this.columnIds) {
435
+ return;
436
+ }
437
+ const chunkIndex = this.getChunkIndexForRow(rowIndex);
438
+ const chunk = this.dataChunks.get(chunkIndex);
439
+ if (!chunk) {
440
+ return;
441
+ }
442
+ const localIndex = this.getLocalIndexInChunk(rowIndex);
443
+ const rowObject = {};
444
+ for (const columnId of this.columnIds) {
445
+ const column = chunk.data[columnId];
446
+ rowObject[columnId] = (column && localIndex < column.length) ?
447
+ column[localIndex] : null;
448
+ }
449
+ return rowObject;
450
+ }
451
+ async getColumnDataType(columnId) {
452
+ const chunk = await this.getChunkForRowIndex(0);
453
+ const column = chunk.data[columnId];
454
+ if (!column) {
455
+ return 'string';
456
+ }
457
+ if (!Array.isArray(column)) {
458
+ // Typed array
459
+ return 'number';
460
+ }
461
+ return DataProvider.assumeColumnDataType(column.slice(0, 30), columnId);
462
+ }
463
+ async applyQuery() {
464
+ const fingerprint = createQueryFingerprint(this.querying);
465
+ if (this.lastQueryFingerprint === fingerprint) {
466
+ return;
467
+ }
468
+ this.lastQueryFingerprint = fingerprint;
469
+ this.requestEpoch++;
470
+ if (this.requestPolicy === 'latest') {
471
+ this.abortPendingRequests();
472
+ }
473
+ // Clear cached chunks when query changes.
474
+ this.dataChunks = null;
475
+ this.pendingChunks = null;
476
+ this.rowIdToChunkInfo = null;
477
+ this.columnIds = null;
478
+ this.prePaginationRowCount = null;
479
+ this.rowCount = null;
480
+ // When pagination is enabled, update the total items count
481
+ // for the pagination controller (used to calculate total pages).
482
+ if (this.querying.pagination.enabled) {
483
+ const totalCount = await this.getPrePaginationRowCount();
484
+ this.querying.pagination.totalItemsCount = totalCount;
485
+ }
486
+ }
487
+ destroy() {
488
+ this.abortPendingRequests();
489
+ this.dataChunks = null;
490
+ this.pendingChunks = null;
491
+ this.rowIdToChunkInfo = null;
492
+ this.columnIds = null;
493
+ this.prePaginationRowCount = null;
494
+ this.rowCount = null;
495
+ this.lastQueryFingerprint = null;
496
+ this.requestEpoch++;
497
+ }
498
+ }
499
+ RemoteDataProvider.DEFAULT_CHUNK_SIZE = 50;
500
+ DataProviderRegistry.registerDataProvider('remote', RemoteDataProvider);
@@ -2,21 +2,19 @@
2
2
  *
3
3
  * Grid Exporting class
4
4
  *
5
- * (c) 2020-2025 Highsoft AS
5
+ * (c) 2020-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Karol Kolodziej
13
13
  *
14
14
  * */
15
15
  'use strict';
16
- import DownloadURL from '../../../Shared/DownloadURL.js';
17
- import U from '../../../Core/Utilities.js';
18
- const { downloadURL, getBlobFromContent } = DownloadURL;
19
- const { defined } = U;
16
+ import { downloadURL, getBlobFromContent } from '../../../Shared/DownloadURL.js';
17
+ import { defined } from '../../../Shared/Utilities.js';
20
18
  /* *
21
19
  *
22
20
  * Class
@@ -2,11 +2,11 @@
2
2
  *
3
3
  * Grid Exporting composition
4
4
  *
5
- * (c) 2020-2025 Highsoft AS
5
+ * (c) 2020-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Karol Kolodziej
@@ -16,8 +16,7 @@
16
16
  import { defaultOptions } from '../../Core/Defaults.js';
17
17
  import Exporting from './Exporting.js';
18
18
  import Globals from '../../Core/Globals.js';
19
- import U from '../../../Core/Utilities.js';
20
- const { addEvent, pushUnique } = U;
19
+ import { addEvent, pushUnique } from '../../../Shared/Utilities.js';
21
20
  /* *
22
21
  *
23
22
  * Composition
@@ -1,3 +1,4 @@
1
+ import type { AnyRecord } from '../../Shared/Types';
1
2
  import type Column from '../Core/Table/Column';
2
3
  import type TableCell from '../Core/Table/Body/TableCell';
3
4
  import type Grid from '../Core/Grid';
@@ -1,19 +1,18 @@
1
1
  /* *
2
2
  *
3
- * (c) 2020-2025 Highsoft AS
3
+ * (c) 2020-2026 Highsoft AS
4
4
  *
5
- * License: www.highcharts.com/license
5
+ * A commercial license may be required depending on use.
6
+ * See www.highcharts.com/license
6
7
  *
7
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
8
8
  *
9
9
  * Authors:
10
10
  * - Dawid Dragula
11
11
  *
12
12
  * */
13
13
  'use strict';
14
- import U from '../../Core/Utilities.js';
15
14
  import Globals from '../../Core/Globals.js';
16
- const { addEvent, fireEvent, pushUnique } = U;
15
+ import { addEvent, fireEvent, pushUnique } from '../../Shared/Utilities.js';
17
16
  const propagate = {
18
17
  'cell_mouseOver': function () {
19
18
  fireEvent(this.row.viewport.grid, 'cellMouseOver', {
@@ -3,7 +3,6 @@ declare module '../../Core/Pagination/PaginationOptions' {
3
3
  interface PaginationOptions {
4
4
  /**
5
5
  * Pagination events.
6
- *
7
6
  */
8
7
  events?: PaginationEvents;
9
8
  }
@@ -2,20 +2,19 @@
2
2
  *
3
3
  * Grid Pro Pagination class
4
4
  *
5
- * (c) 2020-2025 Highsoft AS
5
+ * (c) 2020-2026 Highsoft AS
6
6
  *
7
- * License: www.highcharts.com/license
7
+ * A commercial license may be required depending on use.
8
+ * See www.highcharts.com/license
8
9
  *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * Authors:
12
12
  * - Sebastian Bochan
13
13
  *
14
14
  * */
15
15
  'use strict';
16
- import Utilities from '../../../Core/Utilities.js';
17
16
  import Globals from '../../../Core/Globals.js';
18
- const { addEvent, pushUnique } = Utilities;
17
+ import { addEvent, pushUnique } from '../../../Shared/Utilities.js';
19
18
  /* *
20
19
  *
21
20
  * Composition
@@ -1,10 +1,10 @@
1
1
  /* *
2
2
  *
3
- * (c) 2009-2025 Highsoft AS
3
+ * (c) 2009-2026 Highsoft AS
4
4
  *
5
- * License: www.highcharts.com/license
5
+ * A commercial license may be required depending on use.
6
+ * See www.highcharts.com/license
6
7
  *
7
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
8
8
  *
9
9
  * */
10
10
  'use strict';
@@ -1,10 +1,10 @@
1
1
  /* *
2
2
  *
3
- * (c) 2009-2025 Highsoft AS
3
+ * (c) 2009-2026 Highsoft AS
4
4
  *
5
- * License: www.highcharts.com/license
5
+ * A commercial license may be required depending on use.
6
+ * See www.highcharts.com/license
6
7
  *
7
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
8
8
  *
9
9
  * */
10
10
  'use strict';
@@ -14,8 +14,7 @@
14
14
  *
15
15
  * */
16
16
  import AST from '../Core/Renderer/HTML/AST.js';
17
- import U from '../Core/Utilities.js';
18
- const { addEvent, createElement } = U;
17
+ import { addEvent, createElement } from './Utilities.js';
19
18
  /* *
20
19
  *
21
20
  * Class