@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
package/grid-pro.js CHANGED
@@ -1,10 +1,10 @@
1
1
  !/**
2
- * Highcharts Grid Pro v2.2.0 (2026-01-13)
2
+ * Highcharts Grid Pro v2.3.0 (2026-03-12)
3
3
  * @module grid/grid-pro
4
4
  *
5
5
  * (c) 2009-2026 Highsoft AS
6
6
  *
7
7
  * A commercial license may be required depending on use.
8
8
  * See www.highcharts.com/license
9
- */function(e,t){"object"==typeof exports&&"object"==typeof module?(e._Grid=t(),module.exports=e._Grid):"function"==typeof define&&define.amd?define("grid/grid-pro",[],t):"object"==typeof exports?(e._Grid=t(),exports["grid/grid-pro"]=e._Grid):(e.Grid&&e.Grid.error(16,!0),e.Grid=t())}("u"<typeof window?this:window,()=>(()=>{"use strict";let e,t,i;var n,s,r,o,l,a,d,h,u={};u.d=(e,t)=>{for(var i in t)u.o(t,i)&&!u.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var c={};u.d(c,{default:()=>rj}),(n=a||(a={})).SVG_NS="http://www.w3.org/2000/svg",n.product="Highcharts",n.version="2.2.0",n.win="u">typeof window?window:{},n.doc=n.win.document,n.svg=!!n.doc?.createElementNS?.(n.SVG_NS,"svg")?.createSVGRect,n.pageLang=n.doc?.documentElement?.closest("[lang]")?.lang,n.userAgent=n.win.navigator?.userAgent||"",n.isChrome=n.win.chrome,n.isFirefox=-1!==n.userAgent.indexOf("Firefox"),n.isMS=/(edge|msie|trident)/i.test(n.userAgent)&&!n.win.opera,n.isSafari=!n.isChrome&&-1!==n.userAgent.indexOf("Safari"),n.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(n.userAgent),n.isWebKit=-1!==n.userAgent.indexOf("AppleWebKit"),n.deg2rad=2*Math.PI/360,n.marginNames=["plotTop","marginRight","marginBottom","plotLeft"],n.noop=function(){},n.supportsPassiveEvents=function(){let e=!1;if(!n.isMS){let t=Object.defineProperty({},"passive",{get:function(){e=!0}});n.win.addEventListener&&n.win.removeEventListener&&(n.win.addEventListener("testPassive",n.noop,t),n.win.removeEventListener("testPassive",n.noop,t))}return e}(),n.charts=[],n.composed=[],n.dateFormats={},n.seriesTypes={},n.symbolSizes={},n.chartCount=0;let p=a,{charts:m,doc:g,win:f}=p;function y(e,t,i,n){let s=t?"Highcharts error":"Highcharts warning";32===e&&(e=`${s}: Deprecated member`);let r=x(e),o=r?`${s} #${e}: www.highcharts.com/errors/${e}/`:e.toString();if(void 0!==n){let e="";r&&(o+="?"),N(n,function(t,i){e+=`
10
- - ${i}: ${t}`,r&&(o+=encodeURI(i)+"="+encodeURI(t))}),o+=e}H(p,"displayError",{chart:i,code:e,message:o,params:n},function(){if(t)throw Error(o);f.console&&-1===y.messages.indexOf(o)&&console.warn(o)}),y.messages.push(o)}function b(e,t){return parseInt(e,t||10)}function w(e){return"string"==typeof e}function v(e){let t=Object.prototype.toString.call(e);return"[object Array]"===t||"[object Array Iterator]"===t}function C(e,t){return!!e&&"object"==typeof e&&(!t||!v(e))}function E(e){return C(e)&&"number"==typeof e.nodeType}function T(e){let t=e?.constructor;return!!(C(e,!0)&&!E(e)&&t?.name&&"Object"!==t.name)}function x(e){return"number"==typeof e&&!isNaN(e)&&e<1/0&&e>-1/0}function S(e){return null!=e}function L(e,t,i){let n,s=w(t)&&!S(i),r=(t,i)=>{S(t)?e.setAttribute(i,t):s?(n=e.getAttribute(i))||"class"!==i||(n=e.getAttribute(i+"Name")):e.removeAttribute(i)};return w(t)?r(i,t):N(t,r),n}function O(e){return v(e)?e:[e]}function M(e,t){let i;for(i in e||(e={}),t)e[i]=t[i];return e}function R(){let e=arguments,t=e.length;for(let i=0;i<t;i++){let t=e[i];if(null!=t)return t}}function A(e,t){M(e.style,t)}function I(e){return Math.pow(10,Math.floor(Math.log(e)/Math.LN10))}function D(e,t){return e>1e14?e:parseFloat(e.toPrecision(t||14))}(y||(y={})).messages=[],Math.easeInOutSine=function(e){return -.5*(Math.cos(Math.PI*e)-1)};let k=Array.prototype.find?function(e,t){return e.find(t)}:function(e,t){let i,n=e.length;for(i=0;i<n;i++)if(t(e[i],i))return e[i]};function N(e,t,i){for(let n in e)Object.hasOwnProperty.call(e,n)&&t.call(i||e[n],e[n],n,e)}function P(e,t,i){function n(t,i){let n=e.removeEventListener;n&&n.call(e,t,i,!1)}function s(i){let s,r;e.nodeName&&(t?(s={})[t]=!0:s=i,N(s,function(e,t){if(i[t])for(r=i[t].length;r--;)n(t,i[t][r].fn)}))}let r="function"==typeof e&&e.prototype||e;if(Object.hasOwnProperty.call(r,"hcEvents")){let e=r.hcEvents;if(t){let r=e[t]||[];i?(e[t]=r.filter(function(e){return i!==e.fn}),n(t,i)):(s(e),e[t]=[])}else s(e),delete r.hcEvents}}function H(e,t,i,n){if(i=i||{},g?.createEvent&&(e.dispatchEvent||e.fireEvent&&e!==p)){let n=g.createEvent("Events");n.initEvent(t,!0,!0),i=M(n,i),e.dispatchEvent?e.dispatchEvent(i):e.fireEvent(t,i)}else if(e.hcEvents){i.target||M(i,{preventDefault:function(){i.defaultPrevented=!0},target:e,type:t});let n=[],s=e,r=!1;for(;s.hcEvents;)Object.hasOwnProperty.call(s,"hcEvents")&&s.hcEvents[t]&&(n.length&&(r=!0),n.unshift.apply(n,s.hcEvents[t])),s=Object.getPrototypeOf(s);r&&n.sort((e,t)=>e.order-t.order),n.forEach(t=>{!1===t.fn.call(e,i)&&i.preventDefault()})}n&&!i.defaultPrevented&&n.call(e,i)}let F=(t=Math.random().toString(36).substring(2,9)+"-",i=0,function(){return"highcharts-"+(e?"":t)+i++});f.jQuery&&(f.jQuery.fn.highcharts=function(){let e=[].slice.call(arguments);if(this[0])return e[0]?(new p[w(e[0])?e.shift():"Chart"](this[0],e[0],e[1]),this):m[L(this[0],"data-highcharts-chart")]});let B={addEvent:function(e,t,i,n={}){let s="function"==typeof e&&e.prototype||e;Object.hasOwnProperty.call(s,"hcEvents")||(s.hcEvents={});let r=s.hcEvents;p.Point&&e instanceof p.Point&&e.series&&e.series.chart&&(e.series.chart.runTrackerClick=!0);let o=e.addEventListener;o&&o.call(e,t,i,!!p.supportsPassiveEvents&&{passive:void 0===n.passive?-1!==t.indexOf("touch"):n.passive,capture:!1}),r[t]||(r[t]=[]);let l={fn:i,order:"number"==typeof n.order?n.order:1/0};return r[t].push(l),r[t].sort((e,t)=>e.order-t.order),function(){P(e,t,i)}},arrayMax:function(e){let t=e.length,i=e[0];for(;t--;)e[t]>i&&(i=e[t]);return i},arrayMin:function(e){let t=e.length,i=e[0];for(;t--;)e[t]<i&&(i=e[t]);return i},attr:L,clamp:function(e,t,i){return e>t?e<i?e:i:t},clearTimeout:function(e){S(e)&&clearTimeout(e)},correctFloat:D,createElement:function(e,t,i,n,s){let r=g.createElement(e);return t&&M(r,t),s&&A(r,{padding:"0",border:"none",margin:"0"}),i&&A(r,i),n&&n.appendChild(r),r},crisp:function(e,t=0,i){let n=t%2/2,s=i?-1:1;return(Math.round(e*s-n)+n)*s},css:A,defined:S,destroyObjectProperties:function(e,t,i){N(e,function(n,s){n!==t&&n?.destroy&&n.destroy(),(n?.destroy||!i)&&delete e[s]})},diffObjects:function(e,t,i,n){let s={};return!function e(t,s,r,o){let l=i?s:t;N(t,function(i,a){if(!o&&n&&n.indexOf(a)>-1&&s[a]){i=O(i),r[a]=[];for(let t=0;t<Math.max(i.length,s[a].length);t++)s[a][t]&&(void 0===i[t]?r[a][t]=s[a][t]:(r[a][t]={},e(i[t],s[a][t],r[a][t],o+1)))}else C(i,!0)&&!i.nodeType?(r[a]=v(i)?[]:{},e(i,s[a]||{},r[a],o+1),0===Object.keys(r[a]).length&&("colorAxis"!==a||0!==o)&&delete r[a]):(t[a]!==s[a]||a in t&&!(a in s))&&"__proto__"!==a&&"constructor"!==a&&(r[a]=l[a])})}(e,t,s,0),s},discardElement:function(e){e?.parentElement?.removeChild(e)},erase:function(e,t){let i=e.length;for(;i--;)if(e[i]===t){e.splice(i,1);break}},error:y,extend:M,extendClass:function(e,t){let i=function(){};return i.prototype=new e,M(i.prototype,t),i},find:k,fireEvent:H,getAlignFactor:(e="")=>({center:.5,right:1,middle:.5,bottom:1})[e]||0,getClosestDistance:function(e,t){let i,n,s,r,o=!t;return e.forEach(e=>{if(e.length>1)for(r=n=e.length-1;r>0;r--)(s=e[r]-e[r-1])<0&&!o?(t?.(),t=void 0):s&&(void 0===i||s<i)&&(i=s)}),i},getMagnitude:I,getNestedProperty:function(e,t){let i=e.split(".");for(;i.length&&S(t);){let e=i.shift();if(void 0===e||"__proto__"===e)return;if("this"===e){let e;return C(t)&&(e=t["@this"]),e??t}let n=t[e.replace(/[\\'"]/g,"")];if(!S(n)||"function"==typeof n||"number"==typeof n.nodeType||n===f)return;t=n}return t},getStyle:function e(t,i,n){let s;if("width"===i){let i=Math.min(t.offsetWidth,t.scrollWidth),n=t.getBoundingClientRect?.().width;return n<i&&n>=i-1&&(i=Math.floor(n)),Math.max(0,i-(e(t,"padding-left",!0)||0)-(e(t,"padding-right",!0)||0))}if("height"===i)return Math.max(0,Math.min(t.offsetHeight,t.scrollHeight)-(e(t,"padding-top",!0)||0)-(e(t,"padding-bottom",!0)||0));let r=f.getComputedStyle(t,void 0);return r&&(s=r.getPropertyValue(i),R(n,"opacity"!==i)&&(s=b(s))),s},insertItem:function(e,t){let i,n=e.options.index,s=t.length;for(i=e.options.isInternal?s:0;i<s+1;i++)if(!t[i]||x(n)&&n<R(t[i].options.index,t[i]._i)||t[i].options.isInternal){t.splice(i,0,e);break}return i},isArray:v,isClass:T,isDOMElement:E,isFunction:function(e){return"function"==typeof e},isNumber:x,isObject:C,isString:w,merge:function(e,...t){let i,n=[e,...t],s={},r=function(e,t){return"object"!=typeof e&&(e={}),N(t,function(i,n){"__proto__"!==n&&"constructor"!==n&&(!C(i,!0)||T(i)||E(i)?e[n]=t[n]:e[n]=r(e[n]||{},i))}),e};!0===e&&(s=n[1],n=Array.prototype.slice.call(n,2));let o=n.length;for(i=0;i<o;i++)s=r(s,n[i]);return s},normalizeTickInterval:function(e,t,i,n,s){let r,o=e;i=R(i,I(e));let l=e/i;for(!t&&(t=s?[1,1.2,1.5,2,2.5,3,4,5,6,8,10]:[1,2,2.5,5,10],!1===n&&(1===i?t=t.filter(function(e){return e%1==0}):i<=.1&&(t=[1/i]))),r=0;r<t.length&&(o=t[r],(!s||!(o*i>=e))&&(s||!(l<=(t[r]+(t[r+1]||t[r]))/2)));r++);return D(o*i,-Math.round(Math.log(.001)/Math.LN10))},objectEach:N,offset:function(e){let t=g.documentElement,i=e.parentElement||e.parentNode?e.getBoundingClientRect():{top:0,left:0,width:0,height:0};return{top:i.top+(f.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(f.pageXOffset||t.scrollLeft)-(t.clientLeft||0),width:i.width,height:i.height}},pad:function(e,t,i){return Array((t||2)+1-String(e).replace("-","").length).join(i||"0")+e},pick:R,pInt:b,pushUnique:function(e,t){return 0>e.indexOf(t)&&!!e.push(t)},relativeLength:function(e,t,i){return/%$/.test(e)?t*parseFloat(e)/100+(i||0):parseFloat(e)},removeEvent:P,replaceNested:function(e,...t){let i,n;do for(n of(i=e,t))e=e.replace(n[0],n[1]);while(e!==i);return e},splat:O,stableSort:function(e,t){let i,n,s=e.length;for(n=0;n<s;n++)e[n].safeI=n;for(e.sort(function(e,n){return 0===(i=t(e,n))?e.safeI-n.safeI:i}),n=0;n<s;n++)delete e[n].safeI},syncTimeout:function(e,t,i){return t>0?setTimeout(e,t,i):(e.call(0,i),-1)},timeUnits:{millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:314496e5},ucfirst:function(e){return w(e)?e.substring(0,1).toUpperCase()+e.substring(1):String(e)},uniqueKey:F,useSerialIds:function(t){return e=R(t,e)},wrap:function(e,t,i){let n=e[t];e[t]=function(){let e=arguments,t=this;return i.apply(this,[function(){return n.apply(t,arguments.length?arguments:e)}].concat([].slice.call(arguments)))}}},{SVG_NS:z,win:j}=p,{attr:W,createElement:U,css:V,error:q,isFunction:K,isString:Y,objectEach:$,splat:G}=B,{trustedTypes:_}=j,Z=_&&K(_.createPolicy)&&_.createPolicy("highcharts",{createHTML:e=>e}),X=Z?Z.createHTML(""):"";class J{static filterUserAttributes(e){return $(e,(t,i)=>{let n=!0;-1===J.allowedAttributes.indexOf(i)&&(n=!1),-1!==["background","dynsrc","href","lowsrc","src"].indexOf(i)&&(n=Y(t)&&J.allowedReferences.some(e=>0===t.indexOf(e))),n||(q(33,!1,void 0,{"Invalid attribute in config":`${i}`}),delete e[i]),Y(t)&&e[i]&&(e[i]=t.replace(/</g,"&lt;"))}),e}static parseStyle(e){return e.split(";").reduce((e,t)=>{let i=t.split(":").map(e=>e.trim()),n=i.shift();return n&&i.length&&(e[n.replace(/-([a-z])/g,e=>e[1].toUpperCase())]=i.join(":")),e},{})}static setElementHTML(e,t){e.innerHTML=J.emptyHTML,t&&new J(t).addToDOM(e)}constructor(e){this.nodes="string"==typeof e?this.parseMarkup(e):e}addToDOM(e){return function e(t,i){let n;return G(t).forEach(function(t){let s,r=t.tagName,o=t.textContent?p.doc.createTextNode(t.textContent):void 0,l=J.bypassHTMLFiltering;if(r)if("#text"===r)s=o;else if(-1!==J.allowedTags.indexOf(r)||l){let n="svg"===r?z:i.namespaceURI||z,a=p.doc.createElementNS(n,r),d=t.attributes||{};$(t,function(e,t){"tagName"!==t&&"attributes"!==t&&"children"!==t&&"style"!==t&&"textContent"!==t&&(d[t]=e)}),W(a,l?d:J.filterUserAttributes(d)),t.style&&V(a,t.style),o&&a.appendChild(o),e(t.children||[],a),s=a}else q(33,!1,void 0,{"Invalid tagName in config":r});s&&i.appendChild(s),n=s}),n}(this.nodes,e)}parseMarkup(e){let t,i=[];e=e.trim().replace(/ style=(["'])/g," data-style=$1");try{t=new DOMParser().parseFromString(Z?Z.createHTML(e):e,"text/html")}catch{}if(!t){let i=U("div");i.innerHTML=e,t={body:i}}let n=(e,t)=>{let i=e.nodeName.toLowerCase(),s={tagName:i};"#text"===i&&(s.textContent=e.textContent||"");let r=e.attributes;if(r){let e={};[].forEach.call(r,t=>{"data-style"===t.name?s.style=J.parseStyle(t.value):e[t.name]=t.value}),s.attributes=e}if(e.childNodes.length){let t=[];[].forEach.call(e.childNodes,e=>{n(e,t)}),t.length&&(s.children=t)}t.push(s)};return[].forEach.call(t.body.childNodes,e=>n(e,i)),i}}J.allowedAttributes=["alt","aria-controls","aria-describedby","aria-expanded","aria-haspopup","aria-hidden","aria-label","aria-labelledby","aria-live","aria-pressed","aria-readonly","aria-roledescription","aria-selected","class","clip-path","color","colspan","cx","cy","d","disabled","dx","dy","fill","filterUnits","flood-color","flood-opacity","height","href","id","in","in2","markerHeight","markerWidth","offset","opacity","operator","orient","padding","paddingLeft","paddingRight","patternUnits","r","radius","refX","refY","result","role","rowspan","scope","slope","src","startOffset","stdDeviation","stroke-linecap","stroke-width","stroke","style","summary","tabindex","tableValues","target","text-align","text-anchor","textAnchor","textLength","title","type","valign","width","x","x1","x2","xlink:href","y","y1","y2","zIndex"],J.allowedReferences=["https://","http://","mailto:","/","../","./","#"],J.allowedTags=["#text","a","abbr","b","br","button","caption","circle","clipPath","code","dd","defs","div","dl","dt","em","feComponentTransfer","feComposite","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","filter","h1","h2","h3","h4","h5","h6","hr","i","img","li","linearGradient","marker","ol","p","path","pattern","pre","rect","small","span","stop","strong","style","sub","sup","svg","table","tbody","td","text","textPath","th","thead","title","tr","tspan","u","ul"],J.emptyHTML=X,J.bypassHTMLFiltering=!1;let{pageLang:Q,win:ee}=p,{defined:et,error:ei,extend:en,isNumber:es,isObject:er,isString:eo,merge:el,objectEach:ea,pad:ed,splat:eh,timeUnits:eu,ucfirst:ec}=B,ep=p.isSafari&&ee.Intl&&!ee.Intl.DateTimeFormat.prototype.formatRange,em=class{constructor(e,t){this.options={timezone:"UTC"},this.variableTimezone=!1,this.Date=ee.Date,this.update(e),this.lang=t}update(e={}){this.dTLCache={},this.options=e=el(!0,this.options,e);let{timezoneOffset:t,useUTC:i,locale:n}=e;this.Date=e.Date||ee.Date||Date;let s=e.timezone;et(i)&&(s=i?"UTC":void 0),t&&t%60==0&&(s="Etc/GMT"+(t>0?"+":"")+t/60),this.variableTimezone="UTC"!==s&&s?.indexOf("Etc/GMT")!==0,this.timezone=s,this.lang&&n&&(this.lang.locale=n),["months","shortMonths","weekdays","shortWeekdays"].forEach(e=>{let t=/months/i.test(e),i=/short/.test(e),n={timeZone:"UTC"};n[t?"month":"weekday"]=i?"short":"long",this[e]=(t?[0,1,2,3,4,5,6,7,8,9,10,11]:[3,4,5,6,7,8,9]).map(e=>this.dateFormat(n,(t?31:1)*24*36e5*e))})}toParts(e){let[t,i,n,s,r,o,l]=this.dateTimeFormat({weekday:"narrow",day:"numeric",month:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric"},e,"es").split(/(?:, | |\/|:)/g);return[s,n-1,i,r,o,l,Math.floor(Number(e)||0)%1e3,"DLMXJVS".indexOf(t)].map(Number)}dateTimeFormat(e,t,i=this.options.locale||Q){let n=JSON.stringify(e)+i;eo(e)&&(e=this.str2dtf(e));let s=this.dTLCache[n];if(!s){e.timeZone??(e.timeZone=this.timezone);try{s=new Intl.DateTimeFormat(i,e)}catch(t){/Invalid time zone/i.test(t.message)?(ei(34),e.timeZone="UTC",s=new Intl.DateTimeFormat(i,e)):ei(t.message,!1)}}return this.dTLCache[n]=s,s?.format(t)||""}str2dtf(e,t={}){let i={L:{fractionalSecondDigits:3},S:{second:"2-digit"},M:{minute:"numeric"},H:{hour:"2-digit"},k:{hour:"numeric"},E:{weekday:"narrow"},a:{weekday:"short"},A:{weekday:"long"},d:{day:"2-digit"},e:{day:"numeric"},b:{month:"short"},B:{month:"long"},m:{month:"2-digit"},o:{month:"numeric"},y:{year:"2-digit"},Y:{year:"numeric"}};return Object.keys(i).forEach(n=>{-1!==e.indexOf(n)&&en(t,i[n])}),t}makeTime(e,t,i=1,n=0,s,r,o){let l=this.Date.UTC(e,t,i,n,s||0,r||0,o||0);if("UTC"!==this.timezone){let e=this.getTimezoneOffset(l);if(l+=e,-1!==[2,3,8,9,10,11].indexOf(t)&&(n<5||n>20)){let t=this.getTimezoneOffset(l);e!==t?l+=t-e:e-36e5!==this.getTimezoneOffset(l-36e5)||ep||(l-=36e5)}}return l}parse(e){if(!eo(e))return e??void 0;let t=(e=e.replace(/\//g,"-").replace(/(GMT|UTC)/,"")).indexOf("Z")>-1||/([+-][0-9]{2}):?[0-9]{2}$/.test(e),i=/^[0-9]{4}-[0-9]{2}(-[0-9]{2}|)$/.test(e);t||i||(e+="Z");let n=Date.parse(e);if(es(n))return n+(!t||i?this.getTimezoneOffset(n):0)}getTimezoneOffset(e){if("UTC"!==this.timezone){let[t,i,n,s,r=0]=this.dateTimeFormat({timeZoneName:"shortOffset"},e,"en").split(/(GMT|:)/).map(Number),o=-(60*(n+r/60)*6e4);if(es(o))return o}return 0}dateFormat(e,t,i){let n=this.lang;if(!et(t)||isNaN(t))return n?.invalidDate||"";if(eo(e=e??"%Y-%m-%d %H:%M:%S")){let i,s=/%\[([a-zA-Z]+)\]/g;for(;i=s.exec(e);)e=e.replace(i[0],this.dateTimeFormat(i[1],t,n?.locale))}if(eo(e)&&-1!==e.indexOf("%")){let i=this,[s,r,o,l,a,d,h,u]=this.toParts(t),c=n?.weekdays||this.weekdays,m=n?.shortWeekdays||this.shortWeekdays,g=n?.months||this.months,f=n?.shortMonths||this.shortMonths;ea(en({a:m?m[u]:c[u].substr(0,3),A:c[u],d:ed(o),e:ed(o,2," "),w:u,v:n?.weekFrom??"",b:f[r],B:g[r],m:ed(r+1),o:r+1,y:s.toString().substr(2,2),Y:s,H:ed(l),k:l,I:ed(l%12||12),l:l%12||12,M:ed(a),p:l<12?"AM":"PM",P:l<12?"am":"pm",S:ed(d),L:ed(h,3)},p.dateFormats),function(n,s){if(eo(e))for(;-1!==e.indexOf("%"+s);)e=e.replace("%"+s,"function"==typeof n?n.call(i,t):n)})}else if(er(e)){let i=(this.getTimezoneOffset(t)||0)/36e5,n=this.timezone||"Etc/GMT"+(i>=0?"+":"")+i,{prefix:s="",suffix:r=""}=e;e=s+this.dateTimeFormat(en({timeZone:n},e),t)+r}return i?ec(e):e}resolveDTLFormat(e){return er(e,!0)?er(e,!0)&&void 0===e.main?{main:e}:e:{main:(e=eh(e))[0],from:e[1],to:e[2]}}getDateFormat(e,t,i,n){let s=this.dateFormat("%m-%d %H:%M:%S.%L",t),r="01-01 00:00:00.000",o={millisecond:15,second:12,minute:9,hour:6,day:3},l="millisecond",a=l;for(l in eu){if(e&&e===eu.week&&+this.dateFormat("%w",t)===i&&s.substr(6)===r.substr(6)){l="week";break}if(e&&eu[l]>e){l=a;break}if(o[l]&&s.substr(o[l])!==r.substr(o[l]))break;"week"!==l&&(a=l)}return this.resolveDTLFormat(n[l]).main}},{defined:eg,extend:ef,timeUnits:ey}=B,eb=class extends em{getTimeTicks(e,t,i,n){let s=this,r=[],o={},{count:l=1,unitRange:a}=e,[d,h,u,c,p,m]=s.toParts(t),g=(t||0)%1e3,f;if(n??(n=1),eg(t)){if(g=a>=ey.second?0:l*Math.floor(g/l),a>=ey.second&&(m=a>=ey.minute?0:l*Math.floor(m/l)),a>=ey.minute&&(p=a>=ey.hour?0:l*Math.floor(p/l)),a>=ey.hour&&(c=a>=ey.day?0:l*Math.floor(c/l)),a>=ey.day&&(u=a>=ey.month?1:Math.max(1,l*Math.floor(u/l))),a>=ey.month&&(h=a>=ey.year?0:l*Math.floor(h/l)),a>=ey.year&&(d-=d%l),a===ey.week){l&&(t=s.makeTime(d,h,u,c,p,m,g));let e=this.dateTimeFormat({timeZone:this.timezone,weekday:"narrow"},t,"es"),i="DLMXJVS".indexOf(e);u+=-i+n+(i<n?-7:0)}t=s.makeTime(d,h,u,c,p,m,g),s.variableTimezone&&eg(i)&&(f=i-t>4*ey.month||s.getTimezoneOffset(t)!==s.getTimezoneOffset(i));let e=t,y=1;for(;e<i;)r.push(e),a===ey.year?e=s.makeTime(d+y*l,0):a===ey.month?e=s.makeTime(d,h+y*l):f&&(a===ey.day||a===ey.week)?e=s.makeTime(d,h,u+y*l*(a===ey.day?1:7)):f&&a===ey.hour&&l>1?e=s.makeTime(d,h,u,c+y*l):e+=a*l,y++;r.push(e),a<=ey.hour&&r.length<1e4&&r.forEach(e=>{e%18e5==0&&"000000000"===s.dateFormat("%H%M%S%L",e)&&(o[e]="day")})}return r.info=ef(e,{higherRanks:o,totalRange:a*l}),r}},{isTouchDevice:ew}=p,{fireEvent:ev,merge:eC}=B,eE={colors:["#2caffe","#544fc5","#00e272","#fe6a35","#6b8abc","#d568fb","#2ee0ca","#fa4b42","#feb56a","#91e8e1"],symbols:["circle","diamond","square","triangle","triangle-down"],lang:{weekFrom:"week from",chartTitle:"Chart title",locale:void 0,loading:"Loading...",months:void 0,seriesName:"Series {add index 1}",shortMonths:void 0,weekdays:void 0,numericSymbols:["k","M","G","T","P","E"],pieSliceName:"Slice",resetZoom:"Reset zoom",yAxisTitle:"Values",resetZoomTitle:"Reset zoom level 1:1"},global:{buttonTheme:{fill:"#f7f7f7",padding:8,r:2,stroke:"#cccccc","stroke-width":1,style:{color:"#333333",cursor:"pointer",fontSize:"0.8em",fontWeight:"normal"},states:{hover:{fill:"#e6e6e6"},select:{fill:"#e6e9ff",style:{color:"#000000",fontWeight:"bold"}},disabled:{style:{color:"#cccccc"}}}}},time:{Date:void 0,timezone:"UTC",timezoneOffset:0,useUTC:void 0},chart:{alignThresholds:!1,panning:{enabled:!1,type:"x"},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{},position:{}},reflow:!0,type:"line",zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:"right",x:-10,y:10}}},width:null,height:null,borderColor:"#334eff",backgroundColor:"#ffffff",plotBorderColor:"#cccccc"},title:{style:{color:"#333333",fontWeight:"bold"},text:"Chart title",margin:15,minScale:.67},subtitle:{style:{color:"#666666",fontSize:"0.8em"},text:""},caption:{margin:15,style:{color:"#666666",fontSize:"0.8em"},text:"",align:"left",verticalAlign:"bottom"},plotOptions:{},legend:{enabled:!0,align:"center",alignColumns:!0,className:"highcharts-no-tooltip",events:{},layout:"horizontal",itemMarginBottom:2,itemMarginTop:2,labelFormatter:function(){return this.name},borderColor:"#999999",borderRadius:0,navigation:{style:{fontSize:"0.8em"},activeColor:"#0022ff",inactiveColor:"#cccccc"},itemStyle:{color:"#333333",cursor:"pointer",fontSize:"0.8em",textDecoration:"none",textOverflow:"ellipsis"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#666666",textDecoration:"line-through"},shadow:!1,itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},squareSymbol:!0,symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{color:"#333333",fontSize:"0.8em",fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:{duration:300,easing:e=>Math.sqrt(1-Math.pow(e-1,2))},borderRadius:3,dateTimeLabelFormats:{millisecond:"%[AebHMSL]",second:"%[AebHMS]",minute:"%[AebHM]",hour:"%[AebHM]",day:"%[AebY]",week:"%v %[AebY]",month:"%[BY]",year:"%Y"},footerFormat:"",headerShape:"callout",hideDelay:500,padding:8,position:{x:0,y:3},shared:!1,snap:ew?25:10,headerFormat:'<span style="font-size: 0.8em">{ucfirst point.key}</span><br/>',pointFormat:'<span style="color:{point.color}">●</span> {series.name}: <b>{point.y}</b><br/>',backgroundColor:"#ffffff",borderWidth:void 0,stickOnContact:!1,style:{color:"#333333",cursor:"default",fontSize:"0.8em"},useHTML:!1},credits:{enabled:!0,href:"https://www.highcharts.com?credits",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#999999",fontSize:"0.6em"},text:"Highcharts.com"}},eT=new eb(eE.time,eE.lang),{defaultOptions:ex,defaultTime:eS}={defaultOptions:eE,defaultTime:eT,getOptions:function(){return eE},setOptions:function(e){return ev(p,"setOptions",{options:e}),eC(!0,eE,e),e.time&&eT.update(eE.time),e.lang&&"locale"in e.lang&&eT.update({locale:e.lang.locale}),e.lang?.chartTitle&&(eE.title={...eE.title,text:e.lang.chartTitle}),eE}},{pageLang:eL}=p,{extend:eO,getNestedProperty:eM,isArray:eR,isNumber:eA,isObject:eI,isString:eD,pick:ek,ucfirst:eN}=B,eP={add:(e,t)=>e+t,divide:(e,t)=>0!==t?e/t:"",eq:(e,t)=>e==t,each:function(e){let t=arguments[arguments.length-1];return!!eR(e)&&e.map((i,n)=>eF(t.body,eO(eI(i)?i:{"@this":i},{"@index":n,"@first":0===n,"@last":n===e.length-1}))).join("")},ge:(e,t)=>e>=t,gt:(e,t)=>e>t,if:e=>!!e,le:(e,t)=>e<=t,lt:(e,t)=>e<t,multiply:(e,t)=>e*t,ne:(e,t)=>e!=t,subtract:(e,t)=>e-t,ucfirst:eN,unless:e=>!e},eH={};function eF(e="",t,i){let n=RegExp("\\{([\\p{L}\\d:\\.,;\\-\\/<>\\[\\]%_@+\"'’= #\\(\\)]+)\\}","gu"),s=RegExp("\\(([\\p{L}\\d:\\.,;\\-\\/<>\\[\\]%_@+\"'= ]+)\\)","gu"),r=[],o=/f$/,l=/\.(\d)/,a=i?.options?.lang||ex.lang,d=i?.time||eS,h=i?.numberFormatter||eB.bind(i),u=(e="")=>{let i;return"true"===e||"false"!==e&&((i=Number(e)).toString()===e?i:/^["'].+["']$/.test(e)?e.slice(1,-1):eM(e,t))},c,p,m=0,g;for(;null!==(c=n.exec(e));){let i=c,n=s.exec(c[1]);n&&(c=n,g=!0),p?.isBlock||(p={ctx:t,expression:c[1],find:c[0],isBlock:"#"===c[1].charAt(0),start:c.index,startInner:c.index+c[0].length,length:c[0].length});let o=(p.isBlock?i:c)[1].split(" ")[0].replace("#","");eP[o]&&(p.isBlock&&o===p.fn&&m++,p.fn||(p.fn=o));let l="else"===c[1];if(p.isBlock&&p.fn&&(c[1]===`/${p.fn}`||l))if(m)!l&&m--;else{let t=p.startInner,i=e.substr(t,c.index-t);void 0===p.body?(p.body=i,p.startInner=c.index+c[0].length):p.elseBody=i,p.find+=i+c[0],l||(r.push(p),p=void 0)}else p.isBlock||r.push(p);if(n&&!p?.isBlock)break}return r.forEach(n=>{let r,c,{body:p,elseBody:m,expression:g,fn:f}=n;if(f){let e=[n],s=[],o=g.length,l=0,a;for(c=0;c<=o;c++){let e=g.charAt(c);a||'"'!==e&&"'"!==e?a===e&&(a=""):a=e,a||" "!==e&&c!==o||(s.push(g.substr(l,c-l)),l=c+1)}for(c=eP[f].length;c--;)e.unshift(u(s[c+1]));r=eP[f].apply(t,e),n.isBlock&&"boolean"==typeof r&&(r=eF(r?p:m,t,i))}else{let e=/^["'].+["']$/.test(g)?[g]:g.split(":");if(r=u(e.shift()||""),e.length&&"number"==typeof r){let t=e.join(":");if(o.test(t)){let e=parseInt((t.match(l)||["","-1"])[1],10);null!==r&&(r=h(r,e,a.decimalPoint,t.indexOf(",")>-1?a.thousandsSep:""))}else r=d.dateFormat(t,r)}s.lastIndex=0,s.test(n.find)&&eD(r)&&(r=`"${r}"`)}e=e.replace(n.find,ek(r,""))}),g?eF(e,t,i):e}function eB(e,t,i,n){t*=1;let s,r,[o,l]=(e=+e||0).toString().split("e").map(Number),a=this?.options?.lang||ex.lang,d=(e.toString().split(".")[1]||"").split("e")[0].length,h=t,u={};i??(i=a.decimalPoint),n??(n=a.thousandsSep),-1===t?t=Math.min(d,20):eA(t)?t&&l<0&&((r=t+l)>=0?(o=+o.toExponential(r).split("e")[0],t=r):(o=Math.floor(o),e=t<20?+(o*Math.pow(10,l)).toFixed(t):0,l=0)):t=2,l&&(t??(t=2),e=o),eA(t)&&t>=0&&(u.minimumFractionDigits=t,u.maximumFractionDigits=t),""===n&&(u.useGrouping=!1);let c=n||i,p=c?"en":this?.locale||a.locale||eL,m=JSON.stringify(u)+p;return s=(eH[m]??(eH[m]=new Intl.NumberFormat(p,u))).format(e),c&&(s=s.replace(/([,\.])/g,"_$1").replace(/_\,/g,n??",").replace("_.",i??".")),(t||0!=+s)&&(!(l<0)||h)||(s="0"),l&&0!=+s&&(s+="e"+(l<0?"":"+")+l),s}let ez={dateFormat:function(e,t,i){return eS.dateFormat(e,t,i)},format:eF,helpers:eP,numberFormat:eB},{getStyle:ej,defined:eW}=B;class eU{constructor(e){this.columnWidths={},this.columnWidthUnits={},this.viewport=e}getColumnWidth(e){let t=this.viewport,i=this.columnWidths[e.id],n=eU.getMinWidth(e);if(!eW(i)){let e=t.tbodyElement;return Math.max((e.getBoundingClientRect().width-this.calculateOccupiedWidth()-e.offsetWidth+e.clientWidth)/((t.grid.enabledColumns?.length||0)-Object.keys(this.columnWidths).length),n)}return 0===this.columnWidthUnits[e.id]?i:Math.max(t.getWidthFromRatio(i/100),n)}loadColumn(e){let t,i=e.options.width;if(!i)return;let n=0;"number"==typeof i?(t=i,n=0):(t=parseFloat(i),n=+("%"===i.charAt(i.length-1))),this.columnWidthUnits[e.id]=n,this.columnWidths[e.id]=t}loadColumns(){let{columns:e}=this.viewport;for(let t=0,i=e.length;t<i;++t)this.loadColumn(e[t])}reflow(){let e=this.viewport,t=0;for(let i=0,n=e.columns.length;i<n;++i)t+=this.getColumnWidth(e.columns[i]);e.rowsWidth=t}static getMinWidth(e){let t=e.cells[0]?.htmlElement,i=e.header?.htmlElement,n=e=>(ej(e,"padding-left",!0)||0)+(ej(e,"padding-right",!0)||0)+(ej(e,"border-left",!0)||0)+(ej(e,"border-right",!0)||0),s=eU.MIN_COLUMN_WIDTH;return t&&(s=Math.max(s,n(t))),i&&(s=Math.max(s,n(i))),s}calculateOccupiedWidth(){let e,t,i=this.viewport,n=0,s=Object.keys(this.columnWidths);for(let r=0,o=s.length;r<o;++r){if(t=s[r],0===this.columnWidthUnits[t]){n+=this.columnWidths[t];continue}e=this.columnWidths[t],n+=i.getWidthFromRatio(e/100)}return n}}eU.MIN_COLUMN_WIDTH=20;let eV=eU,eq=class extends eV{constructor(){super(...arguments),this.type="adjacent"}resize(e,t){let i=this.viewport,n=e.draggedColumn;if(!n)return;let s=e.columnStartWidth??0,r=eV.getMinWidth(n),o=i.columns[n.index+1],l=Math.round(10*Math.max(s+t,r))/10;if(this.columnWidths[n.id]=l,this.columnWidthUnits[n.id]=0,n.setOptions({width:l}),o){let t=this.columnWidths[o.id]=Math.round(10*Math.max((e.nextColumnStartWidth??0)+s-l,r))/10;this.columnWidthUnits[o.id]=0,o.setOptions({width:t})}}},eK=class extends eV{constructor(){super(...arguments),this.type="independent"}resize(e,t){let i=e.draggedColumn;if(!i)return;let n=this.columnWidths[i.id]=Math.round(10*Math.max((e.columnStartWidth||0)+t,eV.getMinWidth(i)))/10;this.columnWidthUnits[i.id]=0;let s=this.viewport,r=i.index;for(let e=r;e<s.columns.length;++e){let t=s.columns[e],i=this.columnWidths[t.id]=t.getWidth();this.columnWidthUnits[t.id]=0,t.setOptions({width:i})}i.setOptions({width:n})}},eY={adjacent:eq,distributed:class extends eV{constructor(){super(...arguments),this.type="distributed"}resize(e,t){let i=e.draggedColumn;if(!i)return;let n=this.columnWidths[i.id]=Math.round(10*Math.max((e.columnStartWidth||0)+t,eV.getMinWidth(i)))/10;this.columnWidthUnits[i.id]=0,i.setOptions({width:n})}},independent:eK},e$={initMode:function(e){let t=e.grid.options?.rendering?.columns?.resizing?.mode||"adjacent",i=eY[t];return i||(console.warn(`Unknown column resizing mode: '${t}'. Applied default 'adjacent' mode.`),i=eY.adjacent),new i(e)},types:eY,AbstractStrategy:eV},{addEvent:eG,fireEvent:e_,merge:eZ}=B;class eX{benchmark(e,t){let i=[],n=this,s=()=>{n.modifyTable(e),n.emit({type:"afterBenchmarkIteration"})},{iterations:r}=eZ({iterations:1},t);n.on("afterBenchmarkIteration",()=>{i.length===r?n.emit({type:"afterBenchmark",results:i}):s()});let o={startTime:0,endTime:0};return n.on("modify",()=>{o.startTime=window.performance.now()}),n.on("afterModify",()=>{o.endTime=window.performance.now(),i.push(o.endTime-o.startTime)}),s(),i}emit(e){e_(this,e.type,e)}modify(e,t){let i=this;return new Promise((n,s)=>{e.modified||(e.modified=e.clone(!1,t));try{n(i.modifyTable(e,t))}catch(n){i.emit({type:"error",detail:t,table:e}),s(n instanceof Error?n:Error(""+n))}})}on(e,t){return eG(this,e,t)}}(s=eX||(eX={})).types={},s.registerType=function(e,t){return!!e&&!s.types[e]&&!!(s.types[e]=t)};let eJ=eX;(r=d||(d={})).setLength=function(e,t,i){return Array.isArray(e)?(e.length=t,e):e[i?"subarray":"slice"](0,t)},r.splice=function(e,t,i,n,s=[]){if(Array.isArray(e))return Array.isArray(s)||(s=Array.from(s)),{removed:e.splice(t,i,...s),array:e};let r=Object.getPrototypeOf(e).constructor,o=e[n?"subarray":"slice"](t,t+i),l=new r(e.length-i+s.length);return l.set(e.subarray(0,t),0),l.set(s,t),l.set(e.subarray(t+i),t+s.length),{removed:o,array:l}},r.convertToNumber=function(e,t){switch(typeof e){case"boolean":return+!!e;case"number":return isNaN(e)&&!t?null:e;default:return isNaN(e=parseFloat(`${e??""}`))&&!t?null:e}};let eQ=d,{setLength:e0,splice:e1}=eQ,{fireEvent:e3,objectEach:e6,uniqueKey:e2}=B,e5=class{constructor(e={}){this.autoId=!e.id,this.columns={},this.id=e.id||e2(),this.rowCount=0,this.versionTag=e2();let t=0;e6(e.columns||{},(e,i)=>{this.columns[i]=e.slice(),t=Math.max(t,e.length)}),this.applyRowCount(t)}applyRowCount(e){this.rowCount=e,e6(this.columns,(t,i)=>{t.length!==e&&(this.columns[i]=e0(t,e))})}deleteRows(e,t=1){if(t>0&&e<this.rowCount){let i=0;e6(this.columns,(n,s)=>{this.columns[s]=e1(n,e,t).array,i=n.length}),this.rowCount=i}e3(this,"afterDeleteRows",{rowIndex:e,rowCount:t}),this.versionTag=e2()}getColumn(e,t){return this.columns[e]}getColumns(e,t){return(e||Object.keys(this.columns)).reduce((e,t)=>(e[t]=this.columns[t],e),{})}getRow(e,t){return(t||Object.keys(this.columns)).map(t=>this.columns[t]?.[e])}setColumn(e,t=[],i=0,n){this.setColumns({[e]:t},i,n)}setColumns(e,t,i){let n=this.rowCount;e6(e,(e,t)=>{this.columns[t]=e.slice(),n=e.length}),this.applyRowCount(n),i?.silent||(e3(this,"afterSetColumns"),this.versionTag=e2())}setRow(e,t=this.rowCount,i,n){let{columns:s}=this,r=i?this.rowCount+1:t+1,o=Object.keys(e);if(n?.addColumns!==!1)for(let e=0,t=o.length;e<t;e++){let t=o[e];s[t]||(s[t]=[])}e6(s,(o,l)=>{o||n?.addColumns===!1||(o=Array(r)),o&&(i?o=e1(o,t,0,!0,[e[l]??null]).array:o[t]=e[l]??null,s[l]=o)}),r>this.rowCount&&this.applyRowCount(r),n?.silent||(e3(this,"afterSetRows"),this.versionTag=e2())}getModified(){return this.modified||this}},{splice:e7,setLength:e4}=eQ,{addEvent:e9,defined:e8,extend:te,fireEvent:tt,isNumber:ti,uniqueKey:tn}=B;class ts extends e5{constructor(e={}){super(e),this.metadata=e.metadata}clone(e,t){let i={};this.emit({type:"cloneTable",detail:t}),e||(i.columns=this.columns),this.autoId||(i.id=this.id);let n=new ts(i);return e||(n.versionTag=this.versionTag,n.originalRowIndexes=this.originalRowIndexes,n.localRowIndexes=this.localRowIndexes),n.metadata={...this.metadata},this.emit({type:"afterCloneTable",detail:t,tableClone:n}),n}deleteColumns(e,t){let i=this.columns,n={},s={},r=this.modifier,o=this.rowCount;if((e=e||Object.keys(i)).length){this.emit({type:"deleteColumns",columnIds:e,detail:t});for(let t=0,r=e.length,l,a;t<r;++t)(l=i[a=e[t]])&&(n[a]=l,s[a]=Array(o)),delete i[a];return Object.keys(i).length||(this.rowCount=0,this.deleteRowIndexReferences()),r&&r.modifyTable(this),this.emit({type:"afterDeleteColumns",columns:n,columnIds:e,detail:t}),n}}deleteRowIndexReferences(){delete this.originalRowIndexes,delete this.localRowIndexes}deleteRows(e,t=1,i){let n,s,{columns:r,modifier:o}=this,l=[];if(e8(e)?Array.isArray(e)?s=(n=e.filter((e,t,i)=>e>=0&&e<this.rowCount&&i.indexOf(e)===t).sort((e,t)=>t-e)).length:(n=[e],s=t):(n=[0],s=this.rowCount),this.emit({type:"deleteRows",detail:i,rowCount:s,rowIndex:e??0}),s>0){let e=Object.keys(r);for(let t=0;t<e.length;++t){let i,o=e[t],a=r[o];if(1===n.length&&s>1){let e=e7(a,n[0],s);i=e.removed,r[o]=e.array}else{for(let e of(i=[],n))i.push(a[e]),e7(a,e,1);i.reverse()}t||(this.rowCount=a.length);for(let e=0,n=i.length;e<n;++e)l[e]=l[e]||[],l[e][t]=i[e]}}return o&&o.modifyTable(this),this.emit({type:"afterDeleteRows",detail:i,rowCount:s,rowIndex:e??0,rows:l}),l}emit(e){["afterDeleteColumns","afterDeleteRows","afterSetCell","afterSetColumns","afterSetRows"].includes(e.type)&&(this.versionTag=tn()),tt(this,e.type,e)}getCell(e,t){let i=this.columns[e];if(i)return i[t]}getColumn(e,t){return this.getColumns([e],t)[e]}getColumnIds(){return Object.keys(this.columns)}getColumns(e,t,i){let n=this.columns,s={};e=e||Object.keys(n);for(let r=0,o=e.length,l,a;r<o;++r)(l=n[a=e[r]])&&(t?s[a]=l:i&&!Array.isArray(l)?s[a]=Array.from(l):s[a]=l.slice());return s}getLocalRowIndex(e){let{localRowIndexes:t}=this;return t?t[e]:e}getModifier(){return this.modifier}getOriginalRowIndex(e){let{originalRowIndexes:t}=this;return t?t[e]:e}getRow(e,t){return this.getRows(e,1,t)[0]}getRowCount(){return this.rowCount}getRowIndexBy(e,t,i){let n=this.columns[e];if(n){let e=-1;if(Array.isArray(n)?e=n.indexOf(t,i):ti(t)&&(e=n.indexOf(t,i)),-1!==e)return e}}getRowObject(e,t){return this.getRowObjects(e,1,t)[0]}getRowObjects(e=0,t=this.rowCount-e,i){let n=this.columns,s=Array(t);i=i||Object.keys(n);for(let r=e,o=0,l=Math.min(this.rowCount,e+t),a,d;r<l;++r,++o)for(let e of(d=s[o]={},i))a=n[e],d[e]=a?a[r]:void 0;return s}getRows(e=0,t=this.rowCount-e,i){let n=this.columns,s=Array(t);i=i||Object.keys(n);for(let r=e,o=0,l=Math.min(this.rowCount,e+t),a,d;r<l;++r,++o)for(let e of(d=s[o]=[],i))a=n[e],d.push(a?a[r]:void 0);return s}getVersionTag(){return this.versionTag}hasColumns(e){let t=this.columns;for(let i=0,n=e.length;i<n;++i)if(!t[e[i]])return!1;return!0}hasRowWith(e,t){let i=this.columns[e];return Array.isArray(i)?-1!==i.indexOf(t):!!(e8(t)&&Number.isFinite(t))&&-1!==i.indexOf(+t)}on(e,t){return e9(this,e,t)}changeColumnId(e,t){let i=this.columns;return!!i[e]&&(e!==t&&(i[t]=i[e],delete i[e]),!0)}setCell(e,t,i,n){let s=this.columns,r=this.modifier,o=s[e];o&&o[t]===i||(this.emit({type:"setCell",cellValue:i,columnId:e,detail:n,rowIndex:t}),o||(o=s[e]=Array(this.rowCount)),t>=this.rowCount&&(this.rowCount=t+1),o[t]=i,r&&r.modifyTable(this),this.emit({type:"afterSetCell",cellValue:i,columnId:e,detail:n,rowIndex:t}))}setColumns(e,t,i,n){let s=this.columns,r=this.modifier,o=Object.keys(e),l=this.rowCount;if(this.emit({type:"setColumns",columns:e,columnIds:o,detail:i,rowIndex:t}),e8(t)||n){for(let i=0,r=o.length,a,d,h,u;i<r;++i){a=e[h=o[i]],u=Object.getPrototypeOf((d=s[h])&&n?d:a).constructor,d?u===Array?Array.isArray(d)||(d=Array.from(d)):d.length<l&&(d=new u(l)).set(s[h]):d=new u(l),s[h]=d;for(let e=t||0,i=a.length;e<i;++e)d[e]=a[e];l=Math.max(l,a.length)}this.applyRowCount(l)}else super.setColumns(e,t,te(i,{silent:!0}));r&&r.modifyTable(this),this.emit({type:"afterSetColumns",columns:e,columnIds:o,detail:i,rowIndex:t})}setModifier(e,t){let i=this;return i.emit({type:"setModifier",detail:t,modifier:e,modified:i.getModified()}),i.modifier=e,(e?e.modify(i):Promise.resolve(i)).then(i=>(i.emit({type:"afterSetModifier",detail:t,modifier:e,modified:i.getModified()}),i)).catch(t=>{throw i.emit({type:"setModifierError",error:t,modifier:e,modified:i.getModified()}),t})}setOriginalRowIndexes(e,t=!1){if(this.originalRowIndexes=e,t)return;let i=this.localRowIndexes=[];for(let t=0,n=e.length,s;t<n;++t)e8(s=e[t])&&(i[s]=t)}setRow(e,t,i,n){this.setRows([e],t,i,n)}setRows(e,t=this.rowCount,i,n){let s=this.columns,r=Object.keys(s),o=this.modifier,l=e.length;this.emit({type:"setRows",detail:n,rowCount:l,rowIndex:t,rows:e});for(let n=0,o=t,a;n<l;++n,++o)if(0===Object.keys(a=e[n]).length)for(let e=0,t=r.length;e<t;++e){let t=s[r[e]];i?s[r[e]]=e7(t,o,0,!0,[null]).array:t[o]=null}else if(Array.isArray(a))for(let e=0,t=r.length;e<t;++e)s[r[e]][o]=a[e];else super.setRow(a,o,i,{silent:!0});let a=i?l+e.length:t+l;if(a>this.rowCount){this.rowCount=a;for(let e=0,t=r.length;e<t;++e){let t=r[e];s[t]=e4(s[t],a)}}o&&o.modifyTable(this),this.emit({type:"afterSetRows",detail:n,rowCount:l,rowIndex:t,rows:e})}}let{addEvent:tr,fireEvent:to,merge:tl,pick:ta}=B;class td{get polling(){return!!this._polling}constructor(e){this.dataTables={},this.loaded=!1,this.metadata=e.metadata||{columns:{}},this.options=e;const t=e?.dataTables;let i=0;if(e.options&&console.error("The `DataConnectorOptions.options` property was removed in Dashboards v4.0.0. Check how to upgrade your connector to use the new options structure here: https://api.highcharts.com/dashboards/#interfaces/Data_DataTableOptions.DataTableOptions"),t&&t?.length>0)for(let e=0,n=t.length;e<n;++e){const n=t[e],s=n?.key;this.dataTables[s??i]=new ts(n),!s&&i++}else this.dataTables[0]=new ts({id:e.id})}getTable(e){return e?this.dataTables[e]:Object.values(this.dataTables)[0]}describeColumn(e,t){let i=this.metadata.columns;i[e]=tl(i[e]||{},t)}describeColumns(e){let t,i=Object.keys(e);for(;"string"==typeof(t=i.pop());)this.describeColumn(t,e[t])}getColumnOrder(){let e=this.metadata.columns,t=Object.keys(e||{});if(t.length)return t.sort((t,i)=>ta(e[t].index,0)-ta(e[i].index,0))}getSortedColumns(){return this.getTable().getColumns(this.getColumnOrder())}setColumnOrder(e){for(let t=0,i=e.length;t<i;++t)this.describeColumn(e[t],{index:t})}async update(e,t=!0){this.emit({type:"beforeUpdate"}),tl(!0,this.options,e);let{options:i}=this;("enablePolling"in e||"dataRefreshRate"in e)&&("enablePolling"in i&&i.enablePolling?(this.stopPolling(),this.startPolling("dataRefreshRate"in i&&"number"==typeof i.dataRefreshRate?1e3*Math.max(i.dataRefreshRate,1):1e3)):this.stopPolling()),t&&await this.load(),this.emit({type:"afterUpdate"})}load(){return this.emit({type:"afterLoad"}),Promise.resolve(this)}async applyTableModifiers(){let e=this.options?.dataTables;for(let[t,i]of Object.entries(this.dataTables)){let n=e?.find(e=>e.key===t)?.dataModifier??this.options?.dataModifier,s=n&&eJ.types[n.type];await i.setModifier(s?new s(n):void 0)}return this}startPolling(e=1e3){let t=this;this.pollingController=new AbortController,window.clearTimeout(t._polling),t._polling=window.setTimeout(()=>t.load().catch(e=>t.emit({type:"loadError",error:e})).then(()=>{t._polling&&t.startPolling(e)}),e)}stopPolling(){this.polling&&(this?.pollingController?.abort(),window.clearTimeout(this._polling),delete this._polling)}emit(e){to(this,e.type,e)}on(e,t){return tr(this,e,t)}initConverters(e,t,i){let n=0;for(let[s,r]of Object.entries(this.dataTables)){let o=t(s),l=i(o,e);r.deleteColumns(),r.setColumns(l),0===n&&(this.converter=o),n++}}}(o=td||(td={})).types={},o.registerType=function(e,t){return!!e&&!o.types[e]&&!!(o.types[e]=t)};let th=td,{isNumber:tu}=B;var tc=h||(h={});function tp(e,t){if("number"==typeof e)return e;if("boolean"==typeof e)return+!!e;if("string"==typeof e){if(e.indexOf(" ")>-1&&(e=e.replace(/\s+/g,"")),t){if(!t.test(e))return NaN;e=e.replace(t,"$1.$2")}return parseFloat(e)}return e instanceof Date?e.getDate():e?e.getRowCount():NaN}tc.asDate=function(e,t){let i;if("string"==typeof e)i=t.parseDate(e);else if("number"==typeof e)i=e;else{if(e instanceof Date)return e;i=t.parseDate(""+e)}return new Date(i)},tc.asNumber=tp,tc.asString=function(e){return""+e},tc.asBoolean=function(e){return"boolean"==typeof e?e:"string"==typeof e?""!==e&&"0"!==e&&"false"!==e:!!tp(e)},tc.guessType=function(e,t){let i="string";if("string"==typeof e){let n=tc.trim(`${e}`),s=t.decimalRegExp,r=tc.trim(n,!0);s&&(r=s.test(r)?r.replace(s,"$1.$2"):"");let o=parseFloat(r);+r===o?e=o:i=tu(t.parseDate(e))?"Date":"string"}return"number"==typeof e&&(i=e>31536e6?"Date":"number"),i},tc.trim=function(e,t){return"string"==typeof e&&(e=e.replace(/^\s+|\s+$/g,""),t&&/^[\d\s]+$/.test(e)&&(e=e.replace(/\s/g,""))),e},tc.getColumnsCollection=function(e=[],t){let i={};for(let n=0,s=Math.max(t.length,e.length);n<s;++n)i[t[n]||`${n}`]=e[n]?e[n].slice():[];return i};let tm=h,{addEvent:tg,fireEvent:tf,merge:ty}=B;class tb{constructor(e){this.dateFormats={"YYYY/mm/dd":{regex:/^(\d{4})([\-\.\/])(\d{1,2})\2(\d{1,2})$/,parser:function(e){return e?Date.UTC(+e[1],e[3]-1,+e[4]):NaN}},"dd/mm/YYYY":{regex:/^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{4})$/,parser:function(e){return e?Date.UTC(+e[4],e[3]-1,+e[1]):NaN},alternative:"mm/dd/YYYY"},"mm/dd/YYYY":{regex:/^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{4})$/,parser:function(e){return e?Date.UTC(+e[4],e[1]-1,+e[3]):NaN}},"dd/mm/YY":{regex:/^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{2})$/,parser:function(e){let t=new Date;if(!e)return NaN;let i=+e[4];return i>t.getFullYear()-2e3?i+=1900:i+=2e3,Date.UTC(i,e[3]-1,+e[1])},alternative:"mm/dd/YY"},"mm/dd/YY":{regex:/^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{2})$/,parser:function(e){return e?Date.UTC(+e[4]+2e3,e[1]-1,+e[3]):NaN}}};const t=ty(tb.defaultOptions,e);let i=t.decimalPoint;("."===i||","===i)&&(i="."===i?"\\.":",",this.decimalRegExp=RegExp("^(-?[0-9]+)"+i+"([0-9]+)$")),this.options=t}convertByType(e){let t=this;return({number:e=>tm.asNumber(e,t.decimalRegExp),Date:e=>tm.asDate(e,t),string:tm.asString})[tm.guessType(e,t)].call(t,e)}deduceDateFormat(e,t,i){let n=[],s=[],r="YYYY/mm/dd",o,l=[],a=0,d=!1,h,u;for((!t||t>e.length)&&(t=e.length);a<t;a++)if(void 0!==e[a]&&e[a]&&e[a].length)for(u=0,o=e[a].trim().replace(/[\-\.\/]/g," ").split(" "),l=["","",""];u<o.length;u++)u<l.length&&(h=parseInt(o[u],10))&&(s[u]=!s[u]||s[u]<h?h:s[u],void 0!==n[u]?n[u]!==h&&(n[u]=!1):n[u]=h,h>31?h<100?l[u]="YY":l[u]="YYYY":h>12&&h<=31?(l[u]="dd",d=!0):l[u].length||(l[u]="mm"));if(d){for(u=0;u<n.length;u++)!1!==n[u]?s[u]>12&&"YY"!==l[u]&&"YYYY"!==l[u]&&(l[u]="YY"):s[u]>12&&"mm"===l[u]&&(l[u]="dd");3===l.length&&"dd"===l[1]&&"dd"===l[2]&&(l[2]="YY"),r=l.join("/")}return i&&(this.options.dateFormat=r),r}emit(e){tf(this,e.type,e)}on(e,t){return tg(this,e,t)}parseDate(e,t){let i=this.options,n=t||i.dateFormat,s=NaN,r,o=null;if(i.parseDate)s=i.parseDate(e);else{let t=this.dateFormats;if(n){let i=t[n];i||(i=t["YYYY/mm/dd"]),(o=e.match(i.regex))&&(s=i.parser(o))}else for(r in t){let i=t[r];if(o=e.match(i.regex)){n=r,s=i.parser(o);break}}if(!o){let t=Date.parse(e);!isNaN(t)&&(s=t-6e4*new Date(t).getTimezoneOffset(),e.includes("2001")||2001!==new Date(s).getFullYear()||(s=NaN))}}return s}}tb.defaultOptions={dateFormat:"",firstRowAsNames:!0},(l=tb||(tb={})).types={},l.registerType=function(e,t){return!!e&&!l.types[e]&&!!(l.types[e]=t)};let tw=tb;class tv{constructor(e={}){this.emittingRegister=[],this.listenerMap={},this.stateMap=e}addListener(e,t,i){let n=this.listenerMap[e]=this.listenerMap[e]||{};return(n[t]=n[t]||[]).push(i),this}buildEmittingTag(e){return("position"===e.cursor.type?[e.table.id,e.cursor.column,e.cursor.row,e.cursor.state,e.cursor.type]:[e.table.id,e.cursor.columns,e.cursor.firstRow,e.cursor.lastRow,e.cursor.state,e.cursor.type]).join("\0")}emitCursor(e,t,i,n){let s=e.id,r=t.state,o=this.listenerMap[s]&&this.listenerMap[s][r];if(o){let r=this.stateMap[s]=this.stateMap[s]??{},l=r[t.state]||[];n&&(l.length||(r[t.state]=l),-1===tv.getIndex(t,l)&&l.push(t));let a={cursor:t,cursors:l,table:e};i&&(a.event=i);let d=this.emittingRegister,h=this.buildEmittingTag(a);if(d.indexOf(h)>=0)return this;try{this.emittingRegister.push(h);for(let e=0,t=o.length;e<t;++e)o[e].call(this,a)}finally{let e=this.emittingRegister.indexOf(h);e>=0&&this.emittingRegister.splice(e,1)}}return this}remitCursor(e,t){let i=this.stateMap[e]&&this.stateMap[e][t.state];if(i){let e=tv.getIndex(t,i);e>=0&&i.splice(e,1)}return this}removeListener(e,t,i){let n=this.listenerMap[e]&&this.listenerMap[e][t];if(n){let e=n.indexOf(i);e>=0&&n.splice(e,1)}return this}}var tC=tv||(tv={});function tE(e,t){if("range"===e.type)return e;let i={type:"range",firstRow:e.row??(t&&t.firstRow)??0,lastRow:e.row??(t&&t.lastRow)??Number.MAX_VALUE,state:e.state};return void 0!==e.column&&(i.columns=[e.column]),i}tC.getIndex=function(e,t){if("position"===e.type){for(let i,n=0,s=t.length;n<s;++n)if("position"===(i=t[n]).type&&i.state===e.state&&i.column===e.column&&i.row===e.row)return n}else{let i=JSON.stringify(e.columns);for(let n,s=0,r=t.length;s<r;++s)if("range"===(n=t[s]).type&&n.state===e.state&&n.firstRow===e.firstRow&&n.lastRow===e.lastRow&&JSON.stringify(n.columns)===i)return s}return -1},tC.isEqual=function(e,t){return"position"===e.type&&"position"===t.type?e.column===t.column&&e.row===t.row&&e.state===t.state:"range"===e.type&&"range"===t.type&&e.firstRow===t.firstRow&&e.lastRow===t.lastRow&&JSON.stringify(e.columns)===JSON.stringify(t.columns)},tC.isInRange=function(e,t){"position"===t.type&&(t=tE(t)),"position"===e.type&&(e=tE(e,t));let i=e.columns,n=t.columns;return e.firstRow>=t.firstRow&&e.lastRow<=t.lastRow&&(!i||!n||i.every(e=>n.indexOf(e)>=0))},tC.toPositions=function(e){if("position"===e.type)return[e];let t=e.columns||[],i=[],n=e.state;for(let s=e.firstRow,r=e.lastRow;s<r;++s){if(!t.length){i.push({type:"position",row:s,state:n});continue}for(let e=0,r=t.length;e<r;++e)i.push({type:"position",column:t[e],row:s,state:n})}return i},tC.toRange=tE;let tT=tv,{doc:tx,isMS:tS,win:tL}=p,tO=function(){if(tS&&tL.getComputedStyle){let e=tx.createElement("div");e.style.backgroundImage="url(data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)",tx.body.appendChild(e);let t=(e.currentStyle||tL.getComputedStyle(e)).backgroundImage;return tx.body.removeChild(e),"none"===t}return tL.matchMedia&&tL.matchMedia("(forced-colors: active)").matches},tM="hcg-",tR={container:"container",tableElement:"table",captionElement:"caption",descriptionElement:"description",theadElement:"thead",tbodyElement:"tbody",rowElement:"row",rowEven:"row-even",rowOdd:"row-odd",hoveredRow:"hovered-row",hoveredCell:"hovered-cell",hoveredColumn:"hovered-column",syncedRow:"synced-row",syncedCell:"synced-cell",syncedColumn:"synced-column",editedCell:"edited-cell",mockedRow:"mocked-row",rowsContentNowrap:"rows-content-nowrap",virtualization:"virtualization",scrollableContent:"scrollable-content",headerCell:"header-cell",headerCellContainer:"header-cell-container",headerCellContent:"header-cell-content",headerCellFilterIcon:"header-cell-filter-icon",headerCellIcons:"header-cell-icons",headerCellSortIcon:"header-cell-sort-icon",headerCellMenuIcon:"header-cell-menu-icon",headerRow:"head-row-content",noData:"no-data",noPadding:"no-padding",columnFirst:"column-first",columnSortable:"column-sortable",columnSortableIcon:"column-sortable-icon",columnSortedAsc:"column-sorted-asc",columnSortedDesc:"column-sorted-desc",sortPriorityIndicator:"sort-priority-indicator",resizableContent:"resizable-content",resizerHandles:"column-resizer",resizedColumn:"column-resized",creditsContainer:"credits-container",creditsText:"credits",creditsPro:"credits-pro",visuallyHidden:"visually-hidden",lastHeaderCellInRow:"last-header-cell-in-row",loadingWrapper:"loading-wrapper",loadingSpinner:"spinner",loadingMessage:"loading-message",popup:"popup",button:"button",buttonSelected:"button-selected",input:"input",icon:"icon",iconSearch:"icon-search",popupContent:"popup-content",columnFilterWrapper:"column-filter-wrapper",toolbarButtonActiveIndicator:"active-indicator",menuContainer:"menu-container",menuItem:"menu-item",menuHeader:"menu-header",menuHeaderCategory:"menu-header-category",menuHeaderName:"menu-header-name",menuItemIcon:"menu-item-icon",menuItemLabel:"menu-item-label",menuDivider:"menu-divider",clearFilterButton:"clear-filter-button",paginationWrapper:"pagination-wrapper",paginationContainer:"pagination-container",paginationPageInfo:"pagination-info",paginationControlsContainer:"pagination-controls-container",paginationNavButtonsContainer:"pagination-nav-buttons-container",paginationNavDropdown:"pagination-nav-dropdown",paginationPageSize:"pagination-page-size",noWidth:"no-width",rightAlign:"right",centerAlign:"center",leftAlign:"left"},tA=window,tI=tA.navigator&&tA.navigator.userAgent||"",tD=(-1===tI.indexOf("Chrome")&&tI.indexOf("Safari"),[]),tk=e=>tM+tR[e],{isObject:tN}=B;function tP(e,t,i){let n=document.createElement(e);if(t){let e=Object.keys(t);for(let i=0;i<e.length;i++){let s=e[i],r=t[s];void 0!==r&&("style"===s?Object.assign(n.style,r):n[s]=r)}}return i&&i.appendChild(n),n}function tH(e){return -1!==e.indexOf("<")}J.allowedAttributes.push("srcset","media"),J.allowedTags.push("picture","source");let tF={makeHTMLElement:tP,makeDiv:function(e,t){return tP("div",{className:e,id:t})},isHTML:tH,sanitizeText:function(e){try{return new DOMParser().parseFromString(e,"text/html").body.textContent||""}catch{return""}},setHTMLContent:function(e,t){tH(t)?(e.innerHTML=J.emptyHTML,new J(t).addToDOM(e)):e.innerText=t},createOptionsProxy:function(e,t={}){let i=(e={})=>({get(t,n){let s=t[n],r=e[n];return tN(s,!0)?new Proxy(s,i(r??{})):s??r},set:(e,t,i)=>(e[t]=i,!0),deleteProperty:(e,t)=>(delete e[t],!0)});return new Proxy(e,i(t))},formatText:function(e,t){return e.replace(/\{(\w+)\}/g,(e,i)=>void 0!==t[i]?String(t[i]):e)}},tB={string:["contains","doesNotContain","equals","doesNotEqual","beginsWith","endsWith","empty","notEmpty"],number:["equals","doesNotEqual","greaterThan","greaterThanOrEqualTo","lessThan","lessThanOrEqualTo","empty","notEmpty"],datetime:["equals","doesNotEqual","before","after","empty","notEmpty"],boolean:["all","true","false","empty"]},{defined:tz,fireEvent:tj}=B,{makeHTMLElement:tW}=tF;class tU{static parseCamelCaseToReadable(e){let t=e.replace(/([A-Z])/g," $1").trim().toLowerCase().split(/\s+/).join(" ");return t.charAt(0).toUpperCase()+t.slice(1)}constructor(e){this.onKeyDown=e=>{let t=[];this.filterSelect&&!this.filterSelect.disabled&&t.push(this.filterSelect),this.filterInput&&!this.filterInput.disabled&&t.push(this.filterInput),this.clearButton&&!this.clearButton.disabled&&t.push(this.clearButton);let i={ArrowDown:1,ArrowUp:-1}[e.key];if(i){e.preventDefault();let n=t.indexOf(e.target),s=t.length;t[(n+i+s)%s].focus();return}if("Enter"===e.key&&e.target===this.clearButton){e.preventDefault(),this.set(),t[0]?.focus();return}},this.column=e}async set(e,t){this.filterInput&&(this.filterInput.value=e??""),this.filterSelect&&(this.filterSelect.value=t??tB[this.column.dataType][0]),await this.applyFilter({value:e,condition:t})}refreshState(){let e=this.column.options.filtering;this.filterSelect&&(this.filterSelect.value=e?.condition??tB[this.column.dataType][0]),this.filterInput&&(this.filterInput.value=""+(e?.value??"")),this.clearButton&&(this.clearButton.disabled=!this.isFilteringApplied()),this.disableInputIfNeeded()}renderFilteringContent(e){let t=this.column,i=t.dataType;if(!t.options.filtering?.enabled)return;let n=tW("div",{className:tk("columnFilterWrapper")},e);this.renderConditionSelect(n),"boolean"!==i&&this.renderFilteringInput(n,i),this.renderClearButton(n)}applyFilterFromForm(){let e={condition:this.filterSelect?.value};this.filterInput&&(e.value=this.filterInput.value),e.condition&&tB[this.column.dataType].includes(e.condition)&&this.applyFilter(e)}async applyFilter(e){let t=this.column.viewport,i=t.grid.querying,n=i.filtering,s=this.column.id,r=t.grid.accessibility,{value:o}=e;tj(this.column,"beforeFilter",{target:this.column});let l=this.isFilteringApplied(),a=this.clearButton;if(a&&l===a.disabled&&(a.disabled=!l),tz(o)&&""!==o&&"number"!=typeof o)switch(this.column.dataType){case"number":e.value=Number(o);break;case"datetime":e.value=new Date(`${o}Z`).getTime()}this.column.setOptions({filtering:{condition:e.condition,value:e.value}}),n.addColumnFilterCondition(s,e),this.disableInputIfNeeded(),await i.proceed(),await t.updateRows(),r?.userFilteredColumn({...e,columnId:s,rowsCount:t.rows.length},l),tj(this.column,"afterFilter",{target:this.column})}renderFilteringInput(e,t){this.filterInput=tW("input",{className:tk("input")},e),this.filterInput.setAttribute("tabindex","-1");let i=this.column;this.filterInput.setAttribute("id","filter-input-"+i.viewport.grid.id+"-"+i.id),this.filterInput.placeholder="Value...","number"===t?this.filterInput.type="number":"datetime"===t?this.filterInput.type="date":(this.filterInput.type="text",this.filterInput.classList.add(tk("icon"),tk("iconSearch")));let{value:n}=this.column.options.filtering??{};for(let e of((n||0===n)&&(this.filterInput.value="datetime"===t?i.viewport.grid.time.dateFormat("%Y-%m-%d",Number(n)):n.toString()),this.filterSelect&&this.disableInputIfNeeded(),({string:["keyup"],number:["keyup","change"],datetime:["change"]})[t]))this.filterInput.addEventListener(e,()=>{this.applyFilterFromForm()})}renderConditionSelect(e){this.filterSelect=tW("select",{className:tk("input")},e),this.filterSelect.setAttribute("tabindex","-1");let t=this.column;this.filterSelect.setAttribute("id","filter-select-"+t.viewport.grid.id+"-"+t.id);let i=tB[t.dataType],n=this.column.viewport.grid.options?.lang?.columnFilteringConditions??{};for(let e of i){let t=document.createElement("option");t.value=e,t.textContent=n[e]??tU.parseCamelCaseToReadable(e),this.filterSelect.appendChild(t)}let s=this.column.options.filtering?.condition;s&&i.includes(s)?this.filterSelect.value=s:this.filterSelect.value=i[0],this.disableInputIfNeeded(),this.filterSelect.addEventListener("change",()=>{this.applyFilterFromForm()})}renderClearButton(e){this.clearButton=tW("button",{className:tk("clearFilterButton"),innerText:"Clear filter"},e),this.clearButton.setAttribute("tabindex","-1"),this.clearButton.disabled=!this.isFilteringApplied(),this.clearButton.addEventListener("click",()=>{this.set()})}isFilteringApplied(){let{filterSelect:e,filterInput:t}=this,{dataType:i}=this.column,n=e?.value;return"boolean"===i?"all"!==n:"empty"===n||"notEmpty"===n||t?.value!==""}disableInputIfNeeded(){let{filterSelect:e,filterInput:t}=this,i=e?.value;t&&e&&("empty"===i||"notEmpty"===i?t.disabled=!0:t?.disabled&&(t.disabled=!1))}}let{doc:tV,win:tq}=p,{css:tK}=B,tY=tq.EventTarget&&new tq.EventTarget||"none";function t$(e){if("function"==typeof tq.MouseEvent)return new tq.MouseEvent(e.type,e);if(tV?.createEvent){let t=tV.createEvent("MouseEvent");if(t.initMouseEvent)return t.initMouseEvent(e.type,e.bubbles,e.cancelable,e.view||tq,e.detail,e.screenX,e.screenY,e.clientX,e.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget),t}return tG(e.type)}function tG(e,t,i){let n=t||{x:0,y:0};if("function"==typeof tq.MouseEvent)return new tq.MouseEvent(e,{bubbles:!0,cancelable:!0,composed:!0,button:0,buttons:1,relatedTarget:i||tY,view:tq,detail:+("click"===e),screenX:n.x,screenY:n.y,clientX:n.x,clientY:n.y});if(tV?.createEvent){let t=tV.createEvent("MouseEvent");if(t.initMouseEvent)return t.initMouseEvent(e,!0,!0,tq,+("click"===e),n.x,n.y,n.x,n.y,!1,!1,!1,!1,0,null),t}return{type:e}}let{formatText:t_}=tF,{replaceNested:tZ}=B,{getHeadingTagNameForElement:tX}={addClass:function(e,t){e.classList?e.classList.add(t):0>e.className.indexOf(t)&&(e.className+=" "+t)},cloneMouseEvent:t$,cloneTouchEvent:function(e){let t=e=>{let t=[];for(let i=0;i<e.length;++i){let n=e.item(i);n&&t.push(n)}return t};if("function"==typeof tq.TouchEvent){let i=new tq.TouchEvent(e.type,{touches:t(e.touches),targetTouches:t(e.targetTouches),changedTouches:t(e.changedTouches),ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e.detail,view:e.view});return e.defaultPrevented&&i.preventDefault(),i}let i=t$(e);return i.touches=e.touches,i.changedTouches=e.changedTouches,i.targetTouches=e.targetTouches,i},escapeStringForHTML:function(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")},getElement:function(e){return tV.getElementById(e)},getFakeMouseEvent:tG,getHeadingTagNameForElement:function(e){let t=e=>"h"+Math.min(6,parseInt(e.slice(1),10)+1),i=e=>/^H[1-6]$/i.test(e),n=e=>{let s=(e=>{let t=e;for(;t=t.previousSibling;){let e=t.tagName||"";if(i(e))return e}return""})(e);if(s)return t(s);let r=e.parentElement;if(!r)return"h6";let o=r.tagName;return i(o)?t(o):n(r)};return n(e)},removeChildNodes:function(e){for(;e.lastChild;)e.removeChild(e.lastChild)},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(RegExp(t,"g"),"")},removeElement:function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},reverseChildNodes:function(e){let t=e.childNodes.length;for(;t--;)e.appendChild(e.childNodes[t])},simulatedEventTarget:tY,stripHTMLTagsFromString:function(e,t=!1){return"string"==typeof e?t?e.replace(/<\/?[^>]+(>|$)/g,""):e.replace(/<\/?(?!\s)[^>]+(>|$)/g,""):e},visuallyHideElement:function(e){tK(e,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",whiteSpace:"nowrap",clip:"rect(1px, 1px, 1px, 1px)",marginTop:"-3px","-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(Opacity=1)",filter:"alpha(opacity=1)",opacity:.01})}},tJ=class{constructor(e){this.beforeGridElement=null,this.afterGridElement=null,this.grid=e,this.element=document.createElement("div"),this.element.classList.add(tk("visuallyHidden")),this.grid.container?.prepend(this.element),this.announcerElement=document.createElement("p"),this.announcerElement.setAttribute("aria-atomic","true"),this.announcerElement.setAttribute("aria-hidden","false")}addHeaderCellDescription(e,t){t&&e.setAttribute("aria-description",t)}announce(e,t=!1){this.announcerTimeout&&clearTimeout(this.announcerTimeout),this.announcerElement.remove(),this.announcerElement.setAttribute("aria-live",t?"assertive":"polite"),this.element.appendChild(this.announcerElement),requestAnimationFrame(()=>{this.announcerElement.textContent=e}),this.announcerTimeout=setTimeout(()=>{this.announcerElement.remove()},3e3)}userSortedColumn(e){let t,{options:i}=this.grid,n=i?.lang?.accessibility?.sorting?.announcements;if(i?.accessibility?.announcements?.sorting){switch(e){case"asc":t=n?.ascending;break;case"desc":t=n?.descending;break;default:t=n?.none}t&&this.announce(t,!0)}}setColumnSortState(e,t){e?.setAttribute("aria-sort",t)}userFilteredColumn(e,t){let i,{columnId:n,condition:s,value:r,rowsCount:o}=e,{lang:l,accessibility:a}=this.grid.options||{};if(!a?.announcements?.filtering)return;let d=l?.accessibility?.filtering?.announcements;if(t&&s){let e=tU.parseCamelCaseToReadable(s);i="empty"===s||"notEmpty"===s||"false"===s||"true"===s?t_(d?.emptyFilterApplied||"",{columnId:n,condition:e,rowsCount:o}):t_(d?.filterApplied||"",{columnId:n,condition:e,value:r?.toString()||"",rowsCount:o})}else i=t_(d?.filterCleared||"",{columnId:n,rowsCount:o});this.announce(i,!0)}addHighContrast(){let e=this.grid.options?.accessibility?.highContrastMode;!1!==e&&(tO()||!0===e)&&this.grid.contentWrapper?.classList.add("hcg-theme-highcontrast")}setRowIndex(e,t){e.setAttribute("aria-rowindex",t)}setA11yOptions(){let e=this.grid,t=e.tableElement;t&&(t.setAttribute("aria-rowcount",e.dataTable?.getRowCount()||0),e.captionElement&&t.setAttribute("aria-labelledby",e.captionElement.id),e.descriptionElement&&t.setAttribute("aria-describedby",e.descriptionElement.id),this.addHighContrast())}addScreenReaderSection(e){let t=this.grid,i="before"===e,n=i?this.defaultBeforeFormatter():this.defaultAfterFormatter(),s=t.options?.accessibility?.screenReaderSection?.[`${e}GridFormatter`],r=s?s(t):n,o=this[`${e}GridElement`]=this[`${e}GridElement`]||document.createElement("div"),l=o.firstChild||document.createElement("div");if(r){this.setScreenReaderSectionAttributes(o,e),J.setElementHTML(l,r),l.parentNode!==o&&o.appendChild(l);let n=t.container;!o.parentNode&&n&&(i?n.insertBefore(o,n.firstChild):n.appendChild(o)),l.classList.add(tk("visuallyHidden"))}else o.parentNode&&o.parentNode.removeChild(o),this[`${e}GridElement`]=null}setScreenReaderSectionAttributes(e,t){let i=this.grid;e.setAttribute("id",`grid-screen-reader-region-${t}-${i.id}`);let n=i.options?.lang?.accessibility?.screenReaderSection?.[`${t}RegionLabel`];n&&(e.setAttribute("aria-label",n),e.setAttribute("role","region")),e.style.position="relative"}defaultBeforeFormatter(){let{container:e,dataTable:t,options:i}=this.grid,n=i?.accessibility?.screenReaderSection?.beforeGridFormat;if(!n||!e)return"";let s=i?.caption?.text,r="";if(s)if(this.isWrappedInHeadingTag(s))r=s;else{let t=tX(e);r=`<${t}>${s}</${t}>`}let o={gridTitle:r,gridDescription:i?.description?.text||"",rowCount:t?.rowCount||0,columnCount:(t?.getColumnIds()||[]).length},l=this.formatTemplateString(n,o);return this.stripEmptyHTMLTags(l)}isWrappedInHeadingTag(e){return/^<h([1-6])[^>]*>[\s\S]*<\/h\1>$/i.test(e.trim())}formatTemplateString(e,t){return e.replace(/\{(\w+)\}/g,(e,i)=>i in t?String(t[i]):`{${i}}`)}defaultAfterFormatter(){let e=this.grid,t=e.options?.accessibility?.screenReaderSection?.afterGridFormat;return t?this.stripEmptyHTMLTags(t):""}stripEmptyHTMLTags(e){return tZ(e,[/<([\w\-.:!]+)\b[^<>]*>\s*<\/\1>/g,""])}destroy(){let e=this.beforeGridElement;e?.parentNode&&e.parentNode.removeChild(e);let t=this.afterGridElement;t?.parentNode&&t.parentNode.removeChild(t),this.element.remove(),this.announcerElement.remove(),clearTimeout(this.announcerTimeout)}},{makeHTMLElement:tQ,formatText:t0}=tF,{defined:t1,fireEvent:t3,isObject:t6,merge:t2}=B;class t5{constructor(e){this.grid=e,this.controller=e.querying.pagination}get options(){return this.grid.options?.pagination}get lang(){return this.grid.options?.lang?.pagination}get pageSizeSelectorOptions(){let e=this.options?.controls?.pageSizeSelector;return t6(e)?e.options??[]:(t5.defaultOptions.controls?.pageSizeSelector).options??[]}update(e){("page"in e||"pageSize"in e)&&(this.isDirtyQuerying=!0,delete e.page,delete e.pageSize),Object.keys(e).length>0&&this.grid.dirtyFlags.add("grid")}render(){let e=this.options?.position,t=this.grid;this.oldTotalItems=this.controller.totalItems,t.tableElement?.setAttribute("aria-current","page"),this.updateA11yRowsCount(this.controller.currentPageSize),"string"==typeof e&&e.startsWith("#")?this.renderCustomContainer(e):("footer"===e&&this.renderFooter(),this.contentWrapper=tQ("nav",{className:tk("paginationWrapper")},"footer"===e?this.paginationContainer:t.contentWrapper),this.contentWrapper.setAttribute("aria-label","Results pagination")),this.renderPageInfo(),this.renderControls(),this.renderPageSizeSelector(),this.updateButtonStates()}renderFooter(){let e=this.grid.tableElement;if(!e)return;let t=tQ("tfoot",{},e),i=tQ("tr",{},t);this.paginationContainer=tQ("td",{},i),this.paginationContainer.setAttribute("colSpan",(this.grid.enabledColumns||[]).length.toString()),this.reflow()}renderCustomContainer(e){let t=document.querySelector(e);t?(this.paginationContainer=t,this.contentWrapper=tQ("div",{className:tk("paginationContainer")},t)):console.warn(`Pagination: Custom container with ID "${e}" not found.`)}renderPageInfo(){let e=this.options?.controls?.pageInfo;!1===e||t6(e)&&!1===e.enabled||(this.pageInfoElement=tQ("div",{className:tk("paginationPageInfo")},this.contentWrapper),this.updatePageInfo())}updatePageInfo(){if(!this.pageInfoElement)return;let{currentPage:e,currentPageSize:t,totalItems:i,totalPages:n}=this.controller,s=Math.min(e*t,i),r=t0(this.lang?.pageInfo??"",{start:(e-1)*t+1,end:s,total:i,currentPage:e,totalPages:n});this.pageInfoElement.innerHTML=r}renderControls(){let e=tQ("div",{className:tk("paginationControlsContainer")},this.contentWrapper),t=this.options?.controls||{};t.firstLastButtons&&this.renderFirstButton(e),t.previousNextButtons&&this.renderPrevButton(e),t.pageButtons&&this.renderPageNumbers(e),this.renderDropdownPageSelector(e),t.previousNextButtons&&this.renderNextButton(e),t.firstLastButtons&&this.renderLastButton(e)}updateControls(e=!1){let{totalItems:t,currentPageSize:i}=this.controller;(this.oldTotalItems!==this.controller.totalItems||e)&&(this.updatePageInfo(),this.updatePageNumbers(),this.updateButtonStates(),this.updateA11yRowsCount(i),this.oldTotalItems=t)}renderFirstButton(e){let t=this.options?.controls?.firstLastButtons;!1===t||t6(t)&&!1===t.enabled||(this.firstButton=tQ("button",{className:tk("button"),innerHTML:'<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M5 9L1 5L5 1M9 9L5 5L9 1" stroke="currentColor" stroke-width="1.34" stroke-linecap="round" stroke-linejoin="round"/></svg>'},e),this.firstButton.title=this.lang?.firstPage??"",this.firstButton.setAttribute("aria-label",this.lang?.firstPage??""),this.firstButton.addEventListener("click",()=>{this.goToPage(1)}),this.setButtonState(this.firstButton,1===this.controller.currentPage))}renderPrevButton(e){let t=this.options?.controls?.previousNextButtons;!1===t||t6(t)&&!1===t.enabled||(this.prevButton=tQ("button",{className:tk("button"),innerHTML:'<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 8 10" fill="none"><path d="M5 9L1 5L5 1" stroke="currentColor" stroke-width="1.34" stroke-linecap="round" stroke-linejoin="round"/></svg>'},e),this.prevButton.title=this.lang?.previousPage??"",this.prevButton.setAttribute("aria-label",this.lang?.previousPage??""),this.prevButton.addEventListener("click",()=>{this.goToPage(this.controller.currentPage-1)}),this.setButtonState(this.prevButton,1===this.controller.currentPage))}renderNextButton(e){let t=this.options?.controls?.previousNextButtons;!1===t||t6(t)&&!1===t.enabled||(this.nextButton=tQ("button",{className:tk("button"),innerHTML:'<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 4 10" fill="none"><path d="M1 1L5 5L1 9" stroke="currentColor" stroke-width="1.34" stroke-linecap="round" stroke-linejoin="round"/></svg>'},e),this.nextButton.title=this.lang?.nextPage??"",this.nextButton.setAttribute("aria-label",this.lang?.nextPage??""),this.nextButton.addEventListener("click",()=>{this.goToPage(this.controller.currentPage+1)}),this.setButtonState(this.nextButton,this.controller.currentPage>=this.controller.totalPages))}renderLastButton(e){let t=this.options?.controls?.firstLastButtons;!1===t||t6(t)&&!1===t.enabled||(this.lastButton=tQ("button",{className:tk("button"),innerHTML:'<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M5 1L9 5L5 9M1 1L5 5L1 9" stroke="currentColor" stroke-width="1.34" stroke-linecap="round" stroke-linejoin="round"/></svg>'},e),this.lastButton.title=this.lang?.lastPage??"",this.lastButton.setAttribute("aria-label",this.lang?.lastPage??""),this.lastButton.addEventListener("click",()=>{this.goToPage(this.controller.totalPages)}),this.setButtonState(this.lastButton,this.controller.currentPage>=this.controller.totalPages))}renderPageNumbers(e){let t=this.options?.controls?.pageButtons;!1===t||t6(t)&&!1===t.enabled||(this.pageNumbersContainer=tQ("div",{className:tk("paginationNavButtonsContainer")},e),this.updatePageNumbers())}updatePageNumbers(){if(!this.pageNumbersContainer)return;this.pageNumbersContainer.innerHTML=J.emptyHTML;let e=this.options?.controls?.pageButtons,t=t6(e)?e.count:(t5.defaultOptions.controls?.pageButtons).count;if(!t)return;let{totalPages:i,currentPage:n}=this.controller;if(i<=t)for(let e=1;e<=i;e++)this.createPageButton(e,e===n);else{let e=[],s=n>=i-2;if(n<=3){let n=t-2,s=Math.min(n,i-1);for(let t=1;t<=s;t++)e.push({type:"button",page:t});i>n+1&&(e.push({type:"ellipsis"}),e.push({type:"button",page:i}))}else if(s){let n=i-(t-2)+1;for(e.push({type:"button",page:1}),e.push({type:"ellipsis"});n<=i;n++)e.push({type:"button",page:n})}else{e.push({type:"button",page:1});let s=t-4,r=Math.floor(s/2),o=Math.max(2,n-r),l=Math.min(i-1,n+r);l-o+1>s&&(2===o?l=o+s-1:o=l-s+1);let a=o>2,d=l<i-1;a||d?a?d||(o=Math.max(2,(l=i-1)-(t-3)+1)):l=Math.min(i-1,(o=2)+(t-3)-1):l=Math.min(i-1,(o=2)+(t-2)-1),a&&e.push({type:"ellipsis"});for(let t=o;t<=l;t++)e.push({type:"button",page:t});d&&e.push({type:"ellipsis"}),e.push({type:"button",page:i})}e.forEach(e=>{"button"===e.type&&t1(e.page)?this.createPageButton(e.page,e.page===n):"ellipsis"===e.type&&this.createEllipsis()})}this.updateDropdownPageSelector()}createPageButton(e,t){if(!this.pageNumbersContainer)return;let i=tQ("button",{className:tk("button"),innerHTML:e.toString()},this.pageNumbersContainer);t&&(i.classList.add(tk("buttonSelected")),i.setAttribute("aria-current","page")),i.title=t0(this.lang?.pageNumber??"",{page:e}),i.setAttribute("aria-label",t0(this.lang?.pageNumber??"",{page:e})),i.addEventListener("click",()=>{this.goToPage(e)})}createEllipsis(){if(!this.pageNumbersContainer)return;let e=tQ("span",{innerHTML:"..."},this.pageNumbersContainer);e.title=this.lang?.ellipsis??"",e.setAttribute("aria-hidden",!0)}renderPageSizeSelector(){let e=this.options?.controls?.pageSizeSelector;if(!1===e||t6(e)&&!1===e.enabled)return;let t=tQ("div",{className:tk("paginationPageSize")},this.contentWrapper);tQ("span",{innerHTML:this.lang?.pageSizeLabel??""},t),this.pageSizeSelect=tQ("select",{className:tk("input"),id:tk("paginationPageSize")},t),this.pageSizeSelectorOptions.forEach(e=>{let t=document.createElement("option");t.value=e.toString(),t.innerHTML=e.toString(),e===this.controller.currentPageSize&&(t.selected=!0),this.pageSizeSelect?.appendChild(t)}),this.pageSizeSelect.addEventListener("change",()=>{this.pageSizeSelect&&this.setPageSize(parseInt(this.pageSizeSelect.value,10))})}setOptions(e){var t,i,n;let s=(t=this.grid.userOptions).pagination??(t.pagination={}),r=(n=(i=this.grid).options??(i.options={})).pagination??(n.pagination={});t2(!0,s,e),t2(!0,r,e)}async setPageSize(e){let t=this.controller.currentPageSize,i=this.grid.options?.lang?.accessibility;t3(this,"beforePageSizeChange",{pageSize:t,newPageSize:e}),this.controller.setPageSize(e),this.controller.setPage(1),this.setOptions({pageSize:e,page:1}),await this.updateGridPagination(),this.updatePageInfo(),this.updatePageNumbers(),this.updateButtonStates(),this.updateA11yRowsCount(this.controller.currentPageSize),this.grid.accessibility?.announce(i?.pagination?.announcements?.pageSizeChange+" "+e),t3(this,"afterPageSizeChange",{pageSize:e,previousPageSize:t})}async goToPage(e){let t=this.grid.options?.lang?.accessibility,{totalPages:i,currentPage:n,currentPageSize:s}=this.controller;if(e<1||e>i||e===n)return;t3(this,"beforePageChange",{currentPage:n,nextPage:e,pageSize:s}),this.controller.setPage(e);let r=this.controller.currentPage;this.setOptions({page:r}),await this.updateGridPagination(),this.updatePageInfo(),this.updatePageNumbers(),this.updateButtonStates(),this.grid.accessibility?.announce(t?.pagination?.announcements?.pageChange+" "+r),t3(this,"afterPageChange",{currentPage:r,previousPage:n,pageSize:s})}async updateGridPagination(){await this.grid.viewport?.updateRows();let e=this.grid.viewport?.tbodyElement;e&&(e.scrollTop=0)}updateButtonStates(){let{currentPage:e,totalPages:t}=this.controller;this.firstButton&&this.setButtonState(this.firstButton,1===e),this.prevButton&&this.setButtonState(this.prevButton,1===e),this.nextButton&&this.setButtonState(this.nextButton,e>=t),this.lastButton&&this.setButtonState(this.lastButton,e>=t)}async updatePage(e=!0){let{currentPage:t}=this.controller;await this.goToPage(e?t+1:t-1)}setButtonState(e,t){t?e.setAttribute("disabled","disabled"):e.removeAttribute("disabled")}reflow(){let e=this.options?.position;if(this.paginationContainer&&"footer"===e){this.paginationContainer.style.width=this.grid.tableElement?.offsetWidth+"px";return}}destroy(){"footer"===this.options?.position?this.paginationContainer?.parentElement?.parentElement?.remove():this.contentWrapper?.remove()}renderDropdownPageSelector(e){if(this.controller.totalPages<=1)return;let t=tQ("div",{className:tk("paginationNavDropdown")},e),i=tQ("select",{className:tk("input"),id:tk("paginationNavDropdown")},t);this.dropdownPageSelector=i,this.updateDropdownPageSelector(),i.addEventListener("change",()=>{let e=parseInt(i.value,10);e!==this.controller.currentPage&&this.goToPage(e)})}updateDropdownPageSelector(){let e=this.dropdownPageSelector;if(!e)return;let{totalPages:t,currentPage:i}=this.controller;e.innerHTML=J.emptyHTML;for(let i=1;i<=t;i++){let n=tQ("option",{},e);n.value=i.toString(),n.textContent=`Page ${i} of ${t}`}e.value=i.toString()}updateA11yRowsCount(e){let t=this.grid;t.tableElement?.setAttribute("aria-rowcount",e||this.controller.totalItems)}}t5.defaultOptions={enabled:!1,page:1,pageSize:10,position:"bottom",controls:{pageSizeSelector:{enabled:!0,options:[10,20,50,100]},pageInfo:{enabled:!0},firstLastButtons:{enabled:!0},previousNextButtons:{enabled:!0},pageButtons:{enabled:!0,count:7}}};let{merge:t7}=B,t4={accessibility:{enabled:!0,highContrastMode:"auto",announcements:{sorting:!0,filtering:!0},screenReaderSection:{beforeGridFormat:"{gridTitle}<div>{gridDescription}</div><div>Grid with {rowCount} rows and {columnCount} columns.</div>",afterGridFormat:"End of Grid."}},time:{timezone:"UTC"},rendering:{rows:{bufferSize:10,minVisibleRows:2,strictHeights:!1,virtualizationThreshold:50},header:{enabled:!0},columns:{resizing:{enabled:!0,mode:"adjacent"}},theme:"hcg-theme-default"},columnDefaults:{sorting:{enabled:!0},filtering:{inline:!1}},pagination:t5.defaultOptions,lang:{accessibility:{sorting:{sortable:"Sortable.",announcements:{ascending:"Sorted ascending.",descending:"Sorted descending.",none:"Not sorted."},priority:"Priority {priority}."},pagination:{announcements:{pageSizeChange:"Page size changed to",pageChange:"Page changed to"}},filtering:{announcements:{filterApplied:"Filter applied for {columnId}, {condition} {value}. {rowsCount} results found.",emptyFilterApplied:"Filter applied for {columnId}, {condition} values. {rowsCount} results found.",filterCleared:"Filter cleared for {columnId}. {rowsCount} results found."}},screenReaderSection:{beforeRegionLabel:"",afterRegionLabel:""}},loading:"Loading...",noData:"No data to display",filter:"Filter",sortAscending:"Sort ascending",sortDescending:"Sort descending",column:"Column",setFilter:"Set filter",pagination:{pageInfo:"Showing {start} - {end} of {total} (page {currentPage} of {totalPages})",pageSizeLabel:"rows per page",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",pageNumber:"Page {page}",ellipsis:"More pages"},columnFilteringConditions:{contains:"Contains",doesNotContain:"Does not contain",equals:"Equals",doesNotEqual:"Does not equal",beginsWith:"Begins with",endsWith:"Ends with",empty:"Empty",notEmpty:"Not empty",greaterThan:"Greater than",greaterThanOrEqualTo:"Greater than or equal to",lessThan:"Less than",lessThanOrEqualTo:"Less than or equal to",before:"Before",after:"After",all:"All",true:"True",false:"False"}}},t9=class{constructor(e){this.cell=e}},{setHTMLContent:t8}=tF,{defined:ie,isString:it}=B;class ii extends t9{constructor(e){super(e),this.add()}add(){this.update()}destroy(){this.cell.htmlElement.innerHTML=J.emptyHTML}update(){t8(this.cell.htmlElement,this.format())}format(){let{cell:e}=this,t=e.row.viewport.grid.options?.columnDefaults?.cells||{},{format:i,formatter:n}=e.column.options.cells||{},s=e.value;ie(s)||(s="");let r="";if(!i&&!n)return e.format(ii.defaultFormatsForDataTypes[e.column.dataType]);let o=t.format===i,l=t.formatter===n;if(o&&l)r=n?n.call(e).toString():i?e.format(i):s+"";else if(o){let t=n?.call(e);r=it(t)?t:s+""}else l&&(r=i?e.format(i):s+"");return r}}ii.defaultFormatsForDataTypes={string:"{value}",number:"{value:,.f}",boolean:"{value}",datetime:"{value:%Y-%m-%d %H:%M:%S}"};let{defined:is,fireEvent:ir}=B,{createOptionsProxy:io}=tF,il=class{constructor(e,t,i){var n;this.cells=[];const{grid:s}=e;if(this.id=t,this.index=i,this.viewport=e,this.loadData(),this.dataType=this.assumeDataType(),s.options&&!s.columnOptionsMap?.[t]){const e={id:t};((n=s.options).columns??(n.columns=[])).push(e),s.columnOptionsMap[t]={index:s.options.columns.length-1,options:e}}this.options=io(s.columnOptionsMap?.[t]?.options??{},s.options?.columnDefaults),this.options.filtering?.enabled&&(this.filtering=new tU(this)),ir(this,"afterInit")}loadData(){this.data=this.viewport.dataTable.getColumn(this.id,!0)}createCellContent(e){return new ii(e)}assumeDataType(){let{grid:e}=this.viewport,t=e.columnOptionsMap?.[this.id]?.options.dataType??e.options?.columnDefaults?.dataType;if(t)return t;if(!this.data)return"string";if(!Array.isArray(this.data))return"number";for(let e=0,t=Math.min(this.data.length,30);e<t;++e)if(is(this.data[e]))switch(typeof this.data[e]){case"number":return"number";case"boolean":return"boolean";default:return"string"}return console.warn(`Column "${this.id}" contains too few data points with unambiguous types to correctly determine its dataType. It's recommended to set the \`dataType\` option for it.`),"string"}registerCell(e){e.htmlElement.setAttribute("data-column-id",this.id),this.options.className&&e.htmlElement.classList.add(...this.options.className.split(/\s+/g)),this.viewport.grid.hoveredColumnId===this.id&&e.htmlElement.classList.add(tk("hoveredColumn")),this.cells.push(e)}unregisterCell(e){let t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}getWidth(){return this.viewport.columnResizing.getColumnWidth(this)}setHoveredState(e){this.header?.htmlElement?.classList[e?"add":"remove"](tk("hoveredColumn"));for(let t=0,i=this.cells.length;t<i;++t)this.cells[t].htmlElement.classList[e?"add":"remove"](tk("hoveredColumn"))}setSyncedState(e){this.header?.htmlElement?.classList[e?"add":"remove"](tk("syncedColumn"));for(let t=0,i=this.cells.length;t<i;++t)this.cells[t].htmlElement.classList[e?"add":"remove"](tk("syncedColumn"))}format(e){return ez.format(e,this,this.viewport.grid)}setOptions(e,t=!1){return this.viewport.grid.setColumnOptions([{id:this.id,...e}],t)}async update(e,t=!0){await this.viewport.grid.updateColumn(this.id,e,t)}},{makeHTMLElement:ia}=tF,id=class{constructor(e){this.cells=[],this.viewport=e,this.htmlElement=ia("tr",{}),this.htmlElement.setAttribute("role","row")}render(){let e=this.viewport.columns;for(let t=0,i=e.length;t<i;t++)this.createCell(e[t]).render();this.rendered=!0,this.viewport.virtualRows&&this.reflow()}reflow(){for(let e=0,t=this.cells.length;e<t;++e)this.cells[e].reflow();let e=this.viewport;e.rowsWidth&&(this.htmlElement.style.width=e.rowsWidth+"px")}destroy(){if(this.htmlElement){for(let e=this.cells.length-1;e>=0;--e)this.cells[e].destroy();this.htmlElement.remove()}}getCell(e){return this.cells.find(t=>t.column?.id===e)}registerCell(e){this.cells.push(e)}unregisterCell(e){let t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},{fireEvent:ih}=B,iu=class{constructor(e,t){this.cellEvents=[],this.column=t,this.row=e,this.row.registerCell(this),this.htmlElement=this.init(),this.htmlElement.setAttribute("tabindex","-1"),this.column?.options.cells?.editMode?.enabled||this.htmlElement.setAttribute("aria-readonly","true"),this.initEvents()}init(){let e=document.createElement("td",{});return e.setAttribute("role","gridcell"),e}initEvents(){this.cellEvents.push(["blur",()=>this.onBlur()]),this.cellEvents.push(["focus",()=>this.onFocus()]),this.cellEvents.push(["click",e=>{this.onClick(e)}]),this.cellEvents.push(["keydown",e=>{this.onKeyDown(e)}]),this.cellEvents.push(["mouseout",()=>{this.onMouseOut()}]),this.cellEvents.push(["mouseover",()=>{this.onMouseOver()}]),this.cellEvents.forEach(e=>{this.htmlElement.addEventListener(e[0],e[1])})}onFocus(){this.row.viewport.setFocusAnchorCell(this)}onBlur(){delete this.row.viewport.focusCursor}onKeyDown(e){let{row:t,column:i}=this;if(!i)return;let n=t.viewport,{header:s}=n,r={ArrowDown:[1,0],ArrowUp:[-1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]}[e.key];if("Enter"===e.key&&this.onClick(e),r){e.preventDefault(),e.stopPropagation();let{header:o}=n,l=(()=>{if(void 0!==t.index)return t.index-n.rows[0].index;let e=t.level;return s&&void 0!==e?Math.max(e,s.levels)-s.rows.length-1:0})()+r[0];if(l<0&&o){let e=o.rows.length+l;e+1>o.levels?o.rows[e].cells[i.index+r[1]]?.htmlElement.focus():n.columns[i.index+r[1]]?.header?.htmlElement.focus();return}let a=n.rows[l];a&&a.cells[i.index+r[1]]?.htmlElement.focus()}}onMouseOver(){let{grid:e}=this.row.viewport;e.hoverColumn(this.column?.id),ih(this,"mouseOver",{target:this})}onMouseOut(){let{grid:e}=this.row.viewport;e.hoverColumn(),ih(this,"mouseOut",{target:this})}render(){this.row.htmlElement.appendChild(this.htmlElement),this.reflow()}reflow(){let e=this.column;if(!e)return;let t=this.htmlElement.style;t.width=t.maxWidth=e.getWidth()+"px"}format(e){return ez.format(e,this,this.row.viewport.grid)}setCustomClassName(e){let t=this.htmlElement;if(this.customClassName&&t.classList.remove(...this.customClassName.split(/\s+/g)),!e)return void delete this.customClassName;let i=this.format(e);i?(t.classList.add(...i.split(/\s+/g)),this.customClassName=i):delete this.customClassName}destroy(){this.cellEvents.forEach(e=>{this.htmlElement.removeEventListener(e[0],e[1])}),this.column?.unregisterCell(this),this.row.unregisterCell(this),this.htmlElement.remove()}},{fireEvent:ic}=B,ip=class{constructor(e,t){this.toggle=e=>{let t=this.column.viewport.grid.querying.sorting,i=!!e?.shiftKey,n=(i?t.currentSortings?.find(e=>e.columnId===this.column.id)?.order:t.currentSorting?.columnId===this.column.id?t.currentSorting.order:null)||"none";this.setOrder({none:"asc",asc:"desc",desc:null}[n],i)},this.column=e,this.headerCellElement=t,this.addHeaderElementAttributes();const i=e.options.sorting;(i?.enabled??i?.sortable)&&t.classList.add(tk("columnSortable"))}addHeaderElementAttributes(){let e=this.column,t=e.viewport.grid.accessibility,i=e.options.sorting,{currentSorting:n,currentSortings:s}=e.viewport.grid.querying.sorting,r=tk("columnSortedAsc"),o=tk("columnSortedDesc"),l=this.headerCellElement,a=i?.enabled??i?.sortable,d=s?.find(t=>t.columnId===e.id)||(n?.columnId===e.id?n:void 0);if(!d?.order){l.classList.remove(r),l.classList.remove(o),a&&t?.setColumnSortState(l,"none");return}switch(d.order){case"asc":l.classList.add(r),l.classList.remove(o),t?.setColumnSortState(l,"ascending");break;case"desc":l.classList.remove(r),l.classList.add(o),t?.setColumnSortState(l,"descending")}}refreshHeaderAttributes(){this.addHeaderElementAttributes()}updateColumnOptions(e){let t=e.viewport.grid.querying.sorting.currentSortings||[],i=t.findIndex(t=>t.columnId===e.id);if(-1!==i&&t[i].order){let n={order:t[i].order};t.length>1&&(n.priority=i+1),e.setOptions({sorting:n}),t.length<2&&delete e.options.sorting?.priority}else delete e.options.sorting?.order,delete e.options.sorting?.priority,e.options.sorting&&Object.keys(e.options.sorting).length<1&&delete e.options.sorting}async setOrder(e,t=!1){let i=this.column.viewport;if(i.validator?.errorCell)return;let n=i.grid.querying.sorting,s=i.grid.accessibility;if([this.column,i.grid].forEach(t=>{ic(t,"beforeSort",{target:this.column,order:e})}),t){let t=(n.currentSortings||(n.currentSorting?.columnId&&n.currentSorting.order?[n.currentSorting]:[])).filter(e=>!!(e.columnId&&e.order)).slice(),i=t.findIndex(e=>e.columnId===this.column.id);if(e){let n={columnId:this.column.id,order:e};-1!==i?t[i]=n:t.push(n)}else -1!==i&&t.splice(i,1);n.setSorting(t)}else n.setSorting(e,this.column.id);for(let e of(await i.updateRows(),i.columns))this.updateColumnOptions(e),e.sorting?.refreshHeaderAttributes();s?.userSortedColumn(e),[this.column,i.grid].forEach(t=>{ic(t,"afterSort",{target:this.column,order:e})})}},im={filter:{width:16,height:14,children:[{d:"M2.2571 2.77791C1.75287 2.21437 1.50076 1.93259 1.49125 1.69312C1.48299 1.48509 1.57238 1.28515 1.73292 1.15259C1.91773 1 2.29583 1 3.05202 1H12.9473C13.7035 1 14.0816 1 14.2664 1.15259C14.427 1.28515 14.5163 1.48509 14.5081 1.69312C14.4986 1.93259 14.2465 2.21437 13.7422 2.77791L9.93808 7.02962C9.83756 7.14196 9.78731 7.19813 9.75147 7.26205C9.71969 7.31875 9.69637 7.37978 9.68225 7.44323C9.66633 7.51476 9.66633 7.59013 9.66633 7.74087V11.3056C9.66633 11.436 9.66633 11.5011 9.64531 11.5575C9.62673 11.6073 9.59651 11.6519 9.55717 11.6877C9.51265 11.7281 9.45213 11.7524 9.33108 11.8008L7.06441 12.7074C6.81938 12.8054 6.69687 12.8545 6.59852 12.834C6.51251 12.8161 6.43704 12.765 6.3885 12.6918C6.333 12.6081 6.333 12.4762 6.333 12.2122V7.74087C6.333 7.59013 6.333 7.51476 6.31708 7.44323C6.30296 7.37978 6.27964 7.31875 6.24786 7.26205C6.21203 7.19813 6.16177 7.14196 6.06126 7.02962L2.2571 2.77791Z"}]},menu:{width:4,height:12,children:[{d:"M2.00016 6.66675C2.36835 6.66675 2.66683 6.36827 2.66683 6.00008C2.66683 5.63189 2.36835 5.33341 2.00016 5.33341C1.63197 5.33341 1.3335 5.63189 1.3335 6.00008C1.3335 6.36827 1.63197 6.66675 2.00016 6.66675Z"},{d:"M2.00016 2.00008C2.36835 2.00008 2.66683 1.7016 2.66683 1.33341C2.66683 0.965225 2.36835 0.666748 2.00016 0.666748C1.63197 0.666748 1.3335 0.965225 1.3335 1.33341C1.3335 1.7016 1.63197 2.00008 2.00016 2.00008Z"},{d:"M2.00016 11.3334C2.36835 11.3334 2.66683 11.0349 2.66683 10.6667C2.66683 10.2986 2.36835 10.0001 2.00016 10.0001C1.63197 10.0001 1.3335 10.2986 1.3335 10.6667C1.3335 11.0349 1.63197 11.3334 2.00016 11.3334Z"}]},chevronRight:{width:6,height:10,children:[{d:"M1 9L5 5L1 1","stroke-width":1.34}]},checkmark:{width:12,height:9,children:[{d:"M11.3332 1L3.99984 8.33333L0.666504 5"}]},upDownArrows:{width:14,height:12,children:[{d:"M3.66667 0.666748V11.3334M3.66667 11.3334L1 8.66675M3.66667 11.3334L6.33333 8.66675M10.3333 11.3334V0.666748M10.3333 0.666748L7.66667 3.33341M10.3333 0.666748L13 3.33341"}]},sortAsc:{width:14,height:12,children:[{d:"M3.66667 0.666748V11.3334M3.66667 11.3334L1 8.66675M3.66667 11.3334L6.33333 8.66675",opacity:.2},{d:"M 10.3333 11.3334 V 0.6667 M 10.3333 0.6667 L 7.6667 3.3334 M 10.3333 0.6667 L 13 3.3334"}]},sortDesc:{width:14,height:12,children:[{d:"M3.66667 0.666748V11.3334M3.66667 11.3334L1 8.66675M3.66667 11.3334L6.33333 8.66675"},{d:"M 10.3333 11.3334 V 0.6667 M 10.3333 0.6667 L 7.6667 3.3334 M 10.3333 0.6667 L 13 3.3334",opacity:.2}]}},ig={stroke:"currentColor","stroke-width":1.33,"stroke-linecap":"round","stroke-linejoin":"round"};function iy(e,t=tk("icon")){let i=e=>document.createElementNS("http://www.w3.org/2000/svg",e),{width:n=16,height:s=16,viewBox:r,fill:o,children:l}=im[e],a=i("svg");for(let e of(a.setAttribute("width",n.toString()),a.setAttribute("height",s.toString()),a.setAttribute("viewBox",r??`0 0 ${n} ${s}`),a.setAttribute("fill",o??"none"),l??[])){let t=i("path");for(let i of new Set([...Object.keys(e),...Object.keys(ig)])){let n=e[i]??ig[i];void 0!==n&&t.setAttribute(i,n.toString())}a.appendChild(t)}return a.classList.add(t),a}let{makeHTMLElement:ib}=tF,iw=class{constructor(e){this.eventListenerDestroyers=[],this.isActive=!1,this.options=e}add(e){let t=this.options;this.toolbar=e,e.buttons.push(this);let i=ib("span",t.classNameKey&&{className:tk(t.classNameKey)},e.container);this.wrapper=i;let n=this.buttonEl=ib("button",{className:tk("button")+(this.isActive?" active":"")},i);return n.setAttribute("type","button"),n.setAttribute("tabindex","-1"),this.setA11yAttributes(n),this.setIcon(t.icon),this.refreshState(),this.addEventListeners(),this}setA11yAttributes(e){let{accessibility:t,tooltip:i}=this.options,{ariaLabel:n,ariaExpanded:s,ariaControls:r}=t||{};i&&(e.title=i),n&&e.setAttribute("aria-label",n),"boolean"==typeof s&&e.setAttribute("aria-expanded",s),r&&e.setAttribute("aria-controls",r)}focus(){this.buttonEl?.focus();let e=this.toolbar;e&&(e.focusCursor=e.buttons.indexOf(this))}setIcon(e){this.icon?.remove(),this.icon=iy(e),this.buttonEl?.appendChild(this.icon)}setActive(e){this.isActive=e,this.buttonEl?.classList.toggle("active",e),this.renderActiveIndicator(e)}setHighlighted(e){this.buttonEl?.classList.toggle("highlighted",e),"boolean"==typeof this.options.accessibility?.ariaExpanded&&this.buttonEl?.setAttribute("aria-expanded",e)}destroy(){this.removeEventListeners(),this.wrapper?.remove(),this.toolbar?.buttons.splice(this.toolbar.buttons.indexOf(this),1),delete this.toolbar}refreshState(){}clickHandler(e){this.options.onClick?.(e,this)}renderActiveIndicator(e){let t=this.buttonEl;if(t){if(this.activeIndicator?.remove(),!e)return void delete this.activeIndicator;this.activeIndicator=ib("div",{className:tk("toolbarButtonActiveIndicator")},t)}}addEventListeners(){let e=e=>{this.clickHandler(e)};this.buttonEl?.addEventListener("click",e),this.eventListenerDestroyers.push(()=>{this.buttonEl?.removeEventListener("click",e)})}removeEventListeners(){for(let e of this.eventListenerDestroyers)e();this.eventListenerDestroyers.length=0}},iv=function(e){let{condition:t,value:i}=e.options.filtering||{};return!!(t&&(["empty","notEmpty","true","false"].includes(t)||void 0!==i&&""!==i))},iC=function(e,t){let{currentSorting:i,currentSortings:n}=e.viewport.grid.querying.sorting||{},s=n?.find(t=>t.columnId===e.id)||(i?.columnId===e.id?i:void 0);return!!s?.order&&(t?s.order===t:!!s.order)},{formatText:iE}=tF,{addEvent:iT}=B,ix=class extends iw{getColumnLabel(){let e=this.toolbar?.column;return(e?.header?.headerContent?.textContent||e?.header?.value||e?.id||"").trim()||e?.id||""}updateA11yLabel(e,t){let i,n=this.wrapper?.querySelector("button");if(!n)return;let s=this.toolbar?.column,r=s?.viewport.grid.options?.lang,o=r?.accessibility?.sorting,l=o?.announcements,a=this.getColumnLabel(),d=[];a&&d.push(a),(i="asc"===e?l?.ascending:"desc"===e?l?.descending:l?.none)&&d.push(i),t&&d.push(iE(o?.priority??"Priority {priority}.",{priority:String(t)})),d.length&&n.setAttribute("aria-label",d.join(" "))}constructor(){super({icon:"upDownArrows",classNameKey:"headerCellSortIcon",accessibility:{ariaLabel:"sort"}})}clickHandler(e){super.clickHandler(e),this.toolbar?.column.sorting?.toggle(e)}renderSortPriorityIndicator(e){let t=this.wrapper;if(!t)return;let i=t.querySelector("button");if(i){if(!e){this.sortPriorityIndicator?.remove(),delete this.sortPriorityIndicator;return}this.sortPriorityIndicator||(this.sortPriorityIndicator=document.createElement("span"),this.sortPriorityIndicator.className=tk("sortPriorityIndicator")),i.appendChild(this.sortPriorityIndicator),this.sortPriorityIndicator.textContent=String(e)}}refreshState(){let e=this.toolbar?.column;if(!e)return;let{currentSortings:t,currentSorting:i}=e.viewport.grid.querying.sorting,n=t||[],s=n.find(t=>t.columnId===e.id)||(i?.columnId===e.id?i:void 0);if(!iC(e)||!s?.order){this.setActive(!1),this.setIcon("upDownArrows"),this.renderSortPriorityIndicator(),this.updateA11yLabel(null);return}this.setActive(!0),this.setIcon("asc"===s.order?"sortAsc":"sortDesc");let r=n.findIndex(t=>t.columnId===e.id),o=n.length>1&&-1!==r?r+1:void 0;this.renderSortPriorityIndicator(o),this.updateA11yLabel(s.order,o)}addEventListeners(){super.addEventListeners();let e=this.toolbar?.column;e&&this.eventListenerDestroyers.push(iT(e.viewport.grid,"afterSort",()=>this.refreshState()))}renderActiveIndicator(e){}},{makeHTMLElement:iS}=tF,{fireEvent:iL}=B,iO=class{constructor(e,t,i){this.isVisible=!1,this.eventListenerDestroyers=[],this.grid=e,this.button=t,this.options=i||{}}show(e){if(this.container)return;this.button?.setHighlighted(!0),this.container=iS("div",{className:tk("popup")}),this.content=iS("div",{className:tk("popupContent")});let{header:t}=this.options;t&&this.addHeader(t.label,t.category),this.renderContent(this.content),this.container.appendChild(this.content),this.anchorElement=e,this.isVisible=!0,this.grid.contentWrapper?.appendChild(this.container),this.position(e),this.addEventListeners(),this.grid.popups.add(this),iL(this,"afterShow")}hide(){this.container&&(iL(this,"beforeHide"),this.grid.popups.delete(this),this.isVisible=!1,this.removeEventListeners(),this.container.remove(),delete this.container,delete this.content,this.button?.setHighlighted(!1),iL(this,"afterHide"))}toggle(e){this.isVisible?this.hide():this.show(e)}reflow(){this.anchorElement?.isConnected?this.position(this.anchorElement):this.hide()}position(e){let t=this.grid.contentWrapper;if(!this.container||!this.content||!t)return;let i=this.options.nextToAnchor||!1,n=this.container.getBoundingClientRect(),s=t.getBoundingClientRect(),r=e?.getBoundingClientRect()??s,o=i?r.top:r.bottom+4,l=i?r.right+3:r.left;l+n.width>s.width&&(l=-n.width+(i?r.left+4:r.right)),l<s.left&&(l=s.left),this.container.style.top=`${o-s.top}px`,this.container.style.left=`${l-s.left}px`;let a=this.content.getBoundingClientRect();a.height+a.top-s.top>s.height?(this.container.style.top="auto",this.container.style.bottom="0"):(this.container.style.top=`${o-s.top}px`,this.container.style.bottom="auto")}addHeader(e,t){if(!this.content)return;let i=iS("div",{className:tk("menuHeader")},this.content);return t&&iS("span",{className:tk("menuHeaderCategory"),innerText:t+" "},i),iS("span",{className:tk("menuHeaderName"),innerText:e},i),i}onKeyDown(e){("Escape"===e.key||"Tab"===e.key&&e.shiftKey)&&(e.preventDefault(),this.hide(),this.button?.focus())}onClickOutside(e){this.container?.contains(e.target)||this.anchorElement?.contains(e.target)||this.hide()}addEventListeners(){let e=this.container;if(!e)return;let t=e=>{this.onClickOutside(e)},i=e=>{this.onKeyDown(e)};document.addEventListener("mousedown",t),e.addEventListener("keydown",i),this.eventListenerDestroyers.push(()=>{document.removeEventListener("mousedown",t),e.removeEventListener("keydown",i)})}removeEventListeners(){for(let e of this.eventListenerDestroyers)e();this.eventListenerDestroyers.length=0}},{merge:iM}=B,iR=class extends iO{constructor(e,t,i){const n=e.column.viewport.grid;super(n,t,iM({header:{category:n.options?.lang?.setFilter,label:e.column.header?.value||""}},i)),this.filtering=e}show(e){super.show(e),this.filtering.filterSelect?.focus()}renderContent(e){this.filtering.renderFilteringContent(e)}onKeyDown(e){super.onKeyDown(e),this.filtering.onKeyDown(e)}},{addEvent:iA}=B,iI=class extends iw{constructor(){super({icon:"filter",classNameKey:"headerCellFilterIcon",accessibility:{ariaLabel:"filter",ariaExpanded:!1,ariaControls:"filter-popup"}})}refreshState(){let e=this.toolbar?.column;e&&this.setActive(iv(e))}addEventListeners(){super.addEventListeners();let e=this.toolbar;e&&this.eventListenerDestroyers.push(iA(e.column,"afterFilter",()=>{this.refreshState()}))}clickHandler(e){super.clickHandler(e);let t=this.toolbar?.column.filtering;t&&(this.popup||(this.popup=new iR(t,this)),this.popup.toggle(this.wrapper))}},{makeHTMLElement:iD}=tF,ik=class extends iO{constructor(){super(...arguments),this.buttons=[],this.focusCursor=0}ensureItemsContainer(){if(this.content)return this.itemsContainer||(this.itemsContainer=iD("ul",{className:tk("menuContainer")},this.content)),this.itemsContainer}show(e){super.show(e),this.buttons[0]?.focus()}hide(){for(let e of this.buttons)e.destroy();this.buttons.length=0,this.itemsContainer?.remove(),delete this.itemsContainer,super.hide()}addDivider(){if(this.ensureItemsContainer())return iD("li",{className:tk("menuDivider")},this.itemsContainer)}onClickOutside(e){let t=this.buttons;for(let i=0,n=t.length;i<n;++i)if(t[i].popup?.container?.contains(e.target))return;super.onClickOutside(e)}onKeyDown(e){super.onKeyDown(e);let t=this.buttons.length,i=this.focusCursor;switch(e.key){case"ArrowUp":case"ArrowLeft":e.preventDefault(),this.buttons[Math.abs((i-1+t)%t)].focus();break;case"ArrowDown":case"ArrowRight":e.preventDefault(),this.buttons[(i+1)%t].focus()}}},{makeHTMLElement:iN}=tF,iP=class{constructor(e){this.eventListenerDestroyers=[],this.isActive=!1,this.options=e}add(e){let t=this.options;this.contextMenu=e,e.buttons.push(this);let i=e.ensureItemsContainer();if(!i)return;let n=this.wrapper=iN("li",t.classNameKey&&{className:tk(t.classNameKey)},i),s=this.buttonEl=iN("button",{className:tk("menuItem")},n),r=this.iconWrapper=iN("span",{className:tk("menuItemIcon")},s);this.spanEl=iN("span",{className:tk("menuItemLabel"),innerText:t.label||""},s);let o=iN("span",{className:tk("menuItemIcon")},s);return r.setAttribute("aria-hidden","true"),o.setAttribute("aria-hidden","true"),s.setAttribute("type","button"),s.setAttribute("tabindex","-1"),this.refreshState(),t.chevron&&o.appendChild(iy("chevronRight")),t.icon&&this.setIcon(t.icon),this.addEventListeners(),this}focus(){this.buttonEl?.focus();let e=this.contextMenu;e&&(e.focusCursor=e.buttons.indexOf(this))}setLabel(e){this.spanEl&&(this.spanEl.innerText=e)}setIcon(e){this.icon?.remove(),e&&(this.icon=iy(e),this.iconWrapper?.appendChild(this.icon))}setActive(e){this.isActive=e,this.buttonEl?.classList.toggle("active",e);let{activeIcon:t,icon:i}=this.options;t&&this.setIcon(e?t:i)}setHighlighted(e){this.buttonEl?.classList.toggle("highlighted",e)}destroy(){this.removeEventListeners(),this.wrapper?.remove();let e=this.contextMenu;e&&(e.buttons.splice(e.buttons.indexOf(this),1),delete this.contextMenu)}refreshState(){}clickHandler(e){this.options.onClick?.(e,this)}addEventListeners(){let e=e=>{this.clickHandler(e)};this.buttonEl?.addEventListener("click",e),this.eventListenerDestroyers.push(()=>{this.buttonEl?.removeEventListener("click",e)})}removeEventListeners(){for(let e of this.eventListenerDestroyers)e();this.eventListenerDestroyers.length=0}},{addEvent:iH}=B,iF=class extends iP{constructor(e){super({label:e.filter,icon:"filter",chevron:!0})}refreshState(){let e=this.contextMenu?.button.toolbar?.column;e&&this.setActive(iv(e))}addEventListeners(){super.addEventListeners();let e=this.contextMenu?.button.toolbar;e&&this.eventListenerDestroyers.push(iH(e.column,"afterFilter",()=>{this.refreshState()}))}clickHandler(e){super.clickHandler(e);let t=this.contextMenu?.button.toolbar?.column.filtering;t&&(this.popup||(this.popup=new iR(t,this,{nextToAnchor:!0})),this.popup.toggle(this.wrapper))}},{addEvent:iB}=B,iz=class extends iP{constructor(e,t){super({icon:"asc"===t?"sortAsc":"sortDesc"}),this.direction=t,this.baseLabel=e["asc"===t?"sortAscending":"sortDescending"]||"",this.options.label=this.baseLabel}refreshState(){let e=this.contextMenu?.button?.toolbar?.column;if(!e)return;let t=iC(e,this.direction);this.setActive(t),this.updateLabelWithPriority(t?e:void 0)}updateLabelWithPriority(e){if(!e)return void this.setLabel(this.baseLabel);let{currentSortings:t}=e.viewport.grid.querying.sorting,i=t||[],n=i.findIndex(t=>t.columnId===e.id),s=i.length>1&&-1!==n?n+1:void 0;s?this.setLabel(`${this.baseLabel} (${s})`):this.setLabel(this.baseLabel)}addEventListeners(){super.addEventListeners();let e=this.contextMenu?.button?.toolbar?.column;e&&this.eventListenerDestroyers.push(iB(e.viewport.grid,"afterSort",()=>this.refreshState()))}clickHandler(e){super.clickHandler(e);let t=this.contextMenu?.button?.toolbar?.column.sorting;t&&t.setOrder(this.isActive?null:this.direction,!!e?.shiftKey)}},ij=class extends ik{constructor(e,t){super(e,t),this.button=t}renderContent(){let e=this.grid.options?.lang||{},t=this.button.toolbar?.column.options||{},i=t.filtering?.enabled&&!t.filtering.inline,n=t.sorting?.enabled??t.sorting?.sortable;this.addHeader(this.button.toolbar?.column.header?.value||"",e.column),n&&(new iz(e,"desc").add(this),new iz(e,"asc").add(this),i&&this.addDivider()),i&&new iF(e||{}).add(this)}},{addEvent:iW}=B,iU=class extends iw{constructor(){super({icon:"menu",classNameKey:"headerCellMenuIcon"})}clickHandler(e){super.clickHandler(e);let t=this.toolbar?.column.viewport.grid;t&&(this.popup||(this.popup=new ij(t,this)),this.popup.toggle(this.wrapper))}refreshState(){let e=this.toolbar?.column;e&&this.setActive(iC(e)||iv(e))}addEventListeners(){super.addEventListeners();let e=this.toolbar?.column;e&&this.eventListenerDestroyers.push(iW(e.viewport.grid,"afterSort",()=>{this.refreshState()}),iW(e,"afterFilter",()=>{this.refreshState()}))}},{makeHTMLElement:iV}=tF,{getStyle:iq}=B;class iK{constructor(e){this.buttons=[],this.focusCursor=0,this.eventListenerDestroyers=[],this.column=e}renderFull(){let e=this.column.options;(e.sorting?.enabled??e.sorting?.sortable)&&new ix().add(this),e.filtering?.enabled&&!e.filtering.inline&&new iI().add(this)}renderMinimized(){let e=this.column.options;((e.sorting?.enabled??e.sorting?.sortable)||e.filtering?.enabled&&!e.filtering.inline)&&new iU().add(this)}add(){let e=this.column.header;if(!e?.container)return;this.columnResizeObserver&&(this.columnResizeObserver.disconnect(),delete this.columnResizeObserver),this.columnResizeObserver=new ResizeObserver(()=>this.reflow()),this.columnResizeObserver.observe(e.container);let t=this.container=iV("div",{className:tk("headerCellIcons")});e.container.appendChild(t);let i=e=>{this.keyDownHandler(e)};t.addEventListener("keydown",i),this.eventListenerDestroyers.push(()=>{t.removeEventListener("keydown",i)})}refreshState(){for(let e of this.buttons)e.refreshState()}clearButtons(){let{buttons:e}=this;for(;e.length>0;)e[e.length-1].destroy()}reflow(){let e=this.column.getWidth()<=iK.MINIMIZED_COLUMN_WIDTH;if(e!==this.isMinimized&&(this.isMinimized=e,this.clearButtons(),e?this.renderMinimized():this.renderFull()),!e){this.isMenuCentered=void 0,this.column.header?.container?.classList.remove(tk("noWidth"));return}let t=this.column.header?.htmlElement,i=this.container,n=t?.offsetWidth||0,s=this.buttons[0]?.wrapper?.offsetWidth||0,r=n-((t&&iq(t,"padding-left",!0)||0)+(t&&iq(t,"padding-right",!0)||0))<s+((i&&iq(i,"margin-left",!0)||0)+(i&&iq(i,"margin-right",!0)||0));this.isMenuCentered!==r&&(this.isMenuCentered=r,this.column.header?.container?.classList.toggle(tk("noWidth"),r))}destroy(){for(let e of this.eventListenerDestroyers)e();this.eventListenerDestroyers.length=0,this.clearButtons(),this.columnResizeObserver?.disconnect(),delete this.columnResizeObserver}focus(){this.buttons[0]?.focus()}keyDownHandler(e){let t=this.buttons.length,i=this.focusCursor;switch(e.key){case"ArrowUp":case"ArrowLeft":this.buttons[Math.abs((i-1+t)%t)].focus();break;case"ArrowDown":case"ArrowRight":this.buttons[(i+1)%t].focus();break;case"Escape":this.column.header?.htmlElement.focus()}}}iK.MINIMIZED_COLUMN_WIDTH=120;let{makeHTMLElement:iY,setHTMLContent:i$,createOptionsProxy:iG}=tF,{fireEvent:i_,isString:iZ}=B,iX=class extends iu{constructor(e,t,i){super(e,t),this.superColumnOptions={},this.columns=[],this.value="";const n=this.row.viewport.header;if(!n)throw Error("No header found.");if(this.tableHeader=n,t)t.header=this,this.columns.push(t);else if(i){const e=this.row.viewport;for(const t of e.grid.getColumnIds(i,!0)){const i=e.getColumn(t);i&&this.columns.push(i)}}}init(){let e=document.createElement("th",{});return e.classList.add(tk("headerCell")),e.setAttribute("role","columnheader"),e}render(){let{column:e}=this,t=iG(this.superColumnOptions,e?.options),i=t.header||{};e&&i.formatter?this.value=i.formatter.call(e).toString():iZ(i.format)?this.value=e?e.format(i.format):i.format:this.value=e?.id||"",this.row.htmlElement.appendChild(this.htmlElement);let n=this.container=iY("div",{className:tk("headerCellContainer")},this.htmlElement);this.headerContent=iY("span",{className:tk("headerCellContent")},n),i$(this.headerContent,this.value),this.htmlElement.setAttribute("scope","col"),this.superColumnOptions.className&&this.htmlElement.classList.add(...this.superColumnOptions.className.split(/\s+/g)),e&&(this.htmlElement.setAttribute("data-column-id",e.id),this.htmlElement.setAttribute("aria-label",e.id),e.options.className&&this.htmlElement.classList.add(...e.options.className.split(/\s+/g)),e.viewport.columnsResizer?.renderColumnDragHandles(e,this),this.toolbar=new iK(e),this.toolbar.add(),this.initColumnSorting()),this.htmlElement.classList[e?.dataType==="number"?"add":"remove"](tk("rightAlign")),this.setCustomClassName(t.header?.className),i_(this,"afterRender",{column:e})}reflow(){let e=this.htmlElement;if(!e)return;let t=0;for(let e of this.columns)t+=e.getWidth()||0;e.style.width=e.style.maxWidth=t+"px",this.toolbar?.reflow()}onKeyDown(e){if(this.column&&e.target===this.htmlElement){if("Enter"===e.key){this.toolbar?.focus(),e.preventDefault();return}super.onKeyDown(e)}}onClick(e){let t=this.column;!t||e.target!==this.htmlElement&&e.target!==t.header?.headerContent||t.viewport.columnsResizer?.isResizing||((t.options.sorting?.enabled??t.options.sorting?.sortable)&&t.sorting?.toggle(e),i_(this,"click",{originalEvent:e,column:this.column}))}initColumnSorting(){let{column:e}=this;e&&(e.sorting=new ip(e,this.htmlElement))}isLastColumn(){let e=this.row.viewport;return e.columns[e.columns.length-1]===this.columns?.[this.columns.length-1]}destroy(){this.toolbar?.destroy(),super.destroy()}},{isString:iJ}=B,iQ=class extends id{constructor(e,t){super(e),this.level=t,this.setRowAttributes()}createCell(e,t){return new iX(this,e,t)}renderContent(e){let t=this.viewport.grid.options?.header,i=this.viewport,n=i.grid.enabledColumns||[];if(i.theadElement?.appendChild(this.htmlElement),this.htmlElement.classList.add(tk("headerRow")),t){let s=this.getColumnsAtLevel(t,e);for(let t=0,r=s.length;t<r;t++){let r=s[t],o="string"==typeof r,l=!o&&r.columns?i.grid.getColumnIds(r.columns).length:0,a=o?r:r.columnId,d=a?i.getColumn(a||""):void 0,h=o?void 0:r.format,u=o?void 0:r.className;if(a&&n&&0>n.indexOf(a)||!d&&0===l)continue;let c=this.createCell(d,o?void 0:r.columns);o||i.grid.accessibility?.addHeaderCellDescription(c.htmlElement,r.accessibility?.description),iJ(h)&&(c.superColumnOptions.header||(c.superColumnOptions.header={}),c.superColumnOptions.header.format=h),u&&(c.superColumnOptions.className=u),d?.index===0&&0===t&&c.htmlElement.classList.add(tk("columnFirst")),c.render(),a?c.htmlElement.setAttribute("rowSpan",(this.viewport.header?.levels||1)-e):l>1&&c.htmlElement.setAttribute("colSpan",l)}}else super.render();this.setLastCellClass()}reflow(){for(let e=0,t=this.cells.length;e<t;e++)this.cells[e].reflow()}setLastCellClass(){let e=this.cells[this.cells.length-1];e.isLastColumn()&&e.htmlElement.classList.add(tk("lastHeaderCellInRow"))}getColumnsAtLevel(e,t,i=0){let n=[];for(let s of e)i===t&&n.push(s),"string"!=typeof s&&s.columns&&(n=n.concat(this.getColumnsAtLevel(s.columns,t,i+1)));return n}setRowAttributes(){this.viewport.grid.accessibility?.setRowIndex(this.htmlElement,this.level)}},{fireEvent:i0}=B,i1=class extends iX{constructor(e,t){const i=t.header;super(e,t),t.header=i}render(){let{column:e}=this;e&&(this.row.htmlElement.appendChild(this.htmlElement),this.htmlElement.setAttribute("scope","col"),this.htmlElement.setAttribute("data-column-id",e.id),e.options.className&&this.htmlElement.classList.add(...e.options.className.split(/\s+/g)),this.setCustomClassName(e.options.header?.className),i0(this,"afterRender",{column:e,filtering:!0}))}onKeyDown(e){this.column.filtering?.onKeyDown(e),e.target===this.htmlElement?"Enter"===e.key?this.column.filtering?.filterSelect?.focus():super.onKeyDown(e):"Escape"===e.key&&this.htmlElement.focus()}onClick(e){e.target===this.htmlElement&&this.htmlElement.focus()}},i3=class extends iQ{constructor(e){super(e,(e.header?.levels??0)+1)}createCell(e){return new i1(this,e)}renderContent(){let e=this.viewport,t=e.grid.enabledColumns||[];e.theadElement?.appendChild(this.htmlElement),this.htmlElement.classList.add(tk("headerRow"));for(let i=0,n=e.columns.length;i<n;i++){let n=e.columns[i];if(t?.indexOf(n.id)<0)continue;let s=this.createCell(n);s.render(),n.options.filtering?.inline&&n.filtering?.renderFilteringContent(s.htmlElement)}let i=this.cells[0];i.column?.index===0&&this.cells[0].htmlElement.classList.add(tk("columnFirst")),this.setLastCellClass()}},i6=class{constructor(e){this.columns=[],this.rows=[],this.levels=1,this.viewport=e,this.columns=e.columns,e.grid.options?.header&&(this.levels=this.getRowLevels(e.grid.options?.header))}render(){let e=this.viewport;if(e.grid.enabledColumns){for(let t=0,i=this.levels;t<i;t++){let i=new iQ(e,t+1);i.renderContent(t),this.rows.push(i)}if(e.columns.some(e=>e.options.filtering?.enabled&&e.options.filtering.inline||!1)){let t=new i3(e);t.renderContent(),this.rows.push(t)}}}reflow(){let e=this.viewport;if(!e.theadElement)return;let{clientWidth:t,offsetWidth:i}=e.tbodyElement;for(let e of this.rows)e.reflow();e.rowsWidth&&(e.theadElement.style.width=Math.max(e.rowsWidth,t)+(i-t)+"px")}getRowLevels(e){let t=0;for(let i of e)if("string"!=typeof i&&i.columns){let e=this.getRowLevels(i.columns);e>t&&(t=e)}return t+1}scrollHorizontally(e){let t=this.viewport.theadElement;t&&(t.style.transform=`translateX(${-e}px)`)}destroy(){for(let e of this.rows)e.destroy()}},{fireEvent:i2}=B,i5=class extends iu{constructor(e,t){super(e,t),this.column=t,this.row=e,this.column.registerCell(this)}render(){super.render(),this.setValue()}async editValue(e){this.value!==e&&(i2(this,"beforeEditValue"),await this.setValue(e,!0),i2(this,"afterEditValue"))}async setValue(e=this.column.data?.[this.row.index],t=!1){this.value=e,t&&await this.updateDataTable()||(this.content?this.content.update():this.content=this.column.createCellContent(this),this.htmlElement.setAttribute("data-value",this.value+""),this.htmlElement.classList["number"===this.column.dataType?"add":"remove"](tk("rightAlign")),this.setCustomClassName(this.column.options.cells?.className),i2(this,"afterRender",{target:this}))}async updateDataTable(){if(this.column.data?.[this.row.index]===this.value)return!1;let e=this.column.viewport,{dataTable:t}=e.grid,i=this.row.id&&t?.getLocalRowIndex(this.row.id);return!!t&&void 0!==i&&(this.row.data[this.column.id]=this.value,t.setCell(this.column.id,i,this.value),e.grid.dataTable!==e.grid.presentationTable&&(await e.updateRows(),!0))}initEvents(){this.cellEvents.push(["blur",()=>this.onBlur()]),this.cellEvents.push(["focus",()=>this.onFocus()]),this.cellEvents.forEach(e=>{this.htmlElement.addEventListener(e[0],e[1])})}onFocus(){super.onFocus(),this.row.viewport.focusCursor=[this.row.index,this.column.index]}onMouseDown(e){e.target===this.htmlElement&&this.htmlElement.focus(),i2(this,"mouseDown",{target:this,originalEvent:e})}onMouseOver(){this.row.viewport.grid.hoverRow(this.row.index),super.onMouseOver()}onMouseOut(){this.row.viewport.grid.hoverRow(),super.onMouseOut()}onDblClick(e){i2(this,"dblClick",{target:this,originalEvent:e})}onClick(){i2(this,"click",{target:this})}onKeyDown(e){e.target===this.htmlElement&&(i2(this,"keyDown",{target:this,originalEvent:e}),super.onKeyDown(e))}destroy(){this.content?.destroy(),delete this.content,super.destroy()}},i7=class extends id{constructor(e,t){super(e),this.data={},this.translateY=0,this.index=t,this.id=e.dataTable.getOriginalRowIndex(t),this.loadData(),this.setRowAttributes()}createCell(e){return new i5(this,e)}loadData(){let e=this.viewport.dataTable.getRowObject(this.index);e&&(this.data=e)}update(){this.id=this.viewport.dataTable.getOriginalRowIndex(this.index),this.updateRowAttributes(),this.loadData();for(let e=0,t=this.cells.length;e<t;++e)this.cells[e].setValue();this.reflow()}reuse(e,t=!0){if(this.index===e)return void this.update();this.index=e,this.id=this.viewport.dataTable.getOriginalRowIndex(e),this.htmlElement.setAttribute("data-row-index",e),this.updateRowAttributes(),this.updateParityClass(),this.updateStateClasses(),this.loadData();for(let e=0,t=this.cells.length;e<t;++e)this.cells[e].setValue();t&&this.reflow()}setHoveredState(e){this.htmlElement.classList[e?"add":"remove"](tk("hoveredRow")),e&&(this.viewport.grid.hoveredRowIndex=this.index)}setSyncedState(e){this.htmlElement.classList[e?"add":"remove"](tk("syncedRow")),e&&(this.viewport.grid.syncedRowIndex=this.index)}setRowAttributes(){let e=this.index,t=this.htmlElement;t.classList.add(tk("rowElement")),t.setAttribute("data-row-index",e),this.updateRowAttributes(),this.updateParityClass(),this.updateStateClasses()}updateRowAttributes(){let e=this.viewport,t=e.grid.accessibility,i=this.index,n=this.htmlElement;void 0!==this.id&&n.setAttribute("data-row-id",this.id),t?.setRowIndex(n,i+(e.header?.rows.length??0)+1)}updateParityClass(){let e=this.htmlElement;e.classList.remove(tk("rowEven"),tk("rowOdd")),e.classList.add(tk(this.index%2?"rowEven":"rowOdd"))}updateStateClasses(){let e=this.htmlElement;e.classList.remove(tk("hoveredRow"),tk("syncedRow")),this.viewport.grid.hoveredRowIndex===this.index&&e.classList.add(tk("hoveredRow")),this.viewport.grid.syncedRowIndex===this.index&&e.classList.add(tk("syncedRow"))}setTranslateY(e){this.translateY=e,this.htmlElement.style.transform=`translateY(${e}px)`}getDefaultTopOffset(){return this.index*this.viewport.rowsVirtualizer.defaultRowHeight}};class i4{constructor(e){this.rowCursor=0,this.preventScroll=!1,this.rowPool=[],this.scrollQueued=!1,this.rowSettings=e.grid.options?.rendering?.rows,this.viewport=e,this.strictRowHeights=this.rowSettings.strictHeights,this.buffer=Math.max(this.rowSettings.bufferSize,0),this.defaultRowHeight=this.getDefaultRowHeight(),this.strictRowHeights&&e.tbodyElement.classList.add(tk("rowsContentNowrap"))}initialRender(){this.viewport.virtualRows&&this.viewport.reflow(),this.renderRows(this.rowCursor),this.adjustRowHeights()}rerender(){let e,t=this.viewport.tbodyElement,i=this.viewport.rows,n=t.scrollLeft;if(this.rowPool.length){for(let e=this.rowPool.length-1;e>=0;--e)this.rowPool[e].destroy();this.rowPool.length=0}if(i.length){e=t.scrollTop;for(let e=0,t=i.length;e<t;++e)i[e].destroy();i.length=0}this.renderRows(this.rowCursor),this.viewport.virtualRows&&(void 0!==e&&(t.scrollTop=e),this.scroll()),i=this.viewport.rows;for(let e=0,t=i.length;e<t;++e)i[e].reflow();t.scrollLeft=n}scroll(){this.scrollQueued||(this.scrollQueued=!0,requestAnimationFrame(()=>{this.scrollQueued=!1,this.applyScroll()}))}applyScroll(){let e=this.viewport.tbodyElement,{defaultRowHeight:t}=this,i=e.scrollTop;if(this.preventScroll){i<=e.scrollTop&&(this.preventScroll=!1),this.adjustBottomRowHeights();return}let n=Math.floor(e.scrollTop/t);this.rowCursor!==n&&this.renderRows(n),this.rowCursor=n,this.adjustRowHeights(),this.strictRowHeights||!(i>e.scrollTop)||this.preventScroll||(e.scrollTop=i,this.preventScroll=!0)}adjustBottomRowHeights(){let e=this.viewport.rows,t=e.length,i=e[t-1],n=i.translateY,s=n+i.htmlElement.offsetHeight,r=i.cells[0].htmlElement.offsetHeight;n=s-r,i.htmlElement.style.height=r+"px",i.setTranslateY(n);for(let e=0,t=i.cells.length;e<t;++e)i.cells[e].htmlElement.style.transform="";for(let i=t-2;i>=0;i--){let t=e[i];n-=r=t.cells[0].htmlElement.offsetHeight,t.htmlElement.style.height=r+"px",t.setTranslateY(n);for(let e=0,i=t.cells.length;e<i;++e)t.cells[e].htmlElement.style.transform=""}}renderRows(e){let{viewport:t,buffer:i}=this,n=t.dataTable.getRowCount();if(n<1)return;let s=this.viewport.virtualRows,r=s?Math.ceil((t.grid.tableElement?.clientHeight||0)/this.defaultRowHeight):1/0,o=t.rows;if(!s&&o.length>50&&console.warn("Grid: a large dataset can cause performance issues when virtualization is disabled. Consider enabling virtualization in the rows settings."),!o.length){let e=new i7(t,n-1);t.tbodyElement.appendChild(e.htmlElement),e.render(),o.push(e),s&&e.setTranslateY(e.getDefaultTopOffset())}let l=Math.max(0,Math.min(e-i,n-r)),a=Math.min(e+r+i,o[o.length-1].index-1),d=o.pop(),h=[],u=o[0]?.index,c=o[o.length-1]?.index;if(o.length>0&&void 0!==u&&void 0!==c&&!(a<u||l>c)){for(;o.length&&o[0].index<l;)this.poolRow(o.shift());for(;o.length&&o[o.length-1].index>a;)this.poolRow(o.pop());if(o.length){for(let e=o[0].index-1;e>=l;--e)o.unshift(this.getOrCreateRow(e));for(let e=o[o.length-1].index+1;e<=a;++e)o.push(this.getOrCreateRow(e))}else for(let e=l;e<=a;++e)o.push(this.getOrCreateRow(e));t.rows=o}else{for(let e=0,t=o.length;e<t;++e){let t=o[e],i=t.index;i<l||i>a?this.poolRow(t):h.push(t)}t.rows=o=h;for(let e=l;e<=a;++e)o[e-(o[0]?.index||0)]||o.push(this.getOrCreateRow(e));o.sort((e,t)=>e.index-t.index)}for(let e=0,i=o.length;e<i;++e){let i=o[e];if(!i.rendered){t.tbodyElement.insertBefore(i.htmlElement,t.tbodyElement.lastChild),i.render();continue}i.htmlElement.isConnected||t.tbodyElement.insertBefore(i.htmlElement,t.tbodyElement.lastChild)}if(d&&o.push(d),t.focusCursor){let[e,i]=t.focusCursor,n=o.find(t=>t.index===e);n&&n.cells[i]?.htmlElement.focus({preventScroll:!0})}if((!t.focusCursor||!t.focusAnchorCell?.row.rendered)&&o.length>0){let i=e-o[0].index;o[i]&&t.setFocusAnchorCell(o[i].cells[0])}}adjustRowHeights(){if(this.strictRowHeights||!this.viewport.virtualRows)return;let{rowCursor:e,defaultRowHeight:t}=this,{rows:i,tbodyElement:n}=this.viewport,s=i.length;if(s<1)return;let r=i[0].getDefaultTopOffset();for(let r=0;r<s;++r){let s=i[r];if(s.htmlElement.style.height="",s.cells[0].htmlElement.style.transform)for(let e=0,t=s.cells.length;e<t;++e)s.cells[e].htmlElement.style.transform="";if(s.index<e){s.htmlElement.style.height=t+"px";continue}let o=s.cells[0].htmlElement.offsetHeight;if(s.htmlElement.style.height=o+"px",!(s.index>e)&&s.htmlElement.offsetHeight>t){let i=Math.floor(o-(o-t)*(n.scrollTop/t-e));s.htmlElement.style.height=i+"px";for(let e=0,t=s.cells.length;e<t;++e)s.cells[e].htmlElement.style.transform=`translateY(${i-o}px)`}}i[0].setTranslateY(r);for(let e=1,t=s-1;e<t;++e)r+=i[e-1].htmlElement.offsetHeight,i[e].setTranslateY(r);let o=i[s-1],l=i[s-2];l&&l.index===o.index-1&&o.setTranslateY(l.htmlElement.offsetHeight+r)}reflowRows(){let e=this.viewport.rows;if(!(e.length<1)){for(let t=0,i=e.length;t<i;++t)e[t].reflow();this.adjustRowHeights()}}getOrCreateRow(e){let t=this.viewport,i=t.virtualRows,n=this.rowPool.pop();if(n)return n.reuse(e,!1),i&&n.setTranslateY(n.getDefaultTopOffset()),n;let s=new i7(t,e);return s.rendered=!1,i&&s.setTranslateY(s.getDefaultTopOffset()),s}poolRow(e){e.htmlElement.remove(),this.rowPool.length<i4.MAX_POOL_SIZE?this.rowPool.push(e):e.destroy()}getDefaultRowHeight(){let e=new i7(this.viewport,0);e.htmlElement.style.position="absolute",e.htmlElement.classList.add(tk("mockedRow")),this.viewport.tbodyElement.appendChild(e.htmlElement),e.render();let t=e.htmlElement.offsetHeight;return e.destroy(),t}}i4.MAX_POOL_SIZE=100;let{makeHTMLElement:i9}=tF,{fireEvent:i8}=B,ne=class{constructor(e){this.isResizing=!1,this.handles=[],this.onDocumentMouseMove=e=>{if(!this.draggedResizeHandle||!this.draggedColumn)return;let t=e.pageX-(this.dragStartX||0),i=this.viewport;i.columnResizing.resize(this,t),i.reflow(),i.rowsVirtualizer.adjustRowHeights(),i8(this.draggedColumn,"afterResize",{target:this.draggedColumn,originalEvent:e})},this.onDocumentMouseUp=()=>{this.draggedColumn?.header?.htmlElement?.classList.remove(tk("resizedColumn")),this.draggedResizeHandle?.matches(":hover")||this.draggedResizeHandle?.classList.remove("hovered"),this.dragStartX=void 0,this.draggedColumn=void 0,this.draggedResizeHandle=void 0,this.columnStartWidth=void 0,this.nextColumnStartWidth=void 0,requestAnimationFrame(()=>{this.isResizing=!1})},this.viewport=e,document.addEventListener("mousemove",this.onDocumentMouseMove),document.addEventListener("mouseup",this.onDocumentMouseUp)}renderColumnDragHandles(e,t){let i=e.viewport;if(i.columnsResizer){let n=i9("div",{className:tk("resizerHandles")},t.htmlElement);n.setAttribute("aria-hidden",!0),i.columnsResizer?.addHandleListeners(n,e)}}addHandleListeners(e,t){let i=[{eventName:"mousedown",listener:i=>{let n=t.viewport;this.isResizing=!0,e.classList.add("hovered"),n.reflow(),this.dragStartX=i.pageX,this.draggedColumn=t,this.draggedResizeHandle=e,this.columnStartWidth=t.getWidth(),this.nextColumnStartWidth=n.columns[t.index+1]?.getWidth(),t.header?.htmlElement.classList.add(tk("resizedColumn"))}},{eventName:"mouseover",listener:()=>{this.draggedResizeHandle||e.classList.add("hovered")}},{eventName:"mouseout",listener:()=>{this.draggedResizeHandle||e.classList.remove("hovered")}}];for(let{eventName:t,listener:n}of i)e.addEventListener(t,n);this.handles.push([e,i])}removeEventListeners(){document.removeEventListener("mousemove",this.onDocumentMouseMove),document.removeEventListener("mouseup",this.onDocumentMouseUp);for(let e=0,t=this.handles.length;e<t;e++){let[t,i]=this.handles[e];for(let{eventName:e,listener:n}of i)t.removeEventListener(e,n)}}},{makeHTMLElement:nt}=tF,{fireEvent:ni,getStyle:nn,defined:ns}=B,nr=class{constructor(e,t){this.columns=[],this.rows=[],this.onTBodyFocus=e=>{e.preventDefault(),this.rows[this.rowsVirtualizer.rowCursor-this.rows[0].index]?.cells[0]?.htmlElement.focus()},this.onResize=()=>{this.reflow()},this.onScroll=()=>{this.virtualRows&&this.rowsVirtualizer.scroll(),this.header?.scrollHorizontally(this.tbodyElement.scrollLeft)},this.onCellClick=e=>{let t=this.getCellFromElement(e.target);t&&t.onClick(e)},this.onCellDblClick=e=>{let t=this.getCellFromElement(e.target);t&&"onDblClick"in t&&t.onDblClick(e)},this.onCellMouseDown=e=>{let t=this.getCellFromElement(e.target);t&&"onMouseDown"in t&&t.onMouseDown(e)},this.onCellMouseOver=e=>{let t=this.getCellFromElement(e.target);t&&t.onMouseOver()},this.onCellMouseOut=e=>{let t=this.getCellFromElement(e.target);t&&t.onMouseOut()},this.onCellKeyDown=e=>{let t=this.getCellFromElement(e.target);t&&t.onKeyDown(e)},this.grid=e,this.tableElement=t,this.dataTable=this.grid.presentationTable;const i=e.options,n=i?.rendering?.table?.className;this.columnResizing=e$.initMode(this),i?.rendering?.header?.enabled&&(this.theadElement=nt("thead",{},t)),this.tbodyElement=nt("tbody",{},t),i?.rendering?.columns?.resizing?.enabled&&(this.columnsResizer=new ne(this)),n&&t.classList.add(...n.split(/\s+/g)),t.classList.add(tk("scrollableContent")),this.loadColumns(),this.virtualRows=this.shouldVirtualizeRows(),this.virtualRows&&t.classList.add(tk("virtualization")),this.rowsVirtualizer=new i4(this),this.init(),this.resizeObserver=new ResizeObserver(this.onResize),this.resizeObserver.observe(t),this.tbodyElement.addEventListener("scroll",this.onScroll),this.tbodyElement.addEventListener("focus",this.onTBodyFocus),this.tbodyElement.addEventListener("click",this.onCellClick),this.tbodyElement.addEventListener("dblclick",this.onCellDblClick),this.tbodyElement.addEventListener("mousedown",this.onCellMouseDown),this.tbodyElement.addEventListener("mouseover",this.onCellMouseOver),this.tbodyElement.addEventListener("mouseout",this.onCellMouseOut),this.tbodyElement.addEventListener("keydown",this.onCellKeyDown)}init(){ni(this,"beforeInit"),this.setTbodyMinHeight(),this.grid.options?.rendering?.header?.enabled&&(this.header=new i6(this),this.header.render()),this.rowsVirtualizer.initialRender(),ni(this,"afterInit")}setTbodyMinHeight(){let{options:e}=this.grid,t=e?.rendering?.rows?.minVisibleRows,i=this.tbodyElement;ns(t)&&!nn(i,"min-height",!0)&&(i.style.minHeight=t*this.rowsVirtualizer.defaultRowHeight+"px")}shouldVirtualizeRows(){let{grid:e}=this,t=e.userOptions.rendering?.rows;if(ns(t?.virtualization))return t.virtualization;let i=Number(e.dataTable?.rowCount),n=t?.virtualizationThreshold??50;return e.pagination?e.querying.pagination.currentPageSize>=n:i>=n}loadColumns(){let e,{enabledColumns:t}=this.grid;if(t){for(let i=0,n=t.length;i<n;++i)e=t[i],this.columns.push(new il(this,e,i));this.columnResizing.loadColumns()}}async updateRows(){let e,t=this;t.focusCursor&&(e=t.dataTable.getOriginalRowIndex(t.focusCursor[0])),t.grid.querying.pagination.clampPage();let i=(t.rows[t.rows.length-1]?.index??-1)+1;for(let e of(await t.grid.querying.proceed(),t.dataTable=t.grid.presentationTable,t.columns))e.loadData();let n=this.shouldVirtualizeRows(),s=!1;if(this.virtualRows!==n&&(this.virtualRows=n,t.tableElement.classList.toggle(tk("virtualization"),n),s=!0),s||i!==t.dataTable.rowCount)t.rowsVirtualizer.rerender();else for(let e=0,i=t.rows.length;e<i;++e)t.rows[e].update();if(t.grid.pagination?.updateControls(),t.reflow(),void 0!==e&&t.focusCursor){let i=t.dataTable.getLocalRowIndex(e);void 0!==i&&(t.scrollToRow(i),setTimeout(()=>{ns(t.focusCursor?.[1])&&t.rows[i-t.rows[0].index]?.cells[t.focusCursor[1]].htmlElement.focus()}))}t.grid.dirtyFlags.delete("rows")}reflow(){this.columnResizing.reflow(),this.header?.reflow(),this.rowsVirtualizer.reflowRows(),this.grid.pagination?.reflow(),this.grid.popups.forEach(e=>{e.reflow()}),this.grid.dirtyFlags.delete("reflow")}scrollToRow(e){if(this.virtualRows){this.tbodyElement.scrollTop=e*this.rowsVirtualizer.defaultRowHeight;return}let t="."+tk("rowElement"),i=this.tbodyElement.querySelectorAll(t)[0].getBoundingClientRect().top;this.tbodyElement.scrollTop=this.tbodyElement.querySelectorAll(t)[e].getBoundingClientRect().top-i}getRatioFromWidth(e){return e/this.tbodyElement.clientWidth}getWidthFromRatio(e){return this.tbodyElement.clientWidth*e}getCellFromElement(e){if(!(e instanceof Element))return;let t=e.closest("td");if(!t)return;let i=t.parentElement;if(!i)return;let n=i.getAttribute("data-row-index");if(null===n)return;let s=parseInt(n,10),r=this.rows[0]?.index??0,o=this.rows[s-r];if(!o)return;let l=Array.prototype.indexOf.call(i.children,t);return o.cells[l]}destroy(){this.tbodyElement.removeEventListener("focus",this.onTBodyFocus),this.tbodyElement.removeEventListener("scroll",this.onScroll),this.tbodyElement.removeEventListener("click",this.onCellClick),this.tbodyElement.removeEventListener("dblclick",this.onCellDblClick),this.tbodyElement.removeEventListener("mousedown",this.onCellMouseDown),this.tbodyElement.removeEventListener("mouseover",this.onCellMouseOver),this.tbodyElement.removeEventListener("mouseout",this.onCellMouseOut),this.tbodyElement.removeEventListener("keydown",this.onCellKeyDown),this.resizeObserver.disconnect(),this.columnsResizer?.removeEventListeners(),this.header?.destroy();for(let e=0,t=this.rows.length;e<t;++e)this.rows[e].destroy();ni(this,"afterDestroy")}getStateMeta(){return{scrollTop:this.tbodyElement.scrollTop,scrollLeft:this.tbodyElement.scrollLeft,columnResizing:this.columnResizing,focusCursor:this.focusCursor}}applyStateMeta(e){if(this.tbodyElement.scrollTop=e.scrollTop,this.tbodyElement.scrollLeft=e.scrollLeft,e.focusCursor){let[t,i]=e.focusCursor,n=this.rows[t-this.rows[0].index];n?.cells[i]?.htmlElement.focus()}}setFocusAnchorCell(e){this.focusAnchorCell?.htmlElement.setAttribute("tabindex","-1"),this.focusAnchorCell=e,this.focusAnchorCell.htmlElement.setAttribute("tabindex","0")}getColumn(e){let t=this.grid.enabledColumns;if(!t)return;let i=t.indexOf(e);if(!(i<0))return this.columns[i]}getRow(e){return this.rows.find(t=>t.id===e)}},{addEvent:no,fireEvent:nl,merge:na}=B;class nd extends eJ{constructor(e,...t){super(),this.chain=t,this.options=na(nd.defaultOptions,e);const i=this.options.chain||[];for(let e=0,n=i.length,s,r;e<n;++e)(s=i[e]).type&&(r=eJ.types[s.type])&&t.push(new r(s))}add(e,t){this.emit({type:"addModifier",detail:t,modifier:e}),this.chain.push(e),this.emit({type:"addModifier",detail:t,modifier:e})}clear(e){this.emit({type:"clearChain",detail:e}),this.chain.length=0,this.emit({type:"afterClearChain",detail:e})}async modify(e,t){let i=this.options.reverse?this.chain.slice().reverse():this.chain.slice();e.modified||(e.modified=e.clone(!1,t));let n=e;for(let s=0,r=i.length;s<r;++s){try{await i[s].modify(n,t)}catch(i){throw this.emit({type:"error",detail:t,table:e}),i}n=n.getModified()}return e.modified=n,e}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let i=this.options.reverse?this.chain.reverse():this.chain.slice(),n=e.getModified();for(let e=0,s=i.length;e<s;++e)n=i[e].modifyTable(n,t).getModified();return e.modified=n,this.emit({type:"afterModify",detail:t,table:e}),e}remove(e,t){let i=this.chain;this.emit({type:"removeModifier",detail:t,modifier:e}),i.splice(i.indexOf(e),1),this.emit({type:"afterRemoveModifier",detail:t,modifier:e})}emit(e){nl(this,e.type,e)}on(e,t){return no(this,e,t)}}nd.defaultOptions={type:"Chain"},eJ.registerType("Chain",nd);let{merge:nh}=B;class nu extends eJ{static ascending(e,t){return(e||0)<(t||0)?-1:+((e||0)>(t||0))}static descending(e,t){return(t||0)<(e||0)?-1:+((t||0)>(e||0))}static compareFactory(e,t){return t?"desc"===e?(e,i)=>-t(e,i):t:"asc"===e?nu.ascending:nu.descending}constructor(e){super(),this.options=nh(nu.defaultOptions,e)}getRowReferences(e){let t=e.getRows(),i=[];for(let e=0,n=t.length;e<n;++e)i.push({index:e,row:t[e]});return i}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let i=e.getColumnIds(),n=e.getRowCount(),s=this.getRowReferences(e),{direction:r,orderInColumn:o,compare:l}=this.options,a=e.getModified(),d="columns"in this.options?this.options.columns:[this.options.orderByColumn],h=[];for(let e=0,t=d.length;e<t;++e){let t=d[e],n="string"==typeof t,s=n?t:t.column,o=i.indexOf(s);-1!==o&&h.push({columnIndex:o,compare:nu.compareFactory(n?r:t.direction||r,n?l:t.compare||l)})}if(h.length&&s.sort((e,t)=>{for(let i=0,n=h.length;i<n;++i){let{columnIndex:n,compare:s}=h[i],r=s(e.row[n],t.row[n]);if(r)return r}return e.index-t.index}),o){let e=[];for(let t=0;t<n;++t)e[s[t].index]=t;a.setColumns({[o]:e})}else{let t,i=[],r=[];for(let o=0;o<n;++o)t=s[o],i.push(e.getOriginalRowIndex(t.index)),r.push(t.row);a.setRows(r,0),a.setOriginalRowIndexes(i)}return this.emit({type:"afterModify",detail:t,table:e}),e}}nu.defaultOptions={type:"Sort",direction:"desc",orderByColumn:"y"},eJ.registerType("Sort",nu);class nc{constructor(e){this.querying=e}setSorting(e,t){if(Array.isArray(e)){let t=e.filter(e=>!!(e.columnId&&e.order)).map(e=>({columnId:e.columnId,order:e.order})),i=this.currentSortings||[];nc.sortingsEqual(t,i)||(this.querying.shouldBeUpdated=!0,this.currentSortings=t,this.currentSorting=t[0]||{order:null}),this.modifier=this.createModifier();return}(this.currentSorting?.columnId!==t||this.currentSorting?.order!==e)&&(this.querying.shouldBeUpdated=!0,this.currentSorting={columnId:t,order:e},this.currentSortings=e&&t?[{columnId:t,order:e}]:[]),this.modifier=this.createModifier()}static sortingsEqual(e,t){if(e.length!==t.length)return!1;for(let i=0,n=e.length;i<n;++i)if(e[i].columnId!==t[i].columnId||e[i].order!==t[i].order)return!1;return!0}getSortingOptions(){let{columnOptionsMap:e}=this.querying.grid;if(!e)return[];let t=Object.keys(e),i=[];for(let n=0,s=t.length;n<s;++n){let s=t[n],r=e[s]?.options||{},o=r.sorting?.order;o&&i.push({columnId:s,order:o,priority:r.sorting?.priority,index:n})}return i.some(e=>"number"==typeof e.priority)?i.sort((e,t)=>{let i="number"==typeof e.priority?e.priority:1/0,n="number"==typeof t.priority?t.priority:1/0;return i!==n?i-n:e.index-t.index}):i.reverse(),i.map(e=>({columnId:e.columnId,order:e.order}))}loadOptions(){let e=this.getSortingOptions();nc.sortingsEqual(e,this.currentSortings||[])||this.setSorting(e)}createModifier(){let e=(this.currentSortings||(this.currentSorting?[this.currentSorting]:[])).filter(e=>!!(e.columnId&&e.order));if(!e.length)return;let t=this.querying.grid,i=t.options?.columnDefaults?.sorting?.compare;return new nu({direction:e[0].order,columns:e.map(e=>({column:e.columnId,direction:e.order,compare:t.columnOptionsMap?.[e.columnId]?.options?.sorting?.compare||i}))})}}let{isFunction:np,merge:nm}=B;class ng extends eJ{static compile(e){if(np(e))return e;let t=e.operator;switch(t){case"and":{let t=e.conditions.map(e=>this.compile(e));return(e,i,n)=>t.every(t=>t(e,i,n))}case"or":{let t=e.conditions.map(e=>this.compile(e));return(e,i,n)=>t.some(t=>t(e,i,n))}case"not":{let t=this.compile(e.condition);return(e,i,n)=>!t(e,i,n)}}let{columnId:i,value:n}=e;switch(t){case"==":return e=>e[i]==n;case"===":return e=>e[i]===n;case"!=":return e=>e[i]!=n;case"!==":return e=>e[i]!==n;case">":return e=>(e[i]||0)>(n||0);case">=":return e=>(e[i]||0)>=(n||0);case"<":return e=>(e[i]||0)<(n||0);case"<=":return e=>(e[i]||0)<=(n||0);case"empty":return e=>null===e[i]||""===e[i]}let{ignoreCase:s}=e,r=e=>{let t=""+e;return s??!0?t.toLowerCase():t};return"contains"===t?e=>r(e[i]).includes(r(n)):e=>r(e[i])[t](r(n))}constructor(e){super(),this.options=nm(ng.defaultOptions,e)}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let{condition:i}=this.options;if(!i)return e;let n=ng.compile(i),s=e.getModified(),r=[],o=[];for(let t=0,i=e.getRowCount();t<i;++t){let i=e.getRowObject(t);i&&n(i,e,t)&&(r.push(i),o.push(e.getOriginalRowIndex(t)))}return s.deleteRows(),s.setRows(r),s.setOriginalRowIndexes(o),this.emit({type:"afterModify",detail:t,table:e}),e}}ng.defaultOptions={type:"Filter"},eJ.registerType("Filter",ng);let{isString:nf}=B;class ny{constructor(e){this.columnConditions={},this.querying=e}static mapOptionsToFilter(e,t){let{condition:i,value:n}=t,s=nf(n),r=s?n:"";if(void 0!==n&&(!s||r)||["empty","notEmpty","true","false"].includes(i??""))switch(i){case"contains":return{columnId:e,operator:"contains",value:r};case"doesNotContain":return{operator:"not",condition:{columnId:e,operator:"contains",value:r}};case"equals":return{columnId:e,operator:"===",value:n};case"doesNotEqual":return{columnId:e,operator:"!==",value:n};case"beginsWith":return{columnId:e,operator:"startsWith",value:r};case"endsWith":return{columnId:e,operator:"endsWith",value:r};case"greaterThan":case"after":return{columnId:e,operator:">",value:n};case"greaterThanOrEqualTo":return{columnId:e,operator:">=",value:n};case"lessThan":case"before":return{columnId:e,operator:"<",value:n};case"lessThanOrEqualTo":return{columnId:e,operator:"<=",value:n};case"empty":return{columnId:e,operator:"empty",value:n};case"notEmpty":return{operator:"not",condition:{columnId:e,operator:"empty",value:n}};case"true":return{columnId:e,operator:"===",value:!0};case"false":return{columnId:e,operator:"===",value:!1}}}loadOptions(){let e=this.querying.grid.columnOptionsMap,t={};if(e){let i=Object.keys(e);for(let n=0,s=i.length;n<s;++n){let s=i[n],r=e[s]?.options?.filtering;if(!r)continue;let o=ny.mapOptionsToFilter(s,r);o&&(t[s]=o)}}this.columnConditions=t,this.updateModifier()}addColumnFilterCondition(e,t){let i=ny.mapOptionsToFilter(e,t);i?this.columnConditions[e]=i:delete this.columnConditions[e],this.updateModifier()}clearColumnFiltering(e){e?delete this.columnConditions[e]:this.columnConditions={},this.updateModifier()}updateModifier(){let e=Object.values(this.columnConditions);(this.querying.shouldBeUpdated=!0,e.length<1)?delete this.modifier:this.modifier=new ng({condition:{operator:"and",conditions:e}})}}let{merge:nb}=B;class nw extends eJ{constructor(e){super(),this.options=nb(nw.defaultOptions,e)}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let{start:i,end:n}=this.options;i=Math.max(0,i||0);let s=Math.max((n=Math.min(n||1/0,e.getRowCount()))-i,0),r=e.getModified();return r.deleteRows(),r.setRows(e.getRows(i,s)),r.setOriginalRowIndexes(Array.from({length:s},(t,n)=>e.getOriginalRowIndex(i+n))),this.emit({type:"afterModify",detail:t,table:e}),e}}nw.defaultOptions={type:"Range",start:0,end:1/0},eJ.registerType("Range",nw);let nv=class{constructor(e){this.currentPage=1,this.currentPageSize=10,this.querying=e,this.enabled=!!e.grid.options?.pagination?.enabled}get totalItems(){return this._totalItems??this.querying.grid.dataTable?.rowCount??0}get totalPages(){return this.currentPageSize>0?Math.ceil(this.totalItems/this.currentPageSize):1}clampPage(){this.currentPage<=this.totalPages||(this.currentPage=this.totalPages,this.querying.shouldBeUpdated=!0)}setPage(e){this.currentPage=e,this.clampPage(),this.querying.shouldBeUpdated=!0}setPageSize(e){this.currentPageSize=e,this.querying.shouldBeUpdated=!0}loadOptions(){let e=this.querying.grid.options?.pagination||{};!e.enabled===this.enabled&&(this.enabled=!!e.enabled,this.querying.shouldBeUpdated=!0),this.currentPageSize!==e.pageSize&&this.setPageSize(e.pageSize??this.currentPageSize),this.currentPage!==e.page&&this.setPage(e.page??this.currentPage)}createModifier(e=this.querying.grid.dataTable?.rowCount||0){if(!this.enabled)return;let t=this.currentPage,i=this.currentPageSize,n=(t-1)*i,s=Math.min(n+i,e);return this._totalItems=e,new nw({start:n,end:s})}},nC=class{constructor(e){this.shouldBeUpdated=!1,this.grid=e,this.filtering=new ny(this),this.sorting=new nc(this),this.pagination=new nv(this)}async proceed(e=!1){(e||this.shouldBeUpdated)&&await this.modifyData()}loadOptions(){this.filtering.loadOptions(),this.sorting.loadOptions(),this.pagination.loadOptions()}willNotModify(){return!this.sorting.modifier&&!this.filtering.modifier}getGroupedModifiers(){let e=[];return this.sorting.modifier&&e.push(this.sorting.modifier),this.filtering.modifier&&e.push(this.filtering.modifier),e}async modifyData(){let e,t=this.grid.dataTable;if(!t)return;let i=this.getGroupedModifiers();if(i.length>0){let n=new nd({},...i),s=t.clone();await n.modify(s.getModified()),e=s.getModified()}else e=t.getModified();let n=this.pagination.createModifier(e.rowCount);n&&(e=e.clone(),await n.modify(e),e=e.getModified()),this.grid.presentationTable=e,this.shouldBeUpdated=!1}},{makeHTMLElement:nE,setHTMLContent:nT,createOptionsProxy:nx}=tF,{defined:nS,diffObjects:nL,extend:nO,fireEvent:nM,merge:nR,pick:nA}=B;class nI{static grid(e,t,i){return i?new Promise(i=>{new nI(e,t,e=>{i(e)})}):new nI(e,t)}constructor(e,t,i){this.columnOptionsMap={},this.userOptions={},this.initialContainerHeight=0,this.popups=new Set,this.dataTableEventDestructors=[],this.isRendered=!1,this.dirtyFlags=new Set,this.renderTo=e,this.loadUserOptions(t),this.id=this.options?.id||B.uniqueKey(),this.querying=new nC(this),this.locale=this.options?.lang?.locale||this.container?.closest("[lang]")?.lang,this.time=new em(nO(this.options?.time,{locale:this.locale}),this.options?.lang),nM(this,"beforeLoad"),nI.grids.push(this),this.render().then(()=>{i?.(this),nM(this,"afterLoad")})}initAccessibility(){this.accessibility?.destroy(),delete this.accessibility,this.options?.accessibility?.enabled&&(this.accessibility=new tJ(this))}initPagination(){this.pagination?.destroy(),delete this.pagination,this.options?.pagination?.enabled&&(this.pagination=new t5(this))}initContainer(e){let t="string"==typeof e?tA.document.getElementById(e):e;if(!t)throw Error("Rendering div not found. It is unable to find the HTML element to render the Grid in.");this.container=t,this.container.style.minHeight="0px",this.container.innerHTML=J.emptyHTML,this.contentWrapper=nE("div",{className:tk("container")},this.container)}loadUserOptions(e,t=!1){e=nR(e);let i={};return e.columns&&(t?i.columns=this.setColumnOptionsOneToOne(e.columns):i.columns=this.setColumnOptions(e.columns),delete e.columns),i.columns&&Object.keys(i.columns).length<1&&delete i.columns,nR(!0,i,nL(e,this.userOptions)),this.userOptions=nR(this.userOptions,e),this.options=nR(this.options??t4,this.userOptions),this.viewport?.columns.forEach(e=>{e.options=nx(this.columnOptionsMap?.[e.id]?.options??{},this.options?.columnDefaults)}),i}reloadColumnOptions(){let e=this.userOptions.columns;if(!e){this.columnOptionsMap={};return}if(e.length<1){delete this.userOptions.columns,this.columnOptionsMap={};return}let t={};for(let i=0,n=e.length;i<n;++i)t[e[i].id]={index:i,options:e[i]};this.columnOptionsMap=t}setColumnOptions(e,t=!1){let i={};this.userOptions.columns||(this.userOptions.columns=this.options?.columns??[]);let n=this.userOptions.columns;for(let s=0,r=e.length;s<r;++s){let r,o=e[s],l=this.columnOptionsMap?.[o.id]?.index??-1;if(Object.keys(o).length<2){t&&-1!==l&&(i[o.id]=nL(n[l],{id:o.id},!0),n.splice(l,1));continue}if(-1===l)r=nR(o),n.push(o);else if(t){let e=n[l];r=nR(nL(e,o,!0),nL(o,e)),n[l]=o}else{let e=n[l];r=nL(o,e),nR(!0,e,o)}delete r.id,Object.keys(r).length>0&&(i[o.id]=r)}return this.reloadColumnOptions(),i}setColumnOptionsOneToOne(e){let t,i=this.userOptions.columns,n=[],s={};for(let r=0,o=e.length;r<o;++r){let o=e[r],l=i?.findIndex(e=>e.id===o.id);void 0!==l&&-1!==l&&(t=i?.[l]);let a=nL(o,t??{});Object.keys(a).length>0&&(delete a.id,s[o.id]=a);let d=nR(t??{},o);Object.keys(d).length>1&&n.push(d)}return this.userOptions.columns=n,this.reloadColumnOptions(),s}async update(e={},t=!0,i=!1){nM(this,"beforeUpdate",{scope:"grid",options:e,redraw:t,oneToOne:i});let{viewport:n}=this,s=this.loadUserOptions(e,i),r=this.dirtyFlags;if(n){if((!this.dataTable||"dataTable"in s)&&(this.userOptions.dataTable=e.dataTable,(this.options??{}).dataTable=e.dataTable,this.loadDataTable(),r.add("grid")),"columns"in s){for(let e of Object.keys(s.columns??{}))this.loadColumnOptionDiffs(n,e,s.columns?.[e]),delete s.columns?.[e];delete s.columns}if("columnDefaults"in s&&(this.loadColumnOptionDiffs(n,null,s.columnDefaults),delete s.columnDefaults),s.lang){let e=s.lang;"locale"in e&&(this.locale=e.locale,this.time.update({locale:this.locale})),delete e.locale,Object.keys(e).length>0&&r.add("grid")}if(delete s.lang,"time"in s&&(this.time.update(s.time),delete s.time),s.pagination){let e=s.pagination;"enabled"in e&&!this.pagination&&e.enabled&&(this.pagination=new t5(this)),this.pagination?.update(e)}delete s.pagination,Object.keys(s).length>0&&r.add("grid")}else r.add("grid");t&&await this.redraw(),nM(this,"afterUpdate",{scope:"grid",options:e,redraw:t,oneToOne:i})}loadColumnOptionDiffs(e,t,i={}){if(Object.keys(i).length<1)return;let n=this.dirtyFlags,s=t?this.viewport?.getColumn(t):null;if(null!==s&&(!s&&!1!==i.enabled||s&&!1===i.enabled)&&n.add("grid"),delete i.enabled,"cells"in i){let e=i.cells??{};("format"in e||"formatter"in e||"className"in e)&&n.add("rows"),delete e.format,delete e.formatter,delete e.className,Object.keys(e).length>0&&n.add("rows")}if(delete i.cells,"width"in i&&(e.columnResizing.isDirty=!0),delete i.width,"sorting"in i){let e=i.sorting??{};("compare"in e||"order"in e)&&n.add("sorting"),delete e.compare,delete e.order,Object.keys(e).length>0&&n.add("grid")}if(delete i.sorting,"filtering"in i){let e=i.filtering??{};("condition"in e||"value"in e)&&n.add("filtering"),delete e.condition,delete e.value,Object.keys(e).length>0&&n.add("grid")}delete i.filtering,Object.keys(i).length>0&&n.add("grid")}async redraw(){nM(this,"beforeRedraw");let e=this.dirtyFlags;if(e.has("grid")){await this.render(),nM(this,"afterRedraw");return}let{viewport:t,pagination:i}=this,n=t?.columnResizing;(e.has("sorting")||e.has("filtering")||i?.isDirtyQuerying)&&this.querying.loadOptions(),n?.isDirty&&n.loadColumns(),e.has("rows")||e.has("sorting")||e.has("filtering")||i?.isDirtyQuerying?await t?.updateRows():(e.has("reflow")||n?.isDirty)&&t?.reflow();let s=t?.columns??[];if(e.has("sorting")||e.has("filtering"))for(let e of s)e.header?.toolbar?.refreshState();if(e.has("filtering"))for(let e of s)e.filtering?.refreshState();i?.isDirtyQuerying&&i.updateControls(!0),delete i?.isDirtyQuerying,delete n?.isDirty,e.clear(),nM(this,"afterRedraw")}async updateColumn(e,t,i=!0,n=!1){nM(this,"beforeUpdate",{scope:"column",options:t,redraw:i,overwrite:n,columnId:e});let s=this.viewport,r=this.setColumnOptions([{id:e,...t}],n),o=r?.[e];o&&s&&this.loadColumnOptionDiffs(s,e,o),i&&await this.redraw(),nM(this,"afterUpdate",{scope:"column",options:t,redraw:i,overwrite:n,columnId:e})}async setSorting(e){let t=this.viewport;if(!t||t.validator?.errorCell)return;let i=(e||[]).filter(e=>!!(e.columnId&&e.order)),n=this.querying.sorting,s=n.currentSortings||[],r=new Set;for(let e of s)e.columnId&&r.add(e.columnId);for(let e of i)r.add(e.columnId);let o=Array.from(r).map(e=>{let n=t.getColumn(e);return n?{column:n,order:i.find(t=>t.columnId===e)?.order||null}:null}).filter(e=>!!e);for(let{column:e,order:t}of o)[e,this].forEach(i=>{nM(i,"beforeSort",{target:e,order:t})});n.setSorting(i),await t.updateRows();let l=n.currentSortings||[],a=l.length>1;for(let e of t.columns){let t=l.findIndex(t=>t.columnId===e.id);if(-1!==t&&l[t].order){let i={order:l[t].order};a&&(i.priority=t+1),e.setOptions({sorting:i}),a||delete e.options.sorting?.priority}else delete e.options.sorting?.order,delete e.options.sorting?.priority,e.options.sorting&&Object.keys(e.options.sorting).length<1&&delete e.options.sorting;e.sorting?.refreshHeaderAttributes()}for(let{column:e,order:t}of(this.accessibility?.userSortedColumn(l[0]?.order||null),o))[e,this].forEach(i=>{nM(i,"afterSort",{target:e,order:t})})}async render(){this.isRendered&&this.destroy(!0),this.loadDataTable(),this.initContainer(this.renderTo),this.initAccessibility(),this.initPagination(),this.querying.loadOptions(),await this.querying.proceed(),this.renderViewport(),this.isRendered=!0,this.dirtyFlags.clear()}hoverRow(e){let t=this.viewport?.rows;if(!t)return;let i=this.viewport?.rows[0]?.index??0;void 0!==this.hoveredRowIndex&&t[this.hoveredRowIndex-i]?.setHoveredState(!1),void 0!==e&&t[e-i]?.setHoveredState(!0),this.hoveredRowIndex=e}hoverColumn(e){let t=this.viewport;t&&(this.hoveredColumnId&&t.getColumn(this.hoveredColumnId)?.setHoveredState(!1),e&&t.getColumn(e)?.setHoveredState(!0),this.hoveredColumnId=e)}syncRow(e){let t=this.viewport?.rows;if(!t)return;let i=this.viewport?.rows[0]?.index??0;void 0!==this.syncedRowIndex&&t[this.syncedRowIndex-i]?.setSyncedState(!1),void 0!==e&&t[e-i]?.setSyncedState(!0),this.syncedRowIndex=e}syncColumn(e){let t=this.viewport;t&&(this.syncedColumnId&&t.getColumn(this.syncedColumnId)?.setSyncedState(!1),e&&t.getColumn(e)?.setSyncedState(!0),this.syncedColumnId=e)}renderCaption(){let e=this.options?.caption,t=e?.text;t&&(this.captionElement=nE("div",{className:tk("captionElement"),id:this.id+"-caption"},this.contentWrapper),nT(this.captionElement,t),e.className&&this.captionElement.classList.add(...e.className.split(/\s+/g)))}renderDescription(){let e=this.options?.description,t=e?.text;t&&(this.descriptionElement=nE("div",{className:tk("descriptionElement"),id:this.id+"-description"},this.contentWrapper),nT(this.descriptionElement,t),e.className&&this.descriptionElement.classList.add(...e.className.split(/\s+/g)))}resetContentWrapper(){this.contentWrapper&&(this.contentWrapper.innerHTML=J.emptyHTML,this.contentWrapper.className=tk("container")+" "+this.options?.rendering?.theme||"")}renderViewport(){let e=this.viewport?.getStateMeta(),t=this.pagination,i=t?.options?.position;this.enabledColumns=this.getEnabledColumnIDs(),this.credits?.destroy(),this.viewport?.destroy(),delete this.viewport,this.resetContentWrapper(),nM(this,"beforeRenderViewport"),this.renderCaption(),"top"===i&&t?.render(),this.enabledColumns.length>0?(this.viewport=this.renderTable(),e&&this.viewport&&this.viewport.applyStateMeta(e)):this.renderNoData(),this.renderAccessibility(),"top"!==i&&t?.render(),this.renderDescription(),nM(this,"afterRenderViewport"),this.viewport?.reflow()}renderAccessibility(){let e=this.accessibility;e&&(e.setA11yOptions(),e.addScreenReaderSection("before"),e.addScreenReaderSection("after"))}renderTable(){return this.tableElement=nE("table",{className:tk("tableElement")},this.contentWrapper),this.tableElement.setAttribute("role","grid"),new nr(this,this.tableElement)}renderNoData(){nE("div",{className:tk("noData"),innerText:this.options?.lang?.noData},this.contentWrapper)}getEnabledColumnIDs(){let e,{columnOptionsMap:t}=this,i=this.options?.header,n=this.getColumnIds(i||[],!1),s=this.options?.rendering?.columns?.included||(n&&n.length>0?n:this.dataTable?.getColumnIds());if(!s?.length)return[];if(!t)return s;let r=[];for(let i=0,n=s.length;i<n;++i)e=s[i],t?.[e]?.options?.enabled!==!1&&r.push(e);return r}loadDataTable(){this.querying.shouldBeUpdated=!0,this.dataTableEventDestructors.forEach(e=>e());let e=this.options?.dataTable;if(e?.clone){this.dataTable=e,this.presentationTable=this.dataTable.getModified();return}let t=this.dataTable=this.presentationTable=new ts(e);["afterDeleteColumns","afterDeleteRows","afterSetCell","afterSetColumns","afterSetRows"].forEach(e=>{this.dataTableEventDestructors.push(t.on(e,()=>{this.querying.shouldBeUpdated=!0}))})}getColumnIds(e,t=!0){let i=[],{enabledColumns:n}=this;for(let s of e){let e="string"==typeof s?s:s.columnId;e&&(!t||n?.includes(e))&&i.push(e),"string"!=typeof s&&s.columns&&(i=i.concat(this.getColumnIds(s.columns,t)))}return i}destroy(e=!1){this.isRendered=!1;let t=nI.grids.findIndex(e=>e===this);this.dataTableEventDestructors.forEach(e=>e()),this.accessibility?.destroy(),this.pagination?.destroy(),this.viewport?.destroy(),this.container&&(this.container.innerHTML=J.emptyHTML,this.container.classList.remove(tk("container"))),e||(Object.keys(this).forEach(e=>{delete this[e]}),nI.grids.splice(t,1))}showLoading(e){this.loadingWrapper||(this.loadingWrapper=nE("div",{className:tk("loadingWrapper")},this.contentWrapper),nE("div",{className:tk("loadingSpinner")},this.loadingWrapper),nT(nE("span",{className:tk("loadingMessage")},this.loadingWrapper),nA(e,this.options?.lang?.loading,"")))}hideLoading(){this.loadingWrapper?.remove(),delete this.loadingWrapper}getData(e=!0){let t=e?this.presentationTable:this.dataTable,i=t?.columns,n={};if(!this.enabledColumns||!i)return"{}";let s=e=>{let t={number:Number,datetime:Number,string:String,boolean:Boolean};return i=>nS(i)?t[e](i):null};for(let e of Object.keys(i)){let t=this.viewport?.getColumn(e);if(t){let r=i[e],o=s(t.dataType);n[e]=(()=>{let e=[];for(let t=0,i=r.length;t<i;++t)e.push(o(r[t]));return e})()}}return JSON.stringify(n,null,2)}getOptions(e=!0){let t=e?nR(this.userOptions):nR(this.options);return t.dataTable?.id&&(t.dataTable={columns:t.dataTable.columns}),t}}nI.grids=[];let{addEvent:nD,fireEvent:nk,merge:nN}=B;class nP{constructor(e){this.options=nN(nP.defaultOptions,e),this.connectors={},this.waiting={}}emit(e){nk(this,e.type,e)}getConnector(e){let t=this.connectors[e];if(t?.loaded)return Promise.resolve(t);let i=this.waiting[e];if(!i){i=this.waiting[e]=[];let t=this.getConnectorOptions(e);if(!t)throw Error(`Connector '${e}' not found.`);this.loadConnector(t).then(t=>{delete this.waiting[e];for(let e=0,n=i.length;e<n;++e)i[e][0](t)}).catch(t=>{delete this.waiting[e];for(let e=0,n=i.length;e<n;++e)i[e][1](t)})}return new Promise((e,t)=>{i.push([e,t])})}getConnectorIds(){let e=this.options.connectors,t=[];for(let i=0,n=e.length;i<n;++i)t.push(e[i].id);return t}getConnectorOptions(e){let t=this.options.connectors;for(let i=0,n=t.length;i<n;++i)if(t[i].id===e)return t[i]}isNewConnector(e){return!this.connectors[e]}loadConnector(e){return new Promise((t,i)=>{this.emit({type:"load",options:e});let n=th.types[e.type];if(!n)throw Error(`Connector type not found. (${e.type})`);let s=this.connectors[e.id]=new n(e);s.load().then(({converter:i})=>{s.converter=i,s.loaded=!0,this.emit({type:"afterLoad",options:e}),t(s)}).catch(i)})}cancelPendingRequests(){let{connectors:e}=this;for(let t of Object.keys(e))e[t].stopPolling()}on(e,t){return nD(this,e,t)}setConnectorOptions(e){let t=this.options.connectors,i=this.connectors;this.emit({type:"setConnectorOptions",options:e});for(let i=0,n=t.length;i<n;++i)if(t[i].id===e.id){t.splice(i,1);break}i[e.id]&&(i[e.id].stopPolling(),delete i[e.id]),t.push(e),this.emit({type:"afterSetConnectorOptions",options:e})}}nP.defaultOptions={connectors:[]};let{addEvent:nH,fireEvent:nF,pushUnique:nB}=B,nz={cell_mouseOver:function(){nF(this.row.viewport.grid,"cellMouseOver",{target:this})},cell_mouseOut:function(){nF(this.row.viewport.grid,"cellMouseOut",{target:this})}},{fireEvent:nj}=B,nW={cellEditingContainer:tM+"cell-editing-container"},nU=class{constructor(e){this.onInputBlur=()=>{this.stopEditing()||this.editModeContent?.getMainElement().focus()},this.onInputChange=()=>{this.editModeContent?.finishAfterChange&&!this.stopEditing()&&this.editModeContent?.getMainElement().focus()},this.onInputKeyDown=e=>{let{key:t}=e;if(e.stopPropagation(),"Escape"===t)return void this.stopEditing(!1);if("Enter"===t){if(this.editModeContent?.finishAfterChange)return void this.onInputChange();this.stopEditing()}},this.viewport=e}startEditing(e){this.editedCell!==e&&(!this.editedCell||this.stopEditing())&&(this.editedCell=e,e.htmlElement.classList.add(tk("editedCell")),this.render(),nj(e,"startedEditing"))}stopEditing(e=!0){let t=this.editedCell,i=this.editModeContent;if(!t||!i)return!1;let{column:n}=t,s=n.viewport,r=i.value;if(e){let e=[];if(!s.validator.validate(t,e))return s.validator.initErrorBox(t,e),this.setA11yAttributes(!1),!1;this.setA11yAttributes(!0),s.validator.hide(),s.validator.errorCell=void 0}this.viewport.validator.hide(),this.destroy(),t.htmlElement.classList.remove(tk("editedCell")),t.htmlElement.focus();let o=t.value!==r;return t.setValue(e?r:t.value,e&&o),o&&nj(t,"stoppedEditing",{submit:e}),delete this.editedCell,!0}setA11yAttributes(e){let t=this.editModeContent?.getMainElement();t&&(e?(t.setAttribute("aria-invalid","false"),t.setAttribute("aria-errormessage","")):(t.setAttribute("aria-invalid","true"),t.setAttribute("aria-errormessage","notification-error")))}render(){let e=this.editedCell;e&&e.column.editModeRenderer&&(this.containerElement=this.containerElement||document.createElement("div"),this.containerElement.className=nW.cellEditingContainer,this.editedCell?.htmlElement.appendChild(this.containerElement),this.editModeContent=e.column.editModeRenderer?.render(e,this.containerElement),this.editModeContent.getMainElement().focus(),this.editModeContent.blurHandler=this.onInputBlur,this.editModeContent.changeHandler=this.onInputChange,this.editModeContent.keyDownHandler=this.onInputKeyDown,(e.column.options?.cells?.editMode?.validationRules||[]).includes("notEmpty")&&this.editModeContent.getMainElement().setAttribute("aria-required","true"))}destroy(){this.editModeContent&&(this.editModeContent.destroy(),this.containerElement?.remove(),delete this.editModeContent,delete this.containerElement)}},nV={};function nq(e,t){return!!e&&!nV[e]&&!!(nV[e]=t)}let nK={types:nV,registerRenderer:nq},{makeHTMLElement:nY}=tF,{addEvent:n$,merge:nG,pushUnique:n_}=B,nZ={accessibility:{announcements:{cellEditing:!0}},lang:{accessibility:{cellEditing:{editable:"Editable.",announcements:{started:"Entered cell editing mode.",edited:"Edited cell value.",cancelled:"Editing canceled.",notValid:"Provided value is not valid."}}}}};function nX(){this.cellEditing=new nU(this)}function nJ(){let{options:e}=this;e?.cells?.editMode?.enabled&&(this.editModeRenderer=function(e){let t=e.options.cells?.editMode,i=t?.renderer?.type,n=e.options?.cells?.renderer?.type||"text";if(i)return new nK.types[i](e,t?.renderer||{});let s=(nK.types[n]||nK.types.text).defaultEditingRenderer;return"string"!=typeof s&&(s=s[e.dataType]||"textInput"),new nK.types[s](e,s===n&&nG(e.options.cells?.renderer,{disabled:!1})||{})}(this))}function nQ(e){e.originalEvent?.key==="Enter"&&this.column.editModeRenderer&&this.row.viewport.cellEditing?.startEditing(this)}function n0(){this.column.editModeRenderer&&this.row.viewport.cellEditing?.startEditing(this)}function n1(){if(!this.row.viewport.grid.accessibility||this.a11yEditableHint?.isConnected)return;let e=this.row.viewport.grid.options?.lang?.accessibility?.cellEditing?.editable;this.column.options.cells?.editMode?.enabled&&e&&(this.a11yEditableHint=nY("span",{className:tk("visuallyHidden"),innerText:", "+e},this.htmlElement))}function n3(e,t){let i=e.row.viewport.grid.accessibility;if(!i)return;let{options:n}=i.grid;if(!n?.accessibility?.announcements?.cellEditing)return;let s=n?.lang?.accessibility?.cellEditing?.announcements,r=s?.[t];r&&i.announce(r)}let{makeHTMLElement:n6,setHTMLContent:n2}=tF;class n5{constructor(e,t){this.grid=e,this.containerElement=n6("div",{className:tk("creditsContainer")}),this.textElement=this.renderAnchor(),this.options=t??n5.defaultOptions,this.render()}render(){let e=this.grid,t=e.contentWrapper,{text:i,href:n}=this.options;this.containerElement.remove(),this.textElement||(this.textElement=this.renderAnchor()),i&&n2(this.textElement,i),n&&this.textElement.setAttribute("href",n||""),e.descriptionElement?t?.insertBefore(this.containerElement,e.descriptionElement):t?.appendChild(this.containerElement)}renderAnchor(){let e=n6("a",{className:tk("creditsText")},this.containerElement);return e.setAttribute("target","_blank"),e.setAttribute("alt","Highcharts logo"),e}getHeight(){return this.containerElement.offsetHeight}destroy(){this.containerElement.remove()}}n5.defaultOptions={enabled:!0,text:"",href:"https://www.highcharts.com",position:"bottom"};let n7=n5,{setHTMLContent:n4}=tF,n9=class extends n7{setContent(){let{text:e,href:t}=this.options;n4(this.textElement,e||""),this.textElement.setAttribute("href",t||"")}appendToContainer(){let e=this.grid,t=e.contentWrapper,{position:i}=this.options;(this.containerElement.classList.add(tk("creditsPro")),"top"===i)?t?.prepend(this.containerElement):e.descriptionElement?t?.insertBefore(this.containerElement,e.descriptionElement):t?.appendChild(this.containerElement)}update(e,t=!0){e&&(this.grid.update({credits:e},!1),this.options=this.grid.options?.credits??{}),t&&this.render()}render(){let e=this.options.enabled??!1;this.containerElement.remove(),e?(this.setContent(),this.appendToContainer()):this.destroy(),this.grid.viewport?.reflow()}destroy(){super.destroy(),delete this.grid.credits}},{addEvent:n8,merge:se,pushUnique:st}=B;function si(){this.credits=new n9(this,this.options?.credits)}let{isSafari:sn,win:ss,win:{document:sr}}=p,{error:so}=B,sl=ss.URL||ss.webkitURL||ss;function sa(e,t){let i=ss.navigator,n=sr.createElement("a");if("string"!=typeof e&&!(e instanceof String)&&i.msSaveOrOpenBlob)return void i.msSaveOrOpenBlob(e,t);if(e=""+e,i.userAgent.length>1e3)throw Error("Input too long");let s=/Edge\/\d+/.test(i.userAgent);if((sn&&"string"==typeof e&&0===e.indexOf("data:application/pdf")||s||e.length>2e6)&&!(e=function(e){let t=e.replace(/filename=.*;/,"").match(/data:([^;]*)(;base64)?,([A-Z+\d\/]+)/i);if(t&&t.length>3&&ss.atob&&ss.ArrayBuffer&&ss.Uint8Array&&ss.Blob&&sl.createObjectURL){let e=ss.atob(t[3]),i=new ss.ArrayBuffer(e.length),n=new ss.Uint8Array(i);for(let t=0;t<n.length;++t)n[t]=e.charCodeAt(t);return sl.createObjectURL(new ss.Blob([n],{type:t[1]}))}}(e)||""))throw Error("Failed to convert to blob");if(void 0!==n.download)n.href=e,n.download=t,sr.body.appendChild(n),n.click(),sr.body.removeChild(n);else try{if(!ss.open(e,"chart"))throw Error("Failed to open window")}catch{ss.location.href=e}}function sd(e,t){let i=ss.navigator,n=ss.URL||ss.webkitURL||ss;try{if(i.msSaveOrOpenBlob&&ss.MSBlobBuilder){let t=new ss.MSBlobBuilder;return t.append(e),t.getBlob("image/svg+xml")}return n.createObjectURL(new ss.Blob(["\uFEFF"+e],{type:t}))}catch(e){}}let{defined:sh}=B;class su{constructor(e){this.grid=e}downloadCSV(e=!0){let t=this.getCSV(e);sa(sd(t,"text/csv")||"data:text/csv,\uFEFF"+encodeURIComponent(t),this.getFilename()+".csv")}downloadJSON(e=!0){let t=this.getJSON(e);sa(sd(t,"application/json")||"data:application/json,\uFEFF"+encodeURIComponent(t),this.getFilename()+".json")}getCSV(e=!0){let{grid:t}=this,i=e?t.presentationTable:t.dataTable;if(!i)return"";let n=this.grid.options?.exporting||su.defaultOptions,{useLocalDecimalPoint:s,lineDelimiter:r,firstRowAsNames:o}=n.csv??{},{decimalPoint:l,itemDelimiter:a}=n.csv??{};l||(l=","!==a&&s?1.1.toLocaleString()[1]:"."),a||(a=","===l?";":",");let d=t.enabledColumns??[],h=d?.length,u=[],c=[];!1!==o&&u.push(d.map(e=>`"${e}"`).join(a));let p=e=>{switch(e){case"number":case"datetime":return e=>sh(e)?String(e).replace(".",l):"";case"string":return e=>sh(e)?`"${e}"`:"";case"boolean":return e=>sh(e)?e?"TRUE":"FALSE":""}};for(let e=0;e<h;e++){let n=d[e],s=t.viewport?.getColumn(n),r=s?.dataType,o=i.getColumn(n)??[],l=o?.length,m=p(r??"string");for(let t=0;t<l;t++){let i=c[t];if(i||(i=c[t]=[]),i[e]=m(o[t]),e===h-1){let t=e;for(;i.length>2&&void 0===i[t];)i.pop(),t--;u.push(i.join(a))}}}return u.join(r)}getJSON(e=!0){return this.grid.getData(e)}getFilename(){let e=this.grid.options?.exporting?.filename||"Grid";return e?e.replace(/\//g,"-"):("string"==typeof e&&(e=e.toLowerCase().replace(/<\/?[^>]+(>|$)/g,"").replace(/[\s_]+/g,"-").replace(/[^a-z\d\-]/g,"").replace(/^[\-]+/g,"").replace(/[\-]+/g,"-").substr(0,24).replace(/[\-]+$/g,"")),e)}}su.defaultOptions={filename:"Grid",csv:{firstRowAsNames:!0,useLocalDecimalPoint:!0,itemDelimiter:",",lineDelimiter:"\n"}};let{addEvent:sc,pushUnique:sp}=B;function sm(){this.exporting=new su(this)}let{makeDiv:sg,setHTMLContent:sf}=tF,{defined:sy}=B;class sb{constructor(e){this.viewport=e,this.notifContainer=sg(sb.classNames.notifContainer),this.viewport.grid.contentWrapper?.appendChild(this.notifContainer)}validate(e,t=[]){let{options:i,dataType:n}=e.column,s=e.row.viewport.grid.options?.lang?.validationErrors,r=e.column.options?.cells?.renderer?.type,o=Array.from(i?.cells?.editMode?.validationRules||[]),l=o.every(e=>"string"==typeof e);if(o.length>0&&l)o=[...new Set(o)];else{let e=[...sb.predefinedRules.dataType[n]??[]];r&&e.push(...sb.predefinedRules.renderer[r]??[]),o.some(t=>"string"!=typeof t&&"string"==typeof t.validate&&e.includes(t.validate))||o.push(...e)}for(let i of o){let n,r,o;if("string"==typeof i?(n=sb.rulesRegistry[i],r=s?.[i]?.notification):n=i,"string"==typeof n.validate){let e=sb.rulesRegistry[n.validate];o=e?.validate}else o=n.validate;let{editModeContent:l}=e.column.viewport.cellEditing||{};"function"==typeof o&&l&&!o.call(e,l)&&("function"==typeof n.notification&&(r=n.notification.call(e,l)),t.push(r||n.notification))}return!t.length}initErrorBox(e,t){let{grid:i}=this.viewport;this.errorCell=e,this.reflow(),sf(this.notifContainer,t.join("<br />")),i.options?.accessibility?.announcements?.cellEditing&&this.viewport.grid.accessibility?.announce((i.options?.lang?.accessibility?.cellEditing?.announcements?.notValid||"")+" "+t.join(". "),!0),this.show()}show(){this.errorCell?.htmlElement.classList.add(sb.classNames.editedCellError),this.notifContainer.classList.add(sb.classNames.notifError,sb.classNames.notifAnimation),this.notifContainer.setAttribute("id","notification-error")}hide(e=!0){this.errorCell?.htmlElement.classList.remove(sb.classNames.editedCellError),this.notifContainer.classList.remove(sb.classNames.notifError,sb.classNames.notifAnimation),this.notifContainer.removeAttribute("id"),e&&(this.errorCell=void 0),this.notifContainer.innerHTML=J.emptyHTML}reflow(){let e=this.viewport,t=this.errorCell?.htmlElement,i=e.grid.tableElement,n=e.grid.contentWrapper;if(!t||!i||!n)return;let s=i.offsetTop,r=i.offsetHeight;t.offsetTop-s>s+r/2?(this.notifContainer.style.top=s+(e.theadElement?.offsetHeight||0)+"px",this.notifContainer.style.bottom="auto"):(this.notifContainer.style.top="auto",this.notifContainer.style.bottom=n.offsetHeight-s-r+"px")}destroy(){this.errorCell=void 0,this.notifContainer.remove()}}sb.classNames={notifContainer:tM+"notification",notifError:tM+"notification-error",notifAnimation:tM+"notification-animation",editedCellError:tM+"edited-cell-error"},sb.rulesRegistry={notEmpty:{validate:({value:e,rawValue:t})=>sy(e)&&t.length>0,notification:"Value cannot be empty."},number:{validate:({rawValue:e})=>!isNaN(+e),notification:"Value has to be a number."},datetime:{validate:({value:e})=>!sy(e)||!isNaN(+e),notification:"Value has to be parsed to a valid timestamp."},boolean:{validate:({rawValue:e})=>"true"===e||"false"===e||1===Number(e)||0===Number(e),notification:"Value has to be a boolean."},ignoreCaseUnique:{validate:function({rawValue:e}){let t=String(this.value).toLowerCase(),i=e.toLowerCase();if(t===i)return!0;let n=this.column.data;return!n?.some(e=>String(e).toLowerCase()===i)},notification:"Value must be unique within this column (case-insensitive)."},unique:{validate:function({rawValue:e}){if(this.value===e)return!0;let t=this.column.data;return!t?.some(t=>t===e)},notification:"Value must be unique within this column (case-sensitive)."},arrayNumber:{validate:function({rawValue:e}){return e.split(",").every(e=>!Number.isNaN(Number(e.trim())))},notification:"Value should be a list of numbers separated by commas."},json:{validate:function({rawValue:e}){try{return JSON.parse(e),!0}catch(e){return!1}},notification:"Value should be a valid JSON."},sparkline:{validate:function({rawValue:e}){let t=sb.rulesRegistry.arrayNumber.validate,i=sb.rulesRegistry.json.validate;return t({rawValue:e})||i({rawValue:e})},notification:"Value should be a valid JSON or a list of numbers separated by commas."}},sb.predefinedRules={dataType:{boolean:["boolean"],datetime:["datetime"],number:["number"],string:[]},renderer:{sparkline:["sparkline"]}};let{addEvent:sw,pushUnique:sv}=B;function sC(){this.validator=new sb(this)}function sE(){this.validator.destroy()}let{addEvent:sT,pushUnique:sx}=B;function sS(){let e=this.options.cells?.renderer?.type||"text",t=nK.types[e];t||(console.warn(`The cell renderer of type "${e}" is not registered. Using default text renderer instead.`),t=nK.types.text),this.cellRenderer=new t(this,this.options.cells?.renderer||{})}function sL(e){return this.cellRenderer.render(e)}let{addEvent:sO,pushUnique:sM}=B,sR=class extends t9{constructor(e,t){super(e),this.renderer=t}};class sA{constructor(e){this.column=e}}let{merge:sI}=B;class sD extends tw{constructor(e){const t=sI(sD.defaultOptions,e);super(t),this.headers=[],this.dataTypes=[],this.options=t}parse(e,t){let i=this.dataTypes,n=sI(this.options,e),{beforeParse:s,lineDelimiter:r,firstRowAsNames:o,itemDelimiter:l}=n,a,d=0,{csv:h,startRow:u,endRow:c}=n,p,m=[];if(this.emit({type:"parse",columns:m,detail:t,headers:this.headers}),h&&s&&(h=s(h)),h){if(a=h.replace(/\r\n|\r/g,"\n").split(r||"\n"),(!u||u<0)&&(u=0),(!c||c>=a.length)&&(c=a.length-1),l||(this.guessedItemDelimiter=this.guessDelimiter(a)),o){let e=a[0].split(l||this.guessedItemDelimiter||",");for(let t=0;t<e.length;t++)e[t]=e[t].trim().replace(/^["']|["']$/g,"");this.headers=e,u++}let e=0;for(d=u;d<=c;d++)"#"===a[d][0]?e++:this.parseCSVRow(m,a[d],d-u-e);i.length&&i[0].length&&"date"===i[0][1]&&!this.options.dateFormat&&this.deduceDateFormat(m[0],null,!0);for(let e=0,t=m.length;e<t;++e){p=m[e];for(let t=0,i=p.length;t<i;++t)if(p[t]&&"string"==typeof p[t]){let i=this.convertByType(p[t]);i instanceof Date&&(i=i.getTime()),m[e][t]=i}}}return m.forEach(e=>{e.length=Math.max(...m.map(e=>e.length))}),this.emit({type:"afterParse",columns:m,detail:t,headers:this.headers}),tm.getColumnsCollection(m,this.headers)}parseCSVRow(e,t,i){let n=this,s=n.dataTypes,{startColumn:r,endColumn:o}=n.options,l=n.options.itemDelimiter||n.guessedItemDelimiter,{decimalPoint:a}=n.options;a&&a!==l||(a=n.guessedDecimalPoint||".");let d=0,h="",u="",c=0,p=0,m=e=>{h=t[e]},g=e=>{s.length<p+1&&s.push([e]),s[p][s[p].length-1]!==e&&s[p].push(e)},f=()=>{if(r>c||c>o){++c,u="";return}if("string"==typeof u){let e=parseFloat(u);!isNaN(e)&&isFinite(Number(u))?(u=e,g("number")):isNaN(Date.parse(u))?g("string"):(u=u.replace(/\//g,"-"),g("date"))}else g("number");if(e.length<p+1&&e.push([]),"number"!=typeof u&&"number"!==tm.guessType(u,n)&&a){let e=u;u=u.replace(a,"."),"number"!==tm.guessType(u,n)&&(u=e)}e[p][i]=u,u="",++p,++c};if(t.trim().length&&"#"!==t.trim()[0]){for(;d<t.length;d++){if(m(d),"#"===h&&!/^#[A-F\d]{3,3}|[A-F\d]{6,6}/i.test(t.substring(d)))return void f();if('"'===h)for(m(++d);d<t.length&&'"'!==h;)u+=h,m(++d);else h===l?f():u+=h}f()}}guessDelimiter(e){let t=0,i=0,n,s={",":0,";":0," ":0},r=e.length;for(let n=0;n<r;n++){let r=!1,o,l,a,d="";if(n>13)break;let h=e[n];for(let e=0;e<h.length&&(o=h[e],l=h[e+1],a=h[e-1],"#"!==o);e++){if('"'===o)if(r){if('"'!==a&&'"'!==l){for(;" "===l&&e<h.length;)l=h[++e];void 0!==s[l]&&s[l]++,r=!1}}else r=!0;else void 0!==s[o]?(isNaN(Date.parse(d=d.trim()))?(isNaN(Number(d))||!isFinite(Number(d)))&&s[o]++:s[o]++,d=""):d+=o;","===o&&i++,"."===o&&t++}}return s[";"]>s[","]?n=";":(s[","]>s[";"],n=","),t>i?this.guessedDecimalPoint=".":this.guessedDecimalPoint=",",n}}sD.defaultOptions={...tw.defaultOptions,lineDelimiter:"\n",startColumn:0,endColumn:Number.MAX_VALUE,startRow:0,endRow:Number.MAX_VALUE},tw.registerType("CSV",sD);let{merge:sk,fireEvent:sN}=B;class sP extends th{constructor(e){const t=sk(sP.defaultOptions,e);super(t),this.options=t,t.enablePolling&&this.startPolling(1e3*Math.max(t.dataRefreshRate||0,1))}emit(e){sN(this,e.type,e)}load(e){let t=this,i=t.options,{csv:n,csvURL:s,dataTables:r,decimalPoint:o}=i;return t.emit({type:"load",csv:n}),Promise.resolve(s?fetch(s,{signal:t?.pollingController?.signal}).then(e=>e.text()):n||"").then(e=>(e&&this.initConverters(e,e=>{let{firstRowAsNames:t=i.firstRowAsNames,beforeParse:n=i.beforeParse}=r?.find(t=>t.key===e)||{};return new sD(sk(i,{decimalPoint:o,firstRowAsNames:t,beforeParse:n}))},(e,t)=>e.parse({csv:t})),t.applyTableModifiers().then(()=>e))).then(i=>(t.emit({type:"afterLoad",detail:e,csv:i}),t)).catch(i=>{throw t.emit({type:"loadError",detail:e,error:i}),i})}}sP.defaultOptions={id:"csv-connector",type:"CSV",csv:"",csvURL:"",enablePolling:!1,dataRefreshRate:1,firstRowAsNames:!0},th.registerType("CSV",sP);let{merge:sH,uniqueKey:sF}=B;class sB extends tw{constructor(e){const t=sH(sB.defaultOptions,e);super(t),this.header=[],this.options=t}parse(e,t){let i,n=sH(this.options,e),s=(n.json?.values||[]).map(e=>e.slice());if(0===s.length)return{};this.header=[],this.emit({type:"parse",columns:[],detail:t,headers:this.header});let{beforeParse:r,json:o}=n;r&&o&&(s=r(o.values));for(let e=0,t=s.length;e<t;e++){i=s[e],this.header[e]=n.firstRowAsNames?`${i.shift()}`:sF();for(let t=0,n=i.length;t<n;++t){var l;let n=i[t];l=n,"[object Date]"===Object.prototype.toString.call(l)&&(n=n.getTime()),s[e][t]=n}}return this.emit({type:"afterParse",columns:s,detail:t,headers:this.header}),tm.getColumnsCollection(s,this.header)}}sB.defaultOptions={...tw.defaultOptions},tw.registerType("GoogleSheets",sB);let{merge:sz,pick:sj,fireEvent:sW}=B;class sU extends th{constructor(e){const t=sz(sU.defaultOptions,e);super(t),this.options=t}emit(e){sW(this,e.type,e)}load(e){let t=this,i=t.options,{dataRefreshRate:n,enablePolling:s,googleAPIKey:r,googleSpreadsheetKey:o,dataTables:l}=i,a=sU.buildFetchURL(r,o,i);if(t.emit({type:"load",detail:e,url:a}),!URL.canParse(a))throw Error("Invalid URL: "+a);return fetch(a,{signal:t?.pollingController?.signal}).then(e=>e.json()).then(e=>{if("object"==typeof e&&e&&"object"==typeof e.error&&e.error&&"number"==typeof e.error.code&&"string"==typeof e.error.message&&"string"==typeof e.error.status)throw Error(e.error.message);return this.initConverters(e,e=>{let{firstRowAsNames:t=i.firstRowAsNames,beforeParse:n=i.beforeParse}=l?.find(t=>t.key===e)||{};return new sB({firstRowAsNames:t,beforeParse:n})},(e,t)=>e.parse({json:t})),t.applyTableModifiers()}).then(()=>(t.emit({type:"afterLoad",detail:e,url:a}),s&&setTimeout(()=>t.load(),1e3*Math.max(n||0,1)),t)).catch(i=>{throw t.emit({type:"loadError",detail:e,error:i}),i})}}sU.defaultOptions={id:"google-sheets-connector",type:"GoogleSheets",googleAPIKey:"",googleSpreadsheetKey:"",enablePolling:!1,dataRefreshRate:2,firstRowAsNames:!0};var sV=sU||(sU={});let sq="ABCDEFGHIJKLMNOPQRSTUVWXYZ";function sK(e={}){let{endColumn:t,endRow:i,googleSpreadsheetRange:n,startColumn:s,startRow:r}=e;return n||(sq[s||0]||"A")+(Math.max(r||0,0)+1)+":"+(sq[sj(t,25)]||"Z")+(i?Math.max(i,0):"Z")}sV.buildFetchURL=function(e,t,i={}){let n=new URL(`https://sheets.googleapis.com/v4/spreadsheets/${t}/values/`),s=i.onlyColumnIds?"A1:Z1":sK(i);n.pathname+=s;let r=n.searchParams;return r.set("alt","json"),i.onlyColumnIds||(r.set("dateTimeRenderOption","FORMATTED_STRING"),r.set("majorDimension","COLUMNS"),r.set("valueRenderOption","UNFORMATTED_VALUE")),r.set("prettyPrint","false"),r.set("key",e),n.href},sV.buildQueryRange=sK,th.registerType("GoogleSheets",sU);let{merge:sY}=B;class s$ extends tw{constructor(e){const t=sY(s$.defaultOptions,e);super(t),this.headers=[],this.options=t,t.tableElement&&(this.tableElement=t.tableElement,this.tableElementID=t.tableElement.id)}export(e,t=this.options){let i=!1!==t.firstRowAsNames,n=t.useMultiLevelHeaders,s=e.getSortedColumns(),r=Object.keys(s),o=[],l=r.length,a=[],d="";if(i){let e=[];if(n){for(let t of r){let i=s[t];Array.isArray(i)||(i=Array.from(i));let n=(i.shift()||"").toString();s[t]=i,e.push(n)}d=this.getTableHeaderHTML(r,e,t)}else d=this.getTableHeaderHTML(void 0,r,t)}for(let e=0;e<l;e++){let t=s[r[e]],i=t.length;for(let n=0;n<i;n++){let i=t[n];a[n]||(a[n]=[]),"string"!=typeof i&&"number"!=typeof i&&void 0!==i&&(i=(i||"").toString()),a[n][e]=this.getCellHTMLFromValue(e?"td":"th",null,e?"":'scope="row"',i),e===l-1&&o.push("<tr>"+a[n].join("")+"</tr>")}}let h="";return t.tableCaption&&(h='<caption class="highcharts-table-caption">'+t.tableCaption+"</caption>"),"<table>"+h+d+"<tbody>"+o.join("")+"</tbody></table>"}getCellHTMLFromValue(e,t,i,n,s){let r=n,o="text"+(t?" "+t:"");return"number"==typeof r?(r=r.toString(),","===s&&(r=r.replace(".",s)),o="number"):n||(r="",o="empty"),"<"+e+(i?" "+i:"")+' class="'+o+'">'+r+"</"+e+">"}getTableHeaderHTML(e=[],t=[],i=this.options){let{useMultiLevelHeaders:n,useRowspanHeaders:s}=i,r="<thead>",o=0,l=t&&t.length,a,d=0,h;if(n&&e&&t&&!function(e,t){let i=e.length;if(t.length!==i)return!1;for(;--i;)if(e[i]!==t[i])return!1;return!0}(e,t)){for(r+="<tr>";o<l;++o)(a=e[o])===e[o+1]?++d:d?(r+=this.getCellHTMLFromValue("th","highcharts-table-topheading",'scope="col" colspan="'+(d+1)+'"',a),d=0):(a===t[o]?s?(h=2,t.splice(o,1)):(h=1,t[o]=""):h=1,r+=this.getCellHTMLFromValue("th","highcharts-table-topheading",'scope="col"'+(h>1?' valign="top" rowspan="'+h+'"':""),a));r+="</tr>"}if(t){for(r+="<tr>",o=0,l=t.length;o<l;++o)void 0!==t[o]&&(r+=this.getCellHTMLFromValue("th",null,'scope="col"',t[o]));r+="</tr>"}return r+"</thead>"}parse(e,t){let i=[],n=[],s=sY(this.options,e),{endRow:r,startColumn:o,endColumn:l,firstRowAsNames:a}=s,d=s.tableElement||this.tableElement;if(!(d instanceof HTMLElement))return this.emit({type:"parseError",columns:i,detail:t,headers:n,error:"Not a valid HTML Table"}),{};this.tableElement=d,this.tableElementID=d.id,this.emit({type:"parse",columns:i,detail:t,headers:this.headers});let h=d.getElementsByTagName("tr"),u=h.length,c=0,p,{startRow:m}=s;if(a&&u){let e=h[0].children,t=e.length;for(let i=o;i<t&&!(i>l);i++)("TD"===(p=e[i]).tagName||"TH"===p.tagName)&&n.push(p.innerHTML);m++}for(;c<u;){if(c>=m&&c<=r){let e=h[c].children,t=e.length,n=0;for(;n<t;){let t=n-o,s=i[t];if(("TD"===(p=e[n]).tagName||"TH"===p.tagName)&&n>=o&&n<=l){i[t]||(i[t]=[]);let e=this.convertByType(p.innerHTML);e instanceof Date&&(e=e.getTime()),i[t][c-m]=e;let n=1;for(;c-m>=n&&void 0===s[c-m-n];)s[c-m-n]=null,n++}n++}}c++}return this.headers=n,this.emit({type:"afterParse",columns:i,detail:t,headers:n}),tm.getColumnsCollection(i,this.headers)}}s$.defaultOptions={...tw.defaultOptions,useRowspanHeaders:!0,useMultiLevelHeaders:!0,startColumn:0,endColumn:Number.MAX_VALUE,startRow:0,endRow:Number.MAX_VALUE},tw.registerType("HTMLTable",s$);let{win:sG}=p,{merge:s_}=B;class sZ extends th{constructor(e){const t=s_(sZ.defaultOptions,e);super(t),this.options=t,this.converter=new s$(t)}async load(e){let t,i=this.options,n=this.converter,s=this.getTable(),r=i.htmlTable;if(this.emit({type:"load",detail:e}),"string"==typeof r?(this.tableID=r,t=sG.document.getElementById(r)):(t=r,this.tableID=t.id),this.tableElement=t||void 0,!this.tableElement){let t="HTML table not provided, or element with ID not found";return this.emit({type:"loadError",detail:e,error:t}),Promise.reject(Error(t))}let o=n.parse(s_({tableElement:this.tableElement},i),e);return s.deleteColumns(),s.setColumns(o),await this.applyTableModifiers(),this.emit({type:"afterLoad",detail:e}),this}}sZ.defaultOptions={id:"HTML-table-connector",type:"HTMLTable",htmlTable:""},th.registerType("HTMLTable",sZ);let{error:sX,isArray:sJ,merge:sQ,objectEach:s0}=B;class s1 extends tw{constructor(e){const t=sQ(s1.defaultOptions,e);super(t),this.headerColumnIds=[],this.headers=[],this.options=t}parse(e,t){let{beforeParse:i,orientation:n,firstRowAsNames:s,columnIds:r}=e=sQ(this.options,e),o=e.data;if(!o)return{};this.headers=[];let l=[];return this.emit({type:"parse",columns:l,detail:t,headers:this.headers}),i&&(o=i(o)),o=o.slice(),"columns"===n?this.parseColumnsOrientation(l,o,s,r):"rows"===n&&this.parseRowsOrientation(l,o,s,r),this.emit({type:"afterParse",columns:l,detail:t,headers:this.headers}),tm.getColumnsCollection(l,this.headers)}parseColumnsOrientation(e,t,i,n){for(let s=0,r=t.length;s<r;s++){let r=t[s];if(!Array.isArray(r))return;Array.isArray(this.headers)?(i?this.headers.push(`${r.shift()}`):n&&Array.isArray(n)&&this.headers.push(n[s]),e.push(r)):sX("JSONConverter: Invalid `columnIds` option.",!1)}}parseRowsOrientation(e,t,i,n){i?this.headers=t.shift():n&&(this.headerColumnIds=n);for(let s=0,r=t.length;s<r;s++){let r=t[s];sJ(r)||(r=this.convertItemToRow(r,n));for(let t=0,n=r.length;t<n;t++)e.length<t+1&&e.push([]),e[t].push(r[t]),i||0!==s||(Array.isArray(this.headerColumnIds)?this.headers.push(this.headerColumnIds[t]||t.toString()):sX("JSONConverter: Invalid `columnIds` option.",!1))}}convertItemToRow(e,t){let i=this;if(t&&!Array.isArray(t)){let n=[];return s0(t,(t,s)=>{n.push(t.reduce((e,t)=>e[t],e)),0>i.headers.indexOf(s)&&i.headers.push(s)}),n}return i.headerColumnIds=Object.keys(e),Object.values(e)}}s1.defaultOptions={...tw.defaultOptions,orientation:"rows"},tw.registerType("JSON",s1);let{merge:s3,fireEvent:s6}=B;class s2 extends th{constructor(e){const t=s3(s2.defaultOptions,e);super(t),this.options=t,t.enablePolling&&this.startPolling(1e3*Math.max(t.dataRefreshRate||0,1))}emit(e){s6(this,e.type,e)}load(e){let t=this,i=t.options,{data:n,dataUrl:s,dataTables:r}=i;return t.emit({type:"load",detail:e,data:n}),Promise.resolve(s?fetch(s,{signal:t?.pollingController?.signal}).then(e=>e.json()).catch(i=>{t.emit({type:"loadError",detail:e,error:i}),console.warn(`Unable to fetch data from ${s}.`)}):n||[]).then(async e=>(e&&this.initConverters(e,t=>{let{columnIds:n=i.columnIds,firstRowAsNames:s=i.firstRowAsNames,orientation:o=i.orientation,beforeParse:l=i.beforeParse}=r?.find(e=>e.key===t)||{};return new s1({data:e,columnIds:n,firstRowAsNames:s,orientation:o,beforeParse:l})},(e,t)=>e.parse({data:t})),t.applyTableModifiers().then(()=>e??[]))).then(i=>(t.emit({type:"afterLoad",detail:e,data:i}),t)).catch(i=>{throw t.emit({type:"loadError",detail:e,error:i}),i})}}s2.defaultOptions={type:"JSON",id:"json-connector",data:[],enablePolling:!1,dataRefreshRate:0,firstRowAsNames:!0,orientation:"rows"},th.registerType("JSON",s2);let{merge:s5}=B;class s7 extends eJ{constructor(e){super(),this.options=s5(s7.defaultOptions,e)}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let i=e.getModified();if(e.hasColumns(["columnIds"])){let t=(e.deleteColumns(["columnIds"])||{}).columnIds||[],n={},s=[];for(let e=0,i=t.length;e<i;++e)s.push(""+t[e]);for(let t=0,i=e.getRowCount(),r;t<i;++t)(r=e.getRow(t))&&(n[s[t]]=r);i.deleteColumns(),i.setColumns(n)}else{let t={};for(let i=0,n=e.getRowCount(),s;i<n;++i)(s=e.getRow(i))&&(t[`${i}`]=s);t.columnIds=e.getColumnIds(),i.deleteColumns(),i.setColumns(t)}return this.emit({type:"afterModify",detail:t,table:e}),e}}s7.defaultOptions={type:"Invert"},eJ.registerType("Invert",s7);let{merge:s4}=B;class s9 extends sA{constructor(e){super(e),this.options=s4(s9.defaultOptions,this.column.options.cells?.renderer||{});const t=e.options.cells;this.format=t?.format??ii.defaultFormatsForDataTypes[e.dataType],this.formatter=t?.formatter}render(e){return new ii(e)}}s9.defaultEditingRenderer={string:"textInput",number:"numberInput",boolean:"checkbox",datetime:"dateInput"},s9.defaultOptions={type:"text"},nq("text",s9);let s8=class extends sR{constructor(e,t,i){super(e,t),this.finishAfterChange=!1,this.onChange=e=>{this.changeHandler?this.changeHandler(e):this.cell.editValue(this.value)},this.onKeyDown=e=>{this.keyDownHandler?.(e)},this.onBlur=e=>{this.blurHandler?.(e)},this.onCellKeyDown=e=>{" "===e.key&&this.input.click()},this.input=this.add(i)}add(e=this.cell.htmlElement){let t=this.cell,{options:i}=this.renderer,n=this.input=document.createElement("input");return n.tabIndex=-1,n.type="checkbox",n.name=t.column.id+"-"+t.row.id,n.classList.add(tk("input")),i.attributes&&Object.entries(i.attributes).forEach(([e,t])=>{n.setAttribute(e,t)}),this.update(),e.appendChild(this.input),n.addEventListener("change",this.onChange),n.addEventListener("keydown",this.onKeyDown),n.addEventListener("blur",this.onBlur),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),this.input}update(){let e=this.cell,t=this.input,{options:i}=this.renderer;t.checked=!!e.value,t.disabled=!!i.disabled}get rawValue(){return this.input.checked?"true":"false"}get value(){let e=this.input.checked;switch(this.cell.column.dataType){case"datetime":case"number":return+e;case"boolean":return e;case"string":return""+e}}getMainElement(){return this.input}destroy(){let e=this.input;this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),e.remove()}},{merge:re}=B;class rt extends sA{constructor(e,t){super(e),this.options=re(rt.defaultOptions,t)}render(e,t){return new s8(e,this,t)}}rt.defaultEditingRenderer="checkbox",rt.defaultOptions={type:"checkbox"},nq("checkbox",rt);let ri=class extends sR{constructor(e,t,i){super(e,t),this.finishAfterChange=!0,this.optionElements=[],this.onChange=e=>{this.changeHandler?this.changeHandler(e):(this.cell.htmlElement.focus(),this.cell.editValue(this.value))},this.onKeyDown=e=>{(e.stopPropagation(),this.keyDownHandler)?this.keyDownHandler?.(e):("Escape"===e.key||"Enter"===e.key)&&this.cell.htmlElement.focus()},this.onBlur=e=>{this.blurHandler?.(e)},this.onCellKeyDown=e=>{" "===e.key&&(this.select.focus(),e.preventDefault())},this.select=this.add(i)}add(e=this.cell.htmlElement){let t=this.cell,{options:i}=this.renderer,n=this.select=document.createElement("select");return n.tabIndex=-1,n.name=t.column.id+"-"+t.row.id,n.classList.add(tk("input")),i.attributes&&Object.entries(i.attributes).forEach(([e,t])=>{n.setAttribute(e,t)}),this.update(),e.appendChild(this.select),n.addEventListener("change",this.onChange),n.addEventListener("keydown",this.onKeyDown),n.addEventListener("blur",this.onBlur),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),n}update(){let e=this.cell,{options:t}=this.renderer;for(let i of(this.select.disabled=!!t.disabled,this.select.innerHTML=J.emptyHTML,t.options)){let t=document.createElement("option");t.value=i.value,t.textContent=i.label||i.value,t.disabled=!!i.disabled,e.value===i.value&&(t.selected=!0),this.select.appendChild(t),this.optionElements.push(t)}}destroy(){let e=this.select;for(let t of(this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),this.optionElements))t.remove();this.optionElements.length=0,e.remove()}get rawValue(){return this.select.value}get value(){let e=this.select.value;switch(this.cell.column.dataType){case"datetime":case"number":return+e;case"boolean":return e;case"string":return""+e}}getMainElement(){return this.select}},{merge:rn}=B;class rs extends sA{constructor(e,t){super(e),this.options=rn(rs.defaultOptions,t)}render(e,t){return new ri(e,this,t)}}rs.defaultEditingRenderer="select",rs.defaultOptions={type:"select",options:[]},nq("select",rs);let{defined:rr}=B,ro=class extends sR{constructor(e,t,i){super(e,t),this.finishAfterChange=!0,this.onChange=e=>{this.changeHandler?this.changeHandler(e):this.cell.editValue(e.target.value)},this.onKeyDown=e=>{if(e.stopPropagation(),this.keyDownHandler)return void this.keyDownHandler(e);if("Escape"===e.key){this.input.value=this.convertToInputValue(),this.cell.htmlElement.focus();return}"Enter"===e.key&&this.cell.htmlElement.focus()},this.onBlur=e=>{this.blurHandler?.(e)},this.onCellKeyDown=e=>{" "===e.key&&(this.input.focus(),e.preventDefault())},this.input=this.add(i)}add(e=this.cell.htmlElement){let t=this.cell,i=this.input=document.createElement("input"),{options:n}=this.renderer;return i.tabIndex=-1,i.name=t.column.id+"-"+t.row.id,i.classList.add(tk("input")),n.attributes&&Object.entries(n.attributes).forEach(([e,t])=>{i.setAttribute(e,t)}),this.update(),e.appendChild(this.input),i.addEventListener("change",this.onChange),i.addEventListener("keydown",this.onKeyDown),i.addEventListener("blur",this.onBlur),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),i}update(){let{options:e}=this.renderer;this.input.value=this.convertToInputValue(),this.input.disabled=!!e.disabled}get rawValue(){return this.input.value}get value(){let e=this.input.value;switch(this.cell.column.dataType){case"datetime":case"number":return""===e?null:+e;case"boolean":if(""===e)return null;if("false"===e||0==+e)return!1;return!0;case"string":return e}}convertToInputValue(){let e=this.cell.value;return rr(e)?""+e:""}getMainElement(){return this.input}destroy(){let e=this.input;this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),e.remove()}},{merge:rl}=B;class ra extends sA{constructor(e,t){super(e),this.options=rl(ra.defaultOptions,t)}render(e,t){return new ro(e,this,t)}}ra.defaultEditingRenderer="textInput",ra.defaultOptions={type:"textInput"},nq("textInput",ra);let rd=class extends sR{constructor(e,t,i){super(e,t),this.finishAfterChange=!1,this.onChange=e=>{this.changeHandler?.(e)},this.onKeyDown=e=>{if(e.stopPropagation(),this.keyDownHandler)return void this.keyDownHandler(e);if("Escape"===e.key){this.cell.htmlElement.focus(),this.input.value=this.convertToInputValue();return}"Enter"===e.key&&(this.cell.htmlElement.focus(),this.cell.editValue(this.value))},this.onBlur=e=>{this.blurHandler?this.blurHandler(e):this.cell.editValue(this.value)},this.onCellKeyDown=e=>{" "===e.key&&(this.input.focus(),e.preventDefault())},this.options=t.options,this.input=this.add(i)}add(e=this.cell.htmlElement){let{cell:t,options:i}=this,n=this.input=document.createElement("input");return n.tabIndex=-1,n.type=this.getInputType(),n.name=t.column.id+"-"+t.row.id,n.classList.add(tk("input")),i.attributes&&Object.entries(i.attributes).forEach(([e,t])=>{n.setAttribute(e,t)}),this.update(),e.appendChild(n),n.addEventListener("change",this.onChange),n.addEventListener("keydown",this.onKeyDown),n.addEventListener("blur",this.onBlur),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),this.input}update(){let e=this.input;e.value=this.convertToInputValue(),e.disabled=!!this.options.disabled}get rawValue(){return this.input.value}get value(){return new Date(`${this.input.value}Z`).getTime()}getMainElement(){return this.input}destroy(){let e=this.input;this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),e.remove()}},rh=class extends rd{getInputType(){return"date"}convertToInputValue(){return this.cell.column.viewport.grid.time.dateFormat("%Y-%m-%d",Number(this.cell.value||0))}},{merge:ru}=B;class rc extends sA{constructor(e,t){super(e),this.options=ru(rc.defaultOptions,t)}render(e,t){return new rh(e,this,t)}}rc.defaultEditingRenderer="dateInput",rc.defaultOptions={type:"dateInput"},nq("dateInput",rc);let rp=class extends rd{getInputType(){return"datetime-local"}convertToInputValue(){return this.cell.column.viewport.grid.time.dateFormat("%Y-%m-%dT%H:%M:%S",Number(this.cell.value||0))}},{merge:rm}=B;class rg extends sA{constructor(e,t){super(e),this.options=rm(rg.defaultOptions,t)}render(e,t){return new rp(e,this,t)}}rg.defaultEditingRenderer="dateTimeInput",rg.defaultOptions={type:"dateTimeInput"},nq("dateTimeInput",rg);let rf=class extends rd{getInputType(){return"time"}get value(){return new Date(`1970-01-01T${this.input.value}Z`).getTime()}convertToInputValue(){return this.cell.column.viewport.grid.time.dateFormat("%H:%M:%S",Number(this.cell.value||0))}},{merge:ry}=B;class rb extends sA{constructor(e,t){super(e),this.options=ry(rb.defaultOptions,t)}render(e,t){return new rf(e,this,t)}}rb.defaultEditingRenderer="timeInput",rb.defaultOptions={type:"timeInput"},nq("timeInput",rb);let{defined:rw,merge:rv}=B;class rC extends sR{constructor(e,t,i){super(e,t),this.onKeyDown=()=>{this.cell.htmlElement.focus()},this.parentElement=i??this.cell.htmlElement,this.add(this.parentElement)}add(e=this.cell.htmlElement){let t=rC.H;t&&rw(this.cell.value)&&(this.parentElement=e,this.chartContainer=document.createElement("div"),this.parentElement.classList.add(tk("noPadding")),this.parentElement.appendChild(this.chartContainer),this.chart=t.Chart.chart(this.chartContainer,rv(rC.defaultChartOptions,this.getProcessedOptions())),this.chartContainer.addEventListener("click",this.onKeyDown))}update(){if(this.chart){let e=this.getProcessedOptions();this.chart.update(e,!0,!1,e.chart?.animation)}else this.destroy(),this.add(this.parentElement)}destroy(){this.chartContainer?.removeEventListener("keydown",this.onKeyDown),this.chart?.destroy(),this.chartContainer?.remove(),delete this.chart,delete this.chartContainer,this.parentElement.classList.remove(tk("noPadding"))}getProcessedOptions(){let e,{chartOptions:t}=this.renderer.options;e="function"==typeof t?t.call(this.cell,this.cell.value):rv(t)||{};let i=(""+this.cell.value).trim();return i.startsWith("[")||i.startsWith("{")||(i=`[${i}]`),e.series||(e.series=[{data:JSON.parse(i)}]),e}}rC.defaultChartOptions={chart:{height:40,margin:[5,8,5,8],backgroundColor:"transparent",skipClone:!0},accessibility:{enabled:!1},tooltip:{enabled:!1},title:{text:""},credits:{enabled:!1},xAxis:{visible:!1},yAxis:{visible:!1},legend:{enabled:!1},plotOptions:{series:{borderWidth:0,marker:{enabled:!1},states:{hover:{enabled:!1},inactive:{enabled:!1}},animation:!1,dataLabels:{enabled:!1}},pie:{slicedOffset:0,borderRadius:0}}};let{merge:rE}=B;class rT extends sA{static useHighcharts(e){e&&!rC.H&&(rC.H=e)}constructor(e){if(super(e),!rC.H)throw Error("Sparkline Renderer: Highcharts is not loaded. Please ensure that Highcharts namespace is registered before the Sparkline Renderer is used.");this.options=rE(rT.defaultOptions,this.column.options.cells?.renderer||{})}render(e){return new rC(e,this)}}rT.defaultEditingRenderer="textInput",rT.defaultOptions={type:"sparkline"},nq("sparkline",rT);let{defined:rx}=B,rS=class extends sR{constructor(e,t,i){super(e,t),this.finishAfterChange=!1,this.dblClickHandler=e=>{e.stopPropagation(),this.input.focus()},this.onChange=e=>{this.changeHandler?this.changeHandler(e):this.cell.editValue(this.value)},this.onKeyDown=e=>{if(e.stopPropagation(),this.keyDownHandler)return void this.keyDownHandler(e);if("Escape"===e.key){this.input.value=this.convertToInputValue(),this.cell.htmlElement.focus();return}"Enter"===e.key&&this.cell.htmlElement.focus()},this.onBlur=e=>{this.blurHandler?.(e)},this.onCellKeyDown=e=>{" "===e.key&&(this.input.focus(),e.preventDefault())},this.input=this.add(i)}add(e=this.cell.htmlElement){let t=this.cell,i=this.input=document.createElement("input"),{options:n}=this.renderer;return i.type="number",i.tabIndex=-1,i.name=t.column.id+"-"+t.row.id,i.classList.add(tk("input")),n.attributes&&Object.entries(n.attributes).forEach(([e,t])=>{i.setAttribute(e,t)}),this.update(),e.appendChild(this.input),i.addEventListener("change",this.onChange),i.addEventListener("keydown",this.onKeyDown),i.addEventListener("blur",this.onBlur),i.addEventListener("dblclick",this.dblClickHandler),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),i}update(){let{options:e}=this.renderer;this.input.value=this.convertToInputValue(),this.input.disabled=!!e.disabled}get rawValue(){return this.input.value}get value(){return+this.input.value}convertToInputValue(){let e=this.cell.value;return rx(e)?""+e:""}getMainElement(){return this.input}destroy(){let e=this.input;this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),e.remove()}},{merge:rL}=B;class rO extends sA{constructor(e,t){super(e),this.options=rL(rO.defaultOptions,t)}render(e,t){return new rS(e,this,t)}}rO.defaultEditingRenderer="numberInput",rO.defaultOptions={type:"numberInput"},nq("numberInput",rO);let rM={AST:J,CellContentPro:sR,CellRenderer:sA,CellRendererRegistry:nK,classNamePrefix:tM,Column:il,ColumnResizing:e$,DataConnector:th,DataConverter:tw,DataCursor:tT,DataModifier:eJ,DataPool:nP,DataTable:ts,defaultOptions:t4,Grid:nI,grid:nI.grid,grids:nI.grids,HeaderCell:iX,isHighContrastModeActive:tO,merge:B.merge,Pagination:t5,Popup:iO,product:"Grid Pro",setOptions:function(e){t7(!0,t4,e)},SvgIcons:{createGridIcon:iy,icons:im,pathDefaults:ig},Table:nr,TableCell:i5,Templating:ez,version:"2.2.0",win:tA};({compose:function(e,t,i,n){nB(p.composed,"GridEvents")&&(["beforeLoad","afterLoad","beforeUpdate","afterUpdate","beforeRedraw","afterRedraw"].forEach(t=>{nH(e,t,e=>{let i=e.target;i.options?.events?.[t]?.call(i,e)})}),["mouseOver","mouseOut","dblClick","click","afterRender"].forEach(e=>{nH(n,e,t=>{let i=t.target;i.column.options.cells?.events?.[e]?.call(i),nz["cell_"+e]?.call(i)})}),["afterResize","beforeSort","afterSort","beforeFilter","afterFilter"].forEach(e=>{nH(t,e,t=>{let i=t.target;i.options?.events?.[e]?.call(i)})}),["click","afterRender"].forEach(e=>{nH(i,e,t=>{let{column:i}=t;i?.options?.header?.events?.[e]?.call(i)})}))}}).compose(rM.Grid,rM.Column,rM.HeaderCell,rM.TableCell),({compose:function(e,t,i){n_(tD,"CellEditing")&&(nG(!0,t4,nZ),n$(i,"afterInit",nJ),n$(e,"beforeInit",nX),n$(t,"keyDown",nQ),n$(t,"dblClick",n0),n$(t,"afterRender",n1),n$(t,"startedEditing",function(){n3(this,"started")}),n$(t,"stoppedEditing",function(e){e.submit&&this.column.options.cells?.events?.afterEdit?.call(this),n3(this,e.submit?"edited":"cancelled")}),n$(t,"afterEditValue",function(){this.column.options.cells?.events?.afterEdit?.call(this),n3(this,"edited")}))},defaultOptions:nZ}).compose(rM.Table,rM.TableCell,rM.Column),({compose:function(e){st(tD,"CreditsPro")&&(se(!0,t4,{credits:n9.defaultOptions}),n8(e,"afterRenderViewport",si))}}).compose(rM.Grid),({compose:function(e){sp(tD,"Exporting")&&(t4.exporting=su.defaultOptions,sc(e,"beforeLoad",sm))}}).compose(rM.Grid),({compose:function(e){sv(tD,"Validator")&&(sw(e,"afterInit",sC),sw(e,"afterDestroy",sE))}}).compose(rM.Table),({compose:function(e){sx(tD,"CellRenderers")&&(sT(e,"afterInit",sS),e.prototype.createCellContent=sL)}}).compose(rM.Column),({compose:function(e){sM(p.composed,"PaginationPro")&&(sO(e,"beforePageChange",e=>{let{target:t,currentPage:i,nextPage:n,pageSize:s}=e;t.options?.events?.beforePageChange?.call(t,{currentPage:i,nextPage:n,pageSize:s})}),sO(e,"afterPageChange",e=>{let{target:t,currentPage:i,previousPage:n,pageSize:s}=e;t.options?.events?.afterPageChange?.call(t,{currentPage:i,previousPage:n,pageSize:s})}),sO(e,"beforePageSizeChange",e=>{let{target:t,newPageSize:i,pageSize:n}=e;t.options?.events?.beforePageSizeChange?.call(t,{pageSize:n,newPageSize:i})}),sO(e,"afterPageSizeChange",e=>{let{target:t,previousPageSize:i,pageSize:n}=e;t.options?.events?.afterPageSizeChange?.call(t,{pageSize:n,previousPageSize:i})}))}}).compose(rM.Pagination);let{classNamePrefix:rR,defaultOptions:rA,grid:rI,grids:rD,isHighContrastModeActive:rk,merge:rN,product:rP,setOptions:rH,version:rF,win:rB}=rM,rz=rM.win;rz.Highcharts&&rM.CellRendererRegistry.types.sparkline.useHighcharts(rz.Highcharts);let rj=rM;return c.default})());
9
+ */function(e,t){"object"==typeof exports&&"object"==typeof module?(e._Grid=t(),module.exports=e._Grid):"function"==typeof define&&define.amd?define("grid/grid-pro",[],t):"object"==typeof exports?(e._Grid=t(),exports["grid/grid-pro"]=e._Grid):(e.Grid&&e.Grid.error(16,!0),e.Grid=t())}("u"<typeof window?this:window,()=>(()=>{"use strict";let e,t,i;var n,s,r={};r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};r.d(o,{default:()=>nL}),(n=s||(s={})).SVG_NS="http://www.w3.org/2000/svg",n.product="Highcharts",n.version="2.3.0",n.win="u">typeof window?window:{},n.doc=n.win.document,n.svg=!!n.doc?.createElementNS?.(n.SVG_NS,"svg")?.createSVGRect,n.pageLang=n.doc?.documentElement?.closest("[lang]")?.lang,n.userAgent=n.win.navigator?.userAgent||"",n.isChrome=n.win.chrome,n.isFirefox=-1!==n.userAgent.indexOf("Firefox"),n.isMS=/(edge|msie|trident)/i.test(n.userAgent)&&!n.win.opera,n.isSafari=!n.isChrome&&-1!==n.userAgent.indexOf("Safari"),n.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(n.userAgent),n.isWebKit=-1!==n.userAgent.indexOf("AppleWebKit"),n.deg2rad=2*Math.PI/360,n.marginNames=["plotTop","marginRight","marginBottom","plotLeft"],n.noop=function(){},n.supportsPassiveEvents=function(){let e=!1;if(!n.isMS){let t=Object.defineProperty({},"passive",{get:function(){e=!0}});n.win.addEventListener&&n.win.removeEventListener&&(n.win.addEventListener("testPassive",n.noop,t),n.win.removeEventListener("testPassive",n.noop,t))}return e}(),n.charts=[],n.composed=[],n.dateFormats={},n.seriesTypes={},n.symbolSizes={},n.chartCount=0;let l=s,{doc:a,win:h}=l;function d(e,t,i,n={}){let s="function"==typeof e&&e.prototype||e;Object.hasOwnProperty.call(s,"hcEvents")||(s.hcEvents={});let r=s.hcEvents;l.Point&&e instanceof l.Point&&e.series&&e.series.chart&&(e.series.chart.runTrackerClick=!0);let o=e.addEventListener;o&&o.call(e,t,i,!!l.supportsPassiveEvents&&{passive:void 0===n.passive?-1!==t.indexOf("touch"):n.passive,capture:!1}),r[t]||(r[t]=[]);let a={fn:i,order:"number"==typeof n.order?n.order:1/0};return r[t].push(a),r[t].sort((e,t)=>e.order-t.order),function(){!function(e,t,i){function n(t,i){let n=e.removeEventListener;n&&n.call(e,t,i,!1)}function s(i){let s,r;e.nodeName&&(t?(s={})[t]=!0:s=i,R(s,function(e,t){if(i[t])for(r=i[t].length;r--;)n(t,i[t][r].fn)}))}let r="function"==typeof e&&e.prototype||e;if(Object.hasOwnProperty.call(r,"hcEvents")){let e=r.hcEvents;if(t){let r=e[t]||[];i?(e[t]=r.filter(function(e){return i!==e.fn}),n(t,i)):(s(e),e[t]=[])}else s(e),delete r.hcEvents}}(e,t,i)}}function u(e,t,i){let n,s=v(t)&&!c(i),r=(t,i)=>{c(t)?e.setAttribute(i,t):s?(n=e.getAttribute(i))||"class"!==i||(n=e.getAttribute(i+"Name")):e.removeAttribute(i)};return v(t)?r(i,t):R(t,r),n}function c(e){return null!=e}function p(e,t,i,n){let s={};return!function e(t,s,r,o){let l=i?s:t;R(t,function(i,a){if(!o&&n&&n.indexOf(a)>-1&&s[a]){i=L(i),r[a]=[];for(let t=0;t<Math.max(i.length,s[a].length);t++)s[a][t]&&(void 0===i[t]?r[a][t]=s[a][t]:(r[a][t]={},e(i[t],s[a][t],r[a][t],o+1)))}else x(i,!0)&&!i.nodeType?(r[a]=C(i)?[]:{},e(i,s[a]||{},r[a],o+1),0===Object.keys(r[a]).length&&("colorAxis"!==a||0!==o)&&delete r[a]):(t[a]!==s[a]||a in t&&!(a in s))&&"__proto__"!==a&&"constructor"!==a&&(r[a]=l[a])})}(e,t,s,0),s}function m(e,t){let i;for(i in e||(e={}),t)e[i]=t[i];return e}function g(e,t,i,n){if(i=i||{},a?.createEvent&&(e.dispatchEvent||e.fireEvent&&e!==l)){let n=a.createEvent("Events");n.initEvent(t,!0,!0),i=m(n,i),e.dispatchEvent?e.dispatchEvent(i):e.fireEvent(t,i)}else if(e.hcEvents){i.target||m(i,{preventDefault:function(){i.defaultPrevented=!0},target:e,type:t});let n=[],s=e,r=!1;for(;s.hcEvents;)Object.hasOwnProperty.call(s,"hcEvents")&&s.hcEvents[t]&&(n.length&&(r=!0),n.unshift.apply(n,s.hcEvents[t])),s=Object.getPrototypeOf(s);r&&n.sort((e,t)=>e.order-t.order),n.forEach(t=>{!1===t.fn.call(e,i,e)&&i.preventDefault()})}n&&!i.defaultPrevented&&n.call(e,i)}function f(e,t,i){let n;if("width"===t){let t=Math.min(e.offsetWidth,e.scrollWidth),i=e.getBoundingClientRect?.().width;return i<t&&i>=t-1&&(t=Math.floor(i)),Math.max(0,t-(f(e,"padding-left",!0)||0)-(f(e,"padding-right",!0)||0))}if("height"===t)return Math.max(0,Math.min(e.offsetHeight,e.scrollHeight)-(f(e,"padding-top",!0)||0)-(f(e,"padding-bottom",!0)||0));let s=h.getComputedStyle(e,void 0);return s&&(n=s.getPropertyValue(t),S(i,"opacity"!==t)&&(n=parseInt(n,10))),n}function w(e){c(e)&&clearTimeout(e)}function y(e){return x(e)&&"number"==typeof e.nodeType}function b(e){return"number"==typeof e&&!isNaN(e)&&e<1/0&&e>-1/0}function v(e){return"string"==typeof e}function C(e){let t=Object.prototype.toString.call(e);return"[object Array]"===t||"[object Array Iterator]"===t}function E(e){return"function"==typeof e}function x(e,t){return!!e&&"object"==typeof e&&(!t||!C(e))}function T(e,...t){let i,n=[e,...t],s={},r=function(e,t){return"object"!=typeof e&&(e={}),R(t,function(i,n){if("__proto__"!==n&&"constructor"!==n){let s;!x(i,!0)||(s=i?.constructor,x(i,!0)&&!y(i)&&s?.name&&"Object"!==s.name)||y(i)?e[n]=t[n]:e[n]=r(e[n]||{},i)}}),e};!0===e&&(s=n[1],n=Array.prototype.slice.call(n,2));let o=n.length;for(i=0;i<o;i++)s=r(s,n[i]);return s}function R(e,t,i){for(let n in e)Object.hasOwnProperty.call(e,n)&&t.call(i||e[n],e[n],n,e)}function O(e,t,i){return Array((t||2)+1-String(e).replace("-","").length).join(i||"0")+e}function S(){let e=arguments,t=e.length;for(let i=0;i<t;i++){let t=e[i];if(null!=t)return t}}function M(e,t){return 0>e.indexOf(t)&&!!e.push(t)}function L(e){return C(e)?e:[e]}function I(e){return v(e)?e.substring(0,1).toUpperCase()+e.substring(1):String(e)}Array.prototype.find;let{charts:A,win:k}=l;function D(e,t,i,n){let s=t?"Highcharts error":"Highcharts warning";32===e&&(e=`${s}: Deprecated member`);let r=b(e),o=r?`${s} #${e}: www.highcharts.com/errors/${e}/`:e.toString();if(void 0!==n){let e="";r&&(o+="?"),R(n,function(t,i){e+=`
10
+ - ${i}: ${t}`,r&&(o+=encodeURI(i)+"="+encodeURI(t))}),o+=e}g(l,"displayError",{chart:i,code:e,message:o,params:n},function(){if(t)throw Error(o);k.console&&-1===D.messages.indexOf(o)&&console.warn(o)}),D.messages.push(o)}(D||(D={})).messages=[];let P={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:314496e5};Math.easeInOutSine=function(e){return -.5*(Math.cos(Math.PI*e)-1)};let H=(t=Math.random().toString(36).substring(2,9)+"-",i=0,function(){return"highcharts-"+(e?"":t)+i++});k.jQuery&&(k.jQuery.fn.highcharts=function(){let e=[].slice.call(arguments);if(this[0])return e[0]?(new l[v(e[0])?e.shift():"Chart"](this[0],e[0],e[1]),this):A[u(this[0],"data-highcharts-chart")]});let{SVG_NS:N,win:F}=l,{trustedTypes:z}=F,B=z&&E(z.createPolicy)&&z.createPolicy("highcharts",{createHTML:e=>e}),j=B?B.createHTML(""):"";class W{static filterUserAttributes(e){return R(e,(t,i)=>{let n=!0;-1===W.allowedAttributes.indexOf(i)&&(n=!1),-1!==["background","dynsrc","href","lowsrc","src"].indexOf(i)&&(n=v(t)&&W.allowedReferences.some(e=>0===t.indexOf(e))),n||(D(33,!1,void 0,{"Invalid attribute in config":`${i}`}),delete e[i]),v(t)&&e[i]&&(e[i]=t.replace(/</g,"&lt;"))}),e}static parseStyle(e){return e.split(";").reduce((e,t)=>{let i=t.split(":").map(e=>e.trim()),n=i.shift();return n&&i.length&&(e[n.replace(/-([a-z])/g,e=>e[1].toUpperCase())]=i.join(":")),e},{})}static setElementHTML(e,t){e.innerHTML=W.emptyHTML,t&&new W(t).addToDOM(e)}constructor(e){this.nodes="string"==typeof e?this.parseMarkup(e):e}addToDOM(e){return function e(t,i){let n;return L(t).forEach(function(t){let s,r=t.tagName,o=t.textContent?l.doc.createTextNode(t.textContent):void 0,a=W.bypassHTMLFiltering;if(r)if("#text"===r)s=o;else if(-1!==W.allowedTags.indexOf(r)||a){var h,d;let n="svg"===r?N:i.namespaceURI||N,c=l.doc.createElementNS(n,r),p=t.attributes||{};R(t,function(e,t){"tagName"!==t&&"attributes"!==t&&"children"!==t&&"style"!==t&&"textContent"!==t&&(p[t]=e)}),u(c,a?p:W.filterUserAttributes(p)),t.style&&(h=c,d=t.style,m(h.style,d)),o&&c.appendChild(o),e(t.children||[],c),s=c}else D(33,!1,void 0,{"Invalid tagName in config":r});s&&i.appendChild(s),n=s}),n}(this.nodes,e)}parseMarkup(e){let t,i=[];e=e.trim().replace(/ style=(["'])/g," data-style=$1");try{t=new DOMParser().parseFromString(B?B.createHTML(e):e,"text/html")}catch{}if(!t){let i=a.createElement("div");i.innerHTML=e,t={body:i}}let n=(e,t)=>{let i=e.nodeName.toLowerCase(),s={tagName:i};"#text"===i&&(s.textContent=e.textContent||"");let r=e.attributes;if(r){let e={};[].forEach.call(r,t=>{"data-style"===t.name?s.style=W.parseStyle(t.value):e[t.name]=t.value}),s.attributes=e}if(e.childNodes.length){let t=[];[].forEach.call(e.childNodes,e=>{n(e,t)}),t.length&&(s.children=t)}t.push(s)};return[].forEach.call(t.body.childNodes,e=>n(e,i)),i}}W.allowedAttributes=["alt","aria-controls","aria-describedby","aria-expanded","aria-haspopup","aria-hidden","aria-label","aria-labelledby","aria-live","aria-pressed","aria-readonly","aria-roledescription","aria-selected","class","clip-path","color","colspan","cx","cy","d","disabled","dx","dy","fill","filterUnits","flood-color","flood-opacity","height","href","id","in","in2","markerHeight","markerWidth","offset","opacity","operator","orient","padding","paddingLeft","paddingRight","patternUnits","r","radius","refX","refY","result","role","rowspan","scope","slope","src","startOffset","stdDeviation","stroke-linecap","stroke-width","stroke","style","summary","tabindex","tableValues","target","text-align","text-anchor","textAnchor","textLength","title","type","valign","width","x","x1","x2","xlink:href","y","y1","y2","zIndex"],W.allowedReferences=["https://","http://","mailto:","/","../","./","#"],W.allowedTags=["#text","a","abbr","b","br","button","caption","circle","clipPath","code","dd","defs","div","dl","dt","em","feComponentTransfer","feComposite","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","filter","h1","h2","h3","h4","h5","h6","hr","i","img","li","linearGradient","marker","ol","p","path","pattern","pre","rect","small","span","stop","strong","style","sub","sup","svg","table","tbody","td","text","textPath","th","thead","title","tr","tspan","u","ul"],W.emptyHTML=j,W.bypassHTMLFiltering=!1;let{pageLang:V,win:q}=l,U=l.isSafari&&q.Intl&&!q.Intl.DateTimeFormat.prototype.formatRange,$=class{constructor(e,t){this.options={timezone:"UTC"},this.variableTimezone=!1,this.Date=q.Date,this.update(e),this.lang=t}update(e={}){this.dTLCache={},this.options=e=T(!0,this.options,e);let{timezoneOffset:t,useUTC:i,locale:n}=e;this.Date=e.Date||q.Date||Date;let s=e.timezone;c(i)&&(s=i?"UTC":void 0),t&&t%60==0&&(s="Etc/GMT"+(t>0?"+":"")+t/60),this.variableTimezone="UTC"!==s&&s?.indexOf("Etc/GMT")!==0,this.timezone=s,this.lang&&n&&(this.lang.locale=n),["months","shortMonths","weekdays","shortWeekdays"].forEach(e=>{let t=/months/i.test(e),i=/short/.test(e),n={timeZone:"UTC"};n[t?"month":"weekday"]=i?"short":"long",this[e]=(t?[0,1,2,3,4,5,6,7,8,9,10,11]:[3,4,5,6,7,8,9]).map(e=>this.dateFormat(n,(t?31:1)*24*36e5*e))})}toParts(e){let[t,i,n,s,r,o,l]=this.dateTimeFormat({weekday:"narrow",day:"numeric",month:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric"},e,"es").split(/(?:, | |\/|:)/g);return[s,n-1,i,r,o,l,Math.floor(Number(e)||0)%1e3,"DLMXJVS".indexOf(t)].map(Number)}dateTimeFormat(e,t,i=this.options.locale||V){let n=JSON.stringify(e)+i;v(e)&&(e=this.str2dtf(e));let s=this.dTLCache[n];if(!s){e.timeZone??(e.timeZone=this.timezone);try{s=new Intl.DateTimeFormat(i,e)}catch(t){/Invalid time zone/i.test(t.message)?(D(34),e.timeZone="UTC",s=new Intl.DateTimeFormat(i,e)):D(t.message,!1)}}return this.dTLCache[n]=s,s?.format(t)||""}str2dtf(e,t={}){let i={L:{fractionalSecondDigits:3},S:{second:"2-digit"},M:{minute:"numeric"},H:{hour:"2-digit"},k:{hour:"numeric"},E:{weekday:"narrow"},a:{weekday:"short"},A:{weekday:"long"},d:{day:"2-digit"},e:{day:"numeric"},b:{month:"short"},B:{month:"long"},m:{month:"2-digit"},o:{month:"numeric"},y:{year:"2-digit"},Y:{year:"numeric"}};return Object.keys(i).forEach(n=>{-1!==e.indexOf(n)&&m(t,i[n])}),t}makeTime(e,t,i=1,n=0,s,r,o){let l=this.Date.UTC(e,t,i,n,s||0,r||0,o||0);if("UTC"!==this.timezone){let e=this.getTimezoneOffset(l);if(l+=e,-1!==[2,3,8,9,10,11].indexOf(t)&&(n<5||n>20)){let t=this.getTimezoneOffset(l);e!==t?l+=t-e:e-36e5!==this.getTimezoneOffset(l-36e5)||U||(l-=36e5)}}return l}parse(e){if(!v(e))return e??void 0;let t=(e=e.replace(/\//g,"-").replace(/(GMT|UTC)/,"")).indexOf("Z")>-1||/([+-][0-9]{2}):?[0-9]{2}$/.test(e),i=/^[0-9]{4}-[0-9]{2}(-[0-9]{2}|)$/.test(e);t||i||(e+="Z");let n=Date.parse(e);if(b(n))return n+(!t||i?this.getTimezoneOffset(n):0)}getTimezoneOffset(e){if("UTC"!==this.timezone){let[t,i,n,s,r=0]=this.dateTimeFormat({timeZoneName:"shortOffset"},e,"en").split(/(GMT|:)/).map(Number),o=-(60*(n+r/60)*6e4);if(b(o))return o}return 0}dateFormat(e,t,i){let n=this.lang;if(!c(t)||isNaN(t))return n?.invalidDate||"";if(v(e=e??"%Y-%m-%d %H:%M:%S")){let i,s=/%\[([a-zA-Z]+)\]/g;for(;i=s.exec(e);)e=e.replace(i[0],this.dateTimeFormat(i[1],t,n?.locale))}if(v(e)&&-1!==e.indexOf("%")){let i=this,[s,r,o,a,h,d,u,c]=this.toParts(t),p=n?.weekdays||this.weekdays,g=n?.shortWeekdays||this.shortWeekdays,f=n?.months||this.months,w=n?.shortMonths||this.shortMonths;R(m({a:g?g[c]:p[c].substr(0,3),A:p[c],d:O(o),e:O(o,2," "),w:c,v:n?.weekFrom??"",b:w[r],B:f[r],m:O(r+1),o:r+1,y:s.toString().substr(2,2),Y:s,H:O(a),k:a,I:O(a%12||12),l:a%12||12,M:O(h),p:a<12?"AM":"PM",P:a<12?"am":"pm",S:O(d),L:O(u,3)},l.dateFormats),function(n,s){if(v(e))for(;-1!==e.indexOf("%"+s);)e=e.replace("%"+s,"function"==typeof n?n.call(i,t,i):n)})}else if(x(e)){let i=(this.getTimezoneOffset(t)||0)/36e5,n=this.timezone||"Etc/GMT"+(i>=0?"+":"")+i,{prefix:s="",suffix:r=""}=e;e=s+this.dateTimeFormat(m({timeZone:n},e),t)+r}return i?I(e):e}resolveDTLFormat(e){return x(e,!0)?x(e,!0)&&void 0===e.main?{main:e}:e:{main:(e=L(e))[0],from:e[1],to:e[2]}}getDateFormat(e,t,i,n){let s=this.dateFormat("%m-%d %H:%M:%S.%L",t),r="01-01 00:00:00.000",o={millisecond:15,second:12,minute:9,hour:6,day:3},l="millisecond",a=l;for(l in P){if(e&&e===P.week&&+this.dateFormat("%w",t)===i&&s.substr(6)===r.substr(6)){l="week";break}if(e&&P[l]>e){l=a;break}if(o[l]&&s.substr(o[l])!==r.substr(o[l]))break;"week"!==l&&(a=l)}return this.resolveDTLFormat(n[l]).main}},Y=class extends ${getTimeTicks(e,t,i,n){let s=this,r=[],o={},{count:l=1,unitRange:a}=e,[h,d,u,p,g,f]=s.toParts(t),w=(t||0)%1e3,y;if(n??(n=1),c(t)){if(w=a>=P.second?0:l*Math.floor(w/l),a>=P.second&&(f=a>=P.minute?0:l*Math.floor(f/l)),a>=P.minute&&(g=a>=P.hour?0:l*Math.floor(g/l)),a>=P.hour&&(p=a>=P.day?0:l*Math.floor(p/l)),a>=P.day&&(u=a>=P.month?1:Math.max(1,l*Math.floor(u/l))),a>=P.month&&(d=a>=P.year?0:l*Math.floor(d/l)),a>=P.year&&(h-=h%l),a===P.week){l&&(t=s.makeTime(h,d,u,p,g,f,w));let e=this.dateTimeFormat({timeZone:this.timezone,weekday:"narrow"},t,"es"),i="DLMXJVS".indexOf(e);u+=-i+n+(i<n?-7:0)}t=s.makeTime(h,d,u,p,g,f,w),s.variableTimezone&&c(i)&&(y=i-t>4*P.month||s.getTimezoneOffset(t)!==s.getTimezoneOffset(i));let e=t,m=1;for(;e<i;)r.push(e),a===P.year?e=s.makeTime(h+m*l,0):a===P.month?e=s.makeTime(h,d+m*l):y&&(a===P.day||a===P.week)?e=s.makeTime(h,d,u+m*l*(a===P.day?1:7)):y&&a===P.hour&&l>1?e=s.makeTime(h,d,u,p+m*l):e+=a*l,m++;r.push(e),a<=P.hour&&r.length<1e4&&r.forEach(e=>{e%18e5==0&&"000000000"===s.dateFormat("%H%M%S%L",e)&&(o[e]="day")})}return r.info=m(e,{higherRanks:o,totalRange:a*l}),r}},{isTouchDevice:K}=l,G={colors:["#2caffe","#544fc5","#00e272","#fe6a35","#6b8abc","#d568fb","#2ee0ca","#fa4b42","#feb56a","#91e8e1"],symbols:["circle","diamond","square","triangle","triangle-down"],lang:{weekFrom:"week from",chartTitle:"Chart title",locale:void 0,loading:"Loading...",months:void 0,seriesName:"Series {add index 1}",shortMonths:void 0,weekdays:void 0,numericSymbols:["k","M","G","T","P","E"],pieSliceName:"Slice",resetZoom:"Reset zoom",yAxisTitle:"Values",resetZoomTitle:"Reset zoom level 1:1"},global:{buttonTheme:{fill:"#f7f7f7",padding:8,r:2,stroke:"#cccccc","stroke-width":1,style:{color:"#333333",cursor:"pointer",fontSize:"0.8em",fontWeight:"normal"},states:{hover:{fill:"#e6e6e6"},select:{fill:"#e6e9ff",style:{color:"#000000",fontWeight:"bold"}},disabled:{style:{color:"#cccccc"}}}}},time:{Date:void 0,timezone:"UTC",timezoneOffset:0,useUTC:void 0},chart:{alignThresholds:!1,panning:{enabled:!1,type:"x"},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{},position:{}},reflow:!0,type:"line",zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:"right",x:-10,y:10}}},width:null,height:null,borderColor:"#334eff",backgroundColor:"#ffffff",plotBorderColor:"#cccccc"},title:{style:{color:"#333333",fontWeight:"bold"},text:"Chart title",margin:15,minScale:.67},subtitle:{style:{color:"#666666",fontSize:"0.8em"},text:""},caption:{margin:15,style:{color:"#666666",fontSize:"0.8em"},text:"",align:"left",verticalAlign:"bottom"},plotOptions:{},legend:{enabled:!0,align:"center",alignColumns:!0,className:"highcharts-no-tooltip",events:{},layout:"horizontal",itemMarginBottom:2,itemMarginTop:2,labelFormatter:function(){return this.name},borderColor:"#999999",borderRadius:0,navigation:{style:{fontSize:"0.8em"},activeColor:"#0022ff",inactiveColor:"#cccccc"},itemStyle:{color:"#333333",cursor:"pointer",fontSize:"0.8em",textDecoration:"none",textOverflow:"ellipsis"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#666666",textDecoration:"line-through"},shadow:!1,itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},squareSymbol:!0,symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{color:"#333333",fontSize:"0.8em",fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:{duration:300,easing:e=>Math.sqrt(1-Math.pow(e-1,2))},borderRadius:3,dateTimeLabelFormats:{millisecond:"%[AebHMSL]",second:"%[AebHMS]",minute:"%[AebHM]",hour:"%[AebHM]",day:"%[AebY]",week:"%v %[AebY]",month:"%[BY]",year:"%Y"},footerFormat:"",headerShape:"callout",hideDelay:500,showDelay:0,padding:8,position:{x:0,y:3},shared:!1,snap:K?25:10,headerFormat:'<span style="font-size: 0.8em">{ucfirst point.key}</span><br/>',pointFormat:'<span style="color:{point.color}">●</span> {series.name}: <b>{point.y}</b><br/>',backgroundColor:"#ffffff",borderWidth:void 0,stickOnContact:!1,style:{color:"#333333",cursor:"default",fontSize:"0.8em"},useHTML:!1},credits:{enabled:!0,href:"https://www.highcharts.com?credits",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#999999",fontSize:"0.6em"},text:"Highcharts.com"}},_=new Y(G.time,G.lang),{defaultOptions:Z,defaultTime:Q}={defaultOptions:G,defaultTime:_,getOptions:function(){return G},setOptions:function(e){return g(l,"setOptions",{options:e}),T(!0,G,e),e.time&&_.update(G.time),e.lang&&"locale"in e.lang&&_.update({locale:e.lang.locale}),e.lang?.chartTitle&&(G.title={...G.title,text:e.lang.chartTitle}),G}},{pageLang:J}=l,X={add:(e,t)=>e+t,divide:(e,t)=>0!==t?e/t:"",eq:(e,t)=>e==t,each:function(e){let t=arguments[arguments.length-1];return!!C(e)&&e.map((i,n)=>et(t.body,m(x(i)?i:{"@this":i},{"@index":n,"@first":0===n,"@last":n===e.length-1}))).join("")},ge:(e,t)=>e>=t,gt:(e,t)=>e>t,if:e=>!!e,le:(e,t)=>e<=t,lt:(e,t)=>e<t,multiply:(e,t)=>e*t,ne:(e,t)=>e!=t,subtract:(e,t)=>e-t,ucfirst:I,unless:e=>!e},ee={};function et(e="",t,i){let n=RegExp("\\{([\\p{L}\\p{M}\\d:\\.,;\\-\\/<>\\[\\]%_@+\"'’= #\\(\\)]+)\\}","gu"),s=RegExp("\\(([\\p{L}\\p{M}\\d:\\.,;\\-\\/<>\\[\\]%_@+\"'= ]+)\\)","gu"),r=[],o=/f$/,l=/\.(\d)/,a=i?.options?.lang||Z.lang,d=i?.time||Q,u=i?.numberFormatter||ei.bind(i),p=(e="")=>{let i;if("true"===e)return!0;if("false"===e)return!1;if((i=Number(e)).toString()===e)return i;if(/^["'].+["']$/.test(e))return e.slice(1,-1);var n=t;let s=e.split(".");for(;s.length&&c(n);){let e=s.shift();if(void 0===e||"__proto__"===e)return;if("this"===e){let e;return x(n)&&(e=n["@this"]),e??n}let t=n[e.replace(/[\\'"]/g,"")];if(!c(t)||"function"==typeof t||"number"==typeof t.nodeType||t===h)return;n=t}return n},m,g,f=0,w;for(;null!==(m=n.exec(e));){let i=m,n=s.exec(m[1]);n&&(m=n,w=!0),g?.isBlock||(g={ctx:t,expression:m[1],find:m[0],isBlock:"#"===m[1].charAt(0),start:m.index,startInner:m.index+m[0].length,length:m[0].length});let o=(g.isBlock?i:m)[1].split(" ")[0].replace("#","");X[o]&&(g.isBlock&&o===g.fn&&f++,g.fn||(g.fn=o));let l="else"===m[1];if(g.isBlock&&g.fn&&(m[1]===`/${g.fn}`||l))if(f)!l&&f--;else{let t=g.startInner,i=e.substr(t,m.index-t);void 0===g.body?(g.body=i,g.startInner=m.index+m[0].length):g.elseBody=i,g.find+=i+m[0],l||(r.push(g),g=void 0)}else g.isBlock||r.push(g);if(n&&!g?.isBlock)break}return r.forEach(n=>{let r,h,{body:c,elseBody:m,expression:g,fn:f}=n;if(f){let e=[n],s=[],o=g.length,l=0,a;for(h=0;h<=o;h++){let e=g.charAt(h);a||'"'!==e&&"'"!==e?a===e&&(a=""):a=e,a||" "!==e&&h!==o||(s.push(g.substr(l,h-l)),l=h+1)}for(h=X[f].length;h--;)e.unshift(p(s[h+1]));r=X[f].apply(t,e),n.isBlock&&"boolean"==typeof r&&(r=et(r?c:m,t,i))}else{let e=/^["'].+["']$/.test(g)?[g]:g.split(":");if(r=p(e.shift()||""),e.length&&"number"==typeof r){let t=e.join(":");if(o.test(t)){let e=parseInt((t.match(l)||["","-1"])[1],10);null!==r&&(r=u(r,e,a.decimalPoint,t.indexOf(",")>-1?a.thousandsSep:""))}else r=d.dateFormat(t,r)}s.lastIndex=0,s.test(n.find)&&v(r)&&(r=`"${r}"`)}e=e.replace(n.find,S(r,""))}),w?et(e,t,i):e}function ei(e,t,i,n){t*=1;let s,r,[o,l]=(e=+e||0).toString().split("e").map(Number),a=this?.options?.lang||Z.lang,h=(e.toString().split(".")[1]||"").split("e")[0].length,d=t,u={};i??(i=a.decimalPoint),n??(n=a.thousandsSep),-1===t?t=Math.min(h,20):b(t)?t&&l<0&&((r=t+l)>=0?(o=+o.toExponential(r).split("e")[0],t=r):(o=Math.floor(o),e=t<20?+(o*Math.pow(10,l)).toFixed(t):0,l=0)):t=2,l&&(t??(t=2),e=o),b(t)&&t>=0&&(u.minimumFractionDigits=t,u.maximumFractionDigits=t),""===n&&(u.useGrouping=!1);let c=n||i,p=c?"en":this?.locale||a.locale||J,m=JSON.stringify(u)+p;return s=(ee[m]??(ee[m]=new Intl.NumberFormat(p,u))).format(e),c&&(s=s.replace(/([,\.])/g,"_$1").replace(/_\,/g,n??",").replace("_.",i??".")),(t||0!=+s)&&(!(l<0)||d)||(s="0"),l&&0!=+s&&(s+="e"+(l<0?"":"+")+l),s}let en={dateFormat:function(e,t,i){return Q.dateFormat(e,t,i)},format:et,helpers:X,numberFormat:ei};class es{constructor(e){this.columnWidths={},this.columnWidthUnits={},this.viewport=e}getColumnWidth(e){let t=this.viewport,i=this.columnWidths[e.id],n=es.getMinWidth(e);if(!c(i)){let e=t.tbodyElement;return Math.max((e.getBoundingClientRect().width-this.calculateOccupiedWidth()-e.offsetWidth+e.clientWidth)/((t.grid.enabledColumns?.length||0)-Object.keys(this.columnWidths).length),n)}return 0===this.columnWidthUnits[e.id]?i:Math.max(t.getWidthFromRatio(i/100),n)}loadColumn(e){let t,i=e.options.width;if(!c(i)||"auto"===i){delete this.columnWidths[e.id],delete this.columnWidthUnits[e.id];return}let n=0;"number"==typeof i?(t=i,n=0):(t=parseFloat(i),n=+("%"===i.charAt(i.length-1))),this.columnWidthUnits[e.id]=n,this.columnWidths[e.id]=t}loadColumns(){let{columns:e}=this.viewport;for(let t=0,i=e.length;t<i;++t)this.loadColumn(e[t])}reflow(){let e=this.viewport,t=0;for(let i=0,n=e.columns.length;i<n;++i)t+=this.getColumnWidth(e.columns[i]);e.rowsWidth=t}static getMinWidth(e){let t=e.cells[0]?.htmlElement,i=e.header?.htmlElement,n=e=>(f(e,"padding-left",!0)||0)+(f(e,"padding-right",!0)||0)+(f(e,"border-left",!0)||0)+(f(e,"border-right",!0)||0),s=es.MIN_COLUMN_WIDTH;return t&&(s=Math.max(s,n(t))),i&&(s=Math.max(s,n(i))),s}calculateOccupiedWidth(){let e,t,i=this.viewport,n=0,s=Object.keys(this.columnWidths);for(let r=0,o=s.length;r<o;++r){if(t=s[r],0===this.columnWidthUnits[t]){n+=this.columnWidths[t];continue}e=this.columnWidths[t],n+=i.getWidthFromRatio(e/100)}return n}}es.MIN_COLUMN_WIDTH=20;let er=es,eo=class extends er{constructor(){super(...arguments),this.type="adjacent"}resize(e,t){let i=this.viewport,n=e.draggedColumn;if(!n)return;let s=e.columnStartWidth??0,r=er.getMinWidth(n),o=i.columns[n.index+1],l=Math.round(10*Math.max(s+t,r))/10;if(this.columnWidths[n.id]=l,this.columnWidthUnits[n.id]=0,n.setOptions({width:l}),o){let t=this.columnWidths[o.id]=Math.round(10*Math.max((e.nextColumnStartWidth??0)+s-l,r))/10;this.columnWidthUnits[o.id]=0,o.setOptions({width:t})}}},el=class extends er{constructor(){super(...arguments),this.type="independent"}resize(e,t){let i=e.draggedColumn;if(!i)return;let n=this.columnWidths[i.id]=Math.round(10*Math.max((e.columnStartWidth||0)+t,er.getMinWidth(i)))/10;this.columnWidthUnits[i.id]=0;let s=this.viewport;for(let e=0;e<s.columns.length;++e){let t=s.columns[e];if(t.id===i.id)continue;let n=this.columnWidths[t.id]=t.getWidth();this.columnWidthUnits[t.id]=0,t.setOptions({width:n})}i.setOptions({width:n})}},ea={adjacent:eo,distributed:class extends er{constructor(){super(...arguments),this.type="distributed"}resize(e,t){let i=e.draggedColumn;if(!i)return;let n=this.columnWidths[i.id]=Math.round(10*Math.max((e.columnStartWidth||0)+t,er.getMinWidth(i)))/10;this.columnWidthUnits[i.id]=0,i.setOptions({width:n})}},independent:el},eh={initMode:function(e){let t=e.grid.options?.rendering?.columns?.resizing?.mode||"adjacent",i=ea[t];return i||(console.warn(`Unknown column resizing mode: '${t}'. Applied default 'adjacent' mode.`),i=ea.adjacent),new i(e)},types:ea,AbstractStrategy:er};class ed{static registerType(e,t){return!!e&&!ed.types[e]&&!!(ed.types[e]=t)}benchmark(e,t){let i=[],n=this,s=()=>{n.modifyTable(e),n.emit({type:"afterBenchmarkIteration"})},{iterations:r}=T({iterations:1},t);n.on("afterBenchmarkIteration",()=>{i.length===r?n.emit({type:"afterBenchmark",results:i}):s()});let o={startTime:0,endTime:0};return n.on("modify",()=>{o.startTime=window.performance.now()}),n.on("afterModify",()=>{o.endTime=window.performance.now(),i.push(o.endTime-o.startTime)}),s(),i}emit(e){g(this,e.type,e)}modify(e,t){let i=this;return new Promise((n,s)=>{e.modified||(e.modified=e.clone(!1,t));try{n(i.modifyTable(e,t))}catch(n){i.emit({type:"error",detail:t,table:e}),s(n instanceof Error?n:Error(""+n))}})}on(e,t){return d(this,e,t)}}ed.types={};let eu=ed,ec={convertToNumber:function(e,t){switch(typeof e){case"boolean":return+!!e;case"number":return isNaN(e)&&!t?null:e;default:return isNaN(e=parseFloat(`${e??""}`))&&!t?null:e}},setLength:function(e,t,i){return Array.isArray(e)?(e.length=t,e):e[i?"subarray":"slice"](0,t)},splice:function(e,t,i,n,s=[]){if(Array.isArray(e))return Array.isArray(s)||(s=Array.from(s)),{removed:e.splice(t,i,...s),array:e};let r=Object.getPrototypeOf(e).constructor,o=e[n?"subarray":"slice"](t,t+i),l=new r(e.length-i+s.length);return l.set(e.subarray(0,t),0),l.set(s,t),l.set(e.subarray(t+i),t+s.length),{removed:o,array:l}}},{setLength:ep,splice:em}=ec,eg=class{constructor(e={}){this.autoId=!e.id,this.columns={},this.id=e.id||H(),this.rowCount=0,this.versionTag=H();let t=0;R(e.columns||{},(e,i)=>{this.columns[i]=e.slice(),t=Math.max(t,e.length)}),this.applyRowCount(t)}applyRowCount(e){this.rowCount=e,R(this.columns,(t,i)=>{t.length!==e&&(this.columns[i]=ep(t,e))})}deleteRows(e,t=1){if(t>0&&e<this.rowCount){let i=0;R(this.columns,(n,s)=>{this.columns[s]=em(n,e,t).array,i=n.length}),this.rowCount=i}g(this,"afterDeleteRows",{rowIndex:e,rowCount:t}),this.versionTag=H()}getColumn(e,t){return this.columns[e]}getColumns(e,t){return(e||Object.keys(this.columns)).reduce((e,t)=>(e[t]=this.columns[t],e),{})}getRow(e,t){return(t||Object.keys(this.columns)).map(t=>this.columns[t]?.[e])}setColumn(e,t=[],i=0,n){this.setColumns({[e]:t},i,n)}setColumns(e,t,i){let n=this.rowCount;R(e,(e,t)=>{this.columns[t]=e.slice(),n=e.length}),this.applyRowCount(n),i?.silent||(g(this,"afterSetColumns"),this.versionTag=H())}setRow(e,t=this.rowCount,i,n){let{columns:s}=this,r=i?this.rowCount+1:t+1,o=Object.keys(e);if(n?.addColumns!==!1)for(let e=0,t=o.length;e<t;e++){let t=o[e];s[t]||(s[t]=[])}R(s,(o,l)=>{o||n?.addColumns===!1||(o=Array(r)),o&&(i?o=em(o,t,0,!0,[e[l]??null]).array:o[t]=e[l]??null,s[l]=o)}),r>this.rowCount&&this.applyRowCount(r),n?.silent||(g(this,"afterSetRows"),this.versionTag=H())}getModified(){return this.modified||this}},{splice:ef,setLength:ew}=ec;class ey extends eg{constructor(e={}){super(e),this.metadata=e.metadata}clone(e,t){let i={};this.emit({type:"cloneTable",detail:t}),e||(i.columns=this.columns),this.autoId||(i.id=this.id);let n=new ey(i);return e||(n.versionTag=this.versionTag,n.originalRowIndexes=this.originalRowIndexes,n.localRowIndexes=this.localRowIndexes),n.metadata={...this.metadata},this.emit({type:"afterCloneTable",detail:t,tableClone:n}),n}deleteColumns(e,t){let i=this.columns,n={},s={},r=this.modifier,o=this.rowCount;if((e=e||Object.keys(i)).length){this.emit({type:"deleteColumns",columnIds:e,detail:t});for(let t=0,r=e.length,l,a;t<r;++t)(l=i[a=e[t]])&&(n[a]=l,s[a]=Array(o)),delete i[a];return Object.keys(i).length||(this.rowCount=0,this.deleteRowIndexReferences()),r&&r.modifyTable(this),this.emit({type:"afterDeleteColumns",columns:n,columnIds:e,detail:t}),n}}deleteRowIndexReferences(){delete this.originalRowIndexes,delete this.localRowIndexes}deleteRows(e,t=1,i){let n,s,{columns:r,modifier:o}=this,l=[];if(c(e)?Array.isArray(e)?s=(n=e.filter((e,t,i)=>e>=0&&e<this.rowCount&&i.indexOf(e)===t).sort((e,t)=>t-e)).length:(n=[e],s=t):(n=[0],s=this.rowCount),this.emit({type:"deleteRows",detail:i,rowCount:s,rowIndex:e??0}),s>0){let e=Object.keys(r);for(let t=0;t<e.length;++t){let i,o=e[t],a=r[o];if(1===n.length&&s>1){let e=ef(a,n[0],s);i=e.removed,r[o]=e.array}else{for(let e of(i=[],n))i.push(a[e]),ef(a,e,1);i.reverse()}t||(this.rowCount=a.length);for(let e=0,n=i.length;e<n;++e)l[e]=l[e]||[],l[e][t]=i[e]}}return o&&o.modifyTable(this),this.emit({type:"afterDeleteRows",detail:i,rowCount:s,rowIndex:e??0,rows:l}),l}emit(e){["afterDeleteColumns","afterDeleteRows","afterSetCell","afterSetColumns","afterSetRows"].includes(e.type)&&(this.versionTag=H()),g(this,e.type,e)}getCell(e,t){let i=this.columns[e];if(i)return i[t]}getColumn(e,t){return this.getColumns([e],t)[e]}getColumnIds(){return Object.keys(this.columns)}getColumns(e,t,i){let n=this.columns,s={};e=e||Object.keys(n);for(let r=0,o=e.length,l,a;r<o;++r)(l=n[a=e[r]])&&(t?s[a]=l:i&&!Array.isArray(l)?s[a]=Array.from(l):s[a]=l.slice());return s}getLocalRowIndex(e){let{localRowIndexes:t}=this;return t?t[e]:e}getModifier(){return this.modifier}getOriginalRowIndex(e){let{originalRowIndexes:t}=this;return t?t[e]:e}getRow(e,t){return this.getRows(e,1,t)[0]}getRowCount(){return this.rowCount}getRowIndexBy(e,t,i){let n=this.columns[e];if(n){let e=-1;if(Array.isArray(n)?e=n.indexOf(t,i):b(t)&&(e=n.indexOf(t,i)),-1!==e)return e}}getRowObject(e,t){return this.getRowObjects(e,1,t)[0]}getRowObjects(e=0,t=this.rowCount-e,i){let n=this.columns,s=Array(t);i=i||Object.keys(n);for(let r=e,o=0,l=Math.min(this.rowCount,e+t),a,h;r<l;++r,++o)for(let e of(h=s[o]={},i))a=n[e],h[e]=a?a[r]:void 0;return s}getRows(e=0,t=this.rowCount-e,i){let n=this.columns,s=Array(t);i=i||Object.keys(n);for(let r=e,o=0,l=Math.min(this.rowCount,e+t),a,h;r<l;++r,++o)for(let e of(h=s[o]=[],i))a=n[e],h.push(a?a[r]:void 0);return s}getVersionTag(){return this.versionTag}hasColumns(e){let t=this.columns;for(let i=0,n=e.length;i<n;++i)if(!t[e[i]])return!1;return!0}hasRowWith(e,t){let i=this.columns[e];return Array.isArray(i)?-1!==i.indexOf(t):!!(c(t)&&Number.isFinite(t))&&-1!==i.indexOf(+t)}on(e,t){return d(this,e,t)}changeColumnId(e,t){let i=this.columns;return!!i[e]&&(e!==t&&(i[t]=i[e],delete i[e]),!0)}setCell(e,t,i,n){let s=this.columns,r=this.modifier,o=s[e];o&&o[t]===i||(this.emit({type:"setCell",cellValue:i,columnId:e,detail:n,rowIndex:t}),o||(o=s[e]=Array(this.rowCount)),t>=this.rowCount&&(this.rowCount=t+1),o[t]=i,r&&r.modifyTable(this),this.emit({type:"afterSetCell",cellValue:i,columnId:e,detail:n,rowIndex:t}))}setColumns(e,t,i,n){let s=this.columns,r=this.modifier,o=Object.keys(e),l=this.rowCount;if(this.emit({type:"setColumns",columns:e,columnIds:o,detail:i,rowIndex:t}),c(t)||n){for(let i=0,r=o.length,a,h,d,u;i<r;++i){a=e[d=o[i]],u=Object.getPrototypeOf((h=s[d])&&n?h:a).constructor,h?u===Array?Array.isArray(h)||(h=Array.from(h)):h.length<l&&(h=new u(l)).set(s[d]):h=new u(l),s[d]=h;for(let e=t||0,i=a.length;e<i;++e)h[e]=a[e];l=Math.max(l,a.length)}this.applyRowCount(l)}else super.setColumns(e,t,m(i,{silent:!0}));r&&r.modifyTable(this),this.emit({type:"afterSetColumns",columns:e,columnIds:o,detail:i,rowIndex:t})}setModifier(e,t){let i=this;return i.emit({type:"setModifier",detail:t,modifier:e,modified:i.getModified()}),i.modifier=e,(e?e.modify(i):Promise.resolve(i)).then(i=>(i.emit({type:"afterSetModifier",detail:t,modifier:e,modified:i.getModified()}),i)).catch(t=>{throw i.emit({type:"setModifierError",error:t,modifier:e,modified:i.getModified()}),t})}setOriginalRowIndexes(e,t=!1){if(this.originalRowIndexes=e,t)return;let i=this.localRowIndexes=[];for(let t=0,n=e.length,s;t<n;++t)c(s=e[t])&&(i[s]=t)}setRow(e,t,i,n){this.setRows([e],t,i,n)}setRows(e,t=this.rowCount,i,n){let s=this.columns,r=Object.keys(s),o=this.modifier,l=e.length;this.emit({type:"setRows",detail:n,rowCount:l,rowIndex:t,rows:e});for(let n=0,o=t,a;n<l;++n,++o)if(0===Object.keys(a=e[n]).length)for(let e=0,t=r.length;e<t;++e){let t=s[r[e]];i?s[r[e]]=ef(t,o,0,!0,[null]).array:t[o]=null}else if(Array.isArray(a))for(let e=0,t=r.length;e<t;++e)s[r[e]][o]=a[e];else super.setRow(a,o,i,{silent:!0});let a=i?l+e.length:t+l;if(a>this.rowCount){this.rowCount=a;for(let e=0,t=r.length;e<t;++e){let t=r[e];s[t]=ew(s[t],a)}}o&&o.modifyTable(this),this.emit({type:"afterSetRows",detail:n,rowCount:l,rowIndex:t,rows:e})}}class eb{static registerType(e,t){return!!e&&!eb.types[e]&&!!(eb.types[e]=t)}get polling(){return!!this._polling}constructor(e){this.dataTables={},this.loaded=!1,this.metadata=e.metadata||{columns:{}},this.options=e;const t=e?.dataTables;let i=0;if(e.options&&console.error("The `DataConnectorOptions.options` property was removed in Dashboards v4.0.0. Check how to upgrade your connector to use the new options structure here: https://api.highcharts.com/dashboards/#interfaces/Data_DataTableOptions.DataTableOptions"),t&&t?.length>0)for(let e=0,n=t.length;e<n;++e){const n=t[e],s=n?.key;this.dataTables[s??i]=new ey(n),!s&&i++}else this.dataTables[0]=new ey({id:e.id})}getTable(e){return e?this.dataTables[e]:Object.values(this.dataTables)[0]}describeColumn(e,t){let i=this.metadata.columns;i[e]=T(i[e]||{},t)}describeColumns(e){let t,i=Object.keys(e);for(;"string"==typeof(t=i.pop());)this.describeColumn(t,e[t])}getColumnOrder(){let e=this.metadata.columns,t=Object.keys(e||{});if(t.length)return t.sort((t,i)=>S(e[t].index,0)-S(e[i].index,0))}getSortedColumns(){return this.getTable().getColumns(this.getColumnOrder())}setColumnOrder(e){for(let t=0,i=e.length;t<i;++t)this.describeColumn(e[t],{index:t})}async update(e,t=!0){this.emit({type:"beforeUpdate"}),T(!0,this.options,e);let{options:i}=this;("enablePolling"in e||"dataRefreshRate"in e)&&("enablePolling"in i&&i.enablePolling?(this.stopPolling(),this.startPolling("dataRefreshRate"in i&&"number"==typeof i.dataRefreshRate?1e3*Math.max(i.dataRefreshRate,1):1e3)):this.stopPolling()),t&&await this.load(),this.emit({type:"afterUpdate"})}load(){return this.emit({type:"afterLoad"}),Promise.resolve(this)}async applyTableModifiers(){let e=this.options?.dataTables;for(let[t,i]of Object.entries(this.dataTables)){let n=e?.find(e=>e.key===t)?.dataModifier??this.options?.dataModifier,s=n&&eu.types[n.type];await i.setModifier(s?new s(n):void 0)}return this}startPolling(e=1e3){let t=this;this.pollingController=new AbortController,window.clearTimeout(t._polling),t._polling=window.setTimeout(()=>t.load().catch(e=>t.emit({type:"loadError",error:e})).then(()=>{t._polling&&t.startPolling(e)}),e)}stopPolling(){this.polling&&(this?.pollingController?.abort(),window.clearTimeout(this._polling),delete this._polling)}emit(e){g(this,e.type,e)}on(e,t){return d(this,e,t)}initConverters(e,t,i){let n=0;for(let[s,r]of Object.entries(this.dataTables)){let o=t(s),l=i(o,e);r.deleteColumns(),r.setColumns(l),0===n&&(this.converter=o),n++}}}eb.types={};let ev=eb;function eC(e,t){return"string"==typeof e&&(e=e.replace(/^\s+|\s+$/g,""),t&&/^[\d\s]+$/.test(e)&&(e=e.replace(/\s/g,""))),e}let eE=function(e,t){let i;if("string"==typeof e)i=t.parseDate(e);else if("number"==typeof e)i=e;else{if(e instanceof Date)return e;i=t.parseDate(""+e)}return new Date(i)},ex=function(e,t){if("number"==typeof e)return e;if("boolean"==typeof e)return+!!e;if("string"==typeof e){if(e.indexOf(" ")>-1&&(e=e.replace(/\s+/g,"")),t){if(!t.test(e))return NaN;e=e.replace(t,"$1.$2")}return parseFloat(e)}return e instanceof Date?e.getDate():e?e.getRowCount():NaN},eT=function(e){return""+e},eR=function(e=[],t){let i={};for(let n=0,s=Math.max(t.length,e.length);n<s;++n)i[t[n]||`${n}`]=e[n]?e[n].slice():[];return i},eO=function(e,t){let i="string";if("string"==typeof e){let n=eC(`${e}`),s=t.decimalRegExp,r=eC(n,!0);s&&(r=s.test(r)?r.replace(s,"$1.$2"):"");let o=parseFloat(r);+r===o?e=o:i=b(t.parseDate(e))?"Date":"string"}return"number"==typeof e&&(i=e>31536e6?"Date":"number"),i};class eS{static registerType(e,t){return!!e&&!eS.types[e]&&!!(eS.types[e]=t)}constructor(e){this.dateFormats={"YYYY/mm/dd":{regex:/^(\d{4})([\-\.\/])(\d{1,2})\2(\d{1,2})$/,parser:function(e){return e?Date.UTC(+e[1],e[3]-1,+e[4]):NaN}},"dd/mm/YYYY":{regex:/^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{4})$/,parser:function(e){return e?Date.UTC(+e[4],e[3]-1,+e[1]):NaN},alternative:"mm/dd/YYYY"},"mm/dd/YYYY":{regex:/^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{4})$/,parser:function(e){return e?Date.UTC(+e[4],e[1]-1,+e[3]):NaN}},"dd/mm/YY":{regex:/^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{2})$/,parser:function(e){let t=new Date;if(!e)return NaN;let i=+e[4];return i>t.getFullYear()-2e3?i+=1900:i+=2e3,Date.UTC(i,e[3]-1,+e[1])},alternative:"mm/dd/YY"},"mm/dd/YY":{regex:/^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{2})$/,parser:function(e){return e?Date.UTC(+e[4]+2e3,e[1]-1,+e[3]):NaN}}};const t=T(eS.defaultOptions,e);let i=t.decimalPoint;("."===i||","===i)&&(i="."===i?"\\.":",",this.decimalRegExp=RegExp("^(-?[0-9]+)"+i+"([0-9]+)$")),this.options=t}convertByType(e){let t=this;return({number:e=>ex(e,t.decimalRegExp),Date:e=>eE(e,t),string:eT})[eO(e,t)].call(t,e)}deduceDateFormat(e,t,i){let n=[],s=[],r="YYYY/mm/dd",o,l=[],a=0,h=!1,d,u;for((!t||t>e.length)&&(t=e.length);a<t;a++)if(void 0!==e[a]&&e[a]&&e[a].length)for(u=0,o=e[a].trim().replace(/[\-\.\/]/g," ").split(" "),l=["","",""];u<o.length;u++)u<l.length&&(d=parseInt(o[u],10))&&(s[u]=!s[u]||s[u]<d?d:s[u],void 0!==n[u]?n[u]!==d&&(n[u]=!1):n[u]=d,d>31?d<100?l[u]="YY":l[u]="YYYY":d>12&&d<=31?(l[u]="dd",h=!0):l[u].length||(l[u]="mm"));if(h){for(u=0;u<n.length;u++)!1!==n[u]?s[u]>12&&"YY"!==l[u]&&"YYYY"!==l[u]&&(l[u]="YY"):s[u]>12&&"mm"===l[u]&&(l[u]="dd");3===l.length&&"dd"===l[1]&&"dd"===l[2]&&(l[2]="YY"),r=l.join("/")}return i&&(this.options.dateFormat=r),r}emit(e){g(this,e.type,e)}on(e,t){return d(this,e,t)}parseDate(e,t){let i=this.options,n=t||i.dateFormat,s=NaN,r,o=null;if(i.parseDate)s=i.parseDate(e);else{let t=this.dateFormats;if(n){let i=t[n];i||(i=t["YYYY/mm/dd"]),(o=e.match(i.regex))&&(s=i.parser(o))}else for(r in t){let i=t[r];if(o=e.match(i.regex)){n=r,s=i.parser(o);break}}if(!o){let t=Date.parse(e);!isNaN(t)&&(s=t-6e4*new Date(t).getTimezoneOffset(),e.includes("2001")||2001!==new Date(s).getFullYear()||(s=NaN))}}return s}}eS.defaultOptions={dateFormat:"",firstRowAsNames:!0},eS.types={};let eM=eS;function eL(e,t){if("position"===e.type){for(let i,n=0,s=t.length;n<s;++n)if("position"===(i=t[n]).type&&i.state===e.state&&i.column===e.column&&i.row===e.row)return n}else{let i=JSON.stringify(e.columns);for(let n,s=0,r=t.length;s<r;++s)if("range"===(n=t[s]).type&&n.state===e.state&&n.firstRow===e.firstRow&&n.lastRow===e.lastRow&&JSON.stringify(n.columns)===i)return s}return -1}let eI=class{constructor(e={}){this.emittingRegister=[],this.listenerMap={},this.stateMap=e}addListener(e,t,i){let n=this.listenerMap[e]=this.listenerMap[e]||{};return(n[t]=n[t]||[]).push(i),this}buildEmittingTag(e){return("position"===e.cursor.type?[e.table.id,e.cursor.column,e.cursor.row,e.cursor.state,e.cursor.type]:[e.table.id,e.cursor.columns,e.cursor.firstRow,e.cursor.lastRow,e.cursor.state,e.cursor.type]).join("\0")}emitCursor(e,t,i,n){let s=e.id,r=t.state,o=this.listenerMap[s]&&this.listenerMap[s][r];if(o){let r=this.stateMap[s]=this.stateMap[s]??{},l=r[t.state]||[];n&&(l.length||(r[t.state]=l),-1===eL(t,l)&&l.push(t));let a={cursor:t,cursors:l,table:e};i&&(a.event=i);let h=this.emittingRegister,d=this.buildEmittingTag(a);if(h.indexOf(d)>=0)return this;try{this.emittingRegister.push(d);for(let e=0,t=o.length;e<t;++e)o[e].call(this,a)}finally{let e=this.emittingRegister.indexOf(d);e>=0&&this.emittingRegister.splice(e,1)}}return this}remitCursor(e,t){let i=this.stateMap[e]&&this.stateMap[e][t.state];if(i){let e=eL(t,i);e>=0&&i.splice(e,1)}return this}removeListener(e,t,i){let n=this.listenerMap[e]&&this.listenerMap[e][t];if(n){let e=n.indexOf(i);e>=0&&n.splice(e,1)}return this}},{doc:eA,isMS:ek,win:eD}=l,eP=function(){if(ek&&eD.getComputedStyle){let e=eA.createElement("div");e.style.backgroundImage="url(data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)",eA.body.appendChild(e);let t=(e.currentStyle||eD.getComputedStyle(e)).backgroundImage;return eA.body.removeChild(e),"none"===t}return eD.matchMedia&&eD.matchMedia("(forced-colors: active)").matches},eH="hcg-",eN={container:"container",tableElement:"table",captionElement:"caption",descriptionElement:"description",theadElement:"thead",tbodyElement:"tbody",rowElement:"row",rowEven:"row-even",rowOdd:"row-odd",hoveredRow:"hovered-row",hoveredCell:"hovered-cell",hoveredColumn:"hovered-column",syncedRow:"synced-row",syncedCell:"synced-cell",syncedColumn:"synced-column",editedCell:"edited-cell",mockedRow:"mocked-row",rowsContentNowrap:"rows-content-nowrap",virtualization:"virtualization",scrollableContent:"scrollable-content",headerCell:"header-cell",headerCellContainer:"header-cell-container",headerCellContent:"header-cell-content",headerCellFilterIcon:"header-cell-filter-icon",headerCellIcons:"header-cell-icons",headerCellSortIcon:"header-cell-sort-icon",headerCellMenuIcon:"header-cell-menu-icon",headerRow:"head-row-content",noData:"no-data",noPadding:"no-padding",columnFirst:"column-first",columnSortable:"column-sortable",columnSortableIcon:"column-sortable-icon",columnSortedAsc:"column-sorted-asc",columnSortedDesc:"column-sorted-desc",resizableContent:"resizable-content",resizerHandles:"column-resizer",resizedColumn:"column-resized",creditsContainer:"credits-container",creditsText:"credits",creditsPro:"credits-pro",visuallyHidden:"visually-hidden",lastHeaderCellInRow:"last-header-cell-in-row",loadingWrapper:"loading-wrapper",loadingSpinner:"spinner",loadingMessage:"loading-message",popup:"popup",button:"button",buttonSelected:"button-selected",buttonHighlighted:"button-highlighted",input:"input",icon:"icon",iconSearch:"icon-search",popupContent:"popup-content",columnFilterWrapper:"column-filter-wrapper",menuContainer:"menu-container",menuItem:"menu-item",menuHeader:"menu-header",menuHeaderCategory:"menu-header-category",menuHeaderName:"menu-header-name",menuItemIcon:"menu-item-icon",menuItemLabel:"menu-item-label",menuDivider:"menu-divider",clearFilterButton:"clear-filter-button",pagination:"pagination",paginationPageInfo:"pagination-info",paginationControls:"pagination-controls",paginationPageSize:"pagination-page-size",paginationPages:"pagination-pages",paginationNavDropdown:"pagination-nav-dropdown",paginationLeft:"pagination-left",paginationCenter:"pagination-center",paginationRight:"pagination-right",paginationDistributed:"pagination-distributed",noWidth:"no-width",rightAlign:"right",centerAlign:"center",leftAlign:"left"},eF=window,ez=eF.navigator&&eF.navigator.userAgent||"",eB=(-1===ez.indexOf("Chrome")&&ez.indexOf("Safari"),[]),ej=e=>eH+eN[e];function eW(e,t,i){let n=document.createElement(e);if(t){let e=Object.keys(t);for(let i=0;i<e.length;i++){let s=e[i],r=t[s];void 0!==r&&("style"===s?Object.assign(n.style,r):n[s]=r)}}return i&&i.appendChild(n),n}function eV(e){return -1!==e.indexOf("<")}function eq(e,t){eV(t)?(e.innerHTML=W.emptyHTML,new W(t).addToDOM(e)):e.innerText=t}function eU(e,t={}){let i=(e={})=>({get(t,n){let s=t[n],r=e[n];return x(s,!0)?new Proxy(s,i(r??{})):s??r},set:(e,t,i)=>(e[t]=i,!0),deleteProperty:(e,t)=>(delete e[t],!0)});return new Proxy(e,i(t))}function e$(e,t){if(e){if("function"==typeof e){if(!t)return;return e.call(t,t)}return e}}function eY(e,...t){let i={};for(let n of t){let t=e$(n,e);t&&Object.assign(i,t)}return i}W.allowedAttributes.push("srcset","media"),W.allowedTags.push("picture","source");let eK={makeHTMLElement:eW,makeDiv:function(e,t){return eW("div",{className:e,id:t})},isHTML:eV,sanitizeText:function(e){try{return new DOMParser().parseFromString(e,"text/html").body.textContent||""}catch{return""}},setHTMLContent:eq,createOptionsProxy:eU,formatText:function(e,t){return e.replace(/\{(\w+)\}/g,(e,i)=>void 0!==t[i]?String(t[i]):e)},resolveStyleValue:e$,mergeStyleValues:eY},eG={string:["contains","doesNotContain","equals","doesNotEqual","beginsWith","endsWith","empty","notEmpty"],number:["equals","doesNotEqual","greaterThan","greaterThanOrEqualTo","lessThan","lessThanOrEqualTo","empty","notEmpty"],datetime:["equals","doesNotEqual","before","after","empty","notEmpty"],boolean:["all","true","false","empty"]},{makeHTMLElement:e_}=eK;class eZ{static parseCamelCaseToReadable(e){let t=e.replace(/([A-Z])/g," $1").trim().toLowerCase().split(/\s+/).join(" ");return t.charAt(0).toUpperCase()+t.slice(1)}constructor(e){this.onKeyDown=e=>{let t=[];this.filterSelect&&!this.filterSelect.disabled&&t.push(this.filterSelect),this.filterInput&&!this.filterInput.disabled&&t.push(this.filterInput),this.clearButton&&!this.clearButton.disabled&&t.push(this.clearButton);let i={ArrowDown:1,ArrowUp:-1}[e.key];if(i){e.preventDefault();let n=t.indexOf(e.target),s=t.length;t[(n+i+s)%s].focus();return}if("Enter"===e.key&&e.target===this.clearButton){e.preventDefault(),this.set(),t[0]?.focus();return}},this.column=e}async set(e,t){this.filterInput&&(this.filterInput.value=e??""),this.filterSelect&&(this.filterSelect.value=t??eG[this.column.dataType][0]),await this.applyFilter({value:e,condition:t})}refreshState(){let e=this.column.options.filtering;this.filterSelect&&(this.filterSelect.value=e?.condition??eG[this.column.dataType][0]),this.filterInput&&(this.filterInput.value=""+(e?.value??"")),this.clearButton&&(this.clearButton.disabled=!this.isFilteringApplied()),this.disableInputIfNeeded()}renderFilteringContent(e){let t=this.column,i=t.dataType;if(!t.options.filtering?.enabled)return;let n=e_("div",{className:ej("columnFilterWrapper")},e);this.renderConditionSelect(n),"boolean"!==i&&this.renderFilteringInput(n,i),this.renderClearButton(n)}applyFilterFromForm(){let e={condition:this.filterSelect?.value};this.filterInput&&(e.value=this.filterInput.value),e.condition&&eG[this.column.dataType].includes(e.condition)&&this.applyFilter(e)}async applyFilter(e){let t=this.column.viewport,i=t.grid.querying,n=i.filtering,s=this.column.id,r=t.grid.accessibility,{value:o}=e;g(this.column,"beforeFilter",{target:this.column});let l=this.isFilteringApplied(),a=this.clearButton;if(a&&l===a.disabled&&(a.disabled=!l),c(o)&&""!==o&&"number"!=typeof o)switch(this.column.dataType){case"number":e.value=Number(o);break;case"datetime":e.value=new Date(`${o}Z`).getTime()}this.column.setOptions({filtering:{condition:e.condition,value:e.value}}),n.addColumnFilterCondition(s,e),this.disableInputIfNeeded(),await i.proceed(),await t.updateRows(),r?.userFilteredColumn({...e,columnId:s,rowsCount:t.rows.length},l),g(this.column,"afterFilter",{target:this.column})}renderFilteringInput(e,t){this.filterInput=e_("input",{className:ej("input")},e),this.filterInput.setAttribute("tabindex","-1");let i=this.column;this.filterInput.setAttribute("id","filter-input-"+i.viewport.grid.id+"-"+i.id),this.filterInput.placeholder="Value...","number"===t?this.filterInput.type="number":"datetime"===t?this.filterInput.type="date":(this.filterInput.type="text",this.filterInput.classList.add(ej("icon"),ej("iconSearch")));let{value:n}=this.column.options.filtering??{};for(let e of((n||0===n)&&(this.filterInput.value="datetime"===t?i.viewport.grid.time.dateFormat("%Y-%m-%d",Number(n)):n.toString()),this.filterSelect&&this.disableInputIfNeeded(),({string:["keyup"],number:["keyup","change"],datetime:["change"]})[t]))this.filterInput.addEventListener(e,()=>{this.applyFilterFromForm()})}renderConditionSelect(e){this.filterSelect=e_("select",{className:ej("input")},e),this.filterSelect.setAttribute("tabindex","-1");let t=this.column;this.filterSelect.setAttribute("id","filter-select-"+t.viewport.grid.id+"-"+t.id);let i=eG[t.dataType],n=this.column.viewport.grid.options?.lang?.columnFilteringConditions??{};for(let e of i){let t=document.createElement("option");t.value=e,t.textContent=n[e]??eZ.parseCamelCaseToReadable(e),this.filterSelect.appendChild(t)}let s=this.column.options.filtering?.condition;s&&i.includes(s)?this.filterSelect.value=s:this.filterSelect.value=i[0],this.disableInputIfNeeded(),this.filterSelect.addEventListener("change",()=>{this.applyFilterFromForm()})}renderClearButton(e){this.clearButton=e_("button",{className:ej("clearFilterButton"),innerText:"Clear filter"},e),this.clearButton.setAttribute("tabindex","-1"),this.clearButton.disabled=!this.isFilteringApplied(),this.clearButton.addEventListener("click",()=>{this.set()})}isFilteringApplied(){let{filterSelect:e,filterInput:t}=this,{dataType:i}=this.column,n=e?.value;return"boolean"===i?"all"!==n:"empty"===n||"notEmpty"===n||t?.value!==""}disableInputIfNeeded(){let{filterSelect:e,filterInput:t}=this,i=e?.value;t&&e&&("empty"===i||"notEmpty"===i?t.disabled=!0:t?.disabled&&(t.disabled=!1))}}let{doc:eQ,win:eJ}=l,eX=eJ.EventTarget&&new eJ.EventTarget||"none";function e0(e){if("function"==typeof eJ.MouseEvent)return new eJ.MouseEvent(e.type,e);if(eQ?.createEvent){let t=eQ.createEvent("MouseEvent");if(t.initMouseEvent)return t.initMouseEvent(e.type,e.bubbles,e.cancelable,e.view||eJ,e.detail,e.screenX,e.screenY,e.clientX,e.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget),t}return e1(e.type)}function e1(e,t,i){let n=t||{x:0,y:0};if("function"==typeof eJ.MouseEvent)return new eJ.MouseEvent(e,{bubbles:!0,cancelable:!0,composed:!0,button:0,buttons:1,relatedTarget:i||eX,view:eJ,detail:+("click"===e),screenX:n.x,screenY:n.y,clientX:n.x,clientY:n.y});if(eQ?.createEvent){let t=eQ.createEvent("MouseEvent");if(t.initMouseEvent)return t.initMouseEvent(e,!0,!0,eJ,+("click"===e),n.x,n.y,n.x,n.y,!1,!1,!1,!1,0,null),t}return{type:e}}let{formatText:e2}=eK,{getHeadingTagNameForElement:e3}={addClass:function(e,t){e.classList?e.classList.add(t):0>e.className.indexOf(t)&&(e.className+=" "+t)},cloneMouseEvent:e0,cloneTouchEvent:function(e){let t=e=>{let t=[];for(let i=0;i<e.length;++i){let n=e.item(i);n&&t.push(n)}return t};if("function"==typeof eJ.TouchEvent){let i=new eJ.TouchEvent(e.type,{touches:t(e.touches),targetTouches:t(e.targetTouches),changedTouches:t(e.changedTouches),ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e.detail,view:e.view});return e.defaultPrevented&&i.preventDefault(),i}let i=e0(e);return i.touches=e.touches,i.changedTouches=e.changedTouches,i.targetTouches=e.targetTouches,i},escapeStringForHTML:function(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")},getElement:function(e){return eQ.getElementById(e)},getFakeMouseEvent:e1,getHeadingTagNameForElement:function(e){let t=e=>"h"+Math.min(6,parseInt(e.slice(1),10)+1),i=e=>/^H[1-6]$/i.test(e),n=e=>{let s=(e=>{let t=e;for(;t=t.previousSibling;){let e=t.tagName||"";if(i(e))return e}return""})(e);if(s)return t(s);let r=e.parentElement;if(!r)return"h6";let o=r.tagName;return i(o)?t(o):n(r)};return n(e)},removeChildNodes:function(e){for(;e.lastChild;)e.removeChild(e.lastChild)},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(RegExp(t,"g"),"")},removeElement:function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},reverseChildNodes:function(e){let t=e.childNodes.length;for(;t--;)e.appendChild(e.childNodes[t])},simulatedEventTarget:eX,stripHTMLTagsFromString:function(e,t=!1){return"string"==typeof e?t?e.replace(/<\/?[^>]+(>|$)/g,""):e.replace(/<\/?(?!\s)[^>]+(>|$)/g,""):e},visuallyHideElement:function(e){var t;t={position:"absolute",width:"1px",height:"1px",overflow:"hidden",whiteSpace:"nowrap",clip:"rect(1px, 1px, 1px, 1px)",marginTop:"-3px","-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(Opacity=1)",filter:"alpha(opacity=1)",opacity:.01},m(e.style,t)}},e6=class{constructor(e){this.beforeGridElement=null,this.afterGridElement=null,this.grid=e,this.element=document.createElement("div"),this.element.classList.add(ej("visuallyHidden")),this.grid.container?.prepend(this.element),this.announcerElement=document.createElement("p"),this.announcerElement.setAttribute("aria-atomic","true"),this.announcerElement.setAttribute("aria-hidden","false")}addHeaderCellDescription(e,t){t&&e.setAttribute("aria-description",t)}announce(e,t=!1){this.announcerTimeout&&w(this.announcerTimeout),this.announcerElement.remove(),this.announcerElement.setAttribute("aria-live",t?"assertive":"polite"),this.element.appendChild(this.announcerElement),requestAnimationFrame(()=>{this.announcerElement.textContent=e}),this.announcerTimeout=setTimeout(()=>{this.announcerElement.remove()},3e3)}userSortedColumn(e){let t,{options:i}=this.grid,n=i?.lang?.accessibility?.sorting?.announcements;if(i?.accessibility?.announcements?.sorting){switch(e){case"asc":t=n?.ascending;break;case"desc":t=n?.descending;break;default:t=n?.none}t&&this.announce(t,!0)}}setColumnSortState(e,t){e?.setAttribute("aria-sort",t)}userFilteredColumn(e,t){let i,{columnId:n,condition:s,value:r,rowsCount:o}=e,{lang:l,accessibility:a}=this.grid.options||{};if(!a?.announcements?.filtering)return;let h=l?.accessibility?.filtering?.announcements;if(t&&s){let e=eZ.parseCamelCaseToReadable(s);i="empty"===s||"notEmpty"===s||"false"===s||"true"===s?e2(h?.emptyFilterApplied||"",{columnId:n,condition:e,rowsCount:o}):e2(h?.filterApplied||"",{columnId:n,condition:e,value:r?.toString()||"",rowsCount:o})}else i=e2(h?.filterCleared||"",{columnId:n,rowsCount:o});this.announce(i,!0)}addHighContrast(){let e=this.grid.options?.accessibility?.highContrastMode;!1!==e&&(eP()||!0===e)&&this.grid.contentWrapper?.classList.add("hcg-theme-highcontrast")}setRowIndex(e,t){e.setAttribute("aria-rowindex",t)}async setA11yOptions(){let e=this.grid,t=e.tableElement;t&&(t.setAttribute("aria-rowcount",await e.dataProvider?.getRowCount()||0),e.captionElement&&t.setAttribute("aria-labelledby",e.captionElement.id),e.descriptionElement&&t.setAttribute("aria-describedby",e.descriptionElement.id),this.addHighContrast())}addScreenReaderSection(e){let t=this.grid,i="before"===e,n=i?this.defaultBeforeFormatter():this.defaultAfterFormatter(),s=t.options?.accessibility?.screenReaderSection?.[`${e}GridFormatter`],r=s?s(t):n,o=this[`${e}GridElement`]=this[`${e}GridElement`]||document.createElement("div"),l=o.firstChild||document.createElement("div");if(r){this.setScreenReaderSectionAttributes(o,e),W.setElementHTML(l,r),l.parentNode!==o&&o.appendChild(l);let n=t.container;!o.parentNode&&n&&(i?n.insertBefore(o,n.firstChild):n.appendChild(o)),l.classList.add(ej("visuallyHidden"))}else o.parentNode&&o.parentNode.removeChild(o),this[`${e}GridElement`]=null}setScreenReaderSectionAttributes(e,t){let i=this.grid;e.setAttribute("id",`grid-screen-reader-region-${t}-${i.id}`);let n=i.options?.lang?.accessibility?.screenReaderSection?.[`${t}RegionLabel`];n&&(e.setAttribute("aria-label",n),e.setAttribute("role","region")),e.style.position="relative"}defaultBeforeFormatter(){let{container:e,dataTable:t,options:i}=this.grid,n=i?.accessibility?.screenReaderSection?.beforeGridFormat;if(!n||!e)return"";let s=i?.caption?.text,r="";if(s)if(this.isWrappedInHeadingTag(s))r=s;else{let t=e3(e);r=`<${t}>${s}</${t}>`}let o={gridTitle:r,gridDescription:i?.description?.text||"",rowCount:t?.rowCount||0,columnCount:(t?.getColumnIds()||[]).length},l=this.formatTemplateString(n,o);return this.stripEmptyHTMLTags(l)}isWrappedInHeadingTag(e){return/^<h([1-6])[^>]*>[\s\S]*<\/h\1>$/i.test(e.trim())}formatTemplateString(e,t){return e.replace(/\{(\w+)\}/g,(e,i)=>i in t?String(t[i]):`{${i}}`)}defaultAfterFormatter(){let e=this.grid,t=e.options?.accessibility?.screenReaderSection?.afterGridFormat;return t?this.stripEmptyHTMLTags(t):""}stripEmptyHTMLTags(e){return function(e,...t){let i,n;do for(n of(i=e,t))e=e.replace(n[0],n[1]);while(e!==i);return e}(e,[/<([\w\-.:!]+)\b[^<>]*>\s*<\/\1>/g,""])}destroy(){let e=this.beforeGridElement;e?.parentNode&&e.parentNode.removeChild(e);let t=this.afterGridElement;t?.parentNode&&t.parentNode.removeChild(t),this.element.remove(),this.announcerElement.remove(),w(this.announcerTimeout)}},e4={},e8={registerDataProvider:function(e,t){return!!e&&!e4[e]&&!!(e4[e]=t)},types:e4},e9={filter:{width:12,height:12,children:[{d:"M 1.69283 2.38107 C 1.31465 1.89803 1.12557 1.65651 1.11844 1.45125 C 1.11224 1.27293 1.17929 1.10156 1.29969 0.98793 C 1.4383 0.85714 1.72187 0.85714 2.28902 0.85714 H 9.71048 C 10.27763 0.85714 10.5612 0.85714 10.6998 0.98793 C 10.82025 1.10156 10.88722 1.27293 10.88108 1.45125 C 10.87395 1.65651 10.68487 1.89803 10.30665 2.38107 L 7.45356 6.02539 C 7.37817 6.12168 7.34048 6.16983 7.3136 6.22461 C 7.28977 6.27321 7.27228 6.32553 7.26169 6.37991 C 7.24975 6.44122 7.24975 6.50583 7.24975 6.63503 V 9.69051 C 7.24975 9.80229 7.24975 9.85809 7.23398 9.90643 C 7.22005 9.94911 7.19738 9.98734 7.16788 10.01803 C 7.13449 10.05266 7.0891 10.07349 6.99831 10.11497 L 5.29831 10.89206 C 5.11454 10.97606 5.02265 11.01814 4.94889 11.00057 C 4.88438 10.98523 4.82778 10.94143 4.79137 10.87869 C 4.74975 10.80694 4.74975 10.69389 4.74975 10.4676 V 6.63503 C 4.74975 6.50583 4.74975 6.44122 4.73781 6.37991 C 4.72722 6.32553 4.70973 6.27321 4.6859 6.22461 C 4.65902 6.16983 4.62133 6.12168 4.54594 6.02539 L 1.69283 2.38107 Z"}]},menu:{width:8,height:12,viewBox:"0 0 4 12",children:[{d:"M2.00016 6.66675C2.36835 6.66675 2.66683 6.36827 2.66683 6.00008C2.66683 5.63189 2.36835 5.33341 2.00016 5.33341C1.63197 5.33341 1.3335 5.63189 1.3335 6.00008C1.3335 6.36827 1.63197 6.66675 2.00016 6.66675Z"},{d:"M2.00016 2.00008C2.36835 2.00008 2.66683 1.7016 2.66683 1.33341C2.66683 0.965225 2.36835 0.666748 2.00016 0.666748C1.63197 0.666748 1.3335 0.965225 1.3335 1.33341C1.3335 1.7016 1.63197 2.00008 2.00016 2.00008Z"},{d:"M2.00016 11.3334C2.36835 11.3334 2.66683 11.0349 2.66683 10.6667C2.66683 10.2986 2.36835 10.0001 2.00016 10.0001C1.63197 10.0001 1.3335 10.2986 1.3335 10.6667C1.3335 11.0349 1.63197 11.3334 2.00016 11.3334Z"}]},checkmark:{width:12,height:12,children:[{d:"M 11.3332 1.33333 L 3.99984 11.11111 L 0.6665 6.66667"}]},arrowUpDown:{width:12,height:12,children:[{d:"M 3.14286 0.66675 V 11.3334 M 3.14286 11.3334 L 0.85714 8.66675 M 3.14286 11.3334 L 5.42857 8.66675 M 8.85711 11.3334 V 0.66675 M 8.85711 0.66675 L 6.57143 3.33341 M 8.85711 0.66675 L 11.14286 3.33341"}]},arrowUp:{width:12,height:12,children:[{d:"M 3.14286 0.66675 V 11.3334 M 3.14286 11.3334 L 0.85714 8.66675 M 3.14286 11.3334 L 5.42857 8.66675",opacity:.2},{d:"M 8.85711 11.3334 V 0.6667 M 8.85711 0.6667 L 6.57146 3.3334 M 8.85711 0.6667 L 11.14286 3.3334"}]},arrowDown:{width:12,height:12,children:[{d:"M 3.14286 0.66675 V 11.3334 M 3.14286 11.3334 L 0.85714 8.66675 M 3.14286 11.3334 L 5.42857 8.66675"},{d:"M 8.85711 11.3334 V 0.6667 M 8.85711 0.6667 L 6.57146 3.3334 M 8.85711 0.6667 L 11.14286 3.3334",opacity:.2}]},doubleChevronLeft:{width:12,height:12,children:[{d:"M 6 10.8 L 1.2 6 L 6 1.2 M 10.8 10.8 L 6 6 L 10.8 1.2","stroke-width":1.34}]},chevronLeft:{width:12,height:12,children:[{d:"M 7.5 10.8 L 1.5 6 L 7.5 1.2","stroke-width":1.34}]},doubleChevronRight:{width:12,height:12,children:[{d:"M 6 1.2 L 10.8 6 L 6 10.8 M 1.2 1.2 L 6 6 L 1.2 10.8","stroke-width":1.34}]},chevronRight:{width:12,height:12,children:[{d:"M 4.5 1.2 L 10.5 6 L 4.5 10.8","stroke-width":1.34}]},copy:{width:16,height:16,viewBox:"0 0 24 24",children:[{d:"M5 15C4.06812 15 3.60218 15 3.23463 14.8478C2.74458 14.6448 2.35523 14.2554 2.15224 13.7654C2 13.3978 2 12.9319 2 12V5.2C2 4.0799 2 3.51984 2.21799 3.09202C2.40973 2.71569 2.71569 2.40973 3.09202 2.21799C3.51984 2 4.0799 2 5.2 2H12C12.9319 2 13.3978 2 13.7654 2.15224C14.2554 2.35523 14.6448 2.74458 14.8478 3.23463C15 3.60218 15 4.06812 15 5M12.2 22H18.8C19.9201 22 20.4802 22 20.908 21.782C21.2843 21.5903 21.5903 21.2843 21.782 20.908C22 20.4802 22 19.9201 22 18.8V12.2C22 11.0799 22 10.5198 21.782 10.092C21.5903 9.71569 21.2843 9.40973 20.908 9.21799C20.4802 9 19.9201 9 18.8 9H12.2C11.0799 9 10.5198 9 10.092 9.21799C9.71569 9.40973 9.40973 9.71569 9.21799 10.092C9 10.5198 9 11.0799 9 12.2V18.8C9 19.9201 9 20.4802 9.21799 20.908C9.40973 21.2843 9.71569 21.5903 10.092 21.782C10.5198 22 11.0799 22 12.2 22Z","stroke-width":2}]},clipboard:{width:16,height:16,viewBox:"0 0 24 24",children:[{d:"M16 4C16.93 4 17.395 4 17.7765 4.10222C18.8117 4.37962 19.6204 5.18827 19.8978 6.22354C20 6.60504 20 7.07003 20 8V17.2C20 18.8802 20 19.7202 19.673 20.362C19.3854 20.9265 18.9265 21.3854 18.362 21.673C17.7202 22 16.8802 22 15.2 22H8.8C7.11984 22 6.27976 22 5.63803 21.673C5.07354 21.3854 4.6146 20.9265 4.32698 20.362C4 19.7202 4 18.8802 4 17.2V8C4 7.07003 4 6.60504 4.10222 6.22354C4.37962 5.18827 5.18827 4.37962 6.22354 4.10222C6.60504 4 7.07003 4 8 4M9.6 6H14.4C14.9601 6 15.2401 6 15.454 5.89101C15.6422 5.79513 15.7951 5.64215 15.891 5.45399C16 5.24008 16 4.96005 16 4.4V3.6C16 3.03995 16 2.75992 15.891 2.54601C15.7951 2.35785 15.6422 2.20487 15.454 2.10899C15.2401 2 14.9601 2 14.4 2H9.6C9.03995 2 8.75992 2 8.54601 2.10899C8.35785 2.20487 8.20487 2.35785 8.10899 2.54601C8 2.75992 8 3.03995 8 3.6V4.4C8 4.96005 8 5.24008 8.10899 5.45399C8.20487 5.64215 8.35785 5.79513 8.54601 5.89101C8.75992 6 9.03995 6 9.6 6Z","stroke-width":2}]},plus:{width:16,height:16,viewBox:"0 0 24 24",children:[{d:"M12 5V19M5 12H19","stroke-width":2}]},trash:{width:16,height:16,viewBox:"0 0 24 24",children:[{d:"M16 6V5.2C16 4.0799 16 3.51984 15.782 3.09202C15.5903 2.71569 15.2843 2.40973 14.908 2.21799C14.4802 2 13.9201 2 12.8 2H11.2C10.0799 2 9.51984 2 9.09202 2.21799C8.71569 2.40973 8.40973 2.71569 8.21799 3.09202C8 3.51984 8 4.0799 8 5.2V6M10 11.5V16.5M14 11.5V16.5M3 6H21M19 6V17.2C19 18.8802 19 19.7202 18.673 20.362C18.3854 20.9265 17.9265 21.3854 17.362 21.673C16.7202 22 15.8802 22 14.2 22H9.8C8.11984 22 7.27976 22 6.63803 21.673C6.07354 21.3854 5.6146 20.9265 5.32698 20.362C5 19.7202 5 18.8802 5 17.2V6","stroke-width":2}]},addRowAbove:{width:16,height:16,viewBox:"0 0 24 24",children:[{d:"M22.654 16.657H1m21.654-6.048H1m0-6.143v12.433c0 2.033 0 3.05.393 3.825a3.619 3.619 0 0 0 1.577 1.587c.772.395 1.783.395 3.804.395H16.88c2.021 0 3.032 0 3.804-.395a3.619 3.619 0 0 0 1.577-1.587c.394-.776.394-1.792.394-3.825V4.466m-14.068-.24h6.462M11.822 1v6.462","stroke-width":1.34}]},addRowBelow:{width:16,height:16,viewBox:"0 0 24 24",children:[{d:"M1 7.049h21.654M1 13.097h21.654m0 6.143V6.807c0-2.033 0-3.05-.394-3.825a3.619 3.619 0 0 0-1.577-1.586C19.911 1 18.901 1 16.88 1H6.774c-2.02 0-3.031 0-3.803.396a3.62 3.62 0 0 0-1.578 1.586C1 3.758 1 4.774 1 6.807V19.24m14.068.24H8.606m3.226 3.226v-6.462","stroke-width":1.34}]},addColumnLeft:{width:16,height:16,viewBox:"0 0 24 24",children:[{d:"M16.657 1v21.654M10.61 1v21.654m-6.143 0h12.433c2.033 0 3.05 0 3.825-.394a3.62 3.62 0 0 0 1.587-1.577c.395-.772.395-1.782.395-3.804V6.774c0-2.02 0-3.031-.395-3.803a3.62 3.62 0 0 0-1.587-1.578C19.948 1 18.932 1 16.9 1H4.466m-.24 14.068V8.606M1 11.832h6.462","stroke-width":1.34}]},addColumnRight:{width:16,height:16,viewBox:"0 0 24 24",children:[{d:"M7.049 22.654V1m6.048 21.654V1m6.143 0H6.807c-2.033 0-3.05 0-3.825.393a3.62 3.62 0 0 0-1.586 1.578C1 3.743 1 4.753 1 6.774V16.88c0 2.021 0 3.032.396 3.804.348.68.903 1.231 1.586 1.577.776.394 1.792.394 3.825.394H19.24m.24-14.068v6.462m3.226-3.226h-6.462","stroke-width":1.34}]}},e5={stroke:"currentColor","stroke-width":1.33,"stroke-linecap":"round","stroke-linejoin":"round"};function e7(e,t){let i=e=>document.createElementNS("http://www.w3.org/2000/svg",e),{width:n=16,height:s=16,viewBox:r,fill:o,children:l}=e,a=i("svg");for(let e of(a.setAttribute("width",n.toString()),a.setAttribute("height",s.toString()),a.setAttribute("viewBox",r??`0 0 ${n} ${s}`),a.setAttribute("fill",o??"none"),l??[])){let t=i("path");for(let i of new Set([...Object.keys(e),...Object.keys(e5)])){let n=e[i]??e5[i];void 0!==n&&t.setAttribute(i,n.toString())}a.appendChild(t)}return a.classList.add(t),a}function te(e,t){return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e9[e]}function tt(e,t){let i=ej("icon"),n=te(e,t);if(!c(n))return e7(e9.filter,i);if("string"==typeof n){let e=document.createElement("div");eq(e,n);let t=e.firstElementChild;if(!t||"http://www.w3.org/2000/svg"!==t.namespaceURI){let e=document.createElementNS("http://www.w3.org/2000/svg","svg");return e.setAttribute("width","16"),e.setAttribute("height","16"),e.classList.add(i),e}let s=t.cloneNode(!0);return s.classList.add(i),s}return e7(n,i)}let{makeHTMLElement:ti,formatText:tn}=eK,ts=["left","center","right","distributed"],tr=e=>`${eH}pagination-${e}`;class to{constructor(e){this.grid=e,this.controller=e.querying.pagination}get options(){return this.grid.options?.pagination}get lang(){return this.grid.options?.lang?.pagination}get pageSizeSelectorOptions(){let e=this.options?.controls?.pageSizeSelector;return x(e)?e.options??[]:(to.defaultOptions.controls?.pageSizeSelector).options??[]}update(e){("page"in e||"pageSize"in e)&&(this.isDirtyQuerying=!0,delete e.page,delete e.pageSize),"alignment"in e&&(this.isDirtyAlignment=!0,delete e.alignment),Object.keys(e).length>0&&this.grid.dirtyFlags.add("grid")}render(){let e=this.options?.position,t=this.grid,i=this.getAlignmentClass();this.oldTotalItems=this.controller.totalItems,t.tableElement?.setAttribute("aria-current","page"),this.updateA11yRowsCount(this.controller.currentPageSize),"string"==typeof e&&e.startsWith("#")?this.renderCustomContainer(e):("footer"===e&&this.renderFooter(),this.contentWrapper=ti("nav",{className:i?`${ej("pagination")} ${i}`:ej("pagination")},"footer"===e?this.paginationContainer:t.contentWrapper),this.contentWrapper.setAttribute("aria-label","Results pagination")),this.renderPageInfo(),this.renderControls(),this.renderPageSizeSelector(),this.updateButtonStates()}getAlignmentClass(){return tr(this.options?.align||"")}updateAlignmentClass(){let e=this.contentWrapper;if(!e)return;let t=ts.map(tr);e.classList.remove(...t);let i=this.getAlignmentClass();e.classList.add(i)}redraw(){this.isDirtyQuerying&&this.updateControls(!0),this.isDirtyAlignment&&this.updateAlignmentClass(),delete this.isDirtyQuerying,delete this.isDirtyAlignment}renderFooter(){let e=this.grid.tableElement;if(!e)return;let t=ti("tfoot",{},e),i=ti("tr",{},t);this.paginationContainer=ti("td",{},i),this.paginationContainer.setAttribute("colSpan",(this.grid.enabledColumns||[]).length.toString()),this.reflow()}renderCustomContainer(e){let t=document.querySelector(e);if(!t)return void console.warn(`Pagination: Custom container with ID "${e}" not found.`);this.paginationContainer=t;let i=this.getAlignmentClass(),n=i?`${ej("pagination")} ${i}`:ej("pagination");this.contentWrapper=ti("div",{className:n},t)}renderPageInfo(){let e=this.options?.controls?.pageInfo;!1===e||x(e)&&!1===e.enabled||(this.pageInfoElement=ti("div",{className:ej("paginationPageInfo")},this.contentWrapper),this.updatePageInfo())}updatePageInfo(){if(!this.pageInfoElement)return;let{currentPage:e,currentPageSize:t,totalItems:i,totalPages:n}=this.controller,s=Math.min(e*t,i),r=tn(this.lang?.pageInfo??"",{start:(e-1)*t+1,end:s,total:i,currentPage:e,totalPages:n});this.pageInfoElement.innerHTML=r}renderControls(){let e=ti("div",{className:ej("paginationControls")},this.contentWrapper),t=this.options?.controls||{};t.firstLastButtons&&this.renderFirstButton(e),t.previousNextButtons&&this.renderPrevButton(e),t.pageButtons&&this.renderPageNumbers(e),t.previousNextButtons&&this.renderNextButton(e),t.firstLastButtons&&this.renderLastButton(e)}updateControls(e=!1){let{totalItems:t,currentPageSize:i}=this.controller;(this.oldTotalItems!==this.controller.totalItems||e)&&(this.updatePageInfo(),this.updatePageNumbers(),this.updateButtonStates(),this.updateA11yRowsCount(i),this.oldTotalItems=t)}renderFirstButton(e){let t=this.options?.controls?.firstLastButtons;if(!1===t||x(t)&&!1===t.enabled)return;let i=tt("doubleChevronLeft",this.grid.options?.rendering?.icons);this.firstButton=ti("button",{className:ej("button")},e),this.firstButton.appendChild(i),this.firstButton.title=this.lang?.firstPage??"",this.firstButton.setAttribute("aria-label",this.lang?.firstPage??""),this.firstButton.addEventListener("click",()=>{this.goToPage(1)}),this.setButtonState(this.firstButton,1===this.controller.currentPage)}renderPrevButton(e){let t=this.options?.controls?.previousNextButtons;if(!1===t||x(t)&&!1===t.enabled)return;let i=tt("chevronLeft",this.grid.options?.rendering?.icons);this.prevButton=ti("button",{className:ej("button")},e),this.prevButton.appendChild(i),this.prevButton.title=this.lang?.previousPage??"",this.prevButton.setAttribute("aria-label",this.lang?.previousPage??""),this.prevButton.addEventListener("click",()=>{this.goToPage(this.controller.currentPage-1)}),this.setButtonState(this.prevButton,1===this.controller.currentPage)}renderNextButton(e){let t=this.options?.controls?.previousNextButtons;if(!1===t||x(t)&&!1===t.enabled)return;let i=tt("chevronRight",this.grid.options?.rendering?.icons);this.nextButton=ti("button",{className:ej("button")},e),this.nextButton.appendChild(i),this.nextButton.title=this.lang?.nextPage??"",this.nextButton.setAttribute("aria-label",this.lang?.nextPage??""),this.nextButton.addEventListener("click",()=>{this.goToPage(this.controller.currentPage+1)}),this.setButtonState(this.nextButton,this.controller.currentPage>=this.controller.totalPages)}renderLastButton(e){let t=this.options?.controls?.firstLastButtons;if(!1===t||x(t)&&!1===t.enabled)return;let i=tt("doubleChevronRight",this.grid.options?.rendering?.icons);this.lastButton=ti("button",{className:ej("button")},e),this.lastButton.appendChild(i),this.lastButton.title=this.lang?.lastPage??"",this.lastButton.setAttribute("aria-label",this.lang?.lastPage??""),this.lastButton.addEventListener("click",()=>{this.goToPage(this.controller.totalPages)}),this.setButtonState(this.lastButton,this.controller.currentPage>=this.controller.totalPages)}renderPageNumbers(e){let t=this.options?.controls?.pageButtons;!1===t||x(t)&&!1===t.enabled||(this.pageNumbersContainer=ti("div",{className:ej("paginationPages")},e),this.updatePageNumbers())}updatePageNumbers(){if(!this.pageNumbersContainer)return;this.pageNumbersContainer.innerHTML=W.emptyHTML;let e=this.options?.controls?.pageButtons,t=x(e)?e.count:(to.defaultOptions.controls?.pageButtons).count;if(!t)return;let{totalPages:i,currentPage:n}=this.controller;if(i<=t)for(let e=1;e<=i;e++)this.createPageButton(e,e===n);else{let e=[],s=n>=i-2;if(n<=3){let n=t-2,s=Math.min(n,i-1);for(let t=1;t<=s;t++)e.push({type:"button",page:t});i>n+1&&(e.push({type:"ellipsis"}),e.push({type:"button",page:i}))}else if(s){let n=i-(t-2)+1;for(e.push({type:"button",page:1}),e.push({type:"ellipsis"});n<=i;n++)e.push({type:"button",page:n})}else{e.push({type:"button",page:1});let s=t-4,r=Math.floor(s/2),o=Math.max(2,n-r),l=Math.min(i-1,n+r);l-o+1>s&&(2===o?l=o+s-1:o=l-s+1);let a=o>2,h=l<i-1;a||h?a?h||(o=Math.max(2,(l=i-1)-(t-3)+1)):l=Math.min(i-1,(o=2)+(t-3)-1):l=Math.min(i-1,(o=2)+(t-2)-1),a&&e.push({type:"ellipsis"});for(let t=o;t<=l;t++)e.push({type:"button",page:t});h&&e.push({type:"ellipsis"}),e.push({type:"button",page:i})}e.forEach(e=>{"button"===e.type&&c(e.page)?this.createPageButton(e.page,e.page===n):"ellipsis"===e.type&&this.createEllipsis()})}}createPageButton(e,t){if(!this.pageNumbersContainer)return;let i=ti("button",{className:ej("button"),innerHTML:e.toString()},this.pageNumbersContainer);t&&(i.classList.add(ej("buttonSelected")),i.setAttribute("aria-current","page")),i.title=tn(this.lang?.pageNumber??"",{page:e}),i.setAttribute("aria-label",tn(this.lang?.pageNumber??"",{page:e})),i.addEventListener("click",()=>{this.goToPage(e)})}createEllipsis(){if(!this.pageNumbersContainer)return;let e=ti("span",{innerHTML:"..."},this.pageNumbersContainer);e.title=this.lang?.ellipsis??"",e.setAttribute("aria-hidden",!0)}renderPageSizeSelector(){let e=this.options?.controls?.pageSizeSelector;if(!1===e||x(e)&&!1===e.enabled)return;let t=ti("div",{className:ej("paginationPageSize")},this.contentWrapper);ti("span",{innerHTML:this.lang?.pageSizeLabel??""},t),this.pageSizeSelect=ti("select",{className:ej("input"),id:ej("paginationPageSize")},t),this.pageSizeSelectorOptions.forEach(e=>{let t=document.createElement("option");t.value=e.toString(),t.innerHTML=e.toString(),e===this.controller.currentPageSize&&(t.selected=!0),this.pageSizeSelect?.appendChild(t)}),this.pageSizeSelect.addEventListener("change",()=>{this.pageSizeSelect&&this.setPageSize(parseInt(this.pageSizeSelect.value,10))})}setOptions(e){var t,i,n;let s=(t=this.grid.userOptions).pagination??(t.pagination={}),r=(n=(i=this.grid).options??(i.options={})).pagination??(n.pagination={});T(!0,s,e),T(!0,r,e)}async setPageSize(e){let t=this.controller.currentPageSize,i=this.grid.options?.lang?.accessibility;g(this,"beforePageSizeChange",{pageSize:t,newPageSize:e}),this.controller.setPageSize(e),this.controller.setPage(1),this.setOptions({pageSize:e,page:1}),await this.updateGridPagination(),this.updatePageInfo(),this.updatePageNumbers(),this.updateButtonStates(),this.updateA11yRowsCount(this.controller.currentPageSize),this.grid.accessibility?.announce(i?.pagination?.announcements?.pageSizeChange+" "+e),g(this,"afterPageSizeChange",{pageSize:e,previousPageSize:t})}async goToPage(e){let t=this.grid.options?.lang?.accessibility,{totalPages:i,currentPage:n,currentPageSize:s}=this.controller;if(e<1||e>i||e===n)return;g(this,"beforePageChange",{currentPage:n,nextPage:e,pageSize:s}),this.controller.setPage(e);let r=this.controller.currentPage;this.setOptions({page:r}),await this.updateGridPagination(),this.updatePageInfo(),this.updatePageNumbers(),this.updateButtonStates(),this.grid.accessibility?.announce(t?.pagination?.announcements?.pageChange+" "+r),g(this,"afterPageChange",{currentPage:r,previousPage:n,pageSize:s})}async updateGridPagination(){await this.grid.viewport?.updateRows();let e=this.grid.viewport?.tbodyElement;e&&(e.scrollTop=0)}updateButtonStates(){let{currentPage:e,totalPages:t}=this.controller;this.firstButton&&this.setButtonState(this.firstButton,1===e),this.prevButton&&this.setButtonState(this.prevButton,1===e),this.nextButton&&this.setButtonState(this.nextButton,e>=t),this.lastButton&&this.setButtonState(this.lastButton,e>=t)}async updatePage(e=!0){let{currentPage:t}=this.controller;await this.goToPage(e?t+1:t-1)}setButtonState(e,t){t?e.setAttribute("disabled","disabled"):e.removeAttribute("disabled")}reflow(){let e=this.options?.position;if(this.paginationContainer&&"footer"===e){this.paginationContainer.style.width=this.grid.tableElement?.offsetWidth+"px";return}}destroy(){"footer"===this.options?.position?this.paginationContainer?.parentElement?.parentElement?.remove():this.contentWrapper?.remove()}renderDropdownPageSelector(e){if(this.controller.totalPages<=1)return;let t=ti("div",{className:ej("paginationNavDropdown")},e),i=ti("select",{className:ej("input"),id:ej("paginationNavDropdown")},t);this.dropdownPageSelector=i,this.updateDropdownPageSelector(),i.addEventListener("change",()=>{let e=parseInt(i.value,10);e!==this.controller.currentPage&&this.goToPage(e)})}updateDropdownPageSelector(){let e=this.dropdownPageSelector;if(!e)return;let{totalPages:t,currentPage:i}=this.controller;e.innerHTML=W.emptyHTML;for(let i=1;i<=t;i++){let n=ti("option",{},e);n.value=i.toString(),n.textContent=`Page ${i} of ${t}`}e.value=i.toString()}updateA11yRowsCount(e){let t=this.grid;t.tableElement?.setAttribute("aria-rowcount",e||this.controller.totalItems)}}to.defaultOptions={enabled:!1,page:1,pageSize:10,position:"bottom",controls:{pageSizeSelector:{enabled:!0,options:[10,20,50,100]},pageInfo:{enabled:!0},firstLastButtons:{enabled:!0},previousNextButtons:{enabled:!0},pageButtons:{enabled:!0,count:7}}};let tl={accessibility:{enabled:!0,highContrastMode:"auto",announcements:{sorting:!0,filtering:!0},screenReaderSection:{beforeGridFormat:"{gridTitle}<div>{gridDescription}</div><div>Grid with {rowCount} rows and {columnCount} columns.</div>",afterGridFormat:"End of Grid."}},data:{providerType:"local"},time:{timezone:"UTC"},rendering:{rows:{bufferSize:10,minVisibleRows:2,strictHeights:!1,virtualizationThreshold:50},header:{enabled:!0},columns:{resizing:{enabled:!0,mode:"adjacent"}},theme:"hcg-theme-default"},columnDefaults:{sorting:{enabled:!0},filtering:{inline:!1}},pagination:to.defaultOptions,lang:{accessibility:{sorting:{sortable:"Sortable.",announcements:{ascending:"Sorted ascending.",descending:"Sorted descending.",none:"Not sorted."},priority:"Priority {priority}."},pagination:{announcements:{pageSizeChange:"Page size changed to",pageChange:"Page changed to"}},filtering:{announcements:{filterApplied:"Filter applied for {columnId}, {condition} {value}. {rowsCount} results found.",emptyFilterApplied:"Filter applied for {columnId}, {condition} values. {rowsCount} results found.",filterCleared:"Filter cleared for {columnId}. {rowsCount} results found."}},screenReaderSection:{beforeRegionLabel:"",afterRegionLabel:""}},loading:"Loading...",noData:"No data to display",filter:"Filter",sortAscending:"Sort ascending",sortDescending:"Sort descending",column:"Column",setFilter:"Set filter",pagination:{pageInfo:"Showing {start} - {end} of {total} (page {currentPage} of {totalPages})",pageSizeLabel:"rows per page",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",pageNumber:"Page {page}",ellipsis:"More pages"},columnFilteringConditions:{contains:"Contains",doesNotContain:"Does not contain",equals:"Equals",doesNotEqual:"Does not equal",beginsWith:"Begins with",endsWith:"Ends with",empty:"Empty",notEmpty:"Not empty",greaterThan:"Greater than",greaterThanOrEqualTo:"Greater than or equal to",lessThan:"Less than",lessThanOrEqualTo:"Less than or equal to",before:"Before",after:"After",all:"All",true:"True",false:"False"}}},ta=class{constructor(e){this.cell=e}},{setHTMLContent:th}=eK;class td extends ta{constructor(e){super(e),this.add()}add(){this.update()}destroy(){this.cell.htmlElement.innerHTML=W.emptyHTML}update(){th(this.cell.htmlElement,this.format())}format(){let{cell:e}=this,t=e.row.viewport.grid.options?.columnDefaults?.cells||{},{format:i,formatter:n}=e.column.options.cells||{},s=e.value;c(s)||(s="");let r="";if(!i&&!n)return e.format(td.defaultFormatsForDataTypes[e.column.dataType]);let o=t.format===i,l=t.formatter===n;if(o&&l)r=n?n.call(e).toString():i?e.format(i):s+"";else if(o){let t=n?.call(e);r=c(t)?String(t):s+""}else l&&(r=i?e.format(i):s+"");return r}}td.defaultFormatsForDataTypes={string:"{value}",number:"{value:,.f}",boolean:"{value}",datetime:"{value:%Y-%m-%d %H:%M:%S}"};let{createOptionsProxy:tu}=eK,tc=class{constructor(e,t,i){var n;this.dataType="string",this.cells=[];const{grid:s}=e;if(this.id=t,this.index=i,this.viewport=e,s.options&&!s.columnOptionsMap?.[t]){const e={id:t};((n=s.options).columns??(n.columns=[])).push(e),s.columnOptionsMap[t]={index:s.options.columns.length-1,options:e}}this.options=tu(s.columnOptionsMap?.[t]?.options??{},s.options?.columnDefaults),this.options.filtering?.enabled&&(this.filtering=new eZ(this))}async init(){this.loadData(),this.dataType=await this.assumeDataType(),g(this,"afterInit")}loadData(){let e=this.viewport.grid.dataProvider;e&&"getDataTable"in e?this.data=e.getDataTable(!0)?.getColumn(this.id,!0):delete this.data}createCellContent(e){return new td(e)}async assumeDataType(){let{grid:e}=this.viewport,t=e.dataProvider,i=e.columnOptionsMap?.[this.id]?.options.dataType??e.options?.columnDefaults?.dataType;return i||(await t?.getColumnDataType(this.id)??"string")}registerCell(e){e.htmlElement.setAttribute("data-column-id",this.id),this.options.className&&e.htmlElement.classList.add(...this.options.className.split(/\s+/g)),this.viewport.grid.hoveredColumnId===this.id&&e.htmlElement.classList.add(ej("hoveredColumn")),this.cells.push(e)}unregisterCell(e){let t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}getWidth(){return this.viewport.columnResizing.getColumnWidth(this)}setHoveredState(e){this.header?.htmlElement?.classList[e?"add":"remove"](ej("hoveredColumn"));for(let t=0,i=this.cells.length;t<i;++t)this.cells[t].htmlElement.classList[e?"add":"remove"](ej("hoveredColumn"))}setSyncedState(e){this.header?.htmlElement?.classList[e?"add":"remove"](ej("syncedColumn"));for(let t=0,i=this.cells.length;t<i;++t)this.cells[t].htmlElement.classList[e?"add":"remove"](ej("syncedColumn"))}format(e){return en.format(e,this,this.viewport.grid)}setOptions(e,t=!1){return this.viewport.grid.setColumnOptions([{id:this.id,...e}],t)}async update(e,t=!0){await this.viewport.grid.updateColumn(this.id,e,t)}},{makeHTMLElement:tp}=eK,tm=class{constructor(e){this.cells=[],this.viewport=e,this.htmlElement=tp("tr",{}),this.htmlElement.setAttribute("role","row")}async render(){let e=this.viewport.columns;for(let t=0,i=e.length;t<i;t++){let i=this.createCell(e[t]);await i.render()}this.rendered=!0,this.viewport.virtualRows&&this.reflow()}reflow(){for(let e=0,t=this.cells.length;e<t;++e)this.cells[e].reflow();let e=this.viewport;e.rowsWidth&&(this.htmlElement.style.width=e.rowsWidth+"px")}destroy(){if(this.htmlElement){for(let e=this.cells.length-1;e>=0;--e)this.cells[e].destroy();this.htmlElement.remove()}}getCell(e){return this.cells.find(t=>t.column?.id===e)}registerCell(e){this.cells.push(e)}unregisterCell(e){let t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},tg=class{constructor(e,t){this.cellEvents=[],this.column=t,this.row=e,this.row.registerCell(this),this.htmlElement=this.init(),this.htmlElement.setAttribute("tabindex","-1"),this.column?.options.cells?.editMode?.enabled||this.htmlElement.setAttribute("aria-readonly","true"),this.initEvents()}init(){let e=document.createElement("td",{});return e.setAttribute("role","gridcell"),e}initEvents(){this.cellEvents.push(["blur",()=>this.onBlur()]),this.cellEvents.push(["focus",()=>this.onFocus()]),this.cellEvents.push(["click",e=>{this.onClick(e)}]),this.cellEvents.push(["keydown",e=>{this.onKeyDown(e)}]),this.cellEvents.push(["mouseout",()=>{this.onMouseOut()}]),this.cellEvents.push(["mouseover",()=>{this.onMouseOver()}]),this.cellEvents.forEach(e=>{this.htmlElement.addEventListener(e[0],e[1])})}onFocus(){this.row.viewport.setFocusAnchorCell(this)}onBlur(){delete this.row.viewport.focusCursor}onKeyDown(e){let{row:t,column:i}=this;if(!i)return;let n=t.viewport,{header:s}=n,r={ArrowDown:[1,0],ArrowUp:[-1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]}[e.key];if("Enter"===e.key&&this.onClick(e),r){e.preventDefault(),e.stopPropagation();let{header:o}=n,l=(()=>{if(void 0!==t.index)return t.index-n.rows[0].index;let e=t.level;return s&&void 0!==e?Math.max(e,s.levels)-s.rows.length-1:0})()+r[0];if(l<0&&o){let e=o.rows.length+l;e+1>o.levels?o.rows[e].cells[i.index+r[1]]?.htmlElement.focus():n.columns[i.index+r[1]]?.header?.htmlElement.focus();return}let a=n.rows[l];a&&a.cells[i.index+r[1]]?.htmlElement.focus()}}onMouseOver(){let{grid:e}=this.row.viewport;e.hoverColumn(this.column?.id),g(this,"mouseOver",{target:this})}onMouseOut(){let{grid:e}=this.row.viewport;e.hoverColumn(),g(this,"mouseOut",{target:this})}async render(){return this.row.htmlElement.appendChild(this.htmlElement),this.reflow(),Promise.resolve()}reflow(){let e=this.column;if(!e)return;let t=this.htmlElement.style;t.width=t.maxWidth=e.getWidth()+"px"}format(e){return en.format(e,this,this.row.viewport.grid)}setCustomClassName(e){let t=this.htmlElement;if(this.customClassName&&t.classList.remove(...this.customClassName.split(/\s+/g)),!e)return void delete this.customClassName;let i=this.format(e);i?(t.classList.add(...i.split(/\s+/g)),this.customClassName=i):delete this.customClassName}setCustomStyles(e){let t=this.htmlElement.style,i=e=>e.indexOf("-")>-1?e:e.replace(/[A-Z]/g,"-$&").toLowerCase();if(this.customStyleProperties)for(let e of this.customStyleProperties)t.removeProperty(e);if(!e)return void delete this.customStyleProperties;let n=[];for(let s of Object.keys(e)){let r=e[s];if(null==r)continue;let o=i(String(s));t.setProperty(o,String(r)),n.push(o)}this.customStyleProperties=n}destroy(){this.cellEvents.forEach(e=>{this.htmlElement.removeEventListener(e[0],e[1])}),this.column?.unregisterCell(this),this.row.unregisterCell(this),this.htmlElement.remove()}},tf=class{constructor(e,t){this.toggle=e=>{let t=this.column.viewport.grid.querying.sorting,i=!!e?.shiftKey,n=!1,s=(()=>{if(i){let e=t.currentSortings?.find(e=>e.columnId===this.column.id);return n=!!e,this.normalizeOrder(e?.order)}let e=t.currentSorting;return(n=e?.columnId===this.column.id)?this.normalizeOrder(e?.order):null})(),r=this.getOrderSequence();if(r.length<1)return;let o=0,l=this.lastOrderSequenceIndex;if(n&&"number"==typeof l&&r[l]===s)o=(l+1)%r.length;else{let e=r.indexOf(s);o=-1===e?0:(e+1)%r.length}this.lastOrderSequenceIndex=o;let a=r[o];this.setOrder(a,i)},this.column=e,this.headerCellElement=t,this.addHeaderElementAttributes();const i=e.options.sorting;(i?.enabled??i?.sortable)&&t.classList.add(ej("columnSortable"))}addHeaderElementAttributes(){let e=this.column,t=e.viewport.grid.accessibility,i=e.options.sorting,{currentSorting:n,currentSortings:s}=e.viewport.grid.querying.sorting,r=ej("columnSortedAsc"),o=ej("columnSortedDesc"),l=this.headerCellElement,a=i?.enabled??i?.sortable,h=s?.find(t=>t.columnId===e.id)||(n?.columnId===e.id?n:void 0);if(!h?.order){l.classList.remove(r),l.classList.remove(o),a&&t?.setColumnSortState(l,"none");return}switch(h.order){case"asc":l.classList.add(r),l.classList.remove(o),t?.setColumnSortState(l,"ascending");break;case"desc":l.classList.remove(r),l.classList.add(o),t?.setColumnSortState(l,"descending")}}refreshHeaderAttributes(){this.addHeaderElementAttributes()}updateColumnOptions(e){let t=e.viewport.grid.querying.sorting.currentSortings||[],i=t.findIndex(t=>t.columnId===e.id);if(-1!==i&&t[i].order){let n={order:t[i].order};t.length>1&&(n.priority=i+1),e.setOptions({sorting:n}),t.length<2&&delete e.options.sorting?.priority}else delete e.options.sorting?.order,delete e.options.sorting?.priority,e.options.sorting&&Object.keys(e.options.sorting).length<1&&delete e.options.sorting}getOrderSequence(){return this.column.options.sorting?.orderSequence||["asc","desc",null]}normalizeOrder(e){return"asc"===e||"desc"===e?e:null}async setOrder(e,t=!1){let i=this.column.viewport;if(i.validator?.errorCell)return;let n=i.grid.querying.sorting,s=i.grid.accessibility;if([this.column,i.grid].forEach(t=>{g(t,"beforeSort",{target:this.column,order:e})}),t){let t=(n.currentSortings||(n.currentSorting?.columnId&&n.currentSorting.order?[n.currentSorting]:[])).filter(e=>!!(e.columnId&&e.order)).slice(),i=t.findIndex(e=>e.columnId===this.column.id);if(e){let n={columnId:this.column.id,order:e};-1!==i?t[i]=n:t.push(n)}else -1!==i&&t.splice(i,1);n.setSorting(t)}else n.setSorting(e,this.column.id);for(let e of(await i.updateRows(),i.columns))this.updateColumnOptions(e),e.sorting?.refreshHeaderAttributes();s?.userSortedColumn(e),[this.column,i.grid].forEach(t=>{g(t,"afterSort",{target:this.column,order:e})})}},{makeHTMLElement:tw}=eK,ty=class{constructor(e){this.eventListenerDestroyers=[],this.isActive=!1,this.options=e}add(e){let t=this.options;this.toolbar=e,e.buttons.push(this);let i=tw("span",t.classNameKey&&{className:ej(t.classNameKey)},e.container);this.wrapper=i;let n=this.buttonEl=tw("button",{className:ej("button")+(this.isActive?" "+ej("buttonSelected"):"")},i);return n.setAttribute("type","button"),n.setAttribute("tabindex","-1"),this.setA11yAttributes(n),this.setIcon(t.icon),this.refreshState(),this.addEventListeners(),this}setA11yAttributes(e){let{accessibility:t,tooltip:i}=this.options,{ariaLabel:n,ariaExpanded:s,ariaControls:r}=t||{};i&&(e.title=i),n&&e.setAttribute("aria-label",n),"boolean"==typeof s&&e.setAttribute("aria-expanded",s),r&&e.setAttribute("aria-controls",r)}focus(){this.buttonEl?.focus();let e=this.toolbar;e&&(e.focusCursor=e.buttons.indexOf(this))}setIcon(e){this.icon?.remove();let t=this.toolbar?.grid;this.icon=tt(e,t?.options?.rendering?.icons),this.buttonEl?.appendChild(this.icon)}setActive(e){this.isActive=e,this.buttonEl?.classList.toggle(ej("buttonSelected"),e)}setHighlighted(e){this.buttonEl?.classList.toggle(ej("buttonHighlighted"),e),"boolean"==typeof this.options.accessibility?.ariaExpanded&&this.buttonEl?.setAttribute("aria-expanded",e)}destroy(){this.removeEventListeners(),this.wrapper?.remove(),this.toolbar?.buttons.splice(this.toolbar.buttons.indexOf(this),1),delete this.toolbar}refreshState(){}clickHandler(e){this.options.onClick?.(e,this)}addEventListeners(){let e=e=>{this.clickHandler(e)};this.buttonEl?.addEventListener("click",e),this.eventListenerDestroyers.push(()=>{this.buttonEl?.removeEventListener("click",e)})}removeEventListeners(){for(let e of this.eventListenerDestroyers)e();this.eventListenerDestroyers.length=0}},tb=function(e){let{condition:t,value:i}=e.options.filtering||{};return!!(t&&(["empty","notEmpty","true","false"].includes(t)||void 0!==i&&""!==i))},tv=function(e,t){let{currentSorting:i,currentSortings:n}=e.viewport.grid.querying.sorting||{},s=n?.find(t=>t.columnId===e.id)||(i?.columnId===e.id?i:void 0);return!!s?.order&&(t?s.order===t:!!s.order)},{formatText:tC}=eK,tE=class extends ty{getColumnLabel(){let e=this.toolbar?.column;return(e?.header?.headerContent?.textContent||e?.header?.value||e?.id||"").trim()||e?.id||""}updateA11yLabel(e,t){let i,n=this.wrapper?.querySelector("button");if(!n)return;let s=this.toolbar?.column,r=s?.viewport.grid.options?.lang,o=r?.accessibility?.sorting,l=o?.announcements,a=this.getColumnLabel(),h=[];a&&h.push(a),(i="asc"===e?l?.ascending:"desc"===e?l?.descending:l?.none)&&h.push(i),t&&h.push(tC(o?.priority??"Priority {priority}.",{priority:String(t)})),h.length&&n.setAttribute("aria-label",h.join(" "))}constructor(){super({icon:"arrowUpDown",accessibility:{ariaLabel:"sort"}})}clickHandler(e){super.clickHandler(e),this.toolbar?.column.sorting?.toggle(e)}renderSortPriorityIndicator(e){let t=this.wrapper;if(!t)return;let i=t.querySelector("button");if(i){if(!e){this.sortPriorityIndicator?.remove(),delete this.sortPriorityIndicator;return}this.sortPriorityIndicator||(this.sortPriorityIndicator=document.createElement("span")),i.appendChild(this.sortPriorityIndicator),this.sortPriorityIndicator.textContent=String(e)}}refreshState(){let e=this.toolbar?.column;if(!e)return;let{currentSortings:t,currentSorting:i}=e.viewport.grid.querying.sorting,n=t||[],s=n.find(t=>t.columnId===e.id)||(i?.columnId===e.id?i:void 0);if(!tv(e)||!s?.order){this.setActive(!1),this.setIcon("arrowUpDown"),this.renderSortPriorityIndicator(),this.updateA11yLabel(null);return}this.setActive(!0),this.setIcon("asc"===s.order?"arrowUp":"arrowDown");let r=n.findIndex(t=>t.columnId===e.id),o=n.length>1&&-1!==r?r+1:void 0;this.renderSortPriorityIndicator(o),this.updateA11yLabel(s.order,o)}addEventListeners(){super.addEventListeners();let e=this.toolbar?.column;e&&this.eventListenerDestroyers.push(d(e.viewport.grid,"afterSort",()=>this.refreshState()))}},{makeHTMLElement:tx}=eK,tT=class{constructor(e,t,i){this.isVisible=!1,this.eventListenerDestroyers=[],this.grid=e,this.button=t,this.options=i||{}}show(e){if(this.container)return;this.button?.setHighlighted(!0),this.container=tx("div",{className:ej("popup")}),this.content=tx("div",{className:ej("popupContent")});let{header:t}=this.options;t&&this.addHeader(t.label,t.category),this.renderContent(this.content),this.container.appendChild(this.content),this.anchorElement=e,this.isVisible=!0,this.grid.contentWrapper?.appendChild(this.container),this.position(e),this.addEventListeners(),this.grid.popups.add(this),g(this,"afterShow")}hide(){this.container&&(g(this,"beforeHide"),this.grid.popups.delete(this),this.isVisible=!1,this.removeEventListeners(),this.container.remove(),delete this.container,delete this.content,this.button?.setHighlighted(!1),g(this,"afterHide"))}toggle(e){this.isVisible?this.hide():this.show(e)}reflow(){this.anchorElement?.isConnected?this.position(this.anchorElement):this.hide()}position(e){let t=this.grid.contentWrapper;if(!this.container||!this.content||!t)return;let i=this.options.nextToAnchor||!1,n=this.container.getBoundingClientRect(),s=t.getBoundingClientRect(),r=e?.getBoundingClientRect()??s,o=i?r.top:r.bottom+4,l=i?r.right+3:r.left;l+n.width>s.right-8&&(l=-n.width+(i?r.left+4:r.right)),l<s.left+8&&(l=s.left+8),this.container.style.top=`${o-s.top}px`,this.container.style.left=`${l-s.left}px`,o+n.height>s.bottom-8?(this.container.style.top="auto",this.container.style.bottom="8px"):(this.container.style.top=`${o-s.top}px`,this.container.style.bottom="auto")}addHeader(e,t){if(!this.content)return;let i=tx("div",{className:ej("menuHeader")},this.content);return t&&tx("span",{className:ej("menuHeaderCategory"),innerText:t+" "},i),tx("span",{className:ej("menuHeaderName"),innerText:e},i),i}onKeyDown(e){("Escape"===e.key||"Tab"===e.key&&e.shiftKey)&&(e.preventDefault(),this.hide(),this.button?.focus())}onClickOutside(e){this.container?.contains(e.target)||this.anchorElement?.contains(e.target)||this.hide()}addEventListeners(){let e=this.container;if(!e)return;let t=e=>{this.onClickOutside(e)},i=e=>{this.onKeyDown(e)};document.addEventListener("mousedown",t),e.addEventListener("keydown",i),this.eventListenerDestroyers.push(()=>{document.removeEventListener("mousedown",t),e.removeEventListener("keydown",i)})}removeEventListeners(){for(let e of this.eventListenerDestroyers)e();this.eventListenerDestroyers.length=0}},tR=class extends tT{constructor(e,t,i){const n=e.column.viewport.grid;super(n,t,T({header:{category:n.options?.lang?.setFilter,label:e.column.header?.value||""}},i)),this.filtering=e}show(e){super.show(e),this.filtering.filterSelect?.focus()}renderContent(e){this.filtering.renderFilteringContent(e)}onKeyDown(e){super.onKeyDown(e),this.filtering.onKeyDown(e)}},tO=class extends ty{constructor(){super({icon:"filter",classNameKey:"headerCellFilterIcon",accessibility:{ariaLabel:"filter",ariaExpanded:!1,ariaControls:"filter-popup"}})}refreshState(){let e=this.toolbar?.column;e&&this.setActive(tb(e))}addEventListeners(){super.addEventListeners();let e=this.toolbar;e&&this.eventListenerDestroyers.push(d(e.column,"afterFilter",()=>{this.refreshState()}))}clickHandler(e){super.clickHandler(e);let t=this.toolbar?.column.filtering;t&&(this.popup||(this.popup=new tR(t,this)),this.popup.toggle(this.wrapper))}},{makeHTMLElement:tS}=eK,tM=class extends tT{constructor(){super(...arguments),this.buttons=[],this.focusCursor=0}ensureItemsContainer(){if(this.content)return this.itemsContainer||(this.itemsContainer=tS("ul",{className:ej("menuContainer")},this.content)),this.itemsContainer}show(e){super.show(e),this.buttons[0]?.focus()}hide(){for(let e of this.buttons)e.destroy();this.buttons.length=0,this.itemsContainer?.remove(),delete this.itemsContainer,super.hide()}addDivider(){if(this.ensureItemsContainer())return tS("li",{className:ej("menuDivider")},this.itemsContainer)}onClickOutside(e){let t=this.buttons;for(let i=0,n=t.length;i<n;++i)if(t[i].popup?.container?.contains(e.target))return;super.onClickOutside(e)}onKeyDown(e){super.onKeyDown(e);let t=this.buttons.length,i=this.focusCursor;switch(e.key){case"ArrowUp":case"ArrowLeft":e.preventDefault(),this.buttons[Math.abs((i-1+t)%t)].focus();break;case"ArrowDown":case"ArrowRight":e.preventDefault(),this.buttons[(i+1)%t].focus()}}},{makeHTMLElement:tL}=eK,tI=class{constructor(e){this.eventListenerDestroyers=[],this.isActive=!1,this.options=e}add(e){let t=this.options;this.contextMenu=e,e.buttons.push(this);let i=e.ensureItemsContainer();if(!i)return;let n=this.wrapper=tL("li",t.classNameKey&&{className:ej(t.classNameKey)},i),s=this.buttonEl=tL("button",{className:ej("menuItem")},n),r=this.iconWrapper=tL("span",{className:ej("menuItemIcon")},s);this.spanEl=tL("span",{className:ej("menuItemLabel"),innerText:t.label||""},s);let o=tL("span",{className:ej("menuItemIcon")},s);if(r.setAttribute("aria-hidden","true"),o.setAttribute("aria-hidden","true"),s.setAttribute("type","button"),s.setAttribute("tabindex","-1"),this.refreshState(),t.chevron){let e=this.contextMenu?.grid;o.appendChild(tt("chevronRight",e?.options?.rendering?.icons))}return t.icon&&this.setIcon(t.icon),this.addEventListeners(),this}focus(){this.buttonEl?.focus();let e=this.contextMenu;e&&(e.focusCursor=e.buttons.indexOf(this))}setLabel(e){this.spanEl&&(this.spanEl.innerText=e)}setIcon(e){if(this.icon?.remove(),!e)return;let t=this.contextMenu?.grid;this.icon=tt(e,t?.options?.rendering?.icons),this.iconWrapper?.appendChild(this.icon)}setActive(e){this.isActive=e,this.buttonEl?.classList.toggle("active",e);let{activeIcon:t,icon:i}=this.options;t&&this.setIcon(e?t:i)}setHighlighted(e){this.buttonEl?.classList.toggle("highlighted",e)}destroy(){this.removeEventListeners(),this.wrapper?.remove();let e=this.contextMenu;e&&(e.buttons.splice(e.buttons.indexOf(this),1),delete this.contextMenu)}refreshState(){}clickHandler(e){this.options.onClick?.(e,this)}addEventListeners(){let e=e=>{this.clickHandler(e)};this.buttonEl?.addEventListener("click",e),this.eventListenerDestroyers.push(()=>{this.buttonEl?.removeEventListener("click",e)})}removeEventListeners(){for(let e of this.eventListenerDestroyers)e();this.eventListenerDestroyers.length=0}},tA=class extends tI{constructor(e){super({label:e.filter,icon:"filter",chevron:!0})}refreshState(){let e=this.contextMenu?.button.toolbar?.column;e&&this.setActive(tb(e))}addEventListeners(){super.addEventListeners();let e=this.contextMenu?.button.toolbar;e&&this.eventListenerDestroyers.push(d(e.column,"afterFilter",()=>{this.refreshState()}))}clickHandler(e){super.clickHandler(e);let t=this.contextMenu?.button.toolbar?.column.filtering;t&&(this.popup||(this.popup=new tR(t,this,{nextToAnchor:!0})),this.popup.toggle(this.wrapper))}},tk=class extends tI{constructor(e,t){super({icon:"asc"===t?"arrowUp":"arrowDown"}),this.direction=t,this.baseLabel=e["asc"===t?"sortAscending":"sortDescending"]||"",this.options.label=this.baseLabel}refreshState(){let e=this.contextMenu?.button?.toolbar?.column;if(!e)return;let t=tv(e,this.direction);this.setActive(t),this.updateLabelWithPriority(t?e:void 0)}updateLabelWithPriority(e){if(!e)return void this.setLabel(this.baseLabel);let{currentSortings:t}=e.viewport.grid.querying.sorting,i=t||[],n=i.findIndex(t=>t.columnId===e.id),s=i.length>1&&-1!==n?n+1:void 0;s?this.setLabel(`${this.baseLabel} (${s})`):this.setLabel(this.baseLabel)}addEventListeners(){super.addEventListeners();let e=this.contextMenu?.button?.toolbar?.column;e&&this.eventListenerDestroyers.push(d(e.viewport.grid,"afterSort",()=>this.refreshState()))}clickHandler(e){super.clickHandler(e);let t=this.contextMenu?.button?.toolbar?.column.sorting;t&&t.setOrder(this.isActive?null:this.direction,!!e?.shiftKey)}},tD=class extends tM{constructor(e,t){super(e,t),this.button=t}renderContent(){let e=this.grid.options?.lang||{},t=this.button.toolbar?.column.options||{},i=t.filtering?.enabled&&!t.filtering.inline,n=t.sorting?.enabled??t.sorting?.sortable;this.addHeader(this.button.toolbar?.column.header?.value||"",e.column),n&&(new tk(e,"desc").add(this),new tk(e,"asc").add(this),i&&this.addDivider()),i&&new tA(e||{}).add(this)}},tP=class extends ty{constructor(){super({icon:"menu",classNameKey:"headerCellMenuIcon"})}clickHandler(e){super.clickHandler(e);let t=this.toolbar?.column.viewport.grid;t&&(this.popup||(this.popup=new tD(t,this)),this.popup.toggle(this.wrapper))}refreshState(){let e=this.toolbar?.column;e&&this.setActive(tv(e)||tb(e))}addEventListeners(){super.addEventListeners();let e=this.toolbar?.column;e&&this.eventListenerDestroyers.push(d(e.viewport.grid,"afterSort",()=>{this.refreshState()}),d(e,"afterFilter",()=>{this.refreshState()}))}},{makeHTMLElement:tH}=eK;class tN{get grid(){return this.column.viewport.grid}constructor(e){this.buttons=[],this.focusCursor=0,this.eventListenerDestroyers=[],this.column=e}renderFull(){let e=this.column.options;(e.sorting?.enabled??e.sorting?.sortable)&&new tE().add(this),e.filtering?.enabled&&!e.filtering.inline&&new tO().add(this)}renderMinimized(){let e=this.column.options;((e.sorting?.enabled??e.sorting?.sortable)||e.filtering?.enabled&&!e.filtering.inline)&&new tP().add(this)}add(){let e=this.column.header;if(!e?.container)return;this.columnResizeObserver&&(this.columnResizeObserver.disconnect(),delete this.columnResizeObserver),this.columnResizeObserver=new ResizeObserver(()=>this.reflow()),this.columnResizeObserver.observe(e.container);let t=this.container=tH("div",{className:ej("headerCellIcons")});e.container.appendChild(t);let i=e=>{this.keyDownHandler(e)};t.addEventListener("keydown",i),this.eventListenerDestroyers.push(()=>{t.removeEventListener("keydown",i)})}refreshState(){for(let e of this.buttons)e.refreshState()}clearButtons(){let{buttons:e}=this;for(;e.length>0;)e[e.length-1].destroy()}reflow(){let e=this.column.getWidth()<=tN.MINIMIZED_COLUMN_WIDTH;if(e!==this.isMinimized&&(this.isMinimized=e,this.clearButtons(),e?this.renderMinimized():this.renderFull()),!e){this.isMenuCentered=void 0,this.column.header?.container?.classList.remove(ej("noWidth"));return}let t=this.column.header?.htmlElement,i=this.container,n=t?.offsetWidth||0,s=this.buttons[0]?.wrapper?.offsetWidth||0,r=n-((t&&f(t,"padding-left",!0)||0)+(t&&f(t,"padding-right",!0)||0))<s+((i&&f(i,"margin-left",!0)||0)+(i&&f(i,"margin-right",!0)||0));this.isMenuCentered!==r&&(this.isMenuCentered=r,this.column.header?.container?.classList.toggle(ej("noWidth"),r))}destroy(){for(let e of this.eventListenerDestroyers)e();this.eventListenerDestroyers.length=0,this.clearButtons(),this.columnResizeObserver?.disconnect(),delete this.columnResizeObserver}focus(){this.buttons[0]?.focus()}keyDownHandler(e){let t=this.buttons.length,i=this.focusCursor;switch(e.key){case"ArrowUp":case"ArrowLeft":this.buttons[Math.abs((i-1+t)%t)].focus();break;case"ArrowDown":case"ArrowRight":this.buttons[(i+1)%t].focus();break;case"Escape":this.column.header?.htmlElement.focus()}}}tN.MINIMIZED_COLUMN_WIDTH=120;let tF=class extends tg{constructor(e,t,i){super(e,t),this.superColumnOptions={},this.columns=[],this.value="";const n=this.row.viewport.header;if(!n)throw Error("No header found.");if(this.tableHeader=n,t)t.header=this,this.columns.push(t);else if(i){const e=this.row.viewport;for(const t of e.grid.getColumnIds(i,!0)){const i=e.getColumn(t);i&&this.columns.push(i)}}}init(){let e=document.createElement("th",{});return e.classList.add(ej("headerCell")),e.setAttribute("role","columnheader"),e}async render(){let{column:e}=this,t=eU(this.superColumnOptions,e?.options),i=t.header||{},n=e?i.formatter?.call(e):void 0;n?this.value=n.toString():v(i.format)?this.value=e?e.format(i.format):i.format:this.value=e?.id||"",this.row.htmlElement.appendChild(this.htmlElement);let s=this.container=eW("div",{className:ej("headerCellContainer")},this.htmlElement);return this.headerContent=eW("span",{className:ej("headerCellContent")},s),eq(this.headerContent,this.value),this.htmlElement.setAttribute("scope","col"),this.superColumnOptions.className&&this.htmlElement.classList.add(...this.superColumnOptions.className.split(/\s+/g)),e&&(this.htmlElement.setAttribute("data-column-id",e.id),this.htmlElement.setAttribute("aria-label",e.id),e.options.className&&this.htmlElement.classList.add(...e.options.className.split(/\s+/g)),e.viewport.columnsResizer?.renderColumnDragHandles(e,this),this.toolbar=new tN(e),this.toolbar.add(),this.initColumnSorting()),this.htmlElement.classList[e?.dataType==="number"?"add":"remove"](ej("rightAlign")),this.setCustomClassName(t.header?.className),this.setCustomStyles(this.getColumnStyles()),g(this,"afterRender",{column:e}),Promise.resolve()}getColumnStyles(){let{column:e}=this;if(!e)return e$(this.superColumnOptions.header?.style);let{grid:t}=this.row.viewport,i=t.columnOptionsMap?.[e.id]?.options;return{...eY(e,t.options?.columnDefaults?.style,i?.style),...eY(e,t.options?.columnDefaults?.header?.style,i?.header?.style)}}reflow(){let e=this.htmlElement;if(!e)return;let t=0;for(let e of this.columns)t+=e.getWidth()||0;e.style.width=e.style.maxWidth=t+"px",this.toolbar?.reflow()}onKeyDown(e){if(this.column&&e.target===this.htmlElement){if("Enter"===e.key){this.toolbar?.focus(),e.preventDefault();return}super.onKeyDown(e)}}onClick(e){!this.column||!this.htmlElement.contains(e.target)||this.column.viewport.columnsResizer?.isResizing||(!this.toolbar?.container?.contains(e.target)&&(this.column.options.sorting?.enabled??this.column.options.sorting?.sortable)&&this.column.sorting?.toggle(e),g(this,"click",{originalEvent:e,column:this.column}))}initColumnSorting(){let{column:e}=this;e&&(e.sorting=new tf(e,this.htmlElement))}isLastColumn(){let e=this.row.viewport;return e.columns[e.columns.length-1]===this.columns?.[this.columns.length-1]}destroy(){this.toolbar?.destroy(),super.destroy()}},tz=class extends tm{constructor(e,t){super(e),this.level=t,this.setRowAttributes()}createCell(e,t){return new tF(this,e,t)}async renderContent(e){let t=this.viewport.grid.options?.header,i=this.viewport,n=i.grid.enabledColumns||[];if(i.theadElement?.appendChild(this.htmlElement),this.htmlElement.classList.add(ej("headerRow")),t){let s=this.getColumnsAtLevel(t,e);for(let t=0,r=s.length;t<r;t++){let r=s[t],o="string"==typeof r,l=!o&&r.columns?i.grid.getColumnIds(r.columns).length:0,a=o?r:r.columnId,h=a?i.getColumn(a||""):void 0,d=o?void 0:r.format,u=o?void 0:r.className;if(a&&n&&0>n.indexOf(a)||!h&&0===l)continue;let c=this.createCell(h,o?void 0:r.columns);o||i.grid.accessibility?.addHeaderCellDescription(c.htmlElement,r.accessibility?.description),v(d)&&(c.superColumnOptions.header||(c.superColumnOptions.header={}),c.superColumnOptions.header.format=d),u&&(c.superColumnOptions.className=u),h?.index===0&&0===t&&c.htmlElement.classList.add(ej("columnFirst")),await c.render(),a?c.htmlElement.setAttribute("rowSpan",(this.viewport.header?.levels||1)-e):l>1&&c.htmlElement.setAttribute("colSpan",l)}}else await super.render();this.setLastCellClass()}reflow(){for(let e=0,t=this.cells.length;e<t;e++)this.cells[e].reflow()}setLastCellClass(){let e=this.cells[this.cells.length-1];e.isLastColumn()&&e.htmlElement.classList.add(ej("lastHeaderCellInRow"))}getColumnsAtLevel(e,t,i=0){let n=[];for(let s of e)i===t&&n.push(s),"string"!=typeof s&&s.columns&&(n=n.concat(this.getColumnsAtLevel(s.columns,t,i+1)));return n}setRowAttributes(){this.viewport.grid.accessibility?.setRowIndex(this.htmlElement,this.level)}},tB=class extends tF{constructor(e,t){const i=t.header;super(e,t),t.header=i}async render(){let{column:e}=this;if(!e)return Promise.resolve();this.row.htmlElement.appendChild(this.htmlElement),this.htmlElement.setAttribute("scope","col"),this.htmlElement.setAttribute("data-column-id",e.id),e.options.className&&this.htmlElement.classList.add(...e.options.className.split(/\s+/g)),this.setCustomClassName(e.options.header?.className),g(this,"afterRender",{column:e,filtering:!0})}onKeyDown(e){this.column.filtering?.onKeyDown(e),e.target===this.htmlElement?"Enter"===e.key?this.column.filtering?.filterSelect?.focus():super.onKeyDown(e):"Escape"===e.key&&this.htmlElement.focus()}onClick(e){e.target===this.htmlElement&&this.htmlElement.focus()}},tj=class extends tz{constructor(e){super(e,(e.header?.levels??0)+1)}createCell(e){return new tB(this,e)}async renderContent(){let e=this.viewport,t=e.grid.enabledColumns||[];e.theadElement?.appendChild(this.htmlElement),this.htmlElement.classList.add(ej("headerRow"));for(let i=0,n=e.columns.length;i<n;i++){let n=e.columns[i];if(t?.indexOf(n.id)<0)continue;let s=this.createCell(n);await s.render(),n.options.filtering?.inline&&n.filtering?.renderFilteringContent(s.htmlElement)}let i=this.cells[0];i.column?.index===0&&this.cells[0].htmlElement.classList.add(ej("columnFirst")),this.setLastCellClass()}},tW=class{constructor(e){this.columns=[],this.rows=[],this.levels=1,this.viewport=e,this.columns=e.columns,e.grid.options?.header&&(this.levels=this.getRowLevels(e.grid.options?.header))}async render(){let e=this.viewport;if(e.grid.enabledColumns){for(let t=0,i=this.levels;t<i;t++){let i=new tz(e,t+1);await i.renderContent(t),this.rows.push(i)}if(e.columns.some(e=>e.options.filtering?.enabled&&e.options.filtering.inline||!1)){let t=new tj(e);await t.renderContent(),this.rows.push(t)}}}reflow(){let e=this.viewport;if(!e.theadElement)return;let{clientWidth:t,offsetWidth:i}=e.tbodyElement;for(let e of this.rows)e.reflow();e.rowsWidth&&(e.theadElement.style.width=Math.max(e.rowsWidth,t)+(i-t)+"px")}getRowLevels(e){let t=0;for(let i of e)if("string"!=typeof i&&i.columns){let e=this.getRowLevels(i.columns);e>t&&(t=e)}return t+1}scrollHorizontally(e){let t=this.viewport.theadElement;t&&(t.style.transform=`translateX(${-e}px)`)}destroy(){for(let e of this.rows)e.destroy()}},tV=class extends tg{constructor(e,t){super(e,t),this.asyncFetchToken=0,this.column=t,this.row=e,this.column.registerCell(this)}async render(){await super.render(),await this.setValue()}async editValue(e){this.value!==e&&(g(this,"beforeEditValue"),await this.setValue(e,!0),g(this,"afterEditValue"))}async setValue(e,t=!1){let i=++this.asyncFetchToken,{grid:n}=this.column.viewport;if(this.htmlElement.style.opacity="0.5",!c(e)&&(e=await n.dataProvider?.getValue(this.column.id,this.row.index),i!==this.asyncFetchToken)){this.htmlElement.style.opacity="";return}let s=this.value;if(this.value=e,t)try{if(n.showLoading(),await this.updateDataset())return}catch(e){console.error(e),this.value=s}finally{n.hideLoading()}this.content?this.content.update():this.content=this.column.createCellContent(this),this.htmlElement.setAttribute("data-value",this.value+""),this.htmlElement.classList["number"===this.column.dataType?"add":"remove"](ej("rightAlign")),this.setCustomClassName(this.column.options.cells?.className),this.setCustomStyles(this.getCellStyles()),this.htmlElement.style.opacity="",g(this,"afterRender",{target:this})}getCellStyles(){let{grid:e}=this.column.viewport,t=e.columnOptionsMap?.[this.column.id]?.options;return{...eY(this.column,e.options?.columnDefaults?.style,t?.style),...eY(this,e.options?.columnDefaults?.cells?.style,t?.cells?.style)}}async updateDataset(){if(await this.column.viewport.grid.dataProvider?.getValue(this.column.id,this.row.index)===this.value)return!1;let e=this.column.viewport,{dataProvider:t}=e.grid,i=this.row.id;return!!t&&void 0!==i&&(this.row.data[this.column.id]=this.value,await t.setValue(this.value,this.column.id,i),!e.grid.querying.willNotModify()&&(await e.updateRows(),!0))}initEvents(){this.cellEvents.push(["blur",()=>this.onBlur()]),this.cellEvents.push(["focus",()=>this.onFocus()]),this.cellEvents.forEach(e=>{this.htmlElement.addEventListener(e[0],e[1])})}onFocus(){super.onFocus(),this.row.viewport.focusCursor=[this.row.index,this.column.index]}onMouseDown(e){e.target===this.htmlElement&&this.htmlElement.focus(),g(this,"mouseDown",{target:this,originalEvent:e})}onMouseOver(){this.row.viewport.grid.hoverRow(this.row.index),super.onMouseOver()}onMouseOut(){this.row.viewport.grid.hoverRow(),super.onMouseOut()}onDblClick(e){g(this,"dblClick",{target:this,originalEvent:e})}onClick(){g(this,"click",{target:this})}onKeyDown(e){e.target===this.htmlElement&&(g(this,"keyDown",{target:this,originalEvent:e}),super.onKeyDown(e))}destroy(){this.content?.destroy(),delete this.content,super.destroy()}},tq=class extends tm{constructor(e,t){super(e),this.data={},this.translateY=0,this.index=t}async init(){let e=this.viewport.grid.dataProvider;this.id=await e?.getRowId(this.index),await this.loadData(),this.setRowAttributes()}createCell(e){return new tV(this,e)}async loadData(){let e=await this.viewport.grid.dataProvider?.getRowObject(this.index);if(!e){this.data={};return}this.data=e}async update(){this.id=await this.viewport.grid.dataProvider?.getRowId(this.index),this.updateRowAttributes(),await this.loadData();for(let e=0,t=this.cells.length;e<t;++e){let t=this.cells[e];await t.setValue()}this.reflow()}async reuse(e){for(let e=0,t=this.cells.length;e<t;++e)g(this.cells[e],"outdate");if(this.index===e)return void await this.update();this.index=e,this.id=await this.viewport.grid.dataProvider?.getRowId(this.index),this.htmlElement.setAttribute("data-row-index",e),this.updateRowAttributes(),this.updateParityClass(),this.updateStateClasses(),await this.loadData();for(let e=0,t=this.cells.length;e<t;++e){let t=this.cells[e];await t.setValue()}this.reflow()}setHoveredState(e){this.htmlElement.classList[e?"add":"remove"](ej("hoveredRow")),e&&(this.viewport.grid.hoveredRowIndex=this.index)}setSyncedState(e){this.htmlElement.classList[e?"add":"remove"](ej("syncedRow")),e&&(this.viewport.grid.syncedRowIndex=this.index)}setRowAttributes(){let e=this.index,t=this.htmlElement;t.classList.add(ej("rowElement")),t.setAttribute("data-row-index",e),this.updateRowAttributes(),this.updateParityClass(),this.updateStateClasses()}updateRowAttributes(){let e=this.viewport,t=e.grid.accessibility,i=this.index,n=this.htmlElement;void 0!==this.id&&n.setAttribute("data-row-id",this.id),t?.setRowIndex(n,i+(e.header?.rows.length??0)+1)}updateParityClass(){let e=this.htmlElement;e.classList.remove(ej("rowEven"),ej("rowOdd")),e.classList.add(ej(this.index%2?"rowEven":"rowOdd"))}updateStateClasses(){let e=this.htmlElement;e.classList.remove(ej("hoveredRow"),ej("syncedRow")),this.viewport.grid.hoveredRowIndex===this.index&&e.classList.add(ej("hoveredRow")),this.viewport.grid.syncedRowIndex===this.index&&e.classList.add(ej("syncedRow"))}setTranslateY(e){this.translateY=e,this.htmlElement.style.transform=`translateY(${e}px)`}getDefaultTopOffset(){return this.index*this.viewport.rowsVirtualizer.defaultRowHeight}};class tU{static getMaxElementHeight(){if(void 0!==tU.maxElementHeight)return tU.maxElementHeight;let e=ez.indexOf("Firefox")>-1,t=(e?6e6:31e6)/(window.devicePixelRatio||1);if(!document.body)return tU.maxElementHeight=t,tU.maxElementHeight;let i=1e6,n=e?6e6:1e9,s=document.createElement("div");document.body.appendChild(s);let r=!1;for(;!r;){let e=2*i;if(s.style.height=e+"px",e>n||s.clientHeight!==e){r=!0;continue}i=e}return s.remove(),tU.maxElementHeight=Math.min(i||t,16e6),tU.maxElementHeight}constructor(e){this.defaultRowHeight=49,this.rowCursor=0,this.preventScroll=!1,this.totalGridHeight=0,this.gridHeightOverflow=0,this.scrollOffset=0,this.rowPool=[],this.scrollQueued=!1,this.isRendering=!1,this.pendingRowCursor=null,this.rowSettings=e.grid.options?.rendering?.rows,this.viewport=e,this.rowCount=0,this.strictRowHeights=this.rowSettings.strictHeights,this.buffer=Math.max(this.rowSettings.bufferSize,0),this.maxElementHeight=tU.getMaxElementHeight(),this.strictRowHeights&&e.tbodyElement.classList.add(ej("rowsContentNowrap"))}async initialRender(){this.defaultRowHeight=await this.getDefaultRowHeight(),this.viewport.virtualRows&&this.viewport.reflow(),await this.updateGridMetrics(),await this.renderRows(this.rowCursor),this.adjustRowHeights(),this.viewport.virtualRows&&this.adjustRowOffsets()}async rerender(){let e;await this.updateGridMetrics();let t=this.viewport.tbodyElement,i=this.viewport.rows,n=t.scrollLeft;if(this.rowPool.length){for(let e=this.rowPool.length-1;e>=0;--e)this.rowPool[e].destroy();this.rowPool.length=0}if(i.length){e=t.scrollTop;for(let e=0,t=i.length;e<t;++e)i[e].destroy();i.length=0}await this.renderRows(this.rowCursor),this.viewport.virtualRows&&c(e)&&(t.scrollTop=e),i=this.viewport.rows;for(let e=0,t=i.length;e<t;++e)i[e].reflow();t.scrollLeft=n}async refreshRows(){await this.updateGridMetrics();let e=this.viewport.tbodyElement,t=e.scrollLeft,i=this.viewport.virtualRows?e.scrollTop:void 0,n=Math.max(0,this.rowCount-1);this.rowCursor>n&&(this.rowCursor=n),await this.renderRows(this.rowCursor);let s=this.viewport.rows;for(let e=0,t=s.length;e<t;++e)await s[e].update();this.viewport.virtualRows&&c(i)&&(e.scrollTop=i),e.scrollLeft=t}scroll(){this.scrollQueued||(this.scrollQueued=!0,requestAnimationFrame(()=>{this.scrollQueued=!1,this.applyScroll()}))}async applyScroll(){let e=this.viewport.tbodyElement,{defaultRowHeight:t}=this,i=e.scrollTop,n=this.maxElementHeight-e.clientHeight;if(this.scrollOffset=Math.floor((n>0?i/n:0)*this.gridHeightOverflow),this.preventScroll){i<=e.scrollTop&&(this.preventScroll=!1),this.adjustBottomRowHeights();return}let s=Math.floor(e.scrollTop/t+this.scrollOffset/t);s=Math.min(s,Math.max(0,this.rowCount-1)),this.rowCursor!==s&&await this.renderRows(s),this.rowCursor=s,this.adjustRowHeights(),this.adjustRowOffsets(),this.strictRowHeights||!(i>e.scrollTop)||this.preventScroll||(e.scrollTop=i,this.preventScroll=!0)}adjustBottomRowHeights(){let e=this.viewport.rows,t=e.length;if(t<1)return;let i=e[t-1];if(!i.rendered||!i.cells.length||!i.cells[0]?.htmlElement)return;let n=i.translateY,s=n+i.htmlElement.offsetHeight,r=i.cells[0].htmlElement.offsetHeight;n=s-r,i.htmlElement.style.height=r+"px",i.setTranslateY(n);for(let e=0,t=i.cells.length;e<t;++e){let t=i.cells[e];t?.htmlElement&&(t.htmlElement.style.transform="")}for(let i=t-2;i>=0;i--){let t=e[i];if(t.rendered&&t.cells.length&&t.cells[0]?.htmlElement){n-=r=t.cells[0].htmlElement.offsetHeight,t.htmlElement.style.height=r+"px",t.setTranslateY(n);for(let e=0,i=t.cells.length;e<i;++e){let i=t.cells[e];i?.htmlElement&&(i.htmlElement.style.transform="")}}}}async renderRows(e){if(this.isRendering){this.pendingRowCursor=e;return}this.isRendering=!0;try{let{viewport:t,buffer:i}=this;await this.updateGridMetrics();let n=this.rowCount;if(!c(n))return;if(0===n){if(t.rows.length){for(let e=0,i=t.rows.length;e<i;++e)t.rows[e].destroy();t.rows.length=0}t.tbodyElement.innerHTML="",this.rowCursor=0;return}if(n<1)return;let s=this.viewport.virtualRows,r=s?Math.ceil((t.grid.tableElement?.clientHeight||0)/this.defaultRowHeight):1/0,o=t.rows;if(!s&&o.length>50&&console.warn("Grid: a large dataset can cause performance issues when virtualization is disabled. Consider enabling virtualization in the rows settings."),!o.length&&n>0){let e=new tq(t,n-1);if(await e.init(),t.tbodyElement.appendChild(e.htmlElement),await e.render(),o.push(e),s){let t=Math.min(e.getDefaultTopOffset(),this.maxElementHeight-e.htmlElement.offsetHeight);e.setTranslateY(t)}}let l=o.length>0?o.pop():void 0;l&&l.index!==n-1&&(this.poolRow(l),l=void 0);let a=Math.max(0,Math.min(e-i,n-r)),h=Math.min(e+r+i,n-2),d=[],u=o[0]?.index,p=o[o.length-1]?.index;if(o.length>0&&c(u)&&c(p)&&!(h<u||a>p)){for(;o.length&&o[0].index<a;)this.poolRow(o.shift());for(;o.length&&o[o.length-1].index>h;)this.poolRow(o.pop());if(o.length){for(let e=o[0].index-1;e>=a;--e)o.unshift(await this.getOrCreateRow(e));let e=o[o.length-1].index+1;for(let t=e;t<=h;++t)o.push(await this.getOrCreateRow(t))}else for(let e=a;e<=h;++e)o.push(await this.getOrCreateRow(e));t.rows=o}else{for(let e=0,t=o.length;e<t;++e){let t=o[e],i=t.index;i<a||i>h?this.poolRow(t):d.push(t)}t.rows=o=d;for(let e=a;e<=h;++e){let t=o.length>0?o[0].index:a;if(!o[e-t]){let t=await this.getOrCreateRow(e);o.push(t)}}o.sort((e,t)=>e.index-t.index)}for(let e=0,i=o.length;e<i;++e){let i=o[e];if(!i.rendered){if(i.htmlElement.hasAttribute("data-row-index")||await i.init(),t.tbodyElement.insertBefore(i.htmlElement,t.tbodyElement.lastChild),await i.render(),s){let e=Math.min(i.getDefaultTopOffset(),this.maxElementHeight-i.htmlElement.offsetHeight);i.setTranslateY(e)}continue}i.htmlElement.isConnected||t.tbodyElement.insertBefore(i.htmlElement,t.tbodyElement.lastChild)}if(!l&&n>0&&(l=await this.getOrCreateRow(n-1)),l){if(l.rendered)l.htmlElement.isConnected||t.tbodyElement.appendChild(l.htmlElement);else if(l.htmlElement.hasAttribute("data-row-index")||await l.init(),t.tbodyElement.appendChild(l.htmlElement),await l.render(),s){let e=Math.min(l.getDefaultTopOffset(),this.maxElementHeight-l.htmlElement.offsetHeight);l.setTranslateY(e)}o.push(l)}if(t.focusCursor){let[e,i]=t.focusCursor,n=o.find(t=>t.index===e);n&&n.cells[i]?.htmlElement.focus({preventScroll:!0})}if((!t.focusCursor||!t.focusAnchorCell?.row.rendered)&&o.length>0){let i=e-o[0].index,n=o[i];n&&n.cells.length>0&&n.cells[0]&&t.setFocusAnchorCell(n.cells[0])}}finally{if(this.isRendering=!1,null!==this.pendingRowCursor){let e=this.pendingRowCursor;this.pendingRowCursor=null,await this.renderRows(e)}}}adjustRowHeights(){if(this.strictRowHeights||!this.viewport.virtualRows)return;let{rowCursor:e,defaultRowHeight:t}=this,{rows:i,tbodyElement:n}=this.viewport,s=i.length;if(s<1||!t)return;let r=i[0].getDefaultTopOffset();for(let r=0;r<s;++r){let s=i[r];if(!s.rendered||!s.cells.length||!s.cells[0]?.htmlElement){s.htmlElement.style.height=t+"px";continue}if(s.htmlElement.style.height="",s.cells[0].htmlElement.style.transform)for(let e=0,t=s.cells.length;e<t;++e){let t=s.cells[e];t?.htmlElement&&(t.htmlElement.style.transform="")}if(s.index<e){s.htmlElement.style.height=t+"px";continue}let o=s.cells[0].htmlElement.offsetHeight;if(s.htmlElement.style.height=o+"px",!(s.index>e)&&s.htmlElement.offsetHeight>t){let i=Math.floor(o-(o-t)*(n.scrollTop/t-Math.floor(e-this.scrollOffset/t)));s.htmlElement.style.height=i+"px";for(let e=0,t=s.cells.length;e<t;++e){let t=s.cells[e];t?.htmlElement&&(t.htmlElement.style.transform=`translateY(${i-o}px)`)}}}i[0].setTranslateY(r);for(let e=1,t=s-1;e<t;++e)r+=i[e-1].htmlElement.offsetHeight,i[e].setTranslateY(r);let o=i[s-1],l=i[s-2];l&&l.index===o.index-1&&o.setTranslateY(l.htmlElement.offsetHeight+r)}reflowRows(){let e=this.viewport.rows;if(!(e.length<1)){for(let t=0,i=e.length;t<i;++t)e[t].reflow();this.adjustRowHeights(),this.viewport.virtualRows&&this.adjustRowOffsets()}}async getOrCreateRow(e){let t=this.viewport,i=t.virtualRows,n=this.rowPool.pop();if(n)return await n.reuse(e),i&&n.setTranslateY(n.getDefaultTopOffset()),n;let s=new tq(t,e);return s.rendered=!1,await s.init(),i&&s.setTranslateY(s.getDefaultTopOffset()),s}poolRow(e){e.htmlElement.remove(),this.rowPool.length<tU.MAX_POOL_SIZE?this.rowPool.push(e):e.destroy()}async getDefaultRowHeight(){let e=this.viewport,t=new tq(e,0);await t.init(),t.htmlElement.style.position="absolute",t.htmlElement.classList.add(ej("mockedRow")),e.tbodyElement.appendChild(t.htmlElement),await t.render();let i=t.htmlElement.offsetHeight;return t.destroy(),i}async updateGridMetrics(){let e=await this.viewport.grid.dataProvider?.getRowCount();c(e)&&(this.rowCount=e,this.totalGridHeight=this.rowCount*this.defaultRowHeight,this.gridHeightOverflow=Math.max(this.totalGridHeight-this.maxElementHeight,0))}adjustRowOffsets(){let{rows:e}=this.viewport,t=e.length;if(t<2)return;let i=e[t-1],n=e[t-2],s=n&&n.index===i.index-1,r=e[0].getDefaultTopOffset();if(r=Math.floor(r-this.scrollOffset),s&&this.gridHeightOverflow>0){i.setTranslateY(this.maxElementHeight-i.htmlElement.offsetHeight);let n=this.maxElementHeight-i.htmlElement.offsetHeight;for(let i=t-2;i>=0;i--)n-=e[i].htmlElement.offsetHeight,e[i].setTranslateY(n);return}e[0].setTranslateY(r);for(let i=1,n=t-1;i<n;++i)r+=e[i-1].htmlElement.offsetHeight,e[i].setTranslateY(r);this.gridHeightOverflow>0?i.setTranslateY(this.maxElementHeight):n&&n.index===i.index-1&&i.setTranslateY(n.htmlElement.offsetHeight+r)}}tU.MAX_POOL_SIZE=100;let{makeHTMLElement:t$}=eK,tY=class{constructor(e){this.isResizing=!1,this.handles=[],this.onDocumentMouseMove=e=>{if(!this.draggedResizeHandle||!this.draggedColumn)return;let t=e.pageX-(this.dragStartX||0),i=this.viewport;i.columnResizing.resize(this,t),i.reflow(),g(this.draggedColumn,"afterResize",{target:this.draggedColumn,originalEvent:e})},this.onDocumentMouseUp=()=>{this.draggedColumn?.header?.htmlElement?.classList.remove(ej("resizedColumn")),this.draggedResizeHandle?.matches(":hover")||this.draggedResizeHandle?.classList.remove("hovered"),this.dragStartX=void 0,this.draggedColumn=void 0,this.draggedResizeHandle=void 0,this.columnStartWidth=void 0,this.nextColumnStartWidth=void 0,requestAnimationFrame(()=>{this.isResizing=!1})},this.viewport=e,document.addEventListener("mousemove",this.onDocumentMouseMove),document.addEventListener("mouseup",this.onDocumentMouseUp)}renderColumnDragHandles(e,t){let i=e.viewport;if(i.columnsResizer){let n=t$("div",{className:ej("resizerHandles")},t.htmlElement);n.setAttribute("aria-hidden",!0),i.columnsResizer?.addHandleListeners(n,e)}}addHandleListeners(e,t){let i=[{eventName:"mousedown",listener:i=>{let n=t.viewport;this.isResizing=!0,e.classList.add("hovered"),n.reflow(),this.dragStartX=i.pageX,this.draggedColumn=t,this.draggedResizeHandle=e,this.columnStartWidth=t.getWidth(),this.nextColumnStartWidth=n.columns[t.index+1]?.getWidth(),t.header?.htmlElement.classList.add(ej("resizedColumn"))}},{eventName:"mouseover",listener:()=>{this.draggedResizeHandle||e.classList.add("hovered")}},{eventName:"mouseout",listener:()=>{this.draggedResizeHandle||e.classList.remove("hovered")}}];for(let{eventName:t,listener:n}of i)e.addEventListener(t,n);this.handles.push([e,i])}removeEventListeners(){document.removeEventListener("mousemove",this.onDocumentMouseMove),document.removeEventListener("mouseup",this.onDocumentMouseUp);for(let e=0,t=this.handles.length;e<t;e++){let[t,i]=this.handles[e];for(let{eventName:e,listener:n}of i)t.removeEventListener(e,n)}}},tK=class extends tM{showAt(e,t,i){let n=this.grid.contentWrapper;if(!n)return;this.cell=e,this.removeCellOutdateListener?.(),this.removeCellOutdateListener=d(e,"outdate",()=>{this.hide(),delete this.cell});let s=n.getBoundingClientRect();this.cursorAnchorElement=document.createElement("div"),this.cursorAnchorElement.style.position="absolute",this.cursorAnchorElement.style.left=t-s.left+"px",this.cursorAnchorElement.style.top=i-s.top+"px",this.cursorAnchorElement.style.width="0px",this.cursorAnchorElement.style.height="0px",this.cursorAnchorElement.style.pointerEvents="none",n.appendChild(this.cursorAnchorElement),super.show(this.cursorAnchorElement)}hide(){super.hide(),this.cursorAnchorElement?.remove(),this.removeCellOutdateListener?.(),delete this.cursorAnchorElement,delete this.removeCellOutdateListener}renderContent(){let{cell:e}=this;if(e)for(let t of e.column?.options.cells?.contextMenu?.items||[]){if(t.separator){this.addDivider();continue}let i=new tI({label:t.label,icon:t.icon,onClick:()=>{t.disabled||(t.onClick?.call(e,e),this.hide())}}).add(this);i&&t.disabled&&i.wrapper?.querySelector("button")?.setAttribute("disabled","")}}},{makeHTMLElement:tG}=eK,t_=class{constructor(e,t){this.columns=[],this.rows=[],this.virtualRows=!0,this.onTBodyFocus=e=>{e.preventDefault(),this.rows[this.rowsVirtualizer.rowCursor-this.rows[0].index]?.cells[0]?.htmlElement.focus()},this.onResize=()=>{this.reflow()},this.onScroll=()=>{this.virtualRows&&this.rowsVirtualizer.scroll(),this.header?.scrollHorizontally(this.tbodyElement.scrollLeft)},this.onCellClick=e=>{let t=this.getCellFromElement(e.target);t&&t.onClick(e)},this.onCellDblClick=e=>{let t=this.getCellFromElement(e.target);t&&"onDblClick"in t&&t.onDblClick(e)},this.onCellContextMenu=e=>{let t=this.getCellFromElement(e.target);t&&"column"in t&&"row"in t&&this.openCellContextMenu(t,e.clientX,e.clientY)&&e.preventDefault()},this.onCellMouseDown=e=>{let t=this.getCellFromElement(e.target);t&&"onMouseDown"in t&&t.onMouseDown(e)},this.onCellMouseOver=e=>{let t=this.getCellFromElement(e.target);t&&t.onMouseOver()},this.onCellMouseOut=e=>{let t=this.getCellFromElement(e.target);t&&t.onMouseOut()},this.onCellKeyDown=e=>{let t=this.getCellFromElement(e.target);t&&t.onKeyDown(e)},this.grid=e,this.tableElement=t,this.columnResizing=eh.initMode(this),e.options?.rendering?.header?.enabled&&(this.theadElement=tG("thead",{},t)),this.tbodyElement=tG("tbody",{},t),this.rowsVirtualizer=new tU(this),g(this,"beforeInit"),this.resizeObserver=new ResizeObserver(this.onResize),this.resizeObserver.observe(t),this.tbodyElement.addEventListener("scroll",this.onScroll),this.tbodyElement.addEventListener("focus",this.onTBodyFocus),this.tbodyElement.addEventListener("click",this.onCellClick),this.tbodyElement.addEventListener("dblclick",this.onCellDblClick),this.tbodyElement.addEventListener("contextmenu",this.onCellContextMenu),this.tbodyElement.addEventListener("mousedown",this.onCellMouseDown),this.tbodyElement.addEventListener("mouseover",this.onCellMouseOver),this.tbodyElement.addEventListener("mouseout",this.onCellMouseOut),this.tbodyElement.addEventListener("keydown",this.onCellKeyDown)}get dataTable(){let e=this.grid.dataProvider;if(e&&"getDataTable"in e)return e.getDataTable(!0)}async init(){try{this.grid.showLoading();let{tableElement:e}=this,t=this.grid.options?.rendering,i=t?.table?.className;this.virtualRows=await this.shouldVirtualizeRows(),this.virtualRows&&e.classList.add(ej("virtualization")),t?.columns?.resizing?.enabled&&(this.columnsResizer=new tY(this)),i&&e.classList.add(...i.split(/\s+/g)),e.classList.add(ej("scrollableContent")),await this.loadColumns(),this.setTbodyMinHeight(),this.grid.options?.rendering?.header?.enabled&&(this.header=new tW(this),await this.header.render()),await this.rowsVirtualizer.initialRender()}finally{g(this,"afterInit"),this.reflow(),this.grid.hideLoading()}}setTbodyMinHeight(){let{options:e}=this.grid,t=e?.rendering?.rows?.minVisibleRows,i=this.tbodyElement;c(t)&&!f(i,"min-height",!0)&&(i.style.minHeight=t*this.rowsVirtualizer.defaultRowHeight+"px")}async shouldVirtualizeRows(){let{grid:e}=this,t=e.userOptions.rendering?.rows;if(c(t?.virtualization))return t.virtualization;let i=await this.grid.dataProvider?.getRowCount()??0,n=t?.virtualizationThreshold??50;return e.pagination?e.querying.pagination.currentPageSize>=n:i>=n}async loadColumns(){let{enabledColumns:e}=this.grid;if(e){for(let t=0,i=e.length;t<i;++t){let i=new tc(this,e[t],t);await i.init(),this.columns.push(i)}this.columnResizing.loadColumns()}}async updateRows(){let{dataProvider:e}=this.grid;if(e){this.grid.querying.pagination.clampPage();try{this.grid.showLoading();let t=this.rows.length>0?(this.rows[this.rows.length-1]?.index??-1)+1:0;for(let e of(await this.grid.querying.proceed(),this.columns))e.loadData();let i=await this.shouldVirtualizeRows(),n=!1;this.virtualRows!==i&&(this.virtualRows=i,this.tableElement.classList.toggle(ej("virtualization"),i),n=!0);let s=await e.getRowCount();if(n)await this.rowsVirtualizer.rerender();else if(t!==s)await this.rowsVirtualizer.refreshRows();else{let e=[...this.rows];for(let t=0,i=e.length;t<i;++t)await e[t].update()}this.grid.pagination?.updateControls(),this.reflow()}finally{this.grid.hideLoading()}this.grid.dirtyFlags.delete("rows")}}reflow(){this.columnResizing.reflow(),this.header?.reflow(),this.rowsVirtualizer.reflowRows(),this.grid.pagination?.reflow(),this.grid.popups.forEach(e=>{e.reflow()}),this.grid.dirtyFlags.delete("reflow")}openCellContextMenu(e,t,i){let n=e.column?.options.cells?.contextMenu;if(n?.enabled===!1||!(n?.items||[]).length)return!1;for(let e of(this.cellContextMenu||(this.cellContextMenu=new tK(this.grid)),Array.from(this.grid.popups)))e!==this.cellContextMenu&&e.hide();return this.cellContextMenu.isVisible&&this.cellContextMenu.hide(),this.cellContextMenu.showAt(e,t,i),!0}scrollToRow(e){if(this.virtualRows){this.tbodyElement.scrollTop=e*this.rowsVirtualizer.defaultRowHeight;return}let t="."+ej("rowElement"),i=this.tbodyElement.querySelectorAll(t)[0].getBoundingClientRect().top;this.tbodyElement.scrollTop=this.tbodyElement.querySelectorAll(t)[e].getBoundingClientRect().top-i}getRatioFromWidth(e){return e/this.tbodyElement.clientWidth}getWidthFromRatio(e){return this.tbodyElement.clientWidth*e}getCellFromElement(e){if(!(e instanceof Element))return;let t=e.closest("td");if(!t)return;let i=t.parentElement;if(!i)return;let n=i.getAttribute("data-row-index");if(null===n)return;let s=parseInt(n,10),r=this.rows[0]?.index??0,o=this.rows[s-r];if(!o)return;let l=Array.prototype.indexOf.call(i.children,t);return o.cells[l]}destroy(){this.tbodyElement.removeEventListener("focus",this.onTBodyFocus),this.tbodyElement.removeEventListener("scroll",this.onScroll),this.tbodyElement.removeEventListener("click",this.onCellClick),this.tbodyElement.removeEventListener("dblclick",this.onCellDblClick),this.tbodyElement.removeEventListener("contextmenu",this.onCellContextMenu),this.tbodyElement.removeEventListener("mousedown",this.onCellMouseDown),this.tbodyElement.removeEventListener("mouseover",this.onCellMouseOver),this.tbodyElement.removeEventListener("mouseout",this.onCellMouseOut),this.tbodyElement.removeEventListener("keydown",this.onCellKeyDown),this.resizeObserver.disconnect(),this.columnsResizer?.removeEventListeners(),this.header?.destroy(),this.cellContextMenu?.hide(),delete this.cellContextMenu;for(let e=0,t=this.rows.length;e<t;++e)this.rows[e]?.destroy();g(this,"afterDestroy")}getStateMeta(){return{scrollTop:this.tbodyElement.scrollTop,scrollLeft:this.tbodyElement.scrollLeft,columnResizing:this.columnResizing,focusCursor:this.focusCursor}}applyStateMeta(e){if(this.tbodyElement.scrollTop=e.scrollTop,this.tbodyElement.scrollLeft=e.scrollLeft,e.focusCursor){let[t,i]=e.focusCursor,n=this.rows[t-this.rows[0].index];n?.cells[i]?.htmlElement.focus()}}setFocusAnchorCell(e){this.focusAnchorCell?.htmlElement.setAttribute("tabindex","-1"),this.focusAnchorCell=e,this.focusAnchorCell.htmlElement.setAttribute("tabindex","0")}getColumn(e){let t=this.grid.enabledColumns;if(!t)return;let i=t.indexOf(e);if(!(i<0))return this.columns[i]}getRow(e){return this.rows.find(t=>t.id===e)}};class tZ extends eu{static ascending(e,t){return(e||0)<(t||0)?-1:+((e||0)>(t||0))}static descending(e,t){return(t||0)<(e||0)?-1:+((t||0)>(e||0))}static compareFactory(e,t){return t?"desc"===e?(e,i)=>-t(e,i):t:"asc"===e?tZ.ascending:tZ.descending}constructor(e){super(),this.options=T(tZ.defaultOptions,e)}getRowReferences(e){let t=e.getRows(),i=[];for(let e=0,n=t.length;e<n;++e)i.push({index:e,row:t[e]});return i}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let i=e.getColumnIds(),n=e.getRowCount(),s=this.getRowReferences(e),{direction:r,orderInColumn:o,compare:l}=this.options,a=e.getModified(),h="columns"in this.options?this.options.columns:[this.options.orderByColumn],d=[];for(let e=0,t=h.length;e<t;++e){let t=h[e],n="string"==typeof t,s=n?t:t.column,o=i.indexOf(s);-1!==o&&d.push({columnIndex:o,compare:tZ.compareFactory(n?r:t.direction||r,n?l:t.compare||l)})}if(d.length&&s.sort((e,t)=>{for(let i=0,n=d.length;i<n;++i){let{columnIndex:n,compare:s}=d[i],r=s(e.row[n],t.row[n]);if(r)return r}return e.index-t.index}),o){let e=[];for(let t=0;t<n;++t)e[s[t].index]=t;a.setColumns({[o]:e})}else{let t,i=[],r=[];for(let o=0;o<n;++o)t=s[o],i.push(e.getOriginalRowIndex(t.index)),r.push(t.row);a.setRows(r,0),a.setOriginalRowIndexes(i)}return this.emit({type:"afterModify",detail:t,table:e}),e}}tZ.defaultOptions={type:"Sort",direction:"desc",orderByColumn:"y"},eu.registerType("Sort",tZ);class tQ{constructor(e){this.querying=e}setSorting(e,t){if(Array.isArray(e)){let t=e.filter(e=>!!(e.columnId&&e.order)).map(e=>({columnId:e.columnId,order:e.order})),i=this.currentSortings||[];tQ.sortingsEqual(t,i)||(this.querying.shouldBeUpdated=!0,this.currentSortings=t,this.currentSorting=t[0]||{order:null}),this.modifier=this.createModifier();return}(this.currentSorting?.columnId!==t||this.currentSorting?.order!==e)&&(this.querying.shouldBeUpdated=!0,this.currentSorting={columnId:t,order:e},this.currentSortings=e&&t?[{columnId:t,order:e}]:[]),this.modifier=this.createModifier()}static sortingsEqual(e,t){if(e.length!==t.length)return!1;for(let i=0,n=e.length;i<n;++i)if(e[i].columnId!==t[i].columnId||e[i].order!==t[i].order)return!1;return!0}getSortingOptions(){let{columnOptionsMap:e}=this.querying.grid;if(!e)return[];let t=Object.keys(e),i=[];for(let n=0,s=t.length;n<s;++n){let s=t[n],r=e[s]?.options||{},o=r.sorting?.order;o&&i.push({columnId:s,order:o,priority:r.sorting?.priority,index:n})}return i.some(e=>"number"==typeof e.priority)?i.sort((e,t)=>{let i="number"==typeof e.priority?e.priority:1/0,n="number"==typeof t.priority?t.priority:1/0;return i!==n?i-n:e.index-t.index}):i.reverse(),i.map(e=>({columnId:e.columnId,order:e.order}))}loadOptions(){let e=this.getSortingOptions();tQ.sortingsEqual(e,this.currentSortings||[])||this.setSorting(e)}createModifier(){let e=(this.currentSortings||(this.currentSorting?[this.currentSorting]:[])).filter(e=>!!(e.columnId&&e.order));if(!e.length)return;let t=this.querying.grid,i=t.options?.columnDefaults?.sorting?.compare;return new tZ({direction:e[0].order,columns:e.map(e=>({column:e.columnId,direction:e.order,compare:t.columnOptionsMap?.[e.columnId]?.options?.sorting?.compare||i}))})}}class tJ extends eu{static compile(e){if(E(e))return e;let t=e.operator;switch(t){case"and":{let t=e.conditions.map(e=>this.compile(e));return(e,i,n)=>t.every(t=>t(e,i,n))}case"or":{let t=e.conditions.map(e=>this.compile(e));return(e,i,n)=>t.some(t=>t(e,i,n))}case"not":{let t=this.compile(e.condition);return(e,i,n)=>!t(e,i,n)}}let{columnId:i,value:n}=e;switch(t){case"==":return e=>e[i]==n;case"===":return e=>e[i]===n;case"!=":return e=>e[i]!=n;case"!==":return e=>e[i]!==n;case">":return e=>(e[i]||0)>(n||0);case">=":return e=>(e[i]||0)>=(n||0);case"<":return e=>(e[i]||0)<(n||0);case"<=":return e=>(e[i]||0)<=(n||0);case"empty":return e=>null===e[i]||""===e[i]}let{ignoreCase:s}=e,r=e=>{let t=""+e;return s??!0?t.toLowerCase():t};return"contains"===t?e=>r(e[i]).includes(r(n)):e=>r(e[i])[t](r(n))}constructor(e){super(),this.options=T(tJ.defaultOptions,e)}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let{condition:i}=this.options;if(!i)return e;let n=tJ.compile(i),s=e.getModified(),r=[],o=[];for(let t=0,i=e.getRowCount();t<i;++t){let i=e.getRowObject(t);i&&n(i,e,t)&&(r.push(i),o.push(e.getOriginalRowIndex(t)))}return s.deleteRows(),s.setRows(r),s.setOriginalRowIndexes(o),this.emit({type:"afterModify",detail:t,table:e}),e}}tJ.defaultOptions={type:"Filter"},eu.registerType("Filter",tJ);class tX{constructor(e){this.columnConditions={},this.querying=e}static mapOptionsToFilter(e,t){let{condition:i,value:n}=t,s=v(n),r=s?n:"";if(void 0!==n&&(!s||r)||["empty","notEmpty","true","false"].includes(i??""))switch(i){case"contains":return{columnId:e,operator:"contains",value:r};case"doesNotContain":return{operator:"not",condition:{columnId:e,operator:"contains",value:r}};case"equals":return{columnId:e,operator:"===",value:n};case"doesNotEqual":return{columnId:e,operator:"!==",value:n};case"beginsWith":return{columnId:e,operator:"startsWith",value:r};case"endsWith":return{columnId:e,operator:"endsWith",value:r};case"greaterThan":case"after":return{columnId:e,operator:">",value:n};case"greaterThanOrEqualTo":return{columnId:e,operator:">=",value:n};case"lessThan":case"before":return{columnId:e,operator:"<",value:n};case"lessThanOrEqualTo":return{columnId:e,operator:"<=",value:n};case"empty":return{columnId:e,operator:"empty",value:n};case"notEmpty":return{operator:"not",condition:{columnId:e,operator:"empty",value:n}};case"true":return{columnId:e,operator:"===",value:!0};case"false":return{columnId:e,operator:"===",value:!1}}}loadOptions(){let e=this.querying.grid.columnOptionsMap,t={};if(e){let i=Object.keys(e);for(let n=0,s=i.length;n<s;++n){let s=i[n],r=e[s]?.options?.filtering;if(!r)continue;let o=tX.mapOptionsToFilter(s,r);o&&(t[s]=o)}}this.columnConditions=t,this.updateModifier()}addColumnFilterCondition(e,t){let i=tX.mapOptionsToFilter(e,t);i?this.columnConditions[e]=i:delete this.columnConditions[e],this.updateModifier()}clearColumnFiltering(e){e?delete this.columnConditions[e]:this.columnConditions={},this.updateModifier()}updateModifier(){let e=Object.values(this.columnConditions);(this.querying.shouldBeUpdated=!0,e.length<1)?delete this.modifier:this.modifier=new tJ({condition:{operator:"and",conditions:e}})}}class t0 extends eu{constructor(e){super(),this.options=T(t0.defaultOptions,e)}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let{start:i,end:n}=this.options;i=Math.max(0,i||0);let s=Math.max((n=Math.min(n||1/0,e.getRowCount()))-i,0),r=e.getModified();return r.deleteRows(),r.setRows(e.getRows(i,s)),r.setOriginalRowIndexes(Array.from({length:s},(t,n)=>e.getOriginalRowIndex(i+n))),this.emit({type:"afterModify",detail:t,table:e}),e}}t0.defaultOptions={type:"Range",start:0,end:1/0},eu.registerType("Range",t0);let t1=class{constructor(e){this.currentPage=1,this.currentPageSize=10,this.querying=e,this.enabled=!!e.grid.options?.pagination?.enabled}get totalItems(){return this.totalItemsCount??0}get totalPages(){return this.currentPageSize>0?Math.ceil(this.totalItems/this.currentPageSize):1}clampPage(){this.currentPage<=this.totalPages||(this.currentPage=this.totalPages,this.querying.shouldBeUpdated=!0)}setPage(e){this.currentPage=e,this.clampPage(),this.querying.shouldBeUpdated=!0}setPageSize(e){this.currentPageSize=e,this.querying.shouldBeUpdated=!0}loadOptions(){let e=this.querying.grid.options?.pagination||{};!e.enabled===this.enabled&&(this.enabled=!!e.enabled,this.querying.shouldBeUpdated=!0),this.currentPageSize!==e.pageSize&&this.setPageSize(e.pageSize??this.currentPageSize),this.currentPage!==e.page&&this.setPage(e.page??this.currentPage)}createModifier(e=this.querying.grid.dataTable?.rowCount||0){if(!this.enabled)return;let t=this.currentPage,i=this.currentPageSize,n=(t-1)*i,s=Math.min(n+i,e);return this.totalItemsCount=e,new t0({start:n,end:s})}},t2=class{constructor(e){this.shouldBeUpdated=!1,this.grid=e,this.filtering=new tX(this),this.sorting=new tQ(this),this.pagination=new t1(this)}async proceed(e=!1){(e||this.shouldBeUpdated)&&await this.modifyData()}loadOptions(){this.filtering.loadOptions(),this.sorting.loadOptions(),this.pagination.loadOptions()}willNotModify(){return!this.sorting.modifier&&!this.filtering.modifier}getGroupedModifiers(){let e=[];return this.sorting.modifier&&e.push(this.sorting.modifier),this.filtering.modifier&&e.push(this.filtering.modifier),e}async modifyData(){await this.grid.dataProvider?.applyQuery(),this.shouldBeUpdated=!1}};class t3{static grid(e,t,i){return i?new Promise(i=>{new t3(e,t,e=>{i(e)})}):new t3(e,t)}constructor(e,t,i){this.columnOptionsMap={},this.userOptions={},this.initialContainerHeight=0,this.popups=new Set,this.isRendered=!1,this.dirtyFlags=new Set,this.redrawQueue=Promise.resolve(),this.renderTo=e,this.loadUserOptions(t),this.id=this.options?.id||H(),this.querying=new t2(this),this.locale=this.options?.lang?.locale||this.container?.closest("[lang]")?.lang,this.time=new $(m(this.options?.time,{locale:this.locale}),this.options?.lang),g(this,"beforeLoad"),t3.grids.push(this),this.render().then(()=>{i?.(this),g(this,"afterLoad")})}get dataTable(){let e=this.dataProvider;if(e&&"getDataTable"in e)return e.getDataTable()}get presentationTable(){let e=this.dataProvider;if(e&&"getDataTable"in e)return e.getDataTable(!0)}initAccessibility(){this.accessibility?.destroy(),delete this.accessibility,this.options?.accessibility?.enabled&&(this.accessibility=new e6(this))}initPagination(){this.pagination?.destroy(),delete this.pagination,this.options?.pagination?.enabled&&(this.pagination=new to(this))}initContainer(e){let t="string"==typeof e?eF.document.getElementById(e):e;if(!t)throw Error("Rendering div not found. It is unable to find the HTML element to render the Grid in.");this.container=t,this.container.style.minHeight="0px",this.container.innerHTML=W.emptyHTML,this.contentWrapper=eW("div",{className:ej("container")},this.container)}loadUserOptions(e,t=!1){e=T(e);let i={};return e.columns&&(t?i.columns=this.setColumnOptionsOneToOne(e.columns):i.columns=this.setColumnOptions(e.columns),delete e.columns),i.columns&&Object.keys(i.columns).length<1&&delete i.columns,T(!0,i,p(e,this.userOptions)),this.userOptions=T(this.userOptions,e),this.options=T(this.options??tl,this.userOptions),this.viewport?.columns.forEach(e=>{e.options=eU(this.columnOptionsMap?.[e.id]?.options??{},this.options?.columnDefaults)}),i}reloadColumnOptions(){let e=this.userOptions.columns;if(!e){this.columnOptionsMap={};return}if(e.length<1){delete this.userOptions.columns,this.columnOptionsMap={};return}let t={};for(let i=0,n=e.length;i<n;++i)t[e[i].id]={index:i,options:e[i]};this.columnOptionsMap=t}setColumnOptions(e,t=!1){let i={};this.userOptions.columns||(this.userOptions.columns=this.options?.columns??[]);let n=this.userOptions.columns;for(let s=0,r=e.length;s<r;++s){let r,o=e[s],l=this.columnOptionsMap?.[o.id]?.index??-1;if(Object.keys(o).length<2){t&&-1!==l&&(i[o.id]=p(n[l],{id:o.id},!0),n.splice(l,1));continue}if(-1===l)r=T(o),n.push(o);else if(t){let e=n[l];r=T(p(e,o,!0),p(o,e)),n[l]=o}else{let e=n[l];r=p(o,e),T(!0,e,o)}delete r.id,Object.keys(r).length>0&&(i[o.id]=r)}return this.reloadColumnOptions(),i}setColumnOptionsOneToOne(e){let t,i=this.userOptions.columns,n=[],s={};for(let r=0,o=e.length;r<o;++r){let o=e[r],l=i?.findIndex(e=>e.id===o.id);void 0!==l&&-1!==l&&(t=i?.[l]);let a=p(o,t??{});Object.keys(a).length>0&&(delete a.id,s[o.id]=a);let h=T(t??{},o);Object.keys(h).length>1&&n.push(h)}return this.userOptions.columns=n,this.reloadColumnOptions(),s}update(e={},t=!0,i=!1){g(this,"beforeUpdate",{scope:"grid",options:e,redraw:t,oneToOne:i});let{viewport:n}=this,s=this.loadUserOptions(e,i),r=this.dirtyFlags;if(n){if(!this.dataProvider||"data"in s||"dataTable"in s){if(s.dataTable&&this.options?.dataTable&&this.options?.data?.providerType==="local"){let e=this.options.dataTable;this.options.data.dataTable="clone"in e?e:new ey(e)}this.loadDataProvider(),r.add("grid")}if("columns"in s){for(let e of Object.keys(s.columns??{}))this.loadColumnOptionDiffs(n,e,s.columns?.[e]),delete s.columns?.[e];delete s.columns}if("columnDefaults"in s&&(this.loadColumnOptionDiffs(n,null,s.columnDefaults),delete s.columnDefaults),s.lang){let e=s.lang;"locale"in e&&(this.locale=e.locale,this.time.update({locale:this.locale})),delete e.locale,Object.keys(e).length>0&&r.add("grid")}if(delete s.lang,"time"in s&&(this.time.update(s.time),delete s.time),s.pagination){let e=s.pagination;"enabled"in e&&!this.pagination&&e.enabled&&(this.pagination=new to(this)),this.pagination?.update(e)}delete s.pagination,Object.keys(s).length>0&&r.add("grid")}else r.add("grid");let o=()=>{g(this,"afterUpdate",{scope:"grid",options:e,redraw:t,oneToOne:i})};if(t)return this.redraw().then(o);o()}loadColumnOptionDiffs(e,t,i={}){if(Object.keys(i).length<1)return;let n=this.dirtyFlags,s=t?this.viewport?.getColumn(t):null;if(null!==s&&(!s&&!1!==i.enabled||s&&!1===i.enabled)&&n.add("grid"),delete i.enabled,"cells"in i){let e=i.cells??{};("format"in e||"formatter"in e||"className"in e)&&n.add("rows"),delete e.format,delete e.formatter,delete e.className,Object.keys(e).length>0&&n.add("rows")}if(delete i.cells,"width"in i&&(e.columnResizing.isDirty=!0),delete i.width,"sorting"in i){let e=i.sorting??{};("compare"in e||"order"in e)&&n.add("sorting"),delete e.compare,delete e.order,delete e.orderSequence,Object.keys(e).length>0&&n.add("grid")}if(delete i.sorting,"filtering"in i){let e=i.filtering??{};("condition"in e||"value"in e)&&n.add("filtering"),delete e.condition,delete e.value,Object.keys(e).length>0&&n.add("grid")}delete i.filtering,Object.keys(i).length>0&&n.add("grid")}async redraw(){let e=async()=>{g(this,"beforeRedraw");let e=this.dirtyFlags,t=new Set(e),{viewport:i,pagination:n}=this,s=i?.columnResizing,r=!!n?.isDirtyQuerying,o=!!s?.isDirty;if(t.has("grid")){for(let i of(await this.render(!1),t))e.delete(i);g(this,"afterRedraw");return}await this.dataProvider?.init(),(t.has("sorting")||t.has("filtering")||r)&&this.querying.loadOptions(),o&&s?.loadColumns(),t.has("rows")||t.has("sorting")||t.has("filtering")||r?await i?.updateRows():(t.has("reflow")||o)&&i?.reflow();let l=i?.columns??[];if(t.has("sorting")||t.has("filtering"))for(let e of l)e.header?.toolbar?.refreshState();if(t.has("filtering"))for(let e of l)e.filtering?.refreshState();for(let t of(n?.redraw(),delete s?.isDirty,["sorting","filtering"]))e.delete(t);g(this,"afterRedraw")},t=this.redrawQueue.then(e,e);return this.redrawQueue=t.catch(()=>void 0),t}async updateColumn(e,t,i=!0,n=!1){g(this,"beforeUpdate",{scope:"column",options:t,redraw:i,overwrite:n,columnId:e});let s=this.viewport,r=this.setColumnOptions([{id:e,...t}],n),o=r?.[e];o&&s&&this.loadColumnOptionDiffs(s,e,o),i&&await this.redraw(),g(this,"afterUpdate",{scope:"column",options:t,redraw:i,overwrite:n,columnId:e})}async setSorting(e){let t=this.viewport;if(!t||t.validator?.errorCell)return;let i=(e||[]).filter(e=>!!(e.columnId&&e.order)),n=this.querying.sorting,s=n.currentSortings||[],r=new Set;for(let e of s)e.columnId&&r.add(e.columnId);for(let e of i)r.add(e.columnId);let o=Array.from(r).map(e=>{let n=t.getColumn(e);return n?{column:n,order:i.find(t=>t.columnId===e)?.order||null}:null}).filter(e=>!!e);for(let{column:e,order:t}of o)[e,this].forEach(i=>{g(i,"beforeSort",{target:e,order:t})});n.setSorting(i),await t.updateRows();let l=n.currentSortings||[],a=l.length>1;for(let e of t.columns){let t=l.findIndex(t=>t.columnId===e.id);if(-1!==t&&l[t].order){let i={order:l[t].order};a&&(i.priority=t+1),e.setOptions({sorting:i}),a||delete e.options.sorting?.priority}else delete e.options.sorting?.order,delete e.options.sorting?.priority,e.options.sorting&&Object.keys(e.options.sorting).length<1&&delete e.options.sorting;e.sorting?.refreshHeaderAttributes()}for(let{column:e,order:t}of(this.accessibility?.userSortedColumn(l[0]?.order||null),o))[e,this].forEach(i=>{g(i,"afterSort",{target:e,order:t})})}async render(e=!0){this.isRendered&&this.destroy(!0),await this.loadDataProvider().init(),this.initContainer(this.renderTo),this.initAccessibility(),this.initPagination(),this.querying.loadOptions(),await this.querying.proceed(),await this.renderViewport(),this.isRendered=!0,e&&this.dirtyFlags.clear()}hoverRow(e){let t=this.viewport?.rows;if(!t)return;let i=this.viewport?.rows[0]?.index??0;void 0!==this.hoveredRowIndex&&t[this.hoveredRowIndex-i]?.setHoveredState(!1),void 0!==e&&t[e-i]?.setHoveredState(!0),this.hoveredRowIndex=e}hoverColumn(e){let t=this.viewport;t&&(this.hoveredColumnId&&t.getColumn(this.hoveredColumnId)?.setHoveredState(!1),e&&t.getColumn(e)?.setHoveredState(!0),this.hoveredColumnId=e)}syncRow(e){let t=this.viewport?.rows;if(!t)return;let i=this.viewport?.rows[0]?.index??0;void 0!==this.syncedRowIndex&&t[this.syncedRowIndex-i]?.setSyncedState(!1),void 0!==e&&t[e-i]?.setSyncedState(!0),this.syncedRowIndex=e}syncColumn(e){let t=this.viewport;t&&(this.syncedColumnId&&t.getColumn(this.syncedColumnId)?.setSyncedState(!1),e&&t.getColumn(e)?.setSyncedState(!0),this.syncedColumnId=e)}renderCaption(){let e=this.options?.caption;if(!e?.text||!this.contentWrapper)return;let t=e.htmlTag?.toLowerCase(),i=t&&W.allowedTags.includes(t)?t:"div",n=ej("captionElement"),s=e.className?`${n} ${e.className}`:n;this.captionElement=new W([{tagName:i,attributes:{class:s,id:this.id+"-caption"},textContent:e.text}]).addToDOM(this.contentWrapper)}renderDescription(){let e=this.options?.description,t=e?.text;t&&(this.descriptionElement=eW("div",{className:ej("descriptionElement"),id:this.id+"-description"},this.contentWrapper),eq(this.descriptionElement,t),e.className&&this.descriptionElement.classList.add(...e.className.split(/\s+/g)))}resetContentWrapper(){this.contentWrapper&&(this.contentWrapper.innerHTML=W.emptyHTML,this.contentWrapper.className=ej("container")+" "+this.options?.rendering?.theme||"")}async renderViewport(){let e=this.viewport?.getStateMeta(),t=this.pagination,i=t?.options?.position;this.enabledColumns=await this.getEnabledColumnIDs(),this.credits?.destroy(),this.viewport?.destroy(),delete this.viewport,this.resetContentWrapper(),g(this,"beforeRenderViewport"),this.renderCaption(),"top"===i&&t?.render(),this.enabledColumns.length>0?(this.viewport=await this.renderTable(),this.viewport.tableElement.setAttribute("id",this.id),e&&this.viewport&&this.viewport.applyStateMeta(e)):this.renderNoData(),await this.renderAccessibility(),"top"!==i&&t?.render(),this.renderDescription(),g(this,"afterRenderViewport"),this.viewport?.reflow()}async renderAccessibility(){let e=this.accessibility;e&&(await e.setA11yOptions(),e.addScreenReaderSection("before"),e.addScreenReaderSection("after"))}async renderTable(){this.tableElement=eW("table",{className:ej("tableElement")},this.contentWrapper),this.tableElement.setAttribute("role","grid");let e=new t_(this,this.tableElement);return await e.init(),e}renderNoData(){eW("div",{className:ej("noData"),innerText:this.options?.lang?.noData},this.contentWrapper)}async getEnabledColumnIDs(){let e,{columnOptionsMap:t}=this,i=this.options?.header,n=this.getColumnIds(i||[],!1),s=this.options?.rendering?.columns?.included||(n&&n.length>0?n:await this.dataProvider?.getColumnIds());if(!s?.length)return[];if(!t)return s;let r=[];for(let i=0,n=s.length;i<n;++i)e=s[i],t?.[e]?.options?.enabled!==!1&&r.push(e);return r}loadDataProvider(){this.dataProvider?.destroy(),this.querying.shouldBeUpdated=!0;let e=this.options?.dataTable,t=this.options?.data??{providerType:"local",dataTable:e??{}};"local"===t.providerType&&!t.dataTable&&e&&(t.dataTable="clone"in e?e:new ey(e));let i=e8.types[t.providerType??"local"]??e8.types.local;return this.dataProvider=new i(this.querying,t),this.dataProvider}getColumnIds(e,t=!0){let i=[],{enabledColumns:n}=this;for(let s of e){let e="string"==typeof s?s:s.columnId;e&&(!t||n?.includes(e))&&i.push(e),"string"!=typeof s&&s.columns&&(i=i.concat(this.getColumnIds(s.columns,t)))}return i}destroy(e=!1){g(this,"beforeDestroy"),this.isRendered=!1;let t=t3.grids.findIndex(e=>e===this);this.dataProvider?.destroy(),this.accessibility?.destroy(),this.pagination?.destroy(),this.viewport?.destroy(),this.container&&(this.container.innerHTML=W.emptyHTML,this.container.classList.remove(ej("container"))),e||(Object.keys(this).forEach(e=>{delete this[e]}),t3.grids.splice(t,1))}showLoading(e){this.loadingWrapper||(this.loadingWrapper=eW("div",{className:ej("loadingWrapper")},this.contentWrapper),eW("div",{className:ej("loadingSpinner")},this.loadingWrapper),eq(eW("span",{className:ej("loadingMessage")},this.loadingWrapper),S(e,this.options?.lang?.loading,"")))}hideLoading(){this.loadingWrapper?.remove(),delete this.loadingWrapper}getData(e=!0){if(!this.dataProvider||!("getDataTable"in this.dataProvider))return console.warn("getData() works only with LocalDataProvider."),JSON.stringify({error:"getData() works only with LocalDataProvider."},null,2);let t=this.dataProvider.getDataTable(e),i=t?.columns,n={};if(!this.enabledColumns||!i)return"{}";let s=e=>{let t={number:Number,datetime:Number,string:String,boolean:Boolean};return i=>c(i)?t[e](i):null};for(let e of Object.keys(i)){let t=this.viewport?.getColumn(e);if(t){let r=i[e],o=s(t.dataType);n[e]=(()=>{let e=[];for(let t=0,i=r.length;t<i;++t)e.push(o(r[t]));return e})()}}return JSON.stringify(n,null,2)}getOptions(e=!0){let t=e?T(this.userOptions):T(this.options);t.dataTable&&"clone"in t.dataTable&&(t.dataTable={columns:t.dataTable.columns}),t.data?.providerType==="local"&&(t.data?.dataTable&&"clone"in t.data.dataTable&&(t.data.columns=t.data.dataTable.columns),t.data?.connector&&"initConverters"in t.data.connector&&(t.data.connector=t.data.connector.options));let i=t.columns;if(i)for(let e of(t.columns=[],i))Object.keys(e).length>1&&t.columns.push(e);return t}}t3.grids=[];class t6{constructor(e){this.options=T(t6.defaultOptions,e),this.connectors={},this.waiting={}}emit(e){g(this,e.type,e)}getConnector(e){let t=this.connectors[e];if(t?.loaded)return Promise.resolve(t);let i=this.waiting[e];if(!i){i=this.waiting[e]=[];let t=this.getConnectorOptions(e);if(!t)throw Error(`Connector '${e}' not found.`);this.loadConnector(t).then(t=>{delete this.waiting[e];for(let e=0,n=i.length;e<n;++e)i[e][0](t)}).catch(t=>{delete this.waiting[e];for(let e=0,n=i.length;e<n;++e)i[e][1](t)})}return new Promise((e,t)=>{i.push([e,t])})}getConnectorIds(){let e=this.options.connectors,t=[];for(let i=0,n=e.length;i<n;++i)t.push(e[i].id);return t}getConnectorOptions(e){let t=this.options.connectors;for(let i=0,n=t.length;i<n;++i)if(t[i].id===e)return t[i]}isNewConnector(e){return!this.connectors[e]}loadConnector(e){return new Promise((t,i)=>{this.emit({type:"load",options:e});let n=ev.types[e.type];if(!n)throw Error(`Connector type not found. (${e.type})`);let s=this.connectors[e.id]=new n(e);s.load().then(({converter:i})=>{s.converter=i,s.loaded=!0,this.emit({type:"afterLoad",options:e}),t(s)}).catch(i)})}cancelPendingRequests(){let{connectors:e}=this;for(let t of Object.keys(e))e[t].stopPolling()}on(e,t){return d(this,e,t)}async setConnectorOptions(e,t){let i=this.options.connectors,n=this.connectors;this.emit({type:"setConnectorOptions",options:e});for(let t=0,n=i.length;t<n;++t)if(i[t].id===e.id){i.splice(t,1);break}let s=n[e.id];s&&(t?await s.update(e,!0):(s.stopPolling(),s=void 0,delete n[e.id])),s||i.push(e),this.emit({type:"afterSetConnectorOptions",options:e})}}function t4(){t8.call(this),this.container&&(this.activeRules=new Set,this.resizeObserver=new ResizeObserver(e=>{ie.call(this,e[0])}),this.resizeObserver.observe(this.container))}function t8(){this.resizeObserver?.disconnect(),delete this.activeRules}function t9(e,t){let{maxWidth:i,maxHeight:n,minWidth:s,minHeight:r,callback:o}=e.condition;return(!c(o)||o?.call(this,this))&&(!c(i)||t.contentRect.width<=i)&&(!c(n)||t.contentRect.height<=n)&&(!c(s)||t.contentRect.width>=s)&&(!c(r)||t.contentRect.height>=r)}function t5(e){let t=e.map(e=>e._id).toString()||void 0;if(t!==this.currentResponsive?.ruleIds){if(this.currentResponsive){let e=this.currentResponsive.undoOptions;this.currentResponsive=void 0,this.updatingResponsive=!0,this.update(e,!0),this.updatingResponsive=!1}if(t){let i=T(...e.map(e=>e.gridOptions)),n=p(i,this.options||{},!0),s=t7.call(this,i);s?n.columns=s:function(e,t){let i=t.columns,n=e.columns;if(i&&n)for(let e=0,t=Math.min(i.length,n.length);e<t;++e){let t=i[e],s=n[e];!t||!s||"id"in s||(s.id=t.id)}}(n,i),this.currentResponsive={ruleIds:t,mergedOptions:i,undoOptions:n},this.updatingResponsive||this.update(i,!0)}}}function t7(e){let t=e.columns,i=this.options?.columns;if(!t||!i)return;let n=[],s=new Map;for(let e=0,t=i.length;e<t;++e){let t=i[e];"string"==typeof t.id&&s.set(t.id,t)}for(let e=0,i=t.length;e<i;++e){let i=t[e],r="string"==typeof i?.id?i.id:void 0;if(!i||!r)continue;let o=s.get(r);if(!o)continue;let l=p(i,o,!0);Object.keys(l).length>0&&(l.id=r,n.push(l))}if(n.length)return n}function ie(e){if(!this.activeRules)return;let t=this.options?.responsive?.rules||[],i=[];for(let n of t)void 0===n._id&&(n._id=H()),t9.call(this,n,e)&&i.push(n);this.activeRules=new Set(i),t5.call(this,i)}t6.defaultOptions={connectors:[]};let it={cell_mouseOver:function(){g(this.row.viewport.grid,"cellMouseOver",{target:this})},cell_mouseOut:function(){g(this.row.viewport.grid,"cellMouseOut",{target:this})}},ii={cellEditingContainer:eH+"cell-editing-container"},is=class{constructor(e){this.onInputBlur=()=>{this.stopEditing()||this.editModeContent?.getMainElement().focus()},this.onInputChange=()=>{this.editModeContent?.finishAfterChange&&!this.stopEditing()&&this.editModeContent?.getMainElement().focus()},this.onInputKeyDown=e=>{let{key:t}=e;if(e.stopPropagation(),"Escape"===t)return void this.stopEditing(!1);if("Enter"===t){if(this.editModeContent?.finishAfterChange)return void this.onInputChange();this.stopEditing()}},this.viewport=e}startEditing(e){this.editedCell!==e&&(!this.editedCell||this.stopEditing())&&(this.editedCell=e,e.htmlElement.classList.add(ej("editedCell")),this.render(),g(e,"startedEditing"))}stopEditing(e=!0){let t=this.editedCell,i=this.editModeContent;if(!t||!i)return!1;let{column:n}=t,s=n.viewport,r=i.value;if(e){let e=[];if(!s.validator?.validate(t,e))return s.validator?.initErrorBox(t,e),this.setA11yAttributes(!1),!1;this.setA11yAttributes(!0),s.validator.hide(),s.validator.errorCell=void 0}this.viewport.validator?.hide(),this.destroy(),t.htmlElement.classList.remove(ej("editedCell")),t.htmlElement.focus();let o=t.value!==r;return t.setValue(e?r:t.value,e&&o).then(()=>{o&&g(t,"stoppedEditing",{submit:e}),delete this.editedCell}),!0}setA11yAttributes(e){let t=this.editModeContent?.getMainElement();t&&(e?(t.setAttribute("aria-invalid","false"),t.setAttribute("aria-errormessage","")):(t.setAttribute("aria-invalid","true"),t.setAttribute("aria-errormessage","notification-error")))}render(){let e=this.editedCell;e&&e.column.editModeRenderer&&(this.containerElement=this.containerElement||document.createElement("div"),this.containerElement.className=ii.cellEditingContainer,this.editedCell?.htmlElement.appendChild(this.containerElement),this.editModeContent=e.column.editModeRenderer?.render(e,this.containerElement),this.editModeContent.getMainElement().focus(),this.editModeContent.blurHandler=this.onInputBlur,this.editModeContent.changeHandler=this.onInputChange,this.editModeContent.keyDownHandler=this.onInputKeyDown,(e.column.options?.cells?.editMode?.validationRules||[]).includes("notEmpty")&&this.editModeContent.getMainElement().setAttribute("aria-required","true"))}destroy(){this.editModeContent&&(this.editModeContent.destroy(),this.containerElement?.remove(),delete this.editModeContent,delete this.containerElement)}},ir={};function io(e,t){return!!e&&!ir[e]&&!!(ir[e]=t)}let il={types:ir,registerRenderer:io},{makeHTMLElement:ia}=eK,ih={accessibility:{announcements:{cellEditing:!0}},lang:{accessibility:{cellEditing:{editable:"Editable.",announcements:{started:"Entered cell editing mode.",edited:"Edited cell value.",cancelled:"Editing canceled.",notValid:"Provided value is not valid."}}}}};function id(){this.cellEditing=new is(this)}function iu(){let{options:e}=this;e?.cells?.editMode?.enabled&&(this.editModeRenderer=function(e){let t=e.options.cells?.editMode,i=t?.renderer?.type,n=e.options?.cells?.renderer?.type||"text";if(i)return new il.types[i](e,t?.renderer||{});let s=(il.types[n]||il.types.text).defaultEditingRenderer;return"string"!=typeof s&&(s=s[e.dataType]||"textInput"),new il.types[s](e,s===n&&T(e.options.cells?.renderer,{disabled:!1})||{})}(this))}function ic(e){e.originalEvent?.key==="Enter"&&this.column.editModeRenderer&&this.row.viewport.cellEditing?.startEditing(this)}function ip(){this.column.editModeRenderer&&this.row.viewport.cellEditing?.startEditing(this)}function im(){if(!this.row.viewport.grid.accessibility||this.a11yEditableHint?.isConnected)return;let e=this.row.viewport.grid.options?.lang?.accessibility?.cellEditing?.editable;this.column.options.cells?.editMode?.enabled&&e&&(this.a11yEditableHint=ia("span",{className:ej("visuallyHidden"),innerText:", "+e},this.htmlElement))}function ig(e,t){let i=e.row.viewport.grid.accessibility;if(!i)return;let{options:n}=i.grid;if(!n?.accessibility?.announcements?.cellEditing)return;let s=n?.lang?.accessibility?.cellEditing?.announcements,r=s?.[t];r&&i.announce(r)}let{makeHTMLElement:iw,setHTMLContent:iy}=eK;class ib{constructor(e,t){this.grid=e,this.containerElement=iw("div",{className:ej("creditsContainer")}),this.textElement=this.renderAnchor(),this.options=t??ib.defaultOptions,this.render()}render(){let e=this.grid,t=e.contentWrapper,{text:i,href:n}=this.options;this.containerElement.remove(),this.textElement||(this.textElement=this.renderAnchor()),i&&iy(this.textElement,i),n&&this.textElement.setAttribute("href",n||""),e.descriptionElement?t?.insertBefore(this.containerElement,e.descriptionElement):t?.appendChild(this.containerElement)}renderAnchor(){let e=iw("a",{className:ej("creditsText")},this.containerElement);return e.setAttribute("target","_blank"),e.setAttribute("alt","Highcharts logo"),e}getHeight(){return this.containerElement.offsetHeight}destroy(){this.containerElement.remove()}}ib.defaultOptions={enabled:!0,text:"",href:"https://www.highcharts.com",position:"bottom"};let iv=ib,{setHTMLContent:iC}=eK,iE=class extends iv{setContent(){let{text:e,href:t}=this.options;iC(this.textElement,e||""),this.textElement.setAttribute("href",t||"")}appendToContainer(){let e=this.grid,t=e.contentWrapper,{position:i}=this.options;(this.containerElement.classList.add(ej("creditsPro")),"top"===i)?t?.prepend(this.containerElement):e.descriptionElement?t?.insertBefore(this.containerElement,e.descriptionElement):t?.appendChild(this.containerElement)}update(e,t=!0){e&&(this.grid.update({credits:e},!1),this.options=this.grid.options?.credits??{}),t&&this.render()}render(){let e=this.options.enabled??!1;this.containerElement.remove(),e?(this.setContent(),this.appendToContainer()):this.destroy(),this.grid.viewport?.reflow()}destroy(){super.destroy(),delete this.grid.credits}};function ix(){this.credits=new iE(this,this.options?.credits)}let{isSafari:iT,win:iR,win:{document:iO}}=l,iS=iR.URL||iR.webkitURL||iR;function iM(e,t){let i=iR.navigator,n=iO.createElement("a");if("string"!=typeof e&&!(e instanceof String)&&i.msSaveOrOpenBlob)return void i.msSaveOrOpenBlob(e,t);if(e=""+e,i.userAgent.length>1e3)throw Error("Input too long");let s=/Edge\/\d+/.test(i.userAgent);if((iT&&"string"==typeof e&&0===e.indexOf("data:application/pdf")||s||e.length>2e6)&&!(e=function(e){let t=e.replace(/filename=.*;/,"").match(/data:([^;]*)(;base64)?,([A-Z+\d\/]+)/i);if(t&&t.length>3&&iR.atob&&iR.ArrayBuffer&&iR.Uint8Array&&iR.Blob&&iS.createObjectURL){let e=iR.atob(t[3]),i=new iR.ArrayBuffer(e.length),n=new iR.Uint8Array(i);for(let t=0;t<n.length;++t)n[t]=e.charCodeAt(t);return iS.createObjectURL(new iR.Blob([n],{type:t[1]}))}}(e)||""))throw Error("Failed to convert to blob");if(void 0!==n.download)n.href=e,n.download=t,iO.body.appendChild(n),n.click(),iO.body.removeChild(n);else try{if(!iR.open(e,"chart"))throw Error("Failed to open window")}catch{iR.location.href=e}}function iL(e,t){let i=iR.navigator,n=iR.URL||iR.webkitURL||iR;try{if(i.msSaveOrOpenBlob&&iR.MSBlobBuilder){let t=new iR.MSBlobBuilder;return t.append(e),t.getBlob("image/svg+xml")}return n.createObjectURL(new iR.Blob(["\uFEFF"+e],{type:t}))}catch(e){}}class iI{constructor(e){this.grid=e}downloadCSV(e=!0){let t=this.getCSV(e);iM(iL(t,"text/csv")||"data:text/csv,\uFEFF"+encodeURIComponent(t),this.getFilename()+".csv")}downloadJSON(e=!0){let t=this.getJSON(e);iM(iL(t,"application/json")||"data:application/json,\uFEFF"+encodeURIComponent(t),this.getFilename()+".json")}getCSV(e=!0){let{grid:t}=this,i=e?t.presentationTable:t.dataTable;if(!i)return"";let n=this.grid.options?.exporting||iI.defaultOptions,{useLocalDecimalPoint:s,lineDelimiter:r,firstRowAsNames:o}=n.csv??{},{decimalPoint:l,itemDelimiter:a}=n.csv??{};l||(l=","!==a&&s?1.1.toLocaleString()[1]:"."),a||(a=","===l?";":",");let h=t.enabledColumns??[],d=h?.length,u=[],p=[];!1!==o&&u.push(h.map(e=>`"${e}"`).join(a));let m=e=>{switch(e){case"number":case"datetime":return e=>c(e)?String(e).replace(".",l):"";case"string":return e=>c(e)?`"${e}"`:"";case"boolean":return e=>c(e)?e?"TRUE":"FALSE":""}};for(let e=0;e<d;e++){let n=h[e],s=t.viewport?.getColumn(n),r=s?.dataType,o=i.getColumn(n)??[],l=o?.length,c=m(r??"string");for(let t=0;t<l;t++){let i=p[t];if(i||(i=p[t]=[]),i[e]=c(o[t]),e===d-1){let t=e;for(;i.length>2&&void 0===i[t];)i.pop(),t--;u.push(i.join(a))}}}return u.join(r)}getJSON(e=!0){return this.grid.getData(e)}getFilename(){let e=this.grid.options?.exporting?.filename||"Grid";return e?e.replace(/\//g,"-"):("string"==typeof e&&(e=e.toLowerCase().replace(/<\/?[^>]+(>|$)/g,"").replace(/[\s_]+/g,"-").replace(/[^a-z\d\-]/g,"").replace(/^[\-]+/g,"").replace(/[\-]+/g,"-").substr(0,24).replace(/[\-]+$/g,"")),e)}}function iA(){this.exporting=new iI(this)}iI.defaultOptions={filename:"Grid",csv:{firstRowAsNames:!0,useLocalDecimalPoint:!0,itemDelimiter:",",lineDelimiter:"\n"}};let{makeDiv:ik,setHTMLContent:iD}=eK;class iP{constructor(e){this.viewport=e,this.notifContainer=ik(iP.classNames.notifContainer),this.viewport.grid.contentWrapper?.appendChild(this.notifContainer)}validate(e,t=[]){let{options:i,dataType:n}=e.column,s=e.row.viewport.grid.options?.lang?.validationErrors,r=e.column.options?.cells?.renderer?.type,o=Array.from(i?.cells?.editMode?.validationRules||[]),l=o.every(e=>"string"==typeof e);if(o.length>0&&l)o=[...new Set(o)];else{let e=[...iP.predefinedRules.dataType[n]??[]];r&&e.push(...iP.predefinedRules.renderer[r]??[]),o.some(t=>"string"!=typeof t&&"string"==typeof t.validate&&e.includes(t.validate))||o.push(...e)}for(let i of o){let n,r,o;if("string"==typeof i?(n=iP.rulesRegistry[i],r=s?.[i]?.notification):n=i,"string"==typeof n.validate){let e=iP.rulesRegistry[n.validate];o=e?.validate}else o=n.validate;let{editModeContent:l}=e.column.viewport.cellEditing||{};"function"==typeof o&&l&&!o.call(e,l)&&("function"==typeof n.notification&&(r=n.notification.call(e,l)),t.push(r||n.notification))}return!t.length}initErrorBox(e,t){let{grid:i}=this.viewport;this.errorCell=e,this.reflow(),iD(this.notifContainer,t.join("<br />")),i.options?.accessibility?.announcements?.cellEditing&&this.viewport.grid.accessibility?.announce((i.options?.lang?.accessibility?.cellEditing?.announcements?.notValid||"")+" "+t.join(". "),!0),this.show()}show(){this.errorCell?.htmlElement.classList.add(iP.classNames.editedCellError),this.notifContainer.classList.add(iP.classNames.notifError,iP.classNames.notifAnimation),this.notifContainer.setAttribute("id","notification-error")}hide(e=!0){this.errorCell?.htmlElement.classList.remove(iP.classNames.editedCellError),this.notifContainer.classList.remove(iP.classNames.notifError,iP.classNames.notifAnimation),this.notifContainer.removeAttribute("id"),e&&(this.errorCell=void 0),this.notifContainer.innerHTML=W.emptyHTML}reflow(){let e=this.viewport,t=this.errorCell?.htmlElement,i=e.grid.tableElement,n=e.grid.contentWrapper;if(!t||!i||!n)return;let s=i.offsetTop,r=i.offsetHeight;t.offsetTop-s>s+r/2?(this.notifContainer.style.top=s+(e.theadElement?.offsetHeight||0)+"px",this.notifContainer.style.bottom="auto"):(this.notifContainer.style.top="auto",this.notifContainer.style.bottom=n.offsetHeight-s-r+"px")}destroy(){this.errorCell=void 0,this.notifContainer.remove()}}function iH(){this.validator=new iP(this)}function iN(){this.validator?.destroy()}function iF(){let e=this.options.cells?.renderer?.type||"text",t=il.types[e];t||(console.warn(`The cell renderer of type "${e}" is not registered. Using default text renderer instead.`),t=il.types.text),this.cellRenderer=new t(this,this.options.cells?.renderer||{})}function iz(e){if(!this.cellRenderer)throw Error("Called cell renderer on uninitialized column.");return this.cellRenderer.render(e)}iP.classNames={notifContainer:eH+"notification",notifError:eH+"notification-error",notifAnimation:eH+"notification-animation",editedCellError:eH+"edited-cell-error"},iP.rulesRegistry={notEmpty:{validate:({value:e,rawValue:t})=>c(e)&&t.length>0,notification:"Value cannot be empty."},number:{validate:({rawValue:e})=>!isNaN(+e),notification:"Value has to be a number."},datetime:{validate:({value:e})=>!c(e)||!isNaN(+e),notification:"Value has to be parsed to a valid timestamp."},boolean:{validate:({rawValue:e})=>"true"===e||"false"===e||1===Number(e)||0===Number(e),notification:"Value has to be a boolean."},arrayNumber:{validate:function({rawValue:e}){return e.split(",").every(e=>!Number.isNaN(Number(e.trim())))},notification:"Value should be a list of numbers separated by commas."},json:{validate:function({rawValue:e}){try{return JSON.parse(e),!0}catch{return!1}},notification:"Value should be a valid JSON."},sparkline:{validate:function({rawValue:e}){let t=iP.rulesRegistry.arrayNumber.validate,i=iP.rulesRegistry.json.validate;return t({rawValue:e})||i({rawValue:e})},notification:"Value should be a valid JSON or a list of numbers separated by commas."},ignoreCaseUnique:{validate:function({rawValue:e}){let t=String(this.value).toLowerCase(),i=e.toLowerCase();if(t===i)return!0;let n=this.column.data;return!n?.some(e=>String(e).toLowerCase()===i)},notification:"Value must be unique within this column (case-insensitive)."},unique:{validate:function({rawValue:e}){if(this.value===e)return!0;let t=this.column.data;return!t?.some(t=>t===e)},notification:"Value must be unique within this column (case-sensitive)."}},iP.predefinedRules={dataType:{boolean:["boolean"],datetime:["datetime"],number:["number"],string:[]},renderer:{sparkline:["sparkline"]}};let iB=class extends ta{constructor(e,t){super(e),this.renderer=t}};class ij{constructor(e){this.column=e}}class iW extends eM{constructor(e){const t=T(iW.defaultOptions,e);super(t),this.headers=[],this.dataTypes=[],this.options=t}parse(e,t){let i=this.dataTypes,n=T(this.options,e),{beforeParse:s,lineDelimiter:r,firstRowAsNames:o,itemDelimiter:l}=n,a,h=0,{csv:d,startRow:u,endRow:c}=n,p,m=[];if(this.emit({type:"parse",columns:m,detail:t,headers:this.headers}),d&&s&&(d=s(d)),d){if(a=d.replace(/\r\n|\r/g,"\n").split(r||"\n"),(!u||u<0)&&(u=0),(!c||c>=a.length)&&(c=a.length-1),l||(this.guessedItemDelimiter=this.guessDelimiter(a)),o){let e=a[0].split(l||this.guessedItemDelimiter||",");for(let t=0;t<e.length;t++)e[t]=e[t].trim().replace(/^["']|["']$/g,"");this.headers=e,u++}let e=0;for(h=u;h<=c;h++)"#"===a[h][0]?e++:this.parseCSVRow(m,a[h],h-u-e);i.length&&i[0].length&&"date"===i[0][1]&&!this.options.dateFormat&&this.deduceDateFormat(m[0],null,!0);for(let e=0,t=m.length;e<t;++e){p=m[e];for(let t=0,i=p.length;t<i;++t)if(p[t]&&"string"==typeof p[t]){let i=this.convertByType(p[t]);i instanceof Date&&(i=i.getTime()),m[e][t]=i}}}return m.forEach(e=>{e.length=Math.max(...m.map(e=>e.length))}),this.emit({type:"afterParse",columns:m,detail:t,headers:this.headers}),eR(m,this.headers)}parseCSVRow(e,t,i){let n=this,s=n.dataTypes,{startColumn:r,endColumn:o}=n.options,l=n.options.itemDelimiter||n.guessedItemDelimiter,{decimalPoint:a}=n.options;a&&a!==l||(a=n.guessedDecimalPoint||".");let h=0,d="",u="",c=0,p=0,m=e=>{d=t[e]},g=e=>{s.length<p+1&&s.push([e]),s[p][s[p].length-1]!==e&&s[p].push(e)},f=()=>{if(r>c||c>o){++c,u="";return}if("string"==typeof u){let e=parseFloat(u);!isNaN(e)&&isFinite(Number(u))?(u=e,g("number")):isNaN(Date.parse(u))?g("string"):(u=u.replace(/\//g,"-"),g("date"))}else g("number");if(e.length<p+1&&e.push([]),"number"!=typeof u&&"number"!==eO(u,n)&&a){let e=u;"number"!==eO(u=u.replace(a,"."),n)&&(u=e)}e[p][i]=u,u="",++p,++c};if(t.trim().length&&"#"!==t.trim()[0]){for(;h<t.length;h++){if(m(h),"#"===d&&!/^#[A-F\d]{3,3}|[A-F\d]{6,6}/i.test(t.substring(h)))return void f();if('"'===d)for(m(++h);h<t.length&&'"'!==d;)u+=d,m(++h);else d===l?f():u+=d}f()}}guessDelimiter(e){let t=0,i=0,n,s={",":0,";":0," ":0},r=e.length;for(let n=0;n<r;n++){let r=!1,o,l,a,h="";if(n>13)break;let d=e[n];for(let e=0;e<d.length&&(o=d[e],l=d[e+1],a=d[e-1],"#"!==o);e++){if('"'===o)if(r){if('"'!==a&&'"'!==l){for(;" "===l&&e<d.length;)l=d[++e];void 0!==s[l]&&s[l]++,r=!1}}else r=!0;else void 0!==s[o]?(isNaN(Date.parse(h=h.trim()))?(isNaN(Number(h))||!isFinite(Number(h)))&&s[o]++:s[o]++,h=""):h+=o;","===o&&i++,"."===o&&t++}}return s[";"]>s[","]?n=";":(s[","]>s[";"],n=","),t>i?this.guessedDecimalPoint=".":this.guessedDecimalPoint=",",n}}iW.defaultOptions={...eM.defaultOptions,lineDelimiter:"\n",startColumn:0,endColumn:Number.MAX_VALUE,startRow:0,endRow:Number.MAX_VALUE},eM.registerType("CSV",iW);class iV extends ev{constructor(e){const t=T(iV.defaultOptions,e);super(t),this.options=t,t.enablePolling&&this.startPolling(1e3*Math.max(t.dataRefreshRate||0,1))}emit(e){g(this,e.type,e)}load(e){let t=this,i=t.options,{csv:n,csvURL:s,dataTables:r,decimalPoint:o}=i;return t.emit({type:"load",csv:n}),Promise.resolve(s?fetch(s,{signal:t?.pollingController?.signal}).then(e=>e.text()):n||"").then(e=>(e&&this.initConverters(e,e=>{let{firstRowAsNames:t=i.firstRowAsNames,beforeParse:n=i.beforeParse}=r?.find(t=>t.key===e)||{};return new iW(T(i,{decimalPoint:o,firstRowAsNames:t,beforeParse:n}))},(e,t)=>e.parse({csv:t})),t.applyTableModifiers().then(()=>e))).then(i=>(t.emit({type:"afterLoad",detail:e,csv:i}),t)).catch(i=>{throw t.emit({type:"loadError",detail:e,error:i}),i})}}iV.defaultOptions={id:"csv-connector",type:"CSV",csv:"",csvURL:"",enablePolling:!1,dataRefreshRate:1,firstRowAsNames:!0},ev.registerType("CSV",iV);class iq extends eM{constructor(e){const t=T(iq.defaultOptions,e);super(t),this.header=[],this.options=t}parse(e,t){let i,n=T(this.options,e),s=(n.json?.values||[]).map(e=>e.slice());if(0===s.length)return{};this.header=[],this.emit({type:"parse",columns:[],detail:t,headers:this.header});let{beforeParse:r,json:o}=n;r&&o&&(s=r(o.values));for(let e=0,t=s.length;e<t;e++){i=s[e],this.header[e]=n.firstRowAsNames?`${i.shift()}`:H();for(let t=0,n=i.length;t<n;++t){var l;let n=i[t];l=n,"[object Date]"===Object.prototype.toString.call(l)&&(n=n.getTime()),s[e][t]=n}}return this.emit({type:"afterParse",columns:s,detail:t,headers:this.header}),eR(s,this.header)}}iq.defaultOptions={...eM.defaultOptions},eM.registerType("GoogleSheets",iq);class iU extends ev{constructor(e){const t=T(iU.defaultOptions,e);super(t),this.options=t}emit(e){g(this,e.type,e)}load(e){let t=this,i=t.options,{dataRefreshRate:n,enablePolling:s,googleAPIKey:r,googleSpreadsheetKey:o,dataTables:l}=i,a=function(e,t,i={}){let n=new URL(`https://sheets.googleapis.com/v4/spreadsheets/${t}/values/`),s=i.onlyColumnIds?"A1:Z1":function(e={}){let{endColumn:t,endRow:i,googleSpreadsheetRange:n,startColumn:s,startRow:r}=e;return n||(i$[s||0]||"A")+(Math.max(r||0,0)+1)+":"+(i$[S(t,25)]||"Z")+(i?Math.max(i,0):"Z")}(i);n.pathname+=s;let r=n.searchParams;return r.set("alt","json"),i.onlyColumnIds||(r.set("dateTimeRenderOption","FORMATTED_STRING"),r.set("majorDimension","COLUMNS"),r.set("valueRenderOption","UNFORMATTED_VALUE")),r.set("prettyPrint","false"),r.set("key",e),n.href}(r,o,i);if(t.emit({type:"load",detail:e,url:a}),!URL.canParse(a))throw Error("Invalid URL: "+a);return fetch(a,{signal:t?.pollingController?.signal}).then(e=>e.json()).then(e=>{if("object"==typeof e&&e&&"object"==typeof e.error&&e.error&&"number"==typeof e.error.code&&"string"==typeof e.error.message&&"string"==typeof e.error.status)throw Error(e.error.message);return this.initConverters(e,e=>{let{firstRowAsNames:t=i.firstRowAsNames,beforeParse:n=i.beforeParse}=l?.find(t=>t.key===e)||{};return new iq({firstRowAsNames:t,beforeParse:n})},(e,t)=>e.parse({json:t})),t.applyTableModifiers()}).then(()=>(t.emit({type:"afterLoad",detail:e,url:a}),s&&setTimeout(()=>t.load(),1e3*Math.max(n||0,1)),t)).catch(i=>{throw t.emit({type:"loadError",detail:e,error:i}),i})}}iU.defaultOptions={id:"google-sheets-connector",type:"GoogleSheets",googleAPIKey:"",googleSpreadsheetKey:"",enablePolling:!1,dataRefreshRate:2,firstRowAsNames:!0};let i$="ABCDEFGHIJKLMNOPQRSTUVWXYZ";ev.registerType("GoogleSheets",iU);class iY extends eM{constructor(e){const t=T(iY.defaultOptions,e);super(t),this.headers=[],this.options=t,t.tableElement&&(this.tableElement=t.tableElement,this.tableElementID=t.tableElement.id)}export(e,t=this.options){let i=!1!==t.firstRowAsNames,n=t.useMultiLevelHeaders,s=e.getSortedColumns(),r=Object.keys(s),o=[],l=r.length,a=[],h="";if(i){let e=[];if(n){for(let t of r){let i=s[t];Array.isArray(i)||(i=Array.from(i));let n=(i.shift()||"").toString();s[t]=i,e.push(n)}h=this.getTableHeaderHTML(r,e,t)}else h=this.getTableHeaderHTML(void 0,r,t)}for(let e=0;e<l;e++){let t=s[r[e]],i=t.length;for(let n=0;n<i;n++){let i=t[n];a[n]||(a[n]=[]),"string"!=typeof i&&"number"!=typeof i&&void 0!==i&&(i=(i||"").toString()),a[n][e]=this.getCellHTMLFromValue(e?"td":"th",null,e?"":'scope="row"',i),e===l-1&&o.push("<tr>"+a[n].join("")+"</tr>")}}let d="";return t.tableCaption&&(d='<caption class="highcharts-table-caption">'+t.tableCaption+"</caption>"),"<table>"+d+h+"<tbody>"+o.join("")+"</tbody></table>"}getCellHTMLFromValue(e,t,i,n,s){let r=n,o="text"+(t?" "+t:"");return"number"==typeof r?(r=r.toString(),","===s&&(r=r.replace(".",s)),o="number"):n||(r="",o="empty"),"<"+e+(i?" "+i:"")+' class="'+o+'">'+r+"</"+e+">"}getTableHeaderHTML(e=[],t=[],i=this.options){let{useMultiLevelHeaders:n,useRowspanHeaders:s}=i,r="<thead>",o=0,l=t&&t.length,a,h=0,d;if(n&&e&&t&&!function(e,t){let i=e.length;if(t.length!==i)return!1;for(;--i;)if(e[i]!==t[i])return!1;return!0}(e,t)){for(r+="<tr>";o<l;++o)(a=e[o])===e[o+1]?++h:h?(r+=this.getCellHTMLFromValue("th","highcharts-table-topheading",'scope="col" colspan="'+(h+1)+'"',a),h=0):(a===t[o]?s?(d=2,t.splice(o,1)):(d=1,t[o]=""):d=1,r+=this.getCellHTMLFromValue("th","highcharts-table-topheading",'scope="col"'+(d>1?' valign="top" rowspan="'+d+'"':""),a));r+="</tr>"}if(t){for(r+="<tr>",o=0,l=t.length;o<l;++o)void 0!==t[o]&&(r+=this.getCellHTMLFromValue("th",null,'scope="col"',t[o]));r+="</tr>"}return r+"</thead>"}parse(e,t){let i=[],n=[],s=T(this.options,e),{endRow:r,startColumn:o,endColumn:l,firstRowAsNames:a}=s,h=s.tableElement||this.tableElement;if(!(h instanceof HTMLElement))return this.emit({type:"parseError",columns:i,detail:t,headers:n,error:"Not a valid HTML Table"}),{};this.tableElement=h,this.tableElementID=h.id,this.emit({type:"parse",columns:i,detail:t,headers:this.headers});let d=h.getElementsByTagName("tr"),u=d.length,c=0,p,{startRow:m}=s;if(a&&u){let e=d[0].children,t=e.length;for(let i=o;i<t&&!(i>l);i++)("TD"===(p=e[i]).tagName||"TH"===p.tagName)&&n.push(p.innerHTML);m++}for(;c<u;){if(c>=m&&c<=r){let e=d[c].children,t=e.length,n=0;for(;n<t;){let t=n-o,s=i[t];if(("TD"===(p=e[n]).tagName||"TH"===p.tagName)&&n>=o&&n<=l){i[t]||(i[t]=[]);let e=this.convertByType(p.innerHTML);e instanceof Date&&(e=e.getTime()),i[t][c-m]=e;let n=1;for(;c-m>=n&&void 0===s[c-m-n];)s[c-m-n]=null,n++}n++}}c++}return this.headers=n,this.emit({type:"afterParse",columns:i,detail:t,headers:n}),eR(i,this.headers)}}iY.defaultOptions={...eM.defaultOptions,useRowspanHeaders:!0,useMultiLevelHeaders:!0,startColumn:0,endColumn:Number.MAX_VALUE,startRow:0,endRow:Number.MAX_VALUE},eM.registerType("HTMLTable",iY);let{win:iK}=l;class iG extends ev{constructor(e){const t=T(iG.defaultOptions,e);super(t),this.options=t,this.converter=new iY(t)}async load(e){let t,i=this.options,n=this.converter,s=this.getTable(),r=i.htmlTable;if(this.emit({type:"load",detail:e}),"string"==typeof r?(this.tableID=r,t=iK.document.getElementById(r)):(t=r,this.tableID=t.id),this.tableElement=t||void 0,!this.tableElement){let t="HTML table not provided, or element with ID not found";return this.emit({type:"loadError",detail:e,error:t}),Promise.reject(Error(t))}let o=n.parse(T({tableElement:this.tableElement},i),e);return s.deleteColumns(),s.setColumns(o),await this.applyTableModifiers(),this.emit({type:"afterLoad",detail:e}),this}}iG.defaultOptions={id:"HTML-table-connector",type:"HTMLTable",htmlTable:""},ev.registerType("HTMLTable",iG);class i_ extends eM{constructor(e){const t=T(i_.defaultOptions,e);super(t),this.headerColumnIds=[],this.headers=[],this.options=t}parse(e,t){let{beforeParse:i,orientation:n,firstRowAsNames:s,columnIds:r}=e=T(this.options,e),o=e.data;if(!o)return{};this.headers=[];let l=[];return this.emit({type:"parse",columns:l,detail:t,headers:this.headers}),i&&(o=i(o)),o=o.slice(),"columns"===n?this.parseColumnsOrientation(l,o,s,r):"rows"===n&&this.parseRowsOrientation(l,o,s,r),this.emit({type:"afterParse",columns:l,detail:t,headers:this.headers}),eR(l,this.headers)}parseColumnsOrientation(e,t,i,n){for(let s=0,r=t.length;s<r;s++){let r=t[s];if(!Array.isArray(r))return;Array.isArray(this.headers)?(i?this.headers.push(`${r.shift()}`):n&&Array.isArray(n)&&this.headers.push(n[s]),e.push(r)):D("JSONConverter: Invalid `columnIds` option.",!1)}}parseRowsOrientation(e,t,i,n){i?this.headers=t.shift():n&&(this.headerColumnIds=n);for(let s=0,r=t.length;s<r;s++){let r=t[s];C(r)||(r=this.convertItemToRow(r,n));for(let t=0,n=r.length;t<n;t++)e.length<t+1&&e.push([]),e[t].push(r[t]),i||0!==s||(Array.isArray(this.headerColumnIds)?this.headers.push(this.headerColumnIds[t]||t.toString()):D("JSONConverter: Invalid `columnIds` option.",!1))}}convertItemToRow(e,t){let i=this;if(t&&!Array.isArray(t)){let n=[];return R(t,(t,s)=>{n.push(t.reduce((e,t)=>e[t],e)),0>i.headers.indexOf(s)&&i.headers.push(s)}),n}return i.headerColumnIds=Object.keys(e),Object.values(e)}}i_.defaultOptions={...eM.defaultOptions,orientation:"rows"},eM.registerType("JSON",i_);class iZ extends ev{constructor(e){const t=T(iZ.defaultOptions,e);super(t),this.options=t,t.enablePolling&&this.startPolling(1e3*Math.max(t.dataRefreshRate||0,1))}emit(e){g(this,e.type,e)}load(e){let t=this,i=t.options,{data:n,dataUrl:s,dataTables:r}=i;return t.emit({type:"load",detail:e,data:n}),Promise.resolve(s?fetch(s,{signal:t?.pollingController?.signal}).then(e=>e.json()).catch(i=>{t.emit({type:"loadError",detail:e,error:i}),console.warn(`Unable to fetch data from ${s}.`)}):n||[]).then(async e=>(e&&this.initConverters(e,t=>{let{columnIds:n=i.columnIds,firstRowAsNames:s=i.firstRowAsNames,orientation:o=i.orientation,beforeParse:l=i.beforeParse}=r?.find(e=>e.key===t)||{};return new i_({data:e,columnIds:n,firstRowAsNames:s,orientation:o,beforeParse:l})},(e,t)=>e.parse({data:t})),t.applyTableModifiers().then(()=>e??[]))).then(i=>(t.emit({type:"afterLoad",detail:e,data:i}),t)).catch(i=>{throw t.emit({type:"loadError",detail:e,error:i}),i})}}iZ.defaultOptions={type:"JSON",id:"json-connector",data:[],enablePolling:!1,dataRefreshRate:0,firstRowAsNames:!0,orientation:"rows"},ev.registerType("JSON",iZ);class iQ extends eu{constructor(e,...t){super(),this.chain=t,this.options=T(iQ.defaultOptions,e);const i=this.options.chain||[];for(let e=0,n=i.length,s,r;e<n;++e)(s=i[e]).type&&(r=eu.types[s.type])&&t.push(new r(s))}add(e,t){this.emit({type:"addModifier",detail:t,modifier:e}),this.chain.push(e),this.emit({type:"addModifier",detail:t,modifier:e})}clear(e){this.emit({type:"clearChain",detail:e}),this.chain.length=0,this.emit({type:"afterClearChain",detail:e})}async modify(e,t){let i=this.options.reverse?this.chain.slice().reverse():this.chain.slice();e.modified||(e.modified=e.clone(!1,t));let n=e;for(let s=0,r=i.length;s<r;++s){try{await i[s].modify(n,t)}catch(i){throw this.emit({type:"error",detail:t,table:e}),i}n=n.getModified()}return e.modified=n,e}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let i=this.options.reverse?this.chain.reverse():this.chain.slice(),n=e.getModified();for(let e=0,s=i.length;e<s;++e)n=i[e].modifyTable(n,t).getModified();return e.modified=n,this.emit({type:"afterModify",detail:t,table:e}),e}remove(e,t){let i=this.chain;this.emit({type:"removeModifier",detail:t,modifier:e}),i.splice(i.indexOf(e),1),this.emit({type:"afterRemoveModifier",detail:t,modifier:e})}emit(e){g(this,e.type,e)}on(e,t){return d(this,e,t)}}iQ.defaultOptions={type:"Chain"},eu.registerType("Chain",iQ);class iJ extends eu{constructor(e){super(),this.options=T(iJ.defaultOptions,e)}modifyTable(e,t){this.emit({type:"modify",detail:t,table:e});let i=e.getModified();if(e.hasColumns(["columnIds"])){let t=(e.deleteColumns(["columnIds"])||{}).columnIds||[],n={},s=[];for(let e=0,i=t.length;e<i;++e)s.push(""+t[e]);for(let t=0,i=e.getRowCount(),r;t<i;++t)(r=e.getRow(t))&&(n[s[t]]=r);i.deleteColumns(),i.setColumns(n)}else{let t={};for(let i=0,n=e.getRowCount(),s;i<n;++i)(s=e.getRow(i))&&(t[`${i}`]=s);t.columnIds=e.getColumnIds(),i.deleteColumns(),i.setColumns(t)}return this.emit({type:"afterModify",detail:t,table:e}),e}}iJ.defaultOptions={type:"Invert"},eu.registerType("Invert",iJ);class iX extends ij{constructor(e){super(e),this.options=T(iX.defaultOptions,this.column.options.cells?.renderer||{});const t=e.options.cells;this.format=t?.format??td.defaultFormatsForDataTypes[e.dataType],this.formatter=t?.formatter}render(e){return new td(e)}}iX.defaultEditingRenderer={string:"textInput",number:"numberInput",boolean:"checkbox",datetime:"dateInput"},iX.defaultOptions={type:"text"},io("text",iX);let i0=class extends iB{constructor(e,t,i){super(e,t),this.finishAfterChange=!1,this.onChange=e=>{this.changeHandler?this.changeHandler(e):this.cell.editValue(this.value)},this.onKeyDown=e=>{this.keyDownHandler?.(e)},this.onBlur=e=>{this.blurHandler?.(e)},this.onCellKeyDown=e=>{" "===e.key&&this.input.click()},this.input=this.add(i)}add(e=this.cell.htmlElement){let t=this.cell,{options:i}=this.renderer,n=this.input=document.createElement("input");return n.tabIndex=-1,n.type="checkbox",n.name=t.column.id+"-"+t.row.id,n.classList.add(ej("input")),i.attributes&&Object.entries(i.attributes).forEach(([e,t])=>{n.setAttribute(e,t)}),this.update(),e.appendChild(this.input),n.addEventListener("change",this.onChange),n.addEventListener("keydown",this.onKeyDown),n.addEventListener("blur",this.onBlur),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),this.input}update(){let e=this.cell,t=this.input,{options:i}=this.renderer;t.checked=!!e.value,t.disabled=!!i.disabled}get rawValue(){return this.input.checked?"true":"false"}get value(){let e=this.input.checked;switch(this.cell.column.dataType){case"datetime":case"number":return+e;case"boolean":return e;case"string":return""+e}}getMainElement(){return this.input}destroy(){let e=this.input;this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),e.remove()}};class i1 extends ij{constructor(e,t){super(e),this.options=T(i1.defaultOptions,t)}render(e,t){return new i0(e,this,t)}}i1.defaultEditingRenderer="checkbox",i1.defaultOptions={type:"checkbox"},io("checkbox",i1);let i2=class extends iB{constructor(e,t,i){super(e,t),this.finishAfterChange=!0,this.optionElements=[],this.onChange=e=>{this.changeHandler?this.changeHandler(e):(this.cell.htmlElement.focus(),this.cell.editValue(this.value))},this.onKeyDown=e=>{(e.stopPropagation(),this.keyDownHandler)?this.keyDownHandler?.(e):("Escape"===e.key||"Enter"===e.key)&&this.cell.htmlElement.focus()},this.onBlur=e=>{this.blurHandler?.(e)},this.onCellKeyDown=e=>{" "===e.key&&(this.select.focus(),e.preventDefault())},this.select=this.add(i)}add(e=this.cell.htmlElement){let t=this.cell,{options:i}=this.renderer,n=this.select=document.createElement("select");return n.tabIndex=-1,n.name=t.column.id+"-"+t.row.id,n.classList.add(ej("input")),i.attributes&&Object.entries(i.attributes).forEach(([e,t])=>{n.setAttribute(e,t)}),this.update(),e.appendChild(this.select),n.addEventListener("change",this.onChange),n.addEventListener("keydown",this.onKeyDown),n.addEventListener("blur",this.onBlur),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),n}update(){let e=this.cell,{options:t}=this.renderer;for(let i of(this.select.disabled=!!t.disabled,this.select.innerHTML=W.emptyHTML,t.options)){let t=document.createElement("option");t.value=i.value,t.textContent=i.label||i.value,t.disabled=!!i.disabled,e.value===i.value&&(t.selected=!0),this.select.appendChild(t),this.optionElements.push(t)}}destroy(){let e=this.select;for(let t of(this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),this.optionElements))t.remove();this.optionElements.length=0,e.remove()}get rawValue(){return this.select.value}get value(){let e=this.select.value;switch(this.cell.column.dataType){case"datetime":case"number":return+e;case"boolean":return e;case"string":return""+e}}getMainElement(){return this.select}};class i3 extends ij{constructor(e,t){super(e),this.options=T(i3.defaultOptions,t)}render(e,t){return new i2(e,this,t)}}i3.defaultEditingRenderer="select",i3.defaultOptions={type:"select",options:[]},io("select",i3);let i6=class extends iB{constructor(e,t,i){super(e,t),this.finishAfterChange=!0,this.onChange=e=>{this.changeHandler?this.changeHandler(e):this.cell.editValue(e.target.value)},this.onKeyDown=e=>{if(e.stopPropagation(),this.keyDownHandler)return void this.keyDownHandler(e);if("Escape"===e.key){this.input.value=this.convertToInputValue(),this.cell.htmlElement.focus();return}"Enter"===e.key&&this.cell.htmlElement.focus()},this.onBlur=e=>{this.blurHandler?.(e)},this.onCellKeyDown=e=>{" "===e.key&&(this.input.focus(),e.preventDefault())},this.input=this.add(i)}add(e=this.cell.htmlElement){let t=this.cell,i=this.input=document.createElement("input"),{options:n}=this.renderer;return i.tabIndex=-1,i.name=t.column.id+"-"+t.row.id,i.classList.add(ej("input")),n.attributes&&Object.entries(n.attributes).forEach(([e,t])=>{i.setAttribute(e,t)}),this.update(),e.appendChild(this.input),i.addEventListener("change",this.onChange),i.addEventListener("keydown",this.onKeyDown),i.addEventListener("blur",this.onBlur),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),i}update(){let{options:e}=this.renderer;this.input.value=this.convertToInputValue(),this.input.disabled=!!e.disabled}get rawValue(){return this.input.value}get value(){let e=this.input.value;switch(this.cell.column.dataType){case"datetime":case"number":return""===e?null:+e;case"boolean":if(""===e)return null;if("false"===e||0==+e)return!1;return!0;case"string":return e}}convertToInputValue(){let e=this.cell.value;return c(e)?""+e:""}getMainElement(){return this.input}destroy(){let e=this.input;this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),e.remove()}};class i4 extends ij{constructor(e,t){super(e),this.options=T(i4.defaultOptions,t)}render(e,t){return new i6(e,this,t)}}i4.defaultEditingRenderer="textInput",i4.defaultOptions={type:"textInput"},io("textInput",i4);let i8=class extends iB{constructor(e,t,i){super(e,t),this.finishAfterChange=!1,this.onChange=e=>{this.changeHandler?.(e)},this.onKeyDown=e=>{if(e.stopPropagation(),this.keyDownHandler)return void this.keyDownHandler(e);if("Escape"===e.key){this.cell.htmlElement.focus(),this.input.value=this.convertToInputValue();return}"Enter"===e.key&&(this.cell.htmlElement.focus(),this.cell.editValue(this.value))},this.onBlur=e=>{this.blurHandler?this.blurHandler(e):this.cell.editValue(this.value)},this.onCellKeyDown=e=>{" "===e.key&&(this.input.focus(),e.preventDefault())},this.options=t.options,this.input=this.add(i)}add(e=this.cell.htmlElement){let{cell:t,options:i}=this,n=this.input=document.createElement("input");return n.tabIndex=-1,n.type=this.getInputType(),n.name=t.column.id+"-"+t.row.id,n.classList.add(ej("input")),i.attributes&&Object.entries(i.attributes).forEach(([e,t])=>{n.setAttribute(e,t)}),this.update(),e.appendChild(n),n.addEventListener("change",this.onChange),n.addEventListener("keydown",this.onKeyDown),n.addEventListener("blur",this.onBlur),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),this.input}update(){let e=this.input;e.value=this.convertToInputValue(),e.disabled=!!this.options.disabled}get rawValue(){return this.input.value}get value(){return new Date(`${this.input.value}Z`).getTime()}getMainElement(){return this.input}destroy(){let e=this.input;this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),e.remove()}},i9=class extends i8{getInputType(){return"date"}convertToInputValue(){return this.cell.column.viewport.grid.time.dateFormat("%Y-%m-%d",Number(this.cell.value||0))}};class i5 extends ij{constructor(e,t){super(e),this.options=T(i5.defaultOptions,t)}render(e,t){return new i9(e,this,t)}}i5.defaultEditingRenderer="dateInput",i5.defaultOptions={type:"dateInput"},io("dateInput",i5);let i7=class extends i8{getInputType(){return"datetime-local"}convertToInputValue(){return this.cell.column.viewport.grid.time.dateFormat("%Y-%m-%dT%H:%M:%S",Number(this.cell.value||0))}};class ne extends ij{constructor(e,t){super(e),this.options=T(ne.defaultOptions,t)}render(e,t){return new i7(e,this,t)}}ne.defaultEditingRenderer="dateTimeInput",ne.defaultOptions={type:"dateTimeInput"},io("dateTimeInput",ne);let nt=class extends i8{getInputType(){return"time"}get value(){return new Date(`1970-01-01T${this.input.value}Z`).getTime()}convertToInputValue(){return this.cell.column.viewport.grid.time.dateFormat("%H:%M:%S",Number(this.cell.value||0))}};class ni extends ij{constructor(e,t){super(e),this.options=T(ni.defaultOptions,t)}render(e,t){return new nt(e,this,t)}}ni.defaultEditingRenderer="timeInput",ni.defaultOptions={type:"timeInput"},io("timeInput",ni);class nn extends iB{constructor(e,t,i){super(e,t),this.onKeyDown=()=>{this.cell.htmlElement.focus()},this.parentElement=i??this.cell.htmlElement,this.add(this.parentElement)}add(e=this.cell.htmlElement){let t=nn.H;t&&c(this.cell.value)&&(this.parentElement=e,this.chartContainer=document.createElement("div"),this.parentElement.classList.add(ej("noPadding")),this.parentElement.appendChild(this.chartContainer),this.chart=t.Chart.chart(this.chartContainer,T(nn.defaultChartOptions,this.getProcessedOptions())),this.chartContainer.addEventListener("click",this.onKeyDown))}update(){if(this.chart){let e=this.getProcessedOptions();this.chart.update(e,!0,!1,e.chart?.animation)}else this.destroy(),this.add(this.parentElement)}destroy(){this.chartContainer?.removeEventListener("keydown",this.onKeyDown),this.chart?.destroy(),this.chartContainer?.remove(),delete this.chart,delete this.chartContainer,this.parentElement.classList.remove(ej("noPadding"))}getProcessedOptions(){let e,{chartOptions:t}=this.renderer.options;e="function"==typeof t?t.call(this.cell,this.cell.value):T(t)||{};let i=(""+this.cell.value).trim();return i.startsWith("[")||i.startsWith("{")||(i=`[${i}]`),e.series||(e.series=[{data:JSON.parse(i)}]),e}}nn.defaultChartOptions={chart:{height:40,margin:[5,8,5,8],backgroundColor:"transparent",skipClone:!0},accessibility:{enabled:!1},tooltip:{enabled:!1},title:{text:""},credits:{enabled:!1},xAxis:{visible:!1},yAxis:{visible:!1},legend:{enabled:!1},plotOptions:{series:{borderWidth:0,marker:{enabled:!1},states:{hover:{enabled:!1},inactive:{enabled:!1}},animation:!1,dataLabels:{enabled:!1}},pie:{slicedOffset:0,borderRadius:0}}};class ns extends ij{static useHighcharts(e){e&&!nn.H&&(nn.H=e)}constructor(e){if(super(e),!nn.H)throw Error("Sparkline Renderer: Highcharts is not loaded. Please ensure that Highcharts namespace is registered before the Sparkline Renderer is used.");this.options=T(ns.defaultOptions,this.column.options.cells?.renderer||{})}render(e){return new nn(e,this)}}ns.defaultEditingRenderer="textInput",ns.defaultOptions={type:"sparkline"},io("sparkline",ns);let nr=class extends iB{constructor(e,t,i){super(e,t),this.finishAfterChange=!1,this.dblClickHandler=e=>{e.stopPropagation(),this.input.focus()},this.onChange=e=>{this.changeHandler?this.changeHandler(e):this.cell.editValue(this.value)},this.onKeyDown=e=>{if(e.stopPropagation(),this.keyDownHandler)return void this.keyDownHandler(e);if("Escape"===e.key){this.input.value=this.convertToInputValue(),this.cell.htmlElement.focus();return}"Enter"===e.key&&this.cell.htmlElement.focus()},this.onBlur=e=>{this.blurHandler?.(e)},this.onCellKeyDown=e=>{" "===e.key&&(this.input.focus(),e.preventDefault())},this.input=this.add(i)}add(e=this.cell.htmlElement){let t=this.cell,i=this.input=document.createElement("input"),{options:n}=this.renderer;return i.type="number",i.tabIndex=-1,i.name=t.column.id+"-"+t.row.id,i.classList.add(ej("input")),n.attributes&&Object.entries(n.attributes).forEach(([e,t])=>{i.setAttribute(e,t)}),this.update(),e.appendChild(this.input),i.addEventListener("change",this.onChange),i.addEventListener("keydown",this.onKeyDown),i.addEventListener("blur",this.onBlur),i.addEventListener("dblclick",this.dblClickHandler),this.cell.htmlElement.addEventListener("keydown",this.onCellKeyDown),i}update(){let{options:e}=this.renderer;this.input.value=this.convertToInputValue(),this.input.disabled=!!e.disabled}get rawValue(){return this.input.value}get value(){return+this.input.value}convertToInputValue(){let e=this.cell.value;return c(e)?""+e:""}getMainElement(){return this.input}destroy(){let e=this.input;this.cell.htmlElement.removeEventListener("keydown",this.onCellKeyDown),e.removeEventListener("blur",this.onBlur),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("change",this.onChange),e.remove()}};class no extends ij{constructor(e,t){super(e),this.options=T(no.defaultOptions,t)}render(e,t){return new nr(e,this,t)}}no.defaultEditingRenderer="numberInput",no.defaultOptions={type:"numberInput"},io("numberInput",no);class nl{constructor(e,t){this.querying=e,this.options=t}init(){return Promise.resolve()}async getPrePaginationRowCount(){return await this.getRowCount()}static assumeColumnDataType(e,t){for(let t=0,i=e.length;t<i;++t)if(c(e[t]))switch(typeof e[t]){case"number":return"number";case"boolean":return"boolean";default:return"string"}return console.warn(`Column "${t}" sample does not contain any defined values; defaulting dataType to "string". Set \`dataType\` option for the column to determine the data type and avoid unnecessary column scanning.`),"string"}}class na extends nl{constructor(){super(...arguments),this.dataTableEventDestructors=[],this.connectorEventDestructors=[]}async init(){this.dataTable||await this.initDataTable()}async initDataTable(){if(this.querying.shouldBeUpdated=!0,this.clearDataTableEvents(),this.clearConnector(),this.options.connector)return void await this.initConnector(this.options.connector);let e=this.options.dataTable;e||(e=new ey({columns:this.options.columns??{}})),this.setDataTable(e)}setDataTable(e){for(let t of(this.dataTable=e,this.presentationTable=e.getModified(),this.prePaginationRowCount=this.presentationTable?.rowCount??0,na.tableChangeEventNames)){let i=e.on(t,e=>{this.handleTableChange(e)});this.dataTableEventDestructors.push(i)}let t=this.options.idColumn;if(t){let i=e.getColumn(t,!0);if(!i)throw Error(`Column "${t}" not found in table.`);let n=new Map;for(let e=0,t=i.length;e<t;++e){let t=i[e];if(!v(t)&&!b(t))throw Error("idColumn must contain only string or number values.");n.set(t,e)}if(n.size!==i.length)throw Error("idColumn must contain unique values.");this.originalRowIndexesMap=n}}async handleTableChange(e){this.querying.shouldBeUpdated=!0;let t=this.querying.grid;t?.viewport&&!("afterSetCell"===e.type&&e.detail?.fromGrid)&&this.options.updateOnChange&&await t.viewport.updateRows()}clearDataTableEvents(){this.dataTableEventDestructors.forEach(e=>e()),this.dataTableEventDestructors.length=0}clearConnector(){this.connectorEventDestructors.forEach(e=>e()),this.connectorEventDestructors.length=0,this.connector?.stopPolling(),this.connector=void 0}async initConnector(e){let t;if(na.isConnectorInstance(e))t=e;else{let i=ev.types[e.type];if(!i)throw Error(`Connector type not found. (${e.type})`);e.id||(e.id="connector-"+H()),t=new i(e)}if(this.connector=t,this.connectorEventDestructors.push(t.on("afterLoad",()=>{this.querying.shouldBeUpdated=!0})),this.setDataTable(t.getTable()),"enablePolling"in t.options&&t.options.enablePolling&&!t.polling&&"dataRefreshRate"in t.options&&t.startPolling(1e3*Math.max(t.options.dataRefreshRate||0,1)),!t.loaded)try{await t.load()}catch{return}}getColumnIds(){return Promise.resolve(this.presentationTable?.getColumnIds()??[])}async getRowId(e){let t=await this.getOriginalRowIndexFromLocal(e);if(!c(t)||!this.dataTable)return Promise.resolve(void 0);let i=this.options.idColumn;if(!i)return Promise.resolve(t);let n=this.dataTable.getCell(i,t);if(v(n)||b(n))return Promise.resolve(n)}getRowIndex(e){if(!this.originalRowIndexesMap&&b(e))return this.getLocalRowIndexFromOriginal(e);let t=this.originalRowIndexesMap?.get(e);return c(t)?this.getLocalRowIndexFromOriginal(t):Promise.resolve(void 0)}getOriginalRowIndexFromLocal(e){return Promise.resolve(this.presentationTable?.getOriginalRowIndex(e))}getLocalRowIndexFromOriginal(e){return Promise.resolve(this.presentationTable?.getLocalRowIndex(e))}getRowObject(e){return Promise.resolve(this.presentationTable?.getRowObject(e))}getPrePaginationRowCount(){return Promise.resolve(this.prePaginationRowCount??0)}getRowCount(){return Promise.resolve(this.presentationTable?.getRowCount()??0)}getValue(e,t){return Promise.resolve(this.presentationTable?.getCell(e,t))}async setValue(e,t,i){let n=await this.getRowIndex(i);if(!c(n))return void console.error("[setValue] Wrong row ID:",i);let s=await this.getOriginalRowIndexFromLocal(n);c(s)?this.dataTable?.setCell(t,s,e,{fromGrid:!0}):console.error("[setValue] Wrong local row index:",n)}async applyQuery(){let e,t=this.querying,i=this.dataTable;if(!i)return;let n=t.getGroupedModifiers();if(n.length>0){let t=new iQ({},...n),s=i.clone();await t.modify(s.getModified()),e=s.getModified()}else e=i.getModified();this.prePaginationRowCount=e.rowCount;let s=t.pagination.createModifier(e.rowCount);s&&(e=e.clone(),await s.modify(e),e=e.getModified()),this.presentationTable=e}destroy(){this.clearDataTableEvents(),this.clearConnector()}getColumnDataType(e){let t=this.dataTable?.getColumn(e);return t?Array.isArray(t)?Promise.resolve(nl.assumeColumnDataType(t.slice(0,30),e)):Promise.resolve("number"):Promise.resolve("string")}getDataTable(e=!1){return e?this.presentationTable:this.dataTable}static isConnectorInstance(e){return"getTable"in e}}function nh(e){if(null===e)return"null";if(void 0===e)return"undef";if("string"==typeof e)return`str:${encodeURIComponent(e)}`;if("number"==typeof e)return Number.isNaN(e)?"num:NaN":e===1/0?"num:Infinity":e===-1/0?"num:-Infinity":`num:${e}`;if("boolean"==typeof e)return e?"bool:1":"bool:0";if("bigint"==typeof e)return`big:${String(e)}`;if(e instanceof Date)return`date:${e.toISOString()}`;if(Array.isArray(e))return`arr:[${e.map(nh).join(",")}]`;if("function"==typeof e){let t="";try{t=Function.prototype.toString.call(e)}catch{t=""}return`fn:${e.name||""}:${nd(t)}`}let t=Object.keys(e).sort(),i=[];for(let n=0,s=t.length;n<s;++n){let s=t[n];i.push(`${encodeURIComponent(s)}=${nh(e[s])}`)}return`obj:{${i.join(",")}}`}function nd(e){let t=5381;for(let i=0,n=e.length;i<n;++i)t=(t<<5)+t^e.charCodeAt(i);return(t>>>0).toString(36)}na.tableChangeEventNames=["afterDeleteColumns","afterDeleteRows","afterSetCell","afterSetColumns","afterSetRows"],e8.registerDataProvider("local",na);let{format:nu}=en,nc={"==":"equals","===":"equals","!=":"doesNotEqual","!==":"doesNotEqual",">":"greaterThan",">=":"greaterThanOrEqualTo","<":"lessThan","<=":"lessThanOrEqualTo",contains:"contains",startsWith:"beginsWith",endsWith:"endsWith",empty:"empty"},np=e=>{let{currentSortings:t,currentSorting:i}=e.query.sorting;return(t??(i?[i]:[])).filter(e=>c(e?.columnId)&&c(e.order))},nm={page:e=>(Math.floor(e.offset/(e.limit||1))+1).toFixed(),pageSize:e=>e.limit.toFixed(),offset:e=>e.offset.toFixed(),limit:e=>e.limit.toFixed(),format:()=>"js",filter:e=>{let t=[],i=e.query.filtering.modifier?.options?.condition;return(i&&function e(t,i=[]){if(!t)return i;if("and"===t.operator||"or"===t.operator){if(t.conditions)for(let n of t.conditions)e(n,i)}else if(t.columnId){let e=nc[t.operator]||t.operator;i.push({id:t.columnId,condition:e,value:t.value})}return i}(i,t),t.length)?JSON.stringify({columns:t}):""},sortBy:e=>{let t=np(e);return t.length?t.map(e=>e.columnId).join(","):""},sortOrder:e=>{let t=np(e);if(!t.length)return"";let i=t.map(e=>e.order),n=Array.from(new Set(i));return 1===n.length?n[0]:i.join(",")}},ng=async e=>{if(!e.ok){let t=`DataSourceHelper: request failed with status ${e.status} ${e.statusText}`;try{let i=await e.text();i&&(t+=` - ${i}`)}catch{}throw Error(t)}let{data:t,meta:i}=await e.json();return{columns:t||{},totalRowCount:i?.totalRowCount||0,rowIds:i?.rowIds}};async function nf(e,t){let{parseResponse:i=ng,fetchTimeout:n=3e4}=e;try{let s,r=function(e,t){let{urlTemplate:i,templateVariables:n,omitEmpty:s}=e,r={...nm,...n},o={};Object.keys(r).forEach(e=>{let i=r[e];Object.defineProperty(o,e,{enumerable:!0,get:()=>i(t)})});let l=nu(i,o);return s??!0?l.replace(/&([^=&]+)=([^&]*)/g,(e,t,i)=>i?`&${t}=${i}`:""):l}(e,t),o=n>0?new AbortController:null,l=t.signal;o&&l&&(l.aborted?o.abort():l.addEventListener("abort",()=>{o.abort()},{once:!0})),o&&(s=setTimeout(()=>{o.abort()},n));try{let e=o?.signal??l,t=e?await fetch(r,{signal:e}):await fetch(r);return await i(t)}finally{s&&clearTimeout(s)}}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)return{columns:{},totalRowCount:0,rowIds:[]};return console.error("Error fetching data from remote server.\n",e),{columns:{},totalRowCount:0,rowIds:[]}}}class nw extends nl{constructor(){super(...arguments),this.prePaginationRowCount=null,this.rowCount=null,this.columnIds=null,this.dataChunks=null,this.pendingChunks=null,this.rowIdToChunkInfo=null,this.lastQueryFingerprint=null,this.requestEpoch=0,this.pendingControllers=new Set}get maxChunkSize(){let e=this.querying.pagination;return e.enabled?e.currentPageSize:this.options.chunkSize??nw.DEFAULT_CHUNK_SIZE}get requestPolicy(){return this.options.requestPolicy??"latest"}abortPendingRequests(){for(let e of this.pendingControllers)e.abort();this.pendingControllers.clear()}async getChunkForRowIndex(e){if(this.querying.pagination.enabled)return await this.fetchChunk(0);let t=Math.floor(e/this.maxChunkSize);return await this.fetchChunk(t)}getChunkIndexForRow(e){return this.querying.pagination.enabled?0:Math.floor(e/this.maxChunkSize)}getLocalIndexInChunk(e){if(this.querying.pagination.enabled)return e;let t=Math.floor(e/this.maxChunkSize);return e-t*this.maxChunkSize}evictLRUChunkIfNeeded(){let{chunksLimit:e}=this.options;if(!e||!this.dataChunks||this.dataChunks.size<e)return;let t=this.dataChunks.keys().next().value;if(void 0===t)return;let i=this.dataChunks.get(t);if(i&&this.rowIdToChunkInfo)for(let e of i.rowIds)this.rowIdToChunkInfo.delete(e);this.dataChunks.delete(t)}async fetchChunk(e){this.dataChunks||(this.dataChunks=new Map);let t=this.dataChunks.get(e);if(t)return this.dataChunks.delete(e),this.dataChunks.set(e,t),t;if(this.pendingChunks||(this.pendingChunks=new Map),this.pendingChunks.has(e))return this.pendingChunks.get(e);let i=this.requestEpoch,n="latest"===this.requestPolicy?new AbortController:null;n&&this.pendingControllers.add(n);let s=(async()=>{try{let t,s,r,o,l=this.querying.pagination;l.enabled?(t=(l.currentPage-1)*l.currentPageSize,s=l.currentPageSize):(t=e*this.maxChunkSize,s=this.maxChunkSize);let{fetchCallback:a,dataSource:h}=this.options;if(a)r=await a.call(this,this.querying,t,s,n?.signal);else if(h)r=await nf(h,{query:this.querying,offset:t,limit:s,signal:n?.signal});else throw Error("RemoteDataProvider: Either `dataSource` or `fetchCallback` must be provided in options.");if(i!==this.requestEpoch||n?.signal.aborted)return{index:e,data:{},rowIds:[]};this.columnIds=Object.keys(r.columns),this.prePaginationRowCount=r.totalRowCount;let d=r.columns[this.columnIds[0]],u=d?d.length:0;l.enabled?this.rowCount=u:this.rowCount=r.totalRowCount;let c=this.options.idColumn;c&&(o=r.columns[c]),o||(o=r.rowIds??Array.from({length:u},(e,i)=>i+t));let p={index:e,data:r.columns,rowIds:o};this.evictLRUChunkIfNeeded(),this.dataChunks?.set(e,p),this.rowIdToChunkInfo||(this.rowIdToChunkInfo=new Map);for(let t=0;t<p.rowIds.length;t++)this.rowIdToChunkInfo.set(p.rowIds[t],{chunkIndex:e,localIndex:t});return p}catch(t){if(n?.signal.aborted||t instanceof DOMException&&"AbortError"===t.name)return{index:e,data:{},rowIds:[]};return console.error("Error fetching data from remote server.\n",t),{index:e,data:{},rowIds:[]}}finally{this.pendingChunks?.delete(e),n&&this.pendingControllers.delete(n)}})();return this.pendingChunks.set(e,s),s}async getColumnIds(){return this.columnIds?Promise.resolve(this.columnIds):(await this.fetchChunk(0),this.columnIds??[])}async getRowId(e){let t=await this.getChunkForRowIndex(e),i=this.getLocalIndexInChunk(e);if(i<t.rowIds.length)return t.rowIds[i]}getRowIndex(e){let t=this.rowIdToChunkInfo?.get(e);return t?this.querying.pagination.enabled?Promise.resolve(t.localIndex):Promise.resolve(t.chunkIndex*this.maxChunkSize+t.localIndex):Promise.resolve(void 0)}async getRowObject(e){return await this.getChunkForRowIndex(e),this.getRowObjectFromCache(e)}async getPrePaginationRowCount(){return null!==this.prePaginationRowCount?this.prePaginationRowCount:(await this.fetchChunk(0),this.prePaginationRowCount??0)}async getRowCount(){return null!==this.rowCount?this.rowCount:(await this.fetchChunk(0),this.rowCount??0)}async getValue(e,t){let i=await this.getChunkForRowIndex(t),n=this.getLocalIndexInChunk(t),s=i.data[e];return!s||n>=s.length?null:s[n]}async setValue(e,t,i){let{setValueCallback:n}=this.options;if(!n)throw Error("The `setValueCallback` option is not defined.");try{await n.call(this,t,i,e),this.lastQueryFingerprint=null,await this.applyQuery()}catch(t){let e="Error persisting value to remote server.";if(t instanceof Error)throw t.message=t.message?`${e} ${t.message}`:e,t;throw Error(`${e} ${String(t)}`)}}getRowObjectFromCache(e){if(!this.dataChunks||!this.columnIds)return;let t=this.getChunkIndexForRow(e),i=this.dataChunks.get(t);if(!i)return;let n=this.getLocalIndexInChunk(e),s={};for(let e of this.columnIds){let t=i.data[e];s[e]=t&&n<t.length?t[n]:null}return s}async getColumnDataType(e){let t=(await this.getChunkForRowIndex(0)).data[e];return t?Array.isArray(t)?nl.assumeColumnDataType(t.slice(0,30),e):"number":"string"}async applyQuery(){var e;let t,i,n,s,r,o,l=(e=this.querying,t=e.sorting.modifier?.options||null,i=e.filtering.modifier?.options||null,n={enabled:e.pagination.enabled,currentPage:e.pagination.currentPage,currentPageSize:e.pagination.currentPageSize},s=nh(t),r=nh(n),o=nh(i),nd(`s=${s}|p=${r}|f=${o}`));if(this.lastQueryFingerprint!==l&&(this.lastQueryFingerprint=l,this.requestEpoch++,"latest"===this.requestPolicy&&this.abortPendingRequests(),this.dataChunks=null,this.pendingChunks=null,this.rowIdToChunkInfo=null,this.columnIds=null,this.prePaginationRowCount=null,this.rowCount=null,this.querying.pagination.enabled)){let e=await this.getPrePaginationRowCount();this.querying.pagination.totalItemsCount=e}}destroy(){this.abortPendingRequests(),this.dataChunks=null,this.pendingChunks=null,this.rowIdToChunkInfo=null,this.columnIds=null,this.prePaginationRowCount=null,this.rowCount=null,this.lastQueryFingerprint=null,this.requestEpoch++}}nw.DEFAULT_CHUNK_SIZE=50,e8.registerDataProvider("remote",nw);let ny={AST:W,CellContentPro:iB,CellRenderer:ij,CellRendererRegistry:il,classNamePrefix:eH,Column:tc,ColumnResizing:eh,DataConnector:ev,DataConverter:eM,DataCursor:eI,DataModifier:eu,DataPool:t6,DataProviderRegistry:e8,DataTable:ey,defaultOptions:tl,Grid:t3,grid:t3.grid,grids:t3.grids,HeaderCell:tF,isHighContrastModeActive:eP,merge:T,Pagination:to,Popup:tT,product:"Grid Pro",setOptions:function(e){T(!0,tl,e)},SvgIcons:{createGridIcon:tt,getIconFromRegistry:te,icons:e9,pathDefaults:e5},Table:t_,TableCell:tV,Templating:en,version:"2.3.0",win:eF};({compose:function(e,t,i,n){M(l.composed,"GridEvents")&&(["beforeLoad","afterLoad","beforeUpdate","afterUpdate","beforeRedraw","afterRedraw"].forEach(t=>{d(e,t,e=>{let i=e.target;i.options?.events?.[t]?.call(i,e)})}),["mouseOver","mouseOut","dblClick","click","afterRender"].forEach(e=>{d(n,e,t=>{let i=t.target;i.column.options.cells?.events?.[e]?.call(i),it["cell_"+e]?.call(i)})}),["afterResize","beforeSort","afterSort","beforeFilter","afterFilter"].forEach(e=>{d(t,e,t=>{let i=t.target;i.options?.events?.[e]?.call(i)})}),["click","afterRender"].forEach(e=>{d(i,e,t=>{let{column:i}=t;i?.options?.header?.events?.[e]?.call(i)})}))}}).compose(ny.Grid,ny.Column,ny.HeaderCell,ny.TableCell),({compose:function(e,t,i){M(eB,"CellEditing")&&(T(!0,tl,ih),d(i,"afterInit",iu),d(e,"beforeInit",id),d(t,"keyDown",ic),d(t,"dblClick",ip),d(t,"afterRender",im),d(t,"startedEditing",function(){ig(this,"started")}),d(t,"stoppedEditing",function(e){e.submit&&this.column.options.cells?.events?.afterEdit?.call(this),ig(this,e.submit?"edited":"cancelled")}),d(t,"afterEditValue",function(){this.column.options.cells?.events?.afterEdit?.call(this),ig(this,"edited")}))},defaultOptions:ih}).compose(ny.Table,ny.TableCell,ny.Column),({compose:function(e){M(eB,"CreditsPro")&&(T(!0,tl,{credits:iE.defaultOptions}),d(e,"afterRenderViewport",ix))}}).compose(ny.Grid),({compose:function(e){M(eB,"Exporting")&&(tl.exporting=iI.defaultOptions,d(e,"beforeLoad",iA))}}).compose(ny.Grid),({compose:function(e){M(eB,"Validator")&&(d(e,"beforeInit",iH),d(e,"afterDestroy",iN))}}).compose(ny.Table),({compose:function(e){M(eB,"CellRenderers")&&(d(e,"afterInit",iF),e.prototype.createCellContent=iz)}}).compose(ny.Column),({compose:function(e){M(l.composed,"PaginationPro")&&(d(e,"beforePageChange",e=>{let{target:t,currentPage:i,nextPage:n,pageSize:s}=e;t.options?.events?.beforePageChange?.call(t,{currentPage:i,nextPage:n,pageSize:s})}),d(e,"afterPageChange",e=>{let{target:t,currentPage:i,previousPage:n,pageSize:s}=e;t.options?.events?.afterPageChange?.call(t,{currentPage:i,previousPage:n,pageSize:s})}),d(e,"beforePageSizeChange",e=>{let{target:t,newPageSize:i,pageSize:n}=e;t.options?.events?.beforePageSizeChange?.call(t,{pageSize:n,newPageSize:i})}),d(e,"afterPageSizeChange",e=>{let{target:t,previousPageSize:i,pageSize:n}=e;t.options?.events?.afterPageSizeChange?.call(t,{pageSize:n,previousPageSize:i})}))}}).compose(ny.Pagination),({compose:function(e){M(eB,"Responsive")&&(d(e,"beforeRenderViewport",t4),d(e,"beforeDestroy",t8))}}).compose(ny.Grid);let{classNamePrefix:nb,defaultOptions:nv,grid:nC,grids:nE,isHighContrastModeActive:nx,product:nT,setOptions:nR,version:nO,win:nS}=ny,nM=ny.win;nM.Highcharts&&ny.CellRendererRegistry.types.sparkline.useHighcharts(nM.Highcharts);let nL=ny;return o.default})());