@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,223 @@
1
+ /* *
2
+ *
3
+ * (c) 2009-2025 Øystein Moseng
4
+ *
5
+ * Proxy elements are used to shadow SVG elements in HTML for assistive
6
+ * technology, such as screen readers or voice input software.
7
+ *
8
+ * The ProxyElement class represents such an element, and deals with
9
+ * overlay positioning and mirroring events for the target.
10
+ *
11
+ * License: www.highcharts.com/license
12
+ *
13
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
14
+ *
15
+ * */
16
+ 'use strict';
17
+ import H from '../Core/Globals.js';
18
+ const { doc, win } = H;
19
+ import U from '../Core/Utilities.js';
20
+ const { attr, css, merge } = U;
21
+ import EventProvider from './Utils/EventProvider.js';
22
+ import ChartUtilities from './Utils/ChartUtilities.js';
23
+ const { fireEventOnWrappedOrUnwrappedElement } = ChartUtilities;
24
+ import HTMLUtilities from './Utils/HTMLUtilities.js';
25
+ const { cloneMouseEvent, cloneTouchEvent, getFakeMouseEvent, removeElement } = HTMLUtilities;
26
+ /* *
27
+ *
28
+ * Class
29
+ *
30
+ * */
31
+ /**
32
+ * Represents a proxy element that overlays a target and relays events
33
+ * to its target.
34
+ *
35
+ * @private
36
+ * @class
37
+ */
38
+ class ProxyElement {
39
+ /* *
40
+ *
41
+ * Constructor
42
+ *
43
+ * */
44
+ constructor(chart, target, proxyElementType = 'button', wrapperElementType, attributes) {
45
+ this.chart = chart;
46
+ this.target = target;
47
+ this.eventProvider = new EventProvider();
48
+ const innerEl = this.innerElement =
49
+ doc.createElement(proxyElementType), wrapperEl = this.element = wrapperElementType ?
50
+ doc.createElement(wrapperElementType) : innerEl;
51
+ if (!chart.styledMode) {
52
+ this.hideElementVisually(innerEl);
53
+ }
54
+ if (wrapperElementType) {
55
+ if (wrapperElementType === 'li' && !chart.styledMode) {
56
+ wrapperEl.style.listStyle = 'none';
57
+ }
58
+ wrapperEl.appendChild(innerEl);
59
+ this.element = wrapperEl;
60
+ }
61
+ this.updateTarget(target, attributes);
62
+ }
63
+ /* *
64
+ *
65
+ * Functions
66
+ *
67
+ * */
68
+ /**
69
+ * Fake a click event on the target.
70
+ */
71
+ click() {
72
+ const pos = this.getTargetPosition();
73
+ pos.x += pos.width / 2;
74
+ pos.y += pos.height / 2;
75
+ const fakeEventObject = getFakeMouseEvent('click', pos);
76
+ fireEventOnWrappedOrUnwrappedElement(this.target.click, fakeEventObject);
77
+ }
78
+ /**
79
+ * Update the target to be proxied. The position and events are updated to
80
+ * match the new target.
81
+ * @param target The new target definition
82
+ * @param attributes New HTML attributes to apply to the proxy. Set an
83
+ * attribute to null to remove.
84
+ */
85
+ updateTarget(target, attributes) {
86
+ this.target = target;
87
+ this.updateCSSClassName();
88
+ const attrs = attributes || {};
89
+ Object.keys(attrs).forEach((a) => {
90
+ if (attrs[a] === null) {
91
+ delete attrs[a];
92
+ }
93
+ });
94
+ const targetAriaLabel = this.getTargetAttr(target.click, 'aria-label');
95
+ attr(this.innerElement, merge(targetAriaLabel ? {
96
+ 'aria-label': targetAriaLabel
97
+ } : {}, attrs));
98
+ this.eventProvider.removeAddedEvents();
99
+ this.addProxyEventsToElement(this.innerElement, target.click);
100
+ this.refreshPosition();
101
+ }
102
+ /**
103
+ * Refresh the position of the proxy element to match the current target
104
+ */
105
+ refreshPosition() {
106
+ const bBox = this.getTargetPosition();
107
+ css(this.innerElement, {
108
+ width: (bBox.width || 1) + 'px',
109
+ height: (bBox.height || 1) + 'px',
110
+ left: (Math.round(bBox.x) || 0) + 'px',
111
+ top: (Math.round(bBox.y) || 0) + 'px'
112
+ });
113
+ }
114
+ /**
115
+ * Remove button from DOM, and clear events.
116
+ */
117
+ remove() {
118
+ this.eventProvider.removeAddedEvents();
119
+ removeElement(this.element);
120
+ }
121
+ // -------------------------- private ------------------------------------
122
+ /**
123
+ * Update the CSS class name to match target
124
+ */
125
+ updateCSSClassName() {
126
+ const stringHasNoTooltip = (s) => (s.indexOf('highcharts-no-tooltip') > -1);
127
+ const legend = this.chart.legend;
128
+ const groupDiv = legend.group && legend.group.div;
129
+ const noTooltipOnGroup = stringHasNoTooltip(groupDiv && groupDiv.className || '');
130
+ const targetClassName = this.getTargetAttr(this.target.click, 'class') || '';
131
+ const noTooltipOnTarget = stringHasNoTooltip(targetClassName);
132
+ this.innerElement.className = noTooltipOnGroup || noTooltipOnTarget ?
133
+ 'highcharts-a11y-proxy-element highcharts-no-tooltip' :
134
+ 'highcharts-a11y-proxy-element';
135
+ }
136
+ /**
137
+ * Mirror events for a proxy element to a target
138
+ */
139
+ addProxyEventsToElement(element, target) {
140
+ [
141
+ 'click', 'touchstart', 'touchend', 'touchcancel', 'touchmove',
142
+ 'mouseover', 'mouseenter', 'mouseleave', 'mouseout'
143
+ ].forEach((evtType) => {
144
+ const isTouchEvent = evtType.indexOf('touch') === 0;
145
+ this.eventProvider.addEvent(element, evtType, (e) => {
146
+ const clonedEvent = isTouchEvent ?
147
+ cloneTouchEvent(e) :
148
+ cloneMouseEvent(e);
149
+ if (target) {
150
+ fireEventOnWrappedOrUnwrappedElement(target, clonedEvent);
151
+ }
152
+ e.stopPropagation();
153
+ // #9682, #15318: Touch scrolling didn't work when touching
154
+ // proxy
155
+ if (!isTouchEvent) {
156
+ e.preventDefault();
157
+ }
158
+ }, { passive: false });
159
+ });
160
+ }
161
+ /**
162
+ * Set visually hidden style on a proxy element
163
+ */
164
+ hideElementVisually(el) {
165
+ css(el, {
166
+ borderWidth: 0,
167
+ backgroundColor: 'transparent',
168
+ cursor: 'pointer',
169
+ outline: 'none',
170
+ opacity: 0.001,
171
+ filter: 'alpha(opacity=1)',
172
+ zIndex: 999,
173
+ overflow: 'hidden',
174
+ padding: 0,
175
+ margin: 0,
176
+ display: 'block',
177
+ position: 'absolute',
178
+ '-ms-filter': 'progid:DXImageTransform.Microsoft.Alpha(Opacity=1)'
179
+ });
180
+ }
181
+ /**
182
+ * Get the position relative to chart container for the target
183
+ */
184
+ getTargetPosition() {
185
+ const clickTarget = this.target.click;
186
+ // We accept both DOM elements and wrapped elements as click targets.
187
+ const clickTargetElement = clickTarget.element ?
188
+ clickTarget.element :
189
+ clickTarget;
190
+ const posElement = this.target.visual || clickTargetElement;
191
+ const chartDiv = this.chart.renderTo, pointer = this.chart.pointer;
192
+ if (chartDiv && posElement?.getBoundingClientRect && pointer) {
193
+ const scrollTop = win.scrollY ||
194
+ doc.documentElement.scrollTop, rectEl = posElement.getBoundingClientRect(), chartPos = pointer.getChartPosition();
195
+ return {
196
+ x: (rectEl.left - chartPos.left) / chartPos.scaleX,
197
+ // #21994, Add scroll position as "getBoundingClientRect"
198
+ // returns the position from the viewport, not the document top.
199
+ y: ((rectEl.top + scrollTop) - chartPos.top) / chartPos.scaleY,
200
+ width: rectEl.right / chartPos.scaleX -
201
+ rectEl.left / chartPos.scaleX,
202
+ height: rectEl.bottom / chartPos.scaleY -
203
+ rectEl.top / chartPos.scaleY
204
+ };
205
+ }
206
+ return { x: 0, y: 0, width: 1, height: 1 };
207
+ }
208
+ /**
209
+ * Get an attribute value of a target
210
+ */
211
+ getTargetAttr(target, key) {
212
+ if (target.element) {
213
+ return target.element.getAttribute(key);
214
+ }
215
+ return target.getAttribute(key);
216
+ }
217
+ }
218
+ /* *
219
+ *
220
+ * Default Export
221
+ *
222
+ * */
223
+ export default ProxyElement;
@@ -0,0 +1,90 @@
1
+ import type Accessibility from './Accessibility';
2
+ import type HTMLAttributes from '../Core/Renderer/HTML/HTMLAttributes';
3
+ import type { NullableHTMLAttributes } from './ProxyElement';
4
+ import ProxyElement from './ProxyElement.js';
5
+ /**
6
+ * Keeps track of all proxy elements and proxy groups.
7
+ *
8
+ * @private
9
+ * @class
10
+ */
11
+ declare class ProxyProvider {
12
+ private chart;
13
+ private afterChartProxyPosContainer;
14
+ private beforeChartProxyPosContainer;
15
+ private domElementProvider;
16
+ private groupOrder;
17
+ private groups;
18
+ constructor(chart: Accessibility.ChartComposition);
19
+ /**
20
+ * Add a new proxy element to a group, proxying a target control.
21
+ */
22
+ addProxyElement(groupKey: string, target: ProxyElement.Target, proxyElementType?: keyof HTMLElementTagNameMap, attributes?: NullableHTMLAttributes): ProxyElement;
23
+ /**
24
+ * Create a group that will contain proxy elements. The group order is
25
+ * automatically updated according to the last group order keys.
26
+ *
27
+ * Returns the added group.
28
+ */
29
+ addGroup(groupKey: string, groupElementType?: keyof HTMLElementTagNameMap, attributes?: HTMLAttributes): HTMLElement;
30
+ /**
31
+ * Update HTML attributes of a group.
32
+ */
33
+ updateGroupAttrs(groupKey: string, attributes: HTMLAttributes): void;
34
+ /**
35
+ * Reorder the proxy groups.
36
+ *
37
+ * The group key "series" refers to the chart's data points / <svg> element.
38
+ * This is so that the keyboardNavigation.order option can be used to
39
+ * determine the proxy group order.
40
+ */
41
+ updateGroupOrder(groupKeys: string[]): void;
42
+ /**
43
+ * Remove all proxy elements in a group
44
+ */
45
+ clearGroup(groupKey: string): void;
46
+ /**
47
+ * Remove a group from the DOM and from the proxy provider's group list.
48
+ * All child elements are removed.
49
+ * If the group does not exist, nothing happens.
50
+ */
51
+ removeGroup(groupKey: string): void;
52
+ /**
53
+ * Update the position and order of all proxy groups and elements
54
+ */
55
+ update(): void;
56
+ /**
57
+ * Update all proxy element positions
58
+ */
59
+ updateProxyElementPositions(): void;
60
+ /**
61
+ * Update a group's proxy elements' positions.
62
+ * If the group does not exist, nothing happens.
63
+ */
64
+ updateGroupProxyElementPositions(groupKey: string): void;
65
+ /**
66
+ * Remove all added elements
67
+ */
68
+ destroy(): void;
69
+ /**
70
+ * Create and return a pos container element (the overall containers for
71
+ * the proxy groups).
72
+ */
73
+ private createProxyPosContainer;
74
+ /**
75
+ * Get an array of group keys that corresponds to the current group order
76
+ * in the DOM.
77
+ */
78
+ private getCurrentGroupOrderInDOM;
79
+ /**
80
+ * Check if the current DOM order matches the current group order, so that
81
+ * a reordering/update is unnecessary.
82
+ */
83
+ private isDOMOrderGroupOrder;
84
+ /**
85
+ * Update the DOM positions of the before/after proxy
86
+ * positioning containers for the groups.
87
+ */
88
+ private updatePosContainerPositions;
89
+ }
90
+ export default ProxyProvider;
@@ -0,0 +1,315 @@
1
+ /* *
2
+ *
3
+ * (c) 2009-2025 Øystein Moseng
4
+ *
5
+ * Proxy elements are used to shadow SVG elements in HTML for assistive
6
+ * technology, such as screen readers or voice input software.
7
+ *
8
+ * The ProxyProvider keeps track of all proxy elements of the a11y module,
9
+ * and updating their order and positioning.
10
+ *
11
+ * License: www.highcharts.com/license
12
+ *
13
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
14
+ *
15
+ * */
16
+ 'use strict';
17
+ import H from '../Core/Globals.js';
18
+ const { doc } = H;
19
+ import U from '../Core/Utilities.js';
20
+ const { attr, css } = U;
21
+ import CU from './Utils/ChartUtilities.js';
22
+ const { unhideChartElementFromAT } = CU;
23
+ import DOMElementProvider from './Utils/DOMElementProvider.js';
24
+ import HU from './Utils/HTMLUtilities.js';
25
+ const { removeChildNodes } = HU;
26
+ import ProxyElement from './ProxyElement.js';
27
+ /* *
28
+ *
29
+ * Class
30
+ *
31
+ * */
32
+ /**
33
+ * Keeps track of all proxy elements and proxy groups.
34
+ *
35
+ * @private
36
+ * @class
37
+ */
38
+ class ProxyProvider {
39
+ /* *
40
+ *
41
+ * Constructor
42
+ *
43
+ * */
44
+ constructor(chart) {
45
+ this.chart = chart;
46
+ this.domElementProvider = new DOMElementProvider();
47
+ this.groups = {};
48
+ this.groupOrder = [];
49
+ this.beforeChartProxyPosContainer = this.createProxyPosContainer('before');
50
+ this.afterChartProxyPosContainer = this.createProxyPosContainer('after');
51
+ this.update();
52
+ }
53
+ /* *
54
+ *
55
+ * Functions
56
+ *
57
+ * */
58
+ /* eslint-disable */
59
+ /**
60
+ * Add a new proxy element to a group, proxying a target control.
61
+ */
62
+ addProxyElement(groupKey, target, proxyElementType = 'button', attributes) {
63
+ const group = this.groups[groupKey];
64
+ if (!group) {
65
+ throw new Error('ProxyProvider.addProxyElement: Invalid group key ' + groupKey);
66
+ }
67
+ const wrapperElementType = group.type === 'ul' || group.type === 'ol' ?
68
+ 'li' : void 0, proxy = new ProxyElement(this.chart, target, proxyElementType, wrapperElementType, attributes);
69
+ group.proxyContainerElement.appendChild(proxy.element);
70
+ group.proxyElements.push(proxy);
71
+ return proxy;
72
+ }
73
+ /**
74
+ * Create a group that will contain proxy elements. The group order is
75
+ * automatically updated according to the last group order keys.
76
+ *
77
+ * Returns the added group.
78
+ */
79
+ addGroup(groupKey, groupElementType = 'div', attributes) {
80
+ const existingGroup = this.groups[groupKey];
81
+ if (existingGroup) {
82
+ return existingGroup.groupElement;
83
+ }
84
+ const proxyContainer = this.domElementProvider
85
+ .createElement(groupElementType);
86
+ // If we want to add a role to the group, and still use e.g.
87
+ // a list group, we need a wrapper div around the proxyContainer.
88
+ // Used for setting region role on legend.
89
+ let groupElement;
90
+ if (attributes && attributes.role && groupElementType !== 'div') {
91
+ groupElement = this.domElementProvider.createElement('div');
92
+ groupElement.appendChild(proxyContainer);
93
+ }
94
+ else {
95
+ groupElement = proxyContainer;
96
+ }
97
+ groupElement.className = 'highcharts-a11y-proxy-group highcharts-a11y-proxy-group-' +
98
+ groupKey.replace(/\W/g, '-');
99
+ this.groups[groupKey] = {
100
+ proxyContainerElement: proxyContainer,
101
+ groupElement,
102
+ type: groupElementType,
103
+ proxyElements: []
104
+ };
105
+ attr(groupElement, attributes || {});
106
+ if (groupElementType === 'ul') {
107
+ proxyContainer.setAttribute('role', 'list'); // Needed for webkit
108
+ }
109
+ // Add the group to the end by default, and perhaps then we
110
+ // won't have to reorder the whole set of groups.
111
+ this.afterChartProxyPosContainer.appendChild(groupElement);
112
+ this.updateGroupOrder(this.groupOrder);
113
+ return groupElement;
114
+ }
115
+ /**
116
+ * Update HTML attributes of a group.
117
+ */
118
+ updateGroupAttrs(groupKey, attributes) {
119
+ const group = this.groups[groupKey];
120
+ if (!group) {
121
+ throw new Error('ProxyProvider.updateGroupAttrs: Invalid group key ' + groupKey);
122
+ }
123
+ attr(group.groupElement, attributes);
124
+ }
125
+ /**
126
+ * Reorder the proxy groups.
127
+ *
128
+ * The group key "series" refers to the chart's data points / <svg> element.
129
+ * This is so that the keyboardNavigation.order option can be used to
130
+ * determine the proxy group order.
131
+ */
132
+ updateGroupOrder(groupKeys) {
133
+ // Store so that we can update order when a new group is created
134
+ this.groupOrder = groupKeys.slice();
135
+ // Don't unnecessarily reorder, because keyboard focus is lost
136
+ if (this.isDOMOrderGroupOrder()) {
137
+ return;
138
+ }
139
+ const seriesIx = groupKeys.indexOf('series');
140
+ const beforeKeys = seriesIx > -1 ? groupKeys.slice(0, seriesIx) : groupKeys;
141
+ const afterKeys = seriesIx > -1 ? groupKeys.slice(seriesIx + 1) : [];
142
+ // Store focused element since it will be lost when reordering
143
+ const activeElement = doc.activeElement;
144
+ // Add groups to correct container
145
+ ['before', 'after'].forEach((pos) => {
146
+ const posContainer = this[pos === 'before' ?
147
+ 'beforeChartProxyPosContainer' :
148
+ 'afterChartProxyPosContainer'];
149
+ const keys = pos === 'before' ? beforeKeys : afterKeys;
150
+ removeChildNodes(posContainer);
151
+ keys.forEach((groupKey) => {
152
+ const group = this.groups[groupKey];
153
+ if (group) {
154
+ posContainer.appendChild(group.groupElement);
155
+ }
156
+ });
157
+ });
158
+ // Attempt to restore focus after reordering, but note that this may
159
+ // cause screen readers re-announcing the button.
160
+ if ((this.beforeChartProxyPosContainer.contains(activeElement) ||
161
+ this.afterChartProxyPosContainer.contains(activeElement)) &&
162
+ activeElement && activeElement.focus) {
163
+ activeElement.focus();
164
+ }
165
+ }
166
+ /**
167
+ * Remove all proxy elements in a group
168
+ */
169
+ clearGroup(groupKey) {
170
+ const group = this.groups[groupKey];
171
+ if (!group) {
172
+ throw new Error('ProxyProvider.clearGroup: Invalid group key ' + groupKey);
173
+ }
174
+ removeChildNodes(group.proxyContainerElement);
175
+ }
176
+ /**
177
+ * Remove a group from the DOM and from the proxy provider's group list.
178
+ * All child elements are removed.
179
+ * If the group does not exist, nothing happens.
180
+ */
181
+ removeGroup(groupKey) {
182
+ const group = this.groups[groupKey];
183
+ if (group) {
184
+ // Remove detached HTML elements to prevent memory leak (#20329).
185
+ this.domElementProvider.removeElement(group.groupElement);
186
+ // Sometimes groupElement is a wrapper around the proxyContainer, so
187
+ // the real one proxyContainer needs to be removed also.
188
+ if (group.groupElement !== group.proxyContainerElement) {
189
+ this.domElementProvider.removeElement(group.proxyContainerElement);
190
+ }
191
+ delete this.groups[groupKey];
192
+ }
193
+ }
194
+ /**
195
+ * Update the position and order of all proxy groups and elements
196
+ */
197
+ update() {
198
+ this.updatePosContainerPositions();
199
+ this.updateGroupOrder(this.groupOrder);
200
+ this.updateProxyElementPositions();
201
+ }
202
+ /**
203
+ * Update all proxy element positions
204
+ */
205
+ updateProxyElementPositions() {
206
+ Object.keys(this.groups).forEach(this.updateGroupProxyElementPositions.bind(this));
207
+ }
208
+ /**
209
+ * Update a group's proxy elements' positions.
210
+ * If the group does not exist, nothing happens.
211
+ */
212
+ updateGroupProxyElementPositions(groupKey) {
213
+ const group = this.groups[groupKey];
214
+ if (group) {
215
+ group.proxyElements.forEach((el) => el.refreshPosition());
216
+ }
217
+ }
218
+ /**
219
+ * Remove all added elements
220
+ */
221
+ destroy() {
222
+ this.domElementProvider.destroyCreatedElements();
223
+ }
224
+ // -------------------------- private ------------------------------------
225
+ /**
226
+ * Create and return a pos container element (the overall containers for
227
+ * the proxy groups).
228
+ */
229
+ createProxyPosContainer(classNamePostfix) {
230
+ const el = this.domElementProvider.createElement('div');
231
+ el.setAttribute('aria-hidden', 'false');
232
+ el.className = 'highcharts-a11y-proxy-container' + (classNamePostfix ? '-' + classNamePostfix : '');
233
+ css(el, {
234
+ top: '0',
235
+ left: '0'
236
+ });
237
+ if (!this.chart.styledMode) {
238
+ el.style.whiteSpace = 'nowrap';
239
+ el.style.position = 'absolute';
240
+ }
241
+ return el;
242
+ }
243
+ /**
244
+ * Get an array of group keys that corresponds to the current group order
245
+ * in the DOM.
246
+ */
247
+ getCurrentGroupOrderInDOM() {
248
+ const getGroupKeyFromElement = (el) => {
249
+ const allGroups = Object.keys(this.groups);
250
+ let i = allGroups.length;
251
+ while (i--) {
252
+ const groupKey = allGroups[i];
253
+ const group = this.groups[groupKey];
254
+ if (group && el === group.groupElement) {
255
+ return groupKey;
256
+ }
257
+ }
258
+ };
259
+ const getChildrenGroupOrder = (el) => {
260
+ const childrenOrder = [];
261
+ const children = el.children;
262
+ for (let i = 0; i < children.length; ++i) {
263
+ const groupKey = getGroupKeyFromElement(children[i]);
264
+ if (groupKey) {
265
+ childrenOrder.push(groupKey);
266
+ }
267
+ }
268
+ return childrenOrder;
269
+ };
270
+ const before = getChildrenGroupOrder(this.beforeChartProxyPosContainer);
271
+ const after = getChildrenGroupOrder(this.afterChartProxyPosContainer);
272
+ before.push('series');
273
+ return before.concat(after);
274
+ }
275
+ /**
276
+ * Check if the current DOM order matches the current group order, so that
277
+ * a reordering/update is unnecessary.
278
+ */
279
+ isDOMOrderGroupOrder() {
280
+ const domOrder = this.getCurrentGroupOrderInDOM();
281
+ const groupOrderWithGroups = this.groupOrder.filter((x) => x === 'series' || !!this.groups[x]);
282
+ let i = domOrder.length;
283
+ if (i !== groupOrderWithGroups.length) {
284
+ return false;
285
+ }
286
+ while (i--) {
287
+ if (domOrder[i] !== groupOrderWithGroups[i]) {
288
+ return false;
289
+ }
290
+ }
291
+ return true;
292
+ }
293
+ /**
294
+ * Update the DOM positions of the before/after proxy
295
+ * positioning containers for the groups.
296
+ */
297
+ updatePosContainerPositions() {
298
+ const chart = this.chart;
299
+ // If exporting, don't add these containers to the DOM.
300
+ if (chart.renderer.forExport) {
301
+ return;
302
+ }
303
+ const rendererSVGEl = chart.renderer.box;
304
+ chart.container.insertBefore(this.afterChartProxyPosContainer, rendererSVGEl.nextSibling);
305
+ chart.container.insertBefore(this.beforeChartProxyPosContainer, rendererSVGEl);
306
+ unhideChartElementFromAT(this.chart, this.afterChartProxyPosContainer);
307
+ unhideChartElementFromAT(this.chart, this.beforeChartProxyPosContainer);
308
+ }
309
+ }
310
+ /* *
311
+ *
312
+ * Export Default
313
+ *
314
+ * */
315
+ export default ProxyProvider;
@@ -0,0 +1,26 @@
1
+ import type Chart from '../../Core/Chart/Chart';
2
+ import type { HTMLDOMElement } from '../../Core/Renderer/DOMElementType';
3
+ /**
4
+ * Internal types.
5
+ * @private
6
+ */
7
+ declare module '../../Core/Chart/ChartBase' {
8
+ interface ChartBase {
9
+ announcerContainer?: HTMLDOMElement;
10
+ }
11
+ }
12
+ declare class Announcer {
13
+ private chart;
14
+ private domElementProvider;
15
+ private announceRegion;
16
+ private clearAnnouncementRegionTimer?;
17
+ constructor(chart: Chart, type: Announcer.Type);
18
+ destroy(): void;
19
+ announce(message: string): void;
20
+ private addAnnounceRegion;
21
+ private createAnnouncerContainer;
22
+ }
23
+ declare namespace Announcer {
24
+ type Type = ('assertive' | 'polite');
25
+ }
26
+ export default Announcer;