@highcharts/grid-pro 2.2.0 → 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 (266) hide show
  1. package/LICENSE.txt +6 -0
  2. package/README.md +15 -9
  3. package/css/grid-pro.css +1262 -1122
  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 +1 -2
  17. package/es-modules/Accessibility/Accessibility.js +1 -2
  18. package/es-modules/Accessibility/AccessibilityComponent.d.ts +2 -2
  19. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +5 -6
  20. package/es-modules/Accessibility/Components/LegendComponent.js +1 -2
  21. package/es-modules/Accessibility/Components/MenuComponent.js +1 -2
  22. package/es-modules/Accessibility/Components/NavigatorComponent.js +3 -4
  23. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +1 -2
  24. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +1 -2
  25. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +3 -4
  26. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +3 -4
  27. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +1 -2
  28. package/es-modules/Accessibility/Components/ZoomComponent.js +1 -2
  29. package/es-modules/Accessibility/FocusBorder.js +1 -2
  30. package/es-modules/Accessibility/KeyboardNavigation.js +1 -2
  31. package/es-modules/Accessibility/KeyboardNavigationHandler.js +1 -2
  32. package/es-modules/Accessibility/Options/A11yDefaults.d.ts +11 -0
  33. package/es-modules/Accessibility/Options/A11yDefaults.js +11 -0
  34. package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +58 -0
  35. package/es-modules/Accessibility/Options/DeprecatedOptions.js +7 -2
  36. package/es-modules/Accessibility/Options/LangDefaults.js +9 -0
  37. package/es-modules/Accessibility/ProxyElement.js +2 -5
  38. package/es-modules/Accessibility/ProxyProvider.js +1 -2
  39. package/es-modules/Accessibility/Utils/Announcer.js +2 -3
  40. package/es-modules/Accessibility/Utils/ChartUtilities.js +1 -2
  41. package/es-modules/Accessibility/Utils/EventProvider.d.ts +2 -2
  42. package/es-modules/Accessibility/Utils/EventProvider.js +6 -2
  43. package/es-modules/Accessibility/Utils/HTMLUtilities.js +1 -2
  44. package/es-modules/Core/Animation/AnimationUtilities.js +1 -2
  45. package/es-modules/Core/Animation/Fx.js +1 -2
  46. package/es-modules/Core/Callback.d.ts +9 -2
  47. package/es-modules/Core/Chart/Chart.js +48 -41
  48. package/es-modules/Core/Chart/Chart3D.js +1 -2
  49. package/es-modules/Core/Chart/ChartDefaults.js +11 -0
  50. package/es-modules/Core/Chart/ChartOptions.d.ts +8 -0
  51. package/es-modules/Core/Chart/GanttChart.js +1 -2
  52. package/es-modules/Core/Chart/MapChart.js +1 -2
  53. package/es-modules/Core/Chart/StockChart.js +2 -3
  54. package/es-modules/Core/Color/Color.js +1 -2
  55. package/es-modules/Core/Defaults.js +36 -9
  56. package/es-modules/Core/Delaunay.d.ts +52 -0
  57. package/es-modules/Core/Delaunay.js +310 -0
  58. package/es-modules/Core/Foundation.js +1 -2
  59. package/es-modules/Core/Geometry/CircleUtilities.js +1 -2
  60. package/es-modules/Core/Globals.js +1 -1
  61. package/es-modules/Core/HttpUtilities.js +1 -2
  62. package/es-modules/Core/MSPointer.js +1 -2
  63. package/es-modules/Core/Math3D.js +1 -2
  64. package/es-modules/Core/Options.d.ts +6 -2
  65. package/es-modules/Core/Pointer.js +23 -4
  66. package/es-modules/Core/PointerEvent.d.ts +2 -0
  67. package/es-modules/Core/Renderer/HTML/AST.js +2 -2
  68. package/es-modules/Core/Renderer/HTML/HTMLElement.js +1 -2
  69. package/es-modules/Core/Renderer/RendererUtilities.js +34 -19
  70. package/es-modules/Core/Responsive.d.ts +4 -2
  71. package/es-modules/Core/Responsive.js +10 -4
  72. package/es-modules/Core/Templating.d.ts +1 -1
  73. package/es-modules/Core/Templating.js +3 -4
  74. package/es-modules/Core/Time.d.ts +8 -0
  75. package/es-modules/Core/Time.js +2 -2
  76. package/es-modules/Core/Tooltip.d.ts +4 -8
  77. package/es-modules/Core/Tooltip.js +100 -81
  78. package/es-modules/Core/TooltipOptions.d.ts +44 -1
  79. package/es-modules/Core/Utilities.d.ts +25 -665
  80. package/es-modules/Core/Utilities.js +17 -1398
  81. package/es-modules/Data/ColumnUtils.d.ts +83 -80
  82. package/es-modules/Data/ColumnUtils.js +103 -113
  83. package/es-modules/Data/Connectors/CSVConnector.d.ts +9 -14
  84. package/es-modules/Data/Connectors/CSVConnector.js +3 -4
  85. package/es-modules/Data/Connectors/DataConnector.d.ts +52 -54
  86. package/es-modules/Data/Connectors/DataConnector.js +33 -52
  87. package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +40 -42
  88. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +73 -88
  89. package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +4 -2
  90. package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +23 -28
  91. package/es-modules/Data/Connectors/HTMLTableConnector.js +3 -4
  92. package/es-modules/Data/Connectors/JSONConnector.d.ts +9 -14
  93. package/es-modules/Data/Connectors/JSONConnector.js +3 -4
  94. package/es-modules/Data/Converters/CSVConverter.d.ts +5 -5
  95. package/es-modules/Data/Converters/CSVConverter.js +3 -4
  96. package/es-modules/Data/Converters/CSVConverterOptions.d.ts +2 -2
  97. package/es-modules/Data/Converters/DataConverter.d.ts +76 -78
  98. package/es-modules/Data/Converters/DataConverter.js +26 -53
  99. package/es-modules/Data/Converters/DataConverterUtils.d.ts +88 -81
  100. package/es-modules/Data/Converters/DataConverterUtils.js +169 -181
  101. package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +4 -4
  102. package/es-modules/Data/Converters/GoogleSheetsConverter.js +3 -3
  103. package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +2 -2
  104. package/es-modules/Data/Converters/HTMLTableConverter.d.ts +4 -4
  105. package/es-modules/Data/Converters/HTMLTableConverter.js +2 -3
  106. package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +2 -2
  107. package/es-modules/Data/Converters/JSONConverter.d.ts +7 -7
  108. package/es-modules/Data/Converters/JSONConverter.js +6 -6
  109. package/es-modules/Data/Converters/JSONConverterOptions.d.ts +2 -2
  110. package/es-modules/Data/DataCursor.d.ts +65 -70
  111. package/es-modules/Data/DataCursor.js +119 -139
  112. package/es-modules/Data/DataEvent.d.ts +55 -57
  113. package/es-modules/Data/DataPool.d.ts +10 -17
  114. package/es-modules/Data/DataPool.js +20 -9
  115. package/es-modules/Data/DataTable.d.ts +111 -113
  116. package/es-modules/Data/DataTable.js +3 -3
  117. package/es-modules/Data/DataTableCore.d.ts +9 -9
  118. package/es-modules/Data/DataTableCore.js +2 -2
  119. package/es-modules/Data/Formula/FormulaParser.js +1 -2
  120. package/es-modules/Data/Formula/FormulaProcessor.js +1 -2
  121. package/es-modules/Data/Modifiers/ChainModifier.d.ts +29 -34
  122. package/es-modules/Data/Modifiers/ChainModifier.js +7 -8
  123. package/es-modules/Data/Modifiers/DataModifier.d.ts +36 -41
  124. package/es-modules/Data/Modifiers/DataModifier.js +31 -53
  125. package/es-modules/Data/Modifiers/FilterModifier.d.ts +4 -4
  126. package/es-modules/Data/Modifiers/FilterModifier.js +3 -4
  127. package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +3 -2
  128. package/es-modules/Data/Modifiers/InvertModifier.d.ts +4 -4
  129. package/es-modules/Data/Modifiers/InvertModifier.js +3 -4
  130. package/es-modules/Data/Modifiers/MathModifier.d.ts +5 -4
  131. package/es-modules/Data/Modifiers/RangeModifier.d.ts +4 -4
  132. package/es-modules/Data/Modifiers/RangeModifier.js +3 -4
  133. package/es-modules/Data/Modifiers/SortModifier.d.ts +6 -11
  134. package/es-modules/Data/Modifiers/SortModifier.js +3 -4
  135. package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +3 -3
  136. package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +1 -1
  137. package/es-modules/Grid/Core/Accessibility/Accessibility.js +5 -6
  138. package/es-modules/Grid/Core/Data/DataProvider.d.ts +97 -0
  139. package/es-modules/Grid/Core/Data/DataProvider.js +89 -0
  140. package/es-modules/Grid/Core/Data/DataProviderRegistry.d.ts +20 -0
  141. package/es-modules/Grid/Core/Data/DataProviderRegistry.js +52 -0
  142. package/es-modules/Grid/Core/Data/DataProviderType.d.ts +19 -0
  143. package/es-modules/Grid/Core/Data/DataProviderType.js +15 -0
  144. package/es-modules/Grid/Core/Data/LocalDataProvider.d.ts +165 -0
  145. package/es-modules/Grid/Core/Data/LocalDataProvider.js +341 -0
  146. package/es-modules/Grid/Core/Defaults.js +4 -2
  147. package/es-modules/Grid/Core/Globals.d.ts +20 -16
  148. package/es-modules/Grid/Core/Globals.js +10 -8
  149. package/es-modules/Grid/Core/Grid.d.ts +31 -22
  150. package/es-modules/Grid/Core/Grid.js +214 -136
  151. package/es-modules/Grid/Core/GridUtils.d.ts +33 -0
  152. package/es-modules/Grid/Core/GridUtils.js +50 -3
  153. package/es-modules/Grid/Core/Options.d.ts +145 -4
  154. package/es-modules/Grid/Core/Pagination/Pagination.d.ts +3 -0
  155. package/es-modules/Grid/Core/Pagination/Pagination.js +63 -23
  156. package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +4 -0
  157. package/es-modules/Grid/Core/Querying/FilteringController.js +1 -2
  158. package/es-modules/Grid/Core/Querying/PaginationController.d.ts +2 -2
  159. package/es-modules/Grid/Core/Querying/PaginationController.js +3 -3
  160. package/es-modules/Grid/Core/Querying/QueryingController.d.ts +1 -1
  161. package/es-modules/Grid/Core/Querying/QueryingController.js +2 -26
  162. package/es-modules/Grid/Core/Responsive/ResponsiveComposition.d.ts +53 -0
  163. package/es-modules/Grid/Core/Responsive/ResponsiveComposition.js +229 -0
  164. package/es-modules/Grid/Core/Responsive/ResponsiveOptions.d.ts +58 -0
  165. package/es-modules/Grid/Core/Responsive/ResponsiveOptions.js +15 -0
  166. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +2 -3
  167. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +1 -1
  168. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +3 -4
  169. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +1 -1
  170. package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +2 -2
  171. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +17 -1
  172. package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +58 -15
  173. package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +1 -3
  174. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +57 -3
  175. package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +397 -118
  176. package/es-modules/Grid/Core/Table/Body/CellContextMenu.d.ts +11 -0
  177. package/es-modules/Grid/Core/Table/Body/CellContextMenu.js +84 -0
  178. package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +27 -13
  179. package/es-modules/Grid/Core/Table/Body/TableCell.js +74 -25
  180. package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +7 -15
  181. package/es-modules/Grid/Core/Table/Body/TableRow.js +24 -19
  182. package/es-modules/Grid/Core/Table/Cell.d.ts +16 -3
  183. package/es-modules/Grid/Core/Table/Cell.js +36 -3
  184. package/es-modules/Grid/Core/Table/CellContent/TextContent.js +3 -8
  185. package/es-modules/Grid/Core/Table/Column.d.ts +10 -4
  186. package/es-modules/Grid/Core/Table/Column.js +23 -34
  187. package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +9 -8
  188. package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +4 -3
  189. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +5 -0
  190. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +7 -2
  191. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +1 -2
  192. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +1 -2
  193. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +2 -3
  194. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +1 -2
  195. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +1 -2
  196. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +0 -1
  197. package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +4 -14
  198. package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +6 -1
  199. package/es-modules/Grid/Core/Table/Header/HeaderCell.js +33 -13
  200. package/es-modules/Grid/Core/Table/Header/HeaderRow.js +4 -5
  201. package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +1 -1
  202. package/es-modules/Grid/Core/Table/Header/TableHeader.js +3 -3
  203. package/es-modules/Grid/Core/Table/Row.d.ts +1 -1
  204. package/es-modules/Grid/Core/Table/Row.js +2 -2
  205. package/es-modules/Grid/Core/Table/Table.d.ts +38 -12
  206. package/es-modules/Grid/Core/Table/Table.js +184 -91
  207. package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +6 -7
  208. package/es-modules/Grid/Core/UI/ContextMenuButton.js +5 -3
  209. package/es-modules/Grid/Core/UI/Popup.js +7 -9
  210. package/es-modules/Grid/Core/UI/SvgIcons.d.ts +42 -7
  211. package/es-modules/Grid/Core/UI/SvgIcons.js +206 -33
  212. package/es-modules/Grid/Core/UI/Toolbar.d.ts +5 -0
  213. package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +4 -12
  214. package/es-modules/Grid/Core/UI/ToolbarButton.js +8 -26
  215. package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +2 -2
  216. package/es-modules/Grid/Pro/CellEditing/CellEditing.js +10 -10
  217. package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +1 -2
  218. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +1 -1
  219. package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +4 -2
  220. package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +2 -2
  221. package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +1 -2
  222. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +2 -2
  223. package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +1 -2
  224. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +2 -2
  225. package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +1 -2
  226. package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +1 -2
  227. package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +1 -2
  228. package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +1 -2
  229. package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +1 -2
  230. package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +1 -2
  231. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +2 -2
  232. package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +1 -2
  233. package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +1 -2
  234. package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +1 -2
  235. package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +1 -2
  236. package/es-modules/Grid/Pro/ColumnTypes/Validator.js +34 -32
  237. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +1 -1
  238. package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +3 -4
  239. package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +1 -3
  240. package/es-modules/Grid/Pro/Data/DataSourceHelper.d.ts +74 -0
  241. package/es-modules/Grid/Pro/Data/DataSourceHelper.js +246 -0
  242. package/es-modules/Grid/Pro/Data/QuerySerializer.d.ts +46 -0
  243. package/es-modules/Grid/Pro/Data/QuerySerializer.js +169 -0
  244. package/es-modules/Grid/Pro/Data/RemoteDataProvider.d.ts +187 -0
  245. package/es-modules/Grid/Pro/Data/RemoteDataProvider.js +500 -0
  246. package/es-modules/Grid/Pro/Export/Exporting.js +1 -2
  247. package/es-modules/Grid/Pro/Export/ExportingComposition.js +1 -2
  248. package/es-modules/Grid/Pro/GridEvents.js +1 -2
  249. package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +0 -1
  250. package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +1 -2
  251. package/es-modules/Shared/BaseForm.js +1 -2
  252. package/es-modules/Shared/DownloadURL.js +1 -2
  253. package/es-modules/Shared/TimeBase.js +3 -3
  254. package/es-modules/Shared/Types.d.ts +7 -0
  255. package/es-modules/Shared/Utilities.d.ts +576 -0
  256. package/es-modules/Shared/Utilities.js +1368 -0
  257. package/es-modules/masters/grid-pro.src.d.ts +15 -11
  258. package/es-modules/masters/grid-pro.src.js +12 -5
  259. package/grid-pro.d.ts +15 -11
  260. package/grid-pro.js +3 -3
  261. package/grid-pro.js.map +1 -1
  262. package/grid-pro.src.d.ts +15 -11
  263. package/grid-pro.src.js +10408 -8009
  264. package/package.json +1 -1
  265. package/es-modules/Grid/Core/Pagination/Icons.d.ts +0 -7
  266. package/es-modules/Grid/Core/Pagination/Icons.js +0 -7
@@ -26,10 +26,10 @@ import SeriesRegistry from '../Series/SeriesRegistry.js';
26
26
  const { seriesTypes } = SeriesRegistry;
27
27
  import SVGRenderer from '../Renderer/SVG/SVGRenderer.js';
28
28
  import Time from '../Time.js';
29
- import U from '../Utilities.js';
30
29
  import AST from '../Renderer/HTML/AST.js';
31
30
  import Tick from '../Axis/Tick.js';
32
- const { addEvent, attr, createElement, css, defined, diffObjects, discardElement, erase, error, extend, find, fireEvent, getAlignFactor, getStyle, isArray, isNumber, isObject, isString, merge, objectEach, pick, pInt, relativeLength, removeEvent, splat, syncTimeout, uniqueKey } = U;
31
+ import { addEvent, attr, createElement, css, defined, diffObjects, discardElement, erase, extend, find, fireEvent, getAlignFactor, getStyle, internalClearTimeout, isArray, isNumber, isObject, isString, merge, objectEach, pick, pInt, relativeLength, removeEvent, splat, syncTimeout } from '../../Shared/Utilities.js';
32
+ import { error, uniqueKey } from '../Utilities.js';
33
33
  /* *
34
34
  *
35
35
  * Class
@@ -107,6 +107,11 @@ class Chart {
107
107
  ) {
108
108
  /** @internal */
109
109
  this.sharedClips = {};
110
+ // Return early if there's no browser API (server environment).
111
+ if (!doc) {
112
+ error(36, false, this);
113
+ return;
114
+ }
110
115
  const args = [
111
116
  // ES5 builds fail unless we cast it to an Array
112
117
  ...arguments
@@ -369,13 +374,6 @@ class Chart {
369
374
  for (let i = fromIndex, iEnd = collection.length; i < iEnd; ++i) {
370
375
  const item = collection[i];
371
376
  if (item) {
372
- /**
373
- * Contains the series' index in the `Chart.series` array.
374
- *
375
- * @name Highcharts.Series#index
376
- * @type {number}
377
- * @readonly
378
- */
379
377
  item.index = i;
380
378
  if (item instanceof Series) {
381
379
  item.name = item.getName();
@@ -1277,7 +1275,7 @@ class Chart {
1277
1275
  containerBox.width) {
1278
1276
  if (containerBox.width !== oldBox.width ||
1279
1277
  containerBox.height !== oldBox.height) {
1280
- U.clearTimeout(chart.reflowTimeout);
1278
+ internalClearTimeout(chart.reflowTimeout);
1281
1279
  // When called from window.resize, e is set, else it's called
1282
1280
  // directly (#2224)
1283
1281
  chart.reflowTimeout = syncTimeout(function () {
@@ -1681,15 +1679,6 @@ class Chart {
1681
1679
  // #3341 avoid mutual linking
1682
1680
  linkedParent.linkedParent !== series) {
1683
1681
  linkedParent.linkedSeries.push(series);
1684
- /**
1685
- * The parent series of the current series, if the current
1686
- * series has a [linkedTo](https://api.highcharts.com/highcharts/series.line.linkedTo)
1687
- * setting.
1688
- *
1689
- * @name Highcharts.Series#linkedParent
1690
- * @type {Highcharts.Series}
1691
- * @readonly
1692
- */
1693
1682
  series.linkedParent = linkedParent;
1694
1683
  if (linkedParent.enabledDataSorting) {
1695
1684
  series.setDataSortingOptions();
@@ -1772,14 +1761,25 @@ class Chart {
1772
1761
  while ((redoHorizontal || redoVertical || axisLayoutRuns > 1) &&
1773
1762
  run < axisLayoutRuns // #19794
1774
1763
  ) {
1775
- const tempWidth = chart.plotWidth, tempHeight = chart.plotHeight;
1764
+ const tempWidth = chart.plotWidth, tempHeight = chart.plotHeight, threshold = [1.05, 1.1];
1776
1765
  for (const axis of axes) {
1766
+ const horizNum = +(axis.horiz || 0);
1777
1767
  if (run === 0) {
1778
1768
  // Get margins by pre-rendering axes
1779
1769
  axis.setScale();
1770
+ // On datetime axes, consider the tick interval match. A
1771
+ // match close to 1 means that the current normalized tick
1772
+ // interval is an insecure match to the requested tick
1773
+ // interval, on the brink of landing on a higher unit. In
1774
+ // this case, we should redo the axis to get a more
1775
+ // appropriate tick interval (#17393).
1776
+ const tickIntervalMatch = axis.tickPositions?.info?.match;
1777
+ if (tickIntervalMatch) {
1778
+ threshold[horizNum] = Math.min(tickIntervalMatch, threshold[horizNum]);
1779
+ }
1780
1780
  }
1781
- else if ((axis.horiz && redoHorizontal) ||
1782
- (!axis.horiz && redoVertical)) {
1781
+ else if ((horizNum && redoHorizontal) ||
1782
+ (!horizNum && redoVertical)) {
1783
1783
  // Update to reflect the new margins
1784
1784
  axis.setTickInterval(true);
1785
1785
  }
@@ -1791,8 +1791,10 @@ class Chart {
1791
1791
  // Check again for new, rotated or moved labels
1792
1792
  chart.getMargins();
1793
1793
  }
1794
- redoHorizontal = (tempWidth / chart.plotWidth) > (run ? 1 : 1.1);
1795
- redoVertical = (tempHeight / chart.plotHeight) > (run ? 1 : 1.05);
1794
+ redoHorizontal = (tempWidth / chart.plotWidth) >
1795
+ (run ? 1 : threshold[1]);
1796
+ redoVertical = (tempHeight / chart.plotHeight) >
1797
+ (run ? 1 : threshold[0]);
1796
1798
  run++;
1797
1799
  }
1798
1800
  // Draw the borders and backgrounds
@@ -1973,7 +1975,7 @@ class Chart {
1973
1975
  chart.render();
1974
1976
  chart.pointer?.getChartPosition(); // #14973
1975
1977
  // Fire the load event if there are no external images
1976
- if (!chart.renderer.imgCount && !chart.hasLoaded) {
1978
+ if (!chart.renderer.asyncCounter && !chart.hasLoaded) {
1977
1979
  chart.onload();
1978
1980
  }
1979
1981
  // If the chart was rendered outside the top container, put it back in
@@ -2199,13 +2201,13 @@ class Chart {
2199
2201
  * [lang.loading](https://api.highcharts.com/highcharts/lang.loading).
2200
2202
  */
2201
2203
  showLoading(str) {
2202
- const chart = this, options = chart.options, loadingOptions = options.loading, setLoadingSize = function () {
2204
+ const chart = this, options = chart.options, loadingOptions = options.loading, loadingStyle = loadingOptions?.style ?? {}, setLoadingSize = function () {
2203
2205
  if (loadingDiv) {
2204
2206
  css(loadingDiv, {
2205
- left: chart.plotLeft + 'px',
2206
- top: chart.plotTop + 'px',
2207
- width: chart.plotWidth + 'px',
2208
- height: chart.plotHeight + 'px'
2207
+ left: loadingStyle.left ?? chart.plotLeft + 'px',
2208
+ top: loadingStyle.top ?? chart.plotTop + 'px',
2209
+ width: loadingStyle.width ?? chart.plotWidth + 'px',
2210
+ height: loadingStyle.height ?? chart.plotHeight + 'px'
2209
2211
  });
2210
2212
  }
2211
2213
  };
@@ -2225,10 +2227,8 @@ class Chart {
2225
2227
  AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));
2226
2228
  if (!chart.styledMode) {
2227
2229
  // Update visuals
2228
- css(loadingDiv, extend(loadingOptions.style, {
2229
- zIndex: 10
2230
- }));
2231
- css(loadingSpan, loadingOptions.labelStyle);
2230
+ css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
2231
+ css(loadingSpan, loadingOptions?.labelStyle ?? {});
2232
2232
  // Show it
2233
2233
  if (!chart.loadingShown) {
2234
2234
  css(loadingDiv, {
@@ -2236,9 +2236,9 @@ class Chart {
2236
2236
  display: ''
2237
2237
  });
2238
2238
  animate(loadingDiv, {
2239
- opacity: loadingOptions.style.opacity || 0.5
2239
+ opacity: loadingStyle.opacity ?? 0.5
2240
2240
  }, {
2241
- duration: loadingOptions.showDuration || 0
2241
+ duration: loadingOptions?.showDuration ?? 0
2242
2242
  });
2243
2243
  }
2244
2244
  }
@@ -2266,7 +2266,7 @@ class Chart {
2266
2266
  animate(loadingDiv, {
2267
2267
  opacity: 0
2268
2268
  }, {
2269
- duration: options.loading.hideDuration || 100,
2269
+ duration: options.loading?.hideDuration ?? 100,
2270
2270
  complete: function () {
2271
2271
  css(loadingDiv, { display: 'none' });
2272
2272
  }
@@ -2435,9 +2435,12 @@ class Chart {
2435
2435
  // update the first series in the chart. Setting two series without
2436
2436
  // an id will update the first and the second respectively (#6019)
2437
2437
  // chart.update and responsive.
2438
- this.collectionsWithUpdate.forEach(function (coll) {
2438
+ this.collectionsWithUpdate.forEach((coll) => {
2439
2439
  if (options[coll]) {
2440
- splat(options[coll]).forEach(function (newOptions, i) {
2440
+ splat(options[coll]).forEach((newOptions, i) => {
2441
+ if (!newOptions) {
2442
+ return;
2443
+ }
2441
2444
  const hasId = defined(newOptions.id);
2442
2445
  let item;
2443
2446
  // Match by id
@@ -2476,7 +2479,7 @@ class Chart {
2476
2479
  });
2477
2480
  // Add items for removal
2478
2481
  if (oneToOne) {
2479
- chart[coll].forEach(function (item) {
2482
+ chart[coll].forEach((item) => {
2480
2483
  if (!item.touched && !item.options.isInternal) {
2481
2484
  itemsForRemoval.push(item);
2482
2485
  }
@@ -2487,7 +2490,7 @@ class Chart {
2487
2490
  }
2488
2491
  }
2489
2492
  });
2490
- itemsForRemoval.forEach(function (item) {
2493
+ itemsForRemoval.forEach((item) => {
2491
2494
  if (item.chart && item.remove) { // #9097, avoid removing twice
2492
2495
  item.remove(false);
2493
2496
  }
@@ -2930,6 +2933,10 @@ export default Chart;
2930
2933
  * The thousands separator, defaults to the one given in the lang
2931
2934
  * options, or a space character.
2932
2935
  *
2936
+ * @param {Highcharts.Chart} [ctx]
2937
+ * Since v12.5.0, the chart context passed as an extra argument for
2938
+ * arrow functions.
2939
+ *
2933
2940
  * @return {string} The formatted number.
2934
2941
  */
2935
2942
  /**
@@ -17,8 +17,7 @@ import D from '../Defaults.js';
17
17
  const { defaultOptions: genericDefaultOptions } = D;
18
18
  import Math3D from '../Math3D.js';
19
19
  const { perspective, shapeArea3D } = Math3D;
20
- import U from '../Utilities.js';
21
- const { addEvent, isArray, merge, pick, wrap } = U;
20
+ import { addEvent, isArray, merge, pick, wrap } from '../../Shared/Utilities.js';
22
21
  /* *
23
22
  *
24
23
  * Composition
@@ -386,6 +386,9 @@ const ChartDefaults = {
386
386
  /**
387
387
  * Callback function to override the default function that formats all
388
388
  * the numbers in the chart. Returns a string with the formatted number.
389
+ * Since v12.5.0, the callback also receives `ctx` as the last argument,
390
+ * so that arrow functions can access the same context as regular
391
+ * functions using `this`.
389
392
  *
390
393
  * @sample highcharts/members/highcharts-numberformat
391
394
  * Arabic digits in Highcharts
@@ -439,6 +442,10 @@ const ChartDefaults = {
439
442
  * requires two fingers. To allow panning with one finger, set
440
443
  * `followTouchMove` to `false`.
441
444
  *
445
+ * **Note:** If both zooming and panning are enabled without keys, zooming
446
+ * will take precedence by default. To prioritize panning, either set
447
+ * [chart.zooming.key](#chart.zooming.key) or panKey.
448
+ *
442
449
  * @sample {highcharts} highcharts/chart/pankey/ Zooming and panning
443
450
  * @sample {highstock} stock/chart/panning/ Zooming and xy panning
444
451
  */
@@ -1048,6 +1055,10 @@ const ChartDefaults = {
1048
1055
  * avoid zooming while moving points. Should be set different than
1049
1056
  * [chart.panKey](#chart.panKey).
1050
1057
  *
1058
+ * **Note:** If both zooming and panning are enabled without keys,
1059
+ * zooming will take precedence by default. To prioritize panning,
1060
+ * either set zooming key or [chart.panKey](#chart.panKey).
1061
+ *
1051
1062
  * @type {string}
1052
1063
  * @default {highcharts} undefined
1053
1064
  * @validvalue ["alt", "ctrl", "meta", "shift"]
@@ -598,6 +598,10 @@ export interface ChartOptions {
598
598
  * requires two fingers. To allow panning with one finger, set
599
599
  * `followTouchMove` to `false`.
600
600
  *
601
+ * **Note:** If both zooming and panning are enabled without keys, zooming
602
+ * will take precedence by default. To prioritize panning, either set
603
+ * [chart.zooming.key](#chart.zooming.key) or panKey.
604
+ *
601
605
  * @sample {highcharts} highcharts/chart/pankey/
602
606
  * Zooming and panning
603
607
  * @sample {highstock} stock/chart/panning/
@@ -1160,6 +1164,10 @@ export interface ChartZoomingOptions {
1160
1164
  * avoid zooming while moving points. Should be set different than
1161
1165
  * [chart.panKey](#chart.panKey).
1162
1166
  *
1167
+ * **Note:** If both zooming and panning are enabled without keys, zooming
1168
+ * will take precedence by default. To prioritize panning, either set
1169
+ * zooming key or [chart.panKey](#chart.panKey).
1170
+ *
1163
1171
  * @default {highcharts} undefined
1164
1172
  * @validvalue ["alt", "ctrl", "meta", "shift"]
1165
1173
  * @requires modules/draggable-points
@@ -13,8 +13,7 @@
13
13
  import Chart from './Chart.js';
14
14
  import D from '../Defaults.js';
15
15
  const { defaultOptions } = D;
16
- import U from '../Utilities.js';
17
- const { isArray, merge, splat } = U;
16
+ import { isArray, merge, splat } from '../../Shared/Utilities.js';
18
17
  /* *
19
18
  *
20
19
  * Class
@@ -13,9 +13,8 @@ import Chart from './Chart.js';
13
13
  import D from '../Defaults.js';
14
14
  const { getOptions } = D;
15
15
  import SVGRenderer from '../Renderer/SVG/SVGRenderer.js';
16
- import U from '../Utilities.js';
17
- const { isNumber, merge, pick } = U;
18
16
  import '../../Maps/MapSymbols.js';
17
+ import { isNumber, merge, pick } from '../../Shared/Utilities.js';
19
18
  /* *
20
19
  *
21
20
  * Class
@@ -19,8 +19,7 @@ import RangeSelectorDefaults from '../../Stock/RangeSelector/RangeSelectorDefaul
19
19
  import ScrollbarDefaults from '../../Stock/Scrollbar/ScrollbarDefaults.js';
20
20
  import StockUtilities from '../../Stock/Utilities/StockUtilities.js';
21
21
  const { setFixedRange } = StockUtilities;
22
- import U from '../Utilities.js';
23
- const { addEvent, clamp, crisp, defined, extend, find, isNumber, isString, merge, pick, splat } = U;
22
+ import { addEvent, clamp, crisp, defined, extend, find, isNumber, isString, merge, pick, splat } from '../../Shared/Utilities.js';
24
23
  /* *
25
24
  *
26
25
  * Functions
@@ -339,7 +338,7 @@ addEvent(Chart, 'update', function (e) {
339
338
  text = format(formatOption, { value }, chart);
340
339
  }
341
340
  else if (options.formatter && isNumber(value)) {
342
- text = options.formatter.call(axis, value);
341
+ text = options.formatter.call(axis, value, axis);
343
342
  }
344
343
  crossLabel.attr({
345
344
  text,
@@ -11,8 +11,7 @@
11
11
  'use strict';
12
12
  import H from '../Globals.js';
13
13
  const { win } = H;
14
- import U from '../Utilities.js';
15
- const { isNumber, isString, merge, pInt, defined } = U;
14
+ import { defined, isNumber, isString, merge, pInt } from '../../Shared/Utilities.js';
16
15
  /* *
17
16
  *
18
17
  * Helpers
@@ -14,8 +14,7 @@ import H from './Globals.js';
14
14
  const { isTouchDevice } = H;
15
15
  import Palettes from './Color/Palettes.js';
16
16
  import Time from './Time.js';
17
- import U from './Utilities.js';
18
- const { fireEvent, merge } = U;
17
+ import { fireEvent, merge } from '../Shared/Utilities.js';
19
18
  /* *
20
19
  *
21
20
  * API Options
@@ -990,6 +989,9 @@ const defaultOptions = {
990
989
  * columns. Setting this to `false` makes room for more items, but will
991
990
  * look more messy.
992
991
  *
992
+ * @sample highcharts/legend/aligncolumns
993
+ * Align columns
994
+ *
993
995
  * @since 6.1.0
994
996
  */
995
997
  alignColumns: true,
@@ -1120,6 +1122,9 @@ const defaultOptions = {
1120
1122
  * for each legend label. Available variables relates to properties on
1121
1123
  * the series, or the point in case of pies.
1122
1124
  *
1125
+ * @sample {highcharts} highcharts/legend/labelformat/
1126
+ * Add text
1127
+ *
1123
1128
  * @type {string}
1124
1129
  * @default {name}
1125
1130
  * @since 1.3
@@ -1129,7 +1134,10 @@ const defaultOptions = {
1129
1134
  /**
1130
1135
  * Callback function to format each of the series' labels. The `this`
1131
1136
  * keyword refers to the series object, or the point object in case of
1132
- * pie charts. By default the series or point name is printed.
1137
+ * pie charts. By default the series or point name is printed. Since
1138
+ * v12.5.0, the callback also receives `ctx` as the first argument, so
1139
+ * that arrow functions can access the same context as regular
1140
+ * functions using `this`.
1133
1141
  *
1134
1142
  * @productdesc {highmaps}
1135
1143
  * In Highmaps the context can also be a data class in case of a
@@ -2025,13 +2033,18 @@ const defaultOptions = {
2025
2033
  * @sample {highmaps} maps/tooltip/formatter/
2026
2034
  * String formatting
2027
2035
  *
2036
+ * Since v12.5.0, the callback also receives `ctx` as the second
2037
+ * argument, so that arrow functions can access the same context as
2038
+ * regular functions using `this`.
2039
+ *
2028
2040
  * @type {Highcharts.TooltipFormatterCallbackFunction}
2029
2041
  * @apioption tooltip.formatter
2030
2042
  */
2031
2043
  /**
2032
2044
  * Callback function to format the text of the tooltip for
2033
2045
  * visible null points.
2034
- * Works analogously to [formatter](#tooltip.formatter).
2046
+ * Works analogously to [formatter](#tooltip.formatter), including the
2047
+ * `ctx` callback argument added in v12.5.0.
2035
2048
  *
2036
2049
  * @sample highcharts/plotoptions/series-nullformat
2037
2050
  * Format data label and tooltip for null point.
@@ -2065,7 +2078,9 @@ const defaultOptions = {
2065
2078
  /**
2066
2079
  * A callback function for formatting the HTML output for a single point
2067
2080
  * in the tooltip. Like the `pointFormat` string, but with more
2068
- * flexibility.
2081
+ * flexibility. Since v12.5.0, the callback also receives `ctx` as the
2082
+ * first argument, so that arrow functions can access the same context
2083
+ * as regular functions using `this`.
2069
2084
  *
2070
2085
  * @type {Highcharts.FormatterCallbackFunction<Highcharts.Point>}
2071
2086
  * @since 4.1.0
@@ -2074,10 +2089,13 @@ const defaultOptions = {
2074
2089
  */
2075
2090
  /**
2076
2091
  * A callback function to place the tooltip in a custom position. The
2077
- * callback receives three parameters: `labelWidth`, `labelHeight` and
2078
- * `point`, where point contains values for `plotX` and `plotY` telling
2079
- * where the reference point is in the plot area. Add `chart.plotLeft`
2080
- * and `chart.plotTop` to get the full coordinates.
2092
+ * callback receives four parameters: `labelWidth`, `labelHeight`,
2093
+ * `point`, and `ctx`, where point contains values for `plotX` and
2094
+ * `plotY` telling where the reference point is in the plot area, and
2095
+ * `ctx` is the tooltip context (so that arrow-functions can access the
2096
+ * same context as a normal function using `this`). Add
2097
+ * `chart.plotLeft` and `chart.plotTop` to get the full coordinates.
2098
+ * Since v12.5.0, the callback receives `ctx`.
2081
2099
  *
2082
2100
  * To find the actual hovered `Point` instance, use
2083
2101
  * `this.chart.hoverPoint`. For shared or split tooltips, all the hover
@@ -2301,6 +2319,15 @@ const defaultOptions = {
2301
2319
  * @since 3.0
2302
2320
  */
2303
2321
  hideDelay: 500,
2322
+ /**
2323
+ * The number of milliseconds to wait until the tooltip is shown when
2324
+ * mouse over a point. Works on initial hover.
2325
+ *
2326
+ * @sample {highcharts|highstock} highcharts/tooltip/showdelay/
2327
+ *
2328
+ * @since next
2329
+ */
2330
+ showDelay: 0,
2304
2331
  /**
2305
2332
  * Padding inside the tooltip, in pixels.
2306
2333
  *
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Delaunay triangulation of a 2D point set.
3
+ */
4
+ declare class Delaunay<T extends Float32Array | Float64Array = Float32Array> {
5
+ /**
6
+ * The resulting triangulation as a flat array of triangle vertex indices.
7
+ */
8
+ readonly triangles: Uint32Array;
9
+ /**
10
+ * The input points array.
11
+ */
12
+ readonly points: T;
13
+ /**
14
+ * Sorted and deduplicated point indices used for triangulation.
15
+ */
16
+ private readonly ids;
17
+ /**
18
+ * Numerical tolerance for geometric predicates.
19
+ */
20
+ private readonly epsilon;
21
+ /**
22
+ * Minimum X value used for normalization.
23
+ */
24
+ private readonly minX;
25
+ /**
26
+ * Minimum Y value used for normalization.
27
+ */
28
+ private readonly minY;
29
+ /**
30
+ * Inverse X scale factor used for normalization.
31
+ */
32
+ private readonly invScaleX;
33
+ /**
34
+ * Inverse Y scale factor used for normalization.
35
+ */
36
+ private readonly invScaleY;
37
+ /**
38
+ * Create a new Delaunay triangulation.
39
+ *
40
+ * @param {Float32Array|Float64Array} points
41
+ * A 1D array of points in the format [x0, y0, x1, y1, ...].
42
+ */
43
+ constructor(points: T);
44
+ /**
45
+ * Triangulate the points.
46
+ *
47
+ * @return {Uint32Array}
48
+ * A 1D array of triangle vertex indices.
49
+ */
50
+ private triangulate;
51
+ }
52
+ export default Delaunay;