@perspective-dev/viewer-charts 4.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 (258) hide show
  1. package/LICENSE.md +193 -0
  2. package/dist/cdn/perspective-viewer-charts.js +3 -0
  3. package/dist/cdn/perspective-viewer-charts.js.map +7 -0
  4. package/dist/esm/axis/axis-primitives.d.ts +24 -0
  5. package/dist/esm/axis/bar-axis.d.ts +51 -0
  6. package/dist/esm/axis/canvas.d.ts +24 -0
  7. package/dist/esm/axis/categorical-axis-core.d.ts +42 -0
  8. package/dist/esm/axis/categorical-axis.d.ts +27 -0
  9. package/dist/esm/axis/facet-chrome.d.ts +13 -0
  10. package/dist/esm/axis/label-geometry.d.ts +41 -0
  11. package/dist/esm/axis/legend.d.ts +44 -0
  12. package/dist/esm/axis/numeric-axis.d.ts +20 -0
  13. package/dist/esm/charts/candlestick/candlestick-build.d.ts +129 -0
  14. package/dist/esm/charts/candlestick/candlestick-interact.d.ts +10 -0
  15. package/dist/esm/charts/candlestick/candlestick-render.d.ts +24 -0
  16. package/dist/esm/charts/candlestick/candlestick.d.ts +144 -0
  17. package/dist/esm/charts/candlestick/glyphs/draw-candlesticks.d.ts +36 -0
  18. package/dist/esm/charts/candlestick/glyphs/draw-ohlc.d.ts +33 -0
  19. package/dist/esm/charts/canvas-types.d.ts +15 -0
  20. package/dist/esm/charts/cartesian/cartesian-build.d.ts +14 -0
  21. package/dist/esm/charts/cartesian/cartesian-interact.d.ts +20 -0
  22. package/dist/esm/charts/cartesian/cartesian-render.d.ts +26 -0
  23. package/dist/esm/charts/cartesian/cartesian.d.ts +239 -0
  24. package/dist/esm/charts/cartesian/glyph.d.ts +53 -0
  25. package/dist/esm/charts/cartesian/glyphs/density.d.ts +142 -0
  26. package/dist/esm/charts/cartesian/glyphs/lines.d.ts +23 -0
  27. package/dist/esm/charts/cartesian/glyphs/points.d.ts +24 -0
  28. package/dist/esm/charts/cartesian/label-interner.d.ts +21 -0
  29. package/dist/esm/charts/cartesian/tooltip-lines.d.ts +11 -0
  30. package/dist/esm/charts/chart-base.d.ts +402 -0
  31. package/dist/esm/charts/chart.d.ts +338 -0
  32. package/dist/esm/charts/common/band-layout.d.ts +32 -0
  33. package/dist/esm/charts/common/categorical-y-chart.d.ts +53 -0
  34. package/dist/esm/charts/common/category-axis-resolver.d.ts +90 -0
  35. package/dist/esm/charts/common/chrome-cache.d.ts +18 -0
  36. package/dist/esm/charts/common/draw-tooltip-box.d.ts +9 -0
  37. package/dist/esm/charts/common/leaf-color.d.ts +33 -0
  38. package/dist/esm/charts/common/node-store.d.ts +81 -0
  39. package/dist/esm/charts/common/tree-chart.d.ts +48 -0
  40. package/dist/esm/charts/common/tree-chrome.d.ts +31 -0
  41. package/dist/esm/charts/common/tree-data.d.ts +54 -0
  42. package/dist/esm/charts/common/visible-extent.d.ts +51 -0
  43. package/dist/esm/charts/heatmap/heatmap-build.d.ts +86 -0
  44. package/dist/esm/charts/heatmap/heatmap-interact.d.ts +19 -0
  45. package/dist/esm/charts/heatmap/heatmap-render.d.ts +19 -0
  46. package/dist/esm/charts/heatmap/heatmap-y-axis.d.ts +46 -0
  47. package/dist/esm/charts/heatmap/heatmap.d.ts +117 -0
  48. package/dist/esm/charts/map/map.d.ts +67 -0
  49. package/dist/esm/charts/registry.d.ts +14 -0
  50. package/dist/esm/charts/series/glyphs/draw-areas.d.ts +30 -0
  51. package/dist/esm/charts/series/glyphs/draw-bars.d.ts +15 -0
  52. package/dist/esm/charts/series/glyphs/draw-lines.d.ts +34 -0
  53. package/dist/esm/charts/series/glyphs/draw-scatter.d.ts +33 -0
  54. package/dist/esm/charts/series/series-build.d.ts +228 -0
  55. package/dist/esm/charts/series/series-interact.d.ts +35 -0
  56. package/dist/esm/charts/series/series-render.d.ts +41 -0
  57. package/dist/esm/charts/series/series-type.d.ts +49 -0
  58. package/dist/esm/charts/series/series.d.ts +317 -0
  59. package/dist/esm/charts/sunburst/sunburst-interact.d.ts +7 -0
  60. package/dist/esm/charts/sunburst/sunburst-layout.d.ts +33 -0
  61. package/dist/esm/charts/sunburst/sunburst-render.d.ts +22 -0
  62. package/dist/esm/charts/sunburst/sunburst.d.ts +85 -0
  63. package/dist/esm/charts/treemap/treemap-interact.d.ts +12 -0
  64. package/dist/esm/charts/treemap/treemap-layout.d.ts +28 -0
  65. package/dist/esm/charts/treemap/treemap-render.d.ts +18 -0
  66. package/dist/esm/charts/treemap/treemap.d.ts +74 -0
  67. package/dist/esm/config.d.ts +27 -0
  68. package/dist/esm/data/lazy-row.d.ts +32 -0
  69. package/dist/esm/data/split-groups.d.ts +20 -0
  70. package/dist/esm/data/view-reader.d.ts +35 -0
  71. package/dist/esm/event-detail.d.ts +28 -0
  72. package/dist/esm/index.d.ts +3 -0
  73. package/dist/esm/interaction/hit-test.d.ts +30 -0
  74. package/dist/esm/interaction/host-sink-dom.d.ts +19 -0
  75. package/dist/esm/interaction/host-sink-message.d.ts +46 -0
  76. package/dist/esm/interaction/lazy-tooltip.d.ts +61 -0
  77. package/dist/esm/interaction/raw-event-forwarder.d.ts +27 -0
  78. package/dist/esm/interaction/spatial-grid.d.ts +15 -0
  79. package/dist/esm/interaction/tooltip-controller.d.ts +193 -0
  80. package/dist/esm/interaction/zoom-controller.d.ts +106 -0
  81. package/dist/esm/interaction/zoom-router.d.ts +48 -0
  82. package/dist/esm/layout/facet-grid.d.ts +126 -0
  83. package/dist/esm/layout/plot-layout.d.ts +104 -0
  84. package/dist/esm/layout/ticks.d.ts +17 -0
  85. package/dist/esm/map/mercator.d.ts +102 -0
  86. package/dist/esm/map/tile-cache.d.ts +38 -0
  87. package/dist/esm/map/tile-layer.d.ts +66 -0
  88. package/dist/esm/map/tile-loader.d.ts +52 -0
  89. package/dist/esm/map/tile-source.d.ts +66 -0
  90. package/dist/esm/perspective-viewer-charts.js +3 -0
  91. package/dist/esm/perspective-viewer-charts.js.map +7 -0
  92. package/dist/esm/plugin/charts.d.ts +40 -0
  93. package/dist/esm/plugin/plugin.d.ts +95 -0
  94. package/dist/esm/render/scheduler.d.ts +41 -0
  95. package/dist/esm/theme/gradient.d.ts +48 -0
  96. package/dist/esm/theme/palette.d.ts +13 -0
  97. package/dist/esm/theme/theme-snapshot.d.ts +7 -0
  98. package/dist/esm/theme/theme.d.ts +53 -0
  99. package/dist/esm/transport/protocol.d.ts +430 -0
  100. package/dist/esm/transport/renderer-transport.d.ts +201 -0
  101. package/dist/esm/utils/css.d.ts +1 -0
  102. package/dist/esm/utils/font-snapshot.d.ts +50 -0
  103. package/dist/esm/webgl/buffer-pool.d.ts +62 -0
  104. package/dist/esm/webgl/context-manager.d.ts +184 -0
  105. package/dist/esm/webgl/gradient-texture.d.ts +17 -0
  106. package/dist/esm/webgl/instanced-attrs.d.ts +44 -0
  107. package/dist/esm/webgl/plot-frame.d.ts +39 -0
  108. package/dist/esm/webgl/program-cache.d.ts +13 -0
  109. package/dist/esm/webgl/shader-manifest.d.ts +53 -0
  110. package/dist/esm/webgl/shader-registry.d.ts +22 -0
  111. package/dist/esm/worker/boot.d.ts +0 -0
  112. package/dist/esm/worker/dispatch.d.ts +9 -0
  113. package/dist/esm/worker/font-loader.d.ts +2 -0
  114. package/dist/esm/worker/renderer.worker.d.ts +115 -0
  115. package/dist/esm/worker/session-host.d.ts +26 -0
  116. package/package.json +47 -0
  117. package/src/css/perspective-viewer-charts.css +95 -0
  118. package/src/ts/axis/axis-primitives.ts +125 -0
  119. package/src/ts/axis/bar-axis.ts +345 -0
  120. package/src/ts/axis/canvas.ts +64 -0
  121. package/src/ts/axis/categorical-axis-core.ts +125 -0
  122. package/src/ts/axis/categorical-axis.ts +716 -0
  123. package/src/ts/axis/facet-chrome.ts +42 -0
  124. package/src/ts/axis/label-geometry.ts +188 -0
  125. package/src/ts/axis/legend.ts +218 -0
  126. package/src/ts/axis/numeric-axis.ts +353 -0
  127. package/src/ts/charts/candlestick/candlestick-build.ts +516 -0
  128. package/src/ts/charts/candlestick/candlestick-interact.ts +256 -0
  129. package/src/ts/charts/candlestick/candlestick-render.ts +387 -0
  130. package/src/ts/charts/candlestick/candlestick.ts +367 -0
  131. package/src/ts/charts/candlestick/glyphs/draw-candlesticks.ts +432 -0
  132. package/src/ts/charts/candlestick/glyphs/draw-ohlc.ts +317 -0
  133. package/src/ts/charts/canvas-types.ts +30 -0
  134. package/src/ts/charts/cartesian/cartesian-build.ts +616 -0
  135. package/src/ts/charts/cartesian/cartesian-interact.ts +355 -0
  136. package/src/ts/charts/cartesian/cartesian-render.ts +948 -0
  137. package/src/ts/charts/cartesian/cartesian.ts +469 -0
  138. package/src/ts/charts/cartesian/glyph.ts +81 -0
  139. package/src/ts/charts/cartesian/glyphs/density.ts +1263 -0
  140. package/src/ts/charts/cartesian/glyphs/lines.ts +320 -0
  141. package/src/ts/charts/cartesian/glyphs/points.ts +239 -0
  142. package/src/ts/charts/cartesian/label-interner.ts +56 -0
  143. package/src/ts/charts/cartesian/tooltip-lines.ts +80 -0
  144. package/src/ts/charts/chart-base.ts +840 -0
  145. package/src/ts/charts/chart.ts +427 -0
  146. package/src/ts/charts/common/band-layout.ts +63 -0
  147. package/src/ts/charts/common/categorical-y-chart.ts +81 -0
  148. package/src/ts/charts/common/category-axis-resolver.ts +314 -0
  149. package/src/ts/charts/common/chrome-cache.ts +79 -0
  150. package/src/ts/charts/common/draw-tooltip-box.ts +84 -0
  151. package/src/ts/charts/common/leaf-color.ts +92 -0
  152. package/src/ts/charts/common/node-store.ts +235 -0
  153. package/src/ts/charts/common/tree-chart.ts +76 -0
  154. package/src/ts/charts/common/tree-chrome.ts +123 -0
  155. package/src/ts/charts/common/tree-data.ts +623 -0
  156. package/src/ts/charts/common/visible-extent.ts +112 -0
  157. package/src/ts/charts/heatmap/heatmap-build.ts +426 -0
  158. package/src/ts/charts/heatmap/heatmap-interact.ts +274 -0
  159. package/src/ts/charts/heatmap/heatmap-render.ts +815 -0
  160. package/src/ts/charts/heatmap/heatmap-y-axis.ts +351 -0
  161. package/src/ts/charts/heatmap/heatmap.ts +368 -0
  162. package/src/ts/charts/map/map.ts +201 -0
  163. package/src/ts/charts/registry.ts +65 -0
  164. package/src/ts/charts/series/glyphs/draw-areas.ts +331 -0
  165. package/src/ts/charts/series/glyphs/draw-bars.ts +113 -0
  166. package/src/ts/charts/series/glyphs/draw-lines.ts +320 -0
  167. package/src/ts/charts/series/glyphs/draw-scatter.ts +328 -0
  168. package/src/ts/charts/series/series-build.ts +848 -0
  169. package/src/ts/charts/series/series-interact.ts +604 -0
  170. package/src/ts/charts/series/series-render.ts +1109 -0
  171. package/src/ts/charts/series/series-type.ts +99 -0
  172. package/src/ts/charts/series/series.ts +794 -0
  173. package/src/ts/charts/sunburst/sunburst-interact.ts +460 -0
  174. package/src/ts/charts/sunburst/sunburst-layout.ts +238 -0
  175. package/src/ts/charts/sunburst/sunburst-render.ts +887 -0
  176. package/src/ts/charts/sunburst/sunburst.ts +248 -0
  177. package/src/ts/charts/treemap/treemap-interact.ts +445 -0
  178. package/src/ts/charts/treemap/treemap-layout.ts +328 -0
  179. package/src/ts/charts/treemap/treemap-render.ts +886 -0
  180. package/src/ts/charts/treemap/treemap.ts +247 -0
  181. package/src/ts/config.ts +41 -0
  182. package/src/ts/data/lazy-row.ts +140 -0
  183. package/src/ts/data/split-groups.ts +97 -0
  184. package/src/ts/data/view-reader.ts +107 -0
  185. package/src/ts/event-detail.ts +44 -0
  186. package/src/ts/index.ts +53 -0
  187. package/src/ts/interaction/hit-test.ts +106 -0
  188. package/src/ts/interaction/host-sink-dom.ts +85 -0
  189. package/src/ts/interaction/host-sink-message.ts +75 -0
  190. package/src/ts/interaction/lazy-tooltip.ts +102 -0
  191. package/src/ts/interaction/raw-event-forwarder.ts +175 -0
  192. package/src/ts/interaction/spatial-grid.ts +100 -0
  193. package/src/ts/interaction/tooltip-controller.ts +407 -0
  194. package/src/ts/interaction/zoom-controller.ts +468 -0
  195. package/src/ts/interaction/zoom-router.ts +230 -0
  196. package/src/ts/layout/facet-grid.ts +346 -0
  197. package/src/ts/layout/plot-layout.ts +277 -0
  198. package/src/ts/layout/ticks.ts +168 -0
  199. package/src/ts/map/mercator.ts +204 -0
  200. package/src/ts/map/tile-cache.ts +96 -0
  201. package/src/ts/map/tile-layer.ts +382 -0
  202. package/src/ts/map/tile-loader.ts +143 -0
  203. package/src/ts/map/tile-source.ts +156 -0
  204. package/src/ts/plugin/charts.ts +286 -0
  205. package/src/ts/plugin/plugin.ts +668 -0
  206. package/src/ts/render/scheduler.ts +339 -0
  207. package/src/ts/shaders/area.frag.glsl +20 -0
  208. package/src/ts/shaders/area.vert.glsl +19 -0
  209. package/src/ts/shaders/bar.frag.glsl +25 -0
  210. package/src/ts/shaders/bar.vert.glsl +60 -0
  211. package/src/ts/shaders/candlestick-body.frag.glsl +19 -0
  212. package/src/ts/shaders/candlestick-body.vert.glsl +34 -0
  213. package/src/ts/shaders/density-extreme.frag.glsl +30 -0
  214. package/src/ts/shaders/density-mrt.frag.glsl +44 -0
  215. package/src/ts/shaders/density-mrt.vert.glsl +48 -0
  216. package/src/ts/shaders/density-resolve.frag.glsl +89 -0
  217. package/src/ts/shaders/density-resolve.vert.glsl +23 -0
  218. package/src/ts/shaders/density-splat.frag.glsl +34 -0
  219. package/src/ts/shaders/density-splat.vert.glsl +52 -0
  220. package/src/ts/shaders/gridline.frag.glsl +18 -0
  221. package/src/ts/shaders/gridline.vert.glsl +18 -0
  222. package/src/ts/shaders/heatmap.frag.glsl +23 -0
  223. package/src/ts/shaders/heatmap.vert.glsl +42 -0
  224. package/src/ts/shaders/line-uniform.frag.glsl +26 -0
  225. package/src/ts/shaders/line-uniform.vert.glsl +54 -0
  226. package/src/ts/shaders/line.frag.glsl +28 -0
  227. package/src/ts/shaders/line.vert.glsl +87 -0
  228. package/src/ts/shaders/scatter.frag.glsl +39 -0
  229. package/src/ts/shaders/scatter.vert.glsl +67 -0
  230. package/src/ts/shaders/sunburst-arc.frag.glsl +19 -0
  231. package/src/ts/shaders/sunburst-arc.vert.glsl +79 -0
  232. package/src/ts/shaders/tile.frag.glsl +27 -0
  233. package/src/ts/shaders/tile.vert.glsl +35 -0
  234. package/src/ts/shaders/treemap.frag.glsl +19 -0
  235. package/src/ts/shaders/treemap.vert.glsl +25 -0
  236. package/src/ts/shaders/y-scatter.frag.glsl +30 -0
  237. package/src/ts/shaders/y-scatter.vert.glsl +31 -0
  238. package/src/ts/theme/gradient.ts +312 -0
  239. package/src/ts/theme/palette.ts +64 -0
  240. package/src/ts/theme/theme-snapshot.ts +66 -0
  241. package/src/ts/theme/theme.ts +166 -0
  242. package/src/ts/transport/protocol.ts +497 -0
  243. package/src/ts/transport/renderer-transport.ts +788 -0
  244. package/src/ts/utils/css.ts +36 -0
  245. package/src/ts/utils/font-snapshot.ts +159 -0
  246. package/src/ts/webgl/buffer-pool.ts +163 -0
  247. package/src/ts/webgl/context-manager.ts +414 -0
  248. package/src/ts/webgl/gradient-texture.ts +84 -0
  249. package/src/ts/webgl/instanced-attrs.ts +139 -0
  250. package/src/ts/webgl/plot-frame.ts +91 -0
  251. package/src/ts/webgl/program-cache.ts +46 -0
  252. package/src/ts/webgl/shader-manifest.ts +148 -0
  253. package/src/ts/webgl/shader-registry.ts +97 -0
  254. package/src/ts/worker/boot.ts +22 -0
  255. package/src/ts/worker/dispatch.ts +99 -0
  256. package/src/ts/worker/font-loader.ts +89 -0
  257. package/src/ts/worker/renderer.worker.ts +734 -0
  258. package/src/ts/worker/session-host.ts +118 -0
@@ -0,0 +1,3 @@
1
+ var x="Series Charts",T="Cartesian Charts",E="Hierarchical Charts",O="Financial Charts",L="Map Charts",K=["X Axis"],v=["Y Axis"],f="select",d="toggle";var y=["auto_alt_y_axis","facet_mode","series_zoom_mode","include_zero","domain_mode","line_width_px","point_size_px","band_inner_frac","bar_inner_pad"],B={include_zero:!0},z=["facet_mode","facet_zoom_mode","domain_mode","line_width_px","point_size_px"],Y=["facet_mode","series_zoom_mode","domain_mode","band_inner_frac","bar_inner_pad","wick_width_px","ohlc_line_width_px"],H=[],Q=["facet_zoom_mode"],I=["facet_mode","facet_zoom_mode","domain_mode","map_tile_provider","map_tile_alpha"],ee=[...I,"point_size_px"],te=[...I,"line_width_px"],ie=[...I,"gradient_color_mode","gradient_radius_px","gradient_intensity","gradient_heat_max"],ne=["facet_mode","facet_zoom_mode","domain_mode","gradient_color_mode","gradient_radius_px","gradient_intensity","gradient_heat_max"];function u(r,e,t,i,n,o,a,l){return{name:r,tag:e,category:t,selectMode:i,initial:{count:n,names:o},max_cells:l?.max_cells??2e6,max_columns:l?.max_columns??1e4,applicable_plugin_fields:a,...l?.default_chart_type?{default_chart_type:l.default_chart_type}:{},...l?.plugin_field_defaults?{plugin_field_defaults:l.plugin_field_defaults}:{}}}var V=["Open","Close","High","Low","Tooltip"],$=["Size","Color","Tooltip"],re=[u("X Bar","x-bar",x,f,1,K,y,{default_chart_type:"bar",plugin_field_defaults:B}),u("Y Bar","y-bar",x,f,1,v,y,{default_chart_type:"bar",plugin_field_defaults:B}),u("Y Line","y-line",x,f,1,v,y,{default_chart_type:"line"}),u("Y Scatter","y-scatter",x,f,1,v,y,{default_chart_type:"scatter"}),u("Y Area","y-area",x,f,1,v,y,{default_chart_type:"area",plugin_field_defaults:B}),u("X/Y Scatter","scatter",T,d,2,["X Axis","Y Axis","Color","Size","Label","Tooltip"],z),u("X/Y Line","line",T,f,2,["X Axis","Y Axis","Tooltip"],z),u("Density","density",T,d,2,["X Axis","Y Axis","Color","Tooltip"],ne),u("Treemap","treemap",E,d,1,$,H),u("Sunburst","sunburst",E,d,1,$,H),u("Heatmap","heatmap",E,f,1,["Color"],Q),u("Candlestick","candlestick",O,d,1,V,Y,{default_chart_type:"candlestick"}),u("OHLC","ohlc",O,d,1,V,Y,{default_chart_type:"ohlc"}),u("Map Scatter","map-scatter",L,d,2,["Longitude","Latitude","Color","Size","Label","Tooltip"],ee),u("Map Line","map-line",L,f,2,["Longitude","Latitude","Tooltip"],te),u("Map Density","map-density",L,d,2,["Longitude","Latitude","Color","Tooltip"],ie)],S=re;var X=":host{--psp-charts--tooltip--color:var(--psp--color);--psp-charts--tooltip--background:var(--psp--background-color);--psp-charts--tooltip--border-color:var(--psp-inactive--border-color);width:100%;height:100%;font-family:inherit;display:block;position:relative;overflow:hidden}.webgl-container{position:absolute;inset:6px}.webgl-canvas{width:100%;height:100%;position:absolute;top:0;left:0}.webgl-gridlines,.webgl-chrome{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.zoom-controls{z-index:2;pointer-events:auto;display:none;position:absolute;top:8px;left:50%;transform:translate(-50%)}.zoom-controls.visible{gap:6px;display:flex}.zoom-reset{background:var(--psp-charts--tooltip--background);color:var(--psp-charts--tooltip--color);border:1px solid var(--psp-charts--tooltip--border-color);font:11px var(--psp-charts--font-family);cursor:pointer;opacity:.7;border-radius:4px;padding:4px 12px;transition:opacity .15s}.zoom-reset:hover{opacity:1}.webgl-tooltip{pointer-events:auto;font:11px var(--psp-charts--font-family);background:var(--psp-charts--tooltip--background);color:var(--psp-charts--tooltip--color);border:1px solid var(--psp-charts--tooltip--border-color);white-space:pre;z-index:10;border-radius:3px;padding:3px;line-height:16px;position:absolute;overflow-y:auto}";var G={facet_mode:"grid",shared_x_axis:!0,shared_y_axis:!0,coordinated_tooltip:!1,zoom_mode:"shared",facet_padding:6},s={auto_alt_y_axis:!1,facet_mode:"grid",facet_zoom_mode:"shared",series_zoom_mode:"dynamic",include_zero:!1,domain_mode:"fit",line_width_px:2,point_size_px:8,band_inner_frac:.5,bar_inner_pad:.1,wick_width_px:1,ohlc_line_width_px:1,gradient_radius_px:32,gradient_intensity:.6,gradient_heat_max:4,gradient_color_mode:"mean",map_tile_provider:"carto-positron",map_tile_alpha:1};var b=class{_element=null;_emit=null;_pointerId=null;_onWheel=null;_onPointerDown=null;_onPointerMove=null;_onPointerUp=null;_onPointerLeave=null;_onClick=null;_onDblClick=null;attach(e,t){this.detach(),this._element=e,this._emit=t,this._onWheel=i=>{let n=e.getBoundingClientRect(),o=i.clientX-n.left,a=i.clientY-n.top;i.preventDefault(),t({type:"wheel",mx:o,my:a,deltaY:i.deltaY})},this._onPointerDown=i=>{let n=e.getBoundingClientRect(),o=i.clientX-n.left,a=i.clientY-n.top;e.setPointerCapture(i.pointerId),this._pointerId=i.pointerId,t({type:"pointerdown",mx:o,my:a,pointerId:i.pointerId})},this._onPointerMove=i=>{let n=e.getBoundingClientRect(),o=i.clientX-n.left,a=i.clientY-n.top;t({type:"pointermove",mx:o,my:a})},this._onPointerUp=i=>{if(this._pointerId!==null){try{e.releasePointerCapture(this._pointerId)}catch{}this._pointerId=null}t({type:"pointerup"})},this._onPointerLeave=()=>{t({type:"pointerleave"})},this._onClick=i=>{let n=e.getBoundingClientRect();t({type:"click",mx:i.clientX-n.left,my:i.clientY-n.top})},this._onDblClick=i=>{let n=e.getBoundingClientRect();t({type:"dblclick",mx:i.clientX-n.left,my:i.clientY-n.top})},e.addEventListener("wheel",this._onWheel,{passive:!1}),e.addEventListener("pointerdown",this._onPointerDown),e.addEventListener("pointermove",this._onPointerMove),e.addEventListener("pointerup",this._onPointerUp),e.addEventListener("pointerleave",this._onPointerLeave),e.addEventListener("click",this._onClick),e.addEventListener("dblclick",this._onDblClick)}detach(){this._element&&(this._onWheel&&this._element.removeEventListener("wheel",this._onWheel),this._onPointerDown&&this._element.removeEventListener("pointerdown",this._onPointerDown),this._onPointerMove&&this._element.removeEventListener("pointermove",this._onPointerMove),this._onPointerUp&&this._element.removeEventListener("pointerup",this._onPointerUp),this._onPointerLeave&&this._element.removeEventListener("pointerleave",this._onPointerLeave),this._onClick&&this._element.removeEventListener("click",this._onClick),this._onDblClick&&this._element.removeEventListener("dblclick",this._onDblClick)),this._element=null,this._emit=null,this._pointerId=null,this._onPointerLeave=null,this._onClick=null,this._onDblClick=null}};import{PerspectiveSelectDetail as P}from"@perspective-dev/viewer/src/ts/extensions.js";var ae=["--psp-charts--font-family","font-family","--psp--background-color","--psp-charts--axis-ticks--color","--psp--color","--psp-charts--axis-lines--color","--psp-charts--gridline--color","--psp-charts--gradient--background","--psp-charts--full-gradient--background","--psp-charts--legend--color","--psp-charts--legend-border--color","--psp-charts--tooltip--background","--psp-charts--tooltip--color","--psp-charts--tooltip--border-color","--psp-charts--area--opacity","--psp-charts--heatmap-gap--px","--psp-charts--sunburst-gap--px"];function k(r){let e=getComputedStyle(r),t={};for(let i of ae){let n=e.getPropertyValue(i).trim();n&&(t[i]=n)}for(let i=1;;i++){let n=`--psp-charts--series-${i}--color`,o=e.getPropertyValue(n).trim();if(!o)break;t[n]=o}return t}function j(){let r=[];for(let e of Array.from(document.styleSheets)){let t;try{t=e.cssRules}catch{continue}let i=e.href??document.baseURI;for(let n of Array.from(t)){if(!(n instanceof CSSFontFaceRule))continue;let o=n.style,a=o.getPropertyValue("font-family").trim(),l=o.getPropertyValue("src").trim();!a||!l||r.push({family:le(a),src:se(l,i),style:p(o,"font-style"),weight:p(o,"font-weight"),stretch:p(o,"font-stretch"),unicodeRange:p(o,"unicode-range"),variant:p(o,"font-variant"),featureSettings:p(o,"font-feature-settings"),display:p(o,"font-display")})}}return r}function p(r,e){return r.getPropertyValue(e).trim()||void 0}function le(r){if(r.length>=2){let e=r.charCodeAt(0),t=r.charCodeAt(r.length-1);if(e===t&&(e===34||e===39))return r.slice(1,-1)}return r}function se(r,e){return r.replace(/url\(\s*(['"]?)([^'")]+)\1\s*\)/g,(t,i,n)=>{try{return`url(${new URL(n,e).href})`}catch{return t}})}var C=class{_glCanvas;_parent;_div=null;constructor(e,t){this._glCanvas=e,this._parent=t}pin(e,t,i){this.dismiss();let n=document.createElement("div");n.className="webgl-tooltip",n.style.maxHeight=`${Math.round(i.cssHeight*.6)}px`,n.textContent=e.join(`
2
+ `),getComputedStyle(this._parent).position==="static"&&(this._parent.style.position="relative"),n.style.left="-9999px",n.style.top="0px",this._parent.appendChild(n),this._div=n;let o=n.getBoundingClientRect().width,a=n.getBoundingClientRect().height,l=t.px+12,h=t.py-a-8;l+o>i.cssWidth&&(l=t.px-o-12),l<0&&(l=4),h<0&&(h=t.py+12),h+a>i.cssHeight&&(h=i.cssHeight-a-4),n.style.left=`${l}px`,n.style.top=`${h}px`}dismiss(){this._div&&(this._div.remove(),this._div=null)}setCursor(e){this._glCanvas.style.cursor=e}};var m="worker",Z="direct";var q='var dr=Object.defineProperty;var Qa=(e,t,n)=>t in e?dr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var I=(e,t)=>()=>(e&&(t=e(e=0)),t);var el=(e,t)=>{for(var n in t)dr(e,n,{get:t[n],enumerable:!0})};var d=(e,t,n)=>Qa(e,typeof t!="symbol"?t+"":t,n);var un,zi=I(()=>{un="attribute vec2 a_start;attribute vec2 a_end;attribute float a_color_start;attribute float a_color_end;attribute float a_corner;uniform mat4 u_projection;uniform vec2 u_resolution;uniform float u_line_width;uniform vec2 u_color_range;uniform sampler2D u_gradient_lut;varying float v_edge_dist;varying vec3 v_color;float A(float B,float C,float D){if(D<=C){return 0.5;}else if(C<0.&&D>0.){float E=max(-C,D);return clamp(0.5+0.5*(B/E),0.,1.);}return clamp((B-C)/(D-C),0.,1.);}void main(){float C=u_color_range.x;float D=u_color_range.y;float F=0.5*(a_color_start+a_color_end);float G=A(F,C,D);v_color=texture2D(u_gradient_lut,vec2(G,0.5)).rgb;vec4 H=u_projection*vec4(a_start,0.,1.);vec4 I=u_projection*vec4(a_end,0.,1.);vec2 J=H.xy*u_resolution*0.5;vec2 K=I.xy*u_resolution*0.5;vec2 L=K-J;float M=length(L);L=M>0.001?L/M:vec2(1.,0.);vec2 N=vec2(-L.y,L.x);float O=step(1.5,a_corner);float P=1.-mod(a_corner,2.)*2.;vec4 Q=mix(H,I,O);float R=(u_line_width+1.5)*0.5;vec2 S=(N*P*R)/(u_resolution*0.5);gl_Position=Q+vec4(S,0.,0.);v_edge_dist=P;}"});var mn,Xi=I(()=>{mn="precision highp float;uniform float u_line_width;varying float v_edge_dist;varying vec3 v_color;void main(){float A=abs(v_edge_dist);float B=u_line_width/(u_line_width+1.5);float C=1.-smoothstep(B,1.,A);gl_FragColor=vec4(v_color,C);}"});var fn,$i=I(()=>{fn="attribute vec2 a_position;attribute float a_color_value;attribute float a_size_value;uniform mat4 u_projection;uniform float u_point_size;uniform vec2 u_color_range;uniform vec2 u_size_range;uniform vec2 u_point_size_range;varying float v_color_t;varying float v_point_size;void main(){gl_Position=u_projection*vec4(a_position,0.,1.);float A=u_size_range.y-u_size_range.x;if(A>0.){float B=clamp((a_size_value-u_size_range.x)/A,0.,1.);gl_PointSize=mix(u_point_size_range.x,u_point_size_range.y,B);}else{gl_PointSize=u_point_size;}v_point_size=gl_PointSize;float C=u_color_range.x;float D=u_color_range.y;if(D<=C){v_color_t=0.5;}else if(C<0.&&D>0.){float E=max(-C,D);v_color_t=clamp(0.5+0.5*(a_color_value/E),0.,1.);}else{v_color_t=clamp((a_color_value-C)/(D-C),0.,1.);}}"});var cn,ji=I(()=>{cn="precision highp float;varying float v_color_t;varying float v_point_size;uniform sampler2D u_gradient_lut;void main(){vec2 A=gl_PointCoord-vec2(0.5);float B=length(A);if(B>0.5){discard;}float C=1.5/max(v_point_size,1.);float D=1.-smoothstep(0.5-C,0.5,B);vec4 E=texture2D(u_gradient_lut,vec2(clamp(v_color_t,0.,1.),0.5));gl_FragColor=vec4(E.rgb,E.a*D);}"});var Je,Zi=I(()=>{Je="attribute vec2 a_corner;attribute vec2 a_position;attribute float a_color_value;uniform vec2 u_radius_ndc;uniform mat4 u_projection;uniform vec2 u_color_range;varying vec2 v_uv;varying float v_color_t;void main(){vec4 A=u_projection*vec4(a_position,0.,1.);gl_Position=A+vec4(a_corner*u_radius_ndc*A.w,0.,0.);v_uv=a_corner;float B=u_color_range.x;float C=u_color_range.y;if(C<=B){v_color_t=0.5;}else if(B<0.&&C>0.){float D=max(-B,C);v_color_t=clamp(0.5+0.5*(a_color_value/D),0.,1.);}else{v_color_t=clamp((a_color_value-B)/(C-B),0.,1.);}}"});var Tn,qi=I(()=>{Tn="precision highp float;uniform float u_intensity;varying vec2 v_uv;varying float v_color_t;void main(){float A=length(v_uv);float B=max(0.,1.-A);B=B*B*u_intensity;if(B<=0.){discard;}gl_FragColor=vec4(B,B*v_color_t,0.,0.);}"});var wn,Ki=I(()=>{wn="precision highp float;varying vec2 v_uv;varying float v_color_t;void main(){float A=length(v_uv);if(A>=1.){discard;}float B=(v_color_t-0.5)*2.;gl_FragColor=vec4(max(0.,B),max(0.,-B),0.,0.);}"});var br,pr=I(()=>{br=`#version 300 es\nin vec2 a_corner;in vec2 a_position;in float a_color_value;uniform mat4 u_projection;uniform vec2 u_radius_ndc;uniform vec2 u_color_range;out vec2 v_uv;out float v_color_t;void main(){vec4 A=u_projection*vec4(a_position,0.,1.);gl_Position=A+vec4(a_corner*u_radius_ndc*A.w,0.,0.);v_uv=a_corner;float B=u_color_range.x;float C=u_color_range.y;if(C<=B){v_color_t=0.5;}else if(B<0.&&C>0.){float D=max(-B,C);v_color_t=clamp(0.5+0.5*(a_color_value/D),0.,1.);}else{v_color_t=clamp((a_color_value-B)/(C-B),0.,1.);}}`});var gr,hr=I(()=>{gr=`#version 300 es\nprecision highp float;uniform float u_intensity;in vec2 v_uv;in float v_color_t;layout(location=0)out vec4 A;layout(location=1)out vec4 B;void main(){float C=length(v_uv);float D=max(0.0f,1.0f-C);D=D*D*u_intensity;if(D<=0.0f){discard;}A=vec4(D,D*v_color_t,0.0f,0.0f);float E=(v_color_t-0.5f)*2.0f;B=vec4(max(0.0f,E),max(0.0f,-E),0.0f,0.0f);}`});var Rn,Ji=I(()=>{Rn="attribute vec2 a_corner;varying vec2 v_uv;void main(){v_uv=a_corner*0.5+0.5;gl_Position=vec4(a_corner,0.,1.);}"});var Fn,Qi=I(()=>{Fn="precision highp float;uniform sampler2D u_heat;uniform sampler2D u_extreme;uniform sampler2D u_gradient_lut;uniform float u_heat_max;uniform int u_color_mode;varying vec2 v_uv;void main(){vec4 A=texture2D(u_heat,v_uv);float B=A.r;float C=A.g;if(B<=0.){discard;}float D;float E;float F=clamp(B/max(u_heat_max,1e-4),0.,1.);if(u_color_mode==0){D=pow(F,0.6);E=clamp(B,0.,1.);}else if(u_color_mode==2){vec4 G=texture2D(u_extreme,v_uv);float H=G.r;float I=G.g;float J=max(H,I);if(J<=0.){D=0.5;}else if(H>=I){D=clamp(0.5+H*0.5,0.5,1.);}else{D=clamp(0.5-I*0.5,0.,0.5);}E=F;}else if(u_color_mode==3){float K=C-0.5*B;float L=clamp(abs(K)/max(u_heat_max,1e-4),0.,1.);float M=K>=0.?1.:-1.;D=clamp(0.5+0.5*M*L,0.,1.);E=L;}else{D=clamp(C/B,0.,1.);E=F;}vec4 N=texture2D(u_gradient_lut,vec2(D,0.5));gl_FragColor=vec4(N.rgb,N.a*E);}"});var Mn,eo=I(()=>{Mn="attribute vec2 a_corner;uniform mat4 u_projection;uniform vec2 u_extent_min;uniform vec2 u_extent_max;uniform vec2 u_uv_min;uniform vec2 u_uv_max;varying vec2 v_uv;void main(){vec2 A=mix(u_extent_min,u_extent_max,a_corner);vec2 B=mix(u_uv_min,u_uv_max,vec2(a_corner.x,1.-a_corner.y));v_uv=B;gl_Position=u_projection*vec4(A,0.,1.);}"});var Sn,to=I(()=>{Sn="precision highp float;varying vec2 v_uv;uniform sampler2D u_tile;uniform float u_alpha;void main(){vec4 A=texture2D(u_tile,v_uv);gl_FragColor=vec4(A.rgb,A.a*u_alpha);}"});function Bl(e,t){if(t.width<=0||t.height<=0)return e;let n=e.xMax-e.xMin,i=e.yMax-e.yMin;if(n<=0||i<=0)return e;let o=t.width/t.height;if(n/i<o){let s=(e.xMin+e.xMax)/2,a=i*o/2;return{xMin:s-a,xMax:s+a,yMin:e.yMin,yMax:e.yMax}}else{let s=(e.yMin+e.yMax)/2,a=n/o/2;return{xMin:e.xMin,xMax:e.xMax,yMin:s-a,yMax:s+a}}}var Qe,Dn=I(()=>{"use strict";Qe=class{constructor(){d(this,"Ge",1);d(this,"ke",1);d(this,"_e",0);d(this,"ve",0);d(this,"Ve",0);d(this,"ze",1);d(this,"Xe",0);d(this,"$e",1);d(this,"Ne",null);d(this,"$i",!1);d(this,"re",null);d(this,"Ft",null);d(this,"Mt",null);d(this,"bt",!1);d(this,"St",0);d(this,"Bt",0);d(this,"je",null);d(this,"Ze",null);d(this,"qe",null);d(this,"Ke",null)}get lockedAxis(){return this.Ne}get scaleX(){return this.Ge}get scaleY(){return this.ke}set scaleX(t){this.Ge=t}set scaleY(t){this.ke=t}get normTranslateX(){return this._e}get normTranslateY(){return this.ve}set normTranslateX(t){this._e=t}set normTranslateY(t){this.ve=t}get baseXRange(){return this.ze-this.Ve}get baseYRange(){return this.$e-this.Xe}setBaseDomain(t,n,i,o){if(this.isDefault()){this.Ve=t,this.ze=n,this.Xe=i,this.$e=o;return}let r=this.ze-this.Ve,s=this.$e-this.Xe,a=(this.Ve+this.ze)/2+this._e*r,l=(this.Xe+this.$e)/2+this.ve*s;this.Ve=t,this.ze=n,this.Xe=i,this.$e=o;let u=n-t,m=o-i;this._e=u>0?(a-(t+n)/2)/u:0,this.ve=m>0?(l-(i+o)/2)/m:0}configure(t){this.Ne=t.lockAxis??null,this.$i=t.lockAspect??!1,this.Ne==="x"?(this.Ge=1,this._e=0):this.Ne==="y"&&(this.ke=1,this.ve=0)}isDefault(){return this.Ge===1&&this.ke===1&&this._e===0&&this.ve===0}getVisibleDomain(){let t=this.ze-this.Ve,n=this.$e-this.Xe,i=t/this.Ge,o=n/this.ke,r=(this.Ve+this.ze)/2+this._e*t,s=(this.Xe+this.$e)/2+this.ve*n,a={xMin:r-i/2,xMax:r+i/2,yMin:s-o/2,yMax:s+o/2};return this.$i&&this.Ft?Bl(a,this.Ft.t):a}attach(t,n,i){this.detach(),this.re=t,this.Ft=n,this.Mt=i,this.je=o=>{o.preventDefault();let r=t.getBoundingClientRect(),s=o.clientX-r.left,a=o.clientY-r.top,l=this.Ft.t;if(s<l.x||s>l.x+l.width||a<l.y||a>l.y+l.height)return;let u=this.getVisibleDomain(),m=u.xMin+(s-l.x)/l.width*(u.xMax-u.xMin),f=u.yMax-(a-l.y)/l.height*(u.yMax-u.yMin),b=Math.pow(1.1,-o.deltaY/100);this.Ne!=="x"&&(this.Ge=Math.max(1,Math.min(1e5,this.Ge*b))),this.Ne!=="y"&&(this.ke=Math.max(1,Math.min(1e5,this.ke*b)));let p=this.getVisibleDomain(),c=p.xMin+(s-l.x)/l.width*(p.xMax-p.xMin),h=p.yMax-(a-l.y)/l.height*(p.yMax-p.yMin),g=this.ze-this.Ve,y=this.$e-this.Xe;this.Ne!=="x"&&g>0&&(this._e+=(m-c)/g),this.Ne!=="y"&&y>0&&(this.ve+=(f-h)/y),this.Mt()},this.Ze=o=>{let r=t.getBoundingClientRect(),s=o.clientX-r.left,a=o.clientY-r.top,l=this.Ft.t;s>=l.x&&s<=l.x+l.width&&a>=l.y&&a<=l.y+l.height&&(this.bt=!0,this.St=o.clientX,this.Bt=o.clientY,t.setPointerCapture(o.pointerId))},this.qe=o=>{if(!this.bt)return;let r=o.clientX-this.St,s=o.clientY-this.Bt;this.St=o.clientX,this.Bt=o.clientY;let a=this.getVisibleDomain(),l=this.Ft.t,u=(a.xMax-a.xMin)/l.width,m=(a.yMax-a.yMin)/l.height,f=this.ze-this.Ve,b=this.$e-this.Xe;this.Ne!=="x"&&f>0&&(this._e-=r*u/f),this.Ne!=="y"&&b>0&&(this.ve+=s*m/b),this.Mt()},this.Ke=()=>{this.bt=!1},t.addEventListener("wheel",this.je,{passive:!1}),t.addEventListener("pointerdown",this.Ze),t.addEventListener("pointermove",this.qe),t.addEventListener("pointerup",this.Ke)}updateLayout(t){this.Ft=t}detach(){this.re&&(this.je&&this.re.removeEventListener("wheel",this.je),this.Ze&&this.re.removeEventListener("pointerdown",this.Ze),this.qe&&this.re.removeEventListener("pointermove",this.qe),this.Ke&&this.re.removeEventListener("pointerup",this.Ke)),this.re=null,this.Mt=null}reset(){this.Ge=1,this.ke=1,this._e=0,this.ve=0}serialize(){return{scaleX:this.Ge,scaleY:this.ke,normTranslateX:this._e,normTranslateY:this.ve}}restore(t){this.Ge=t.scaleX,this.ke=t.scaleY,this._e=t.normTranslateX,this.ve=t.normTranslateY}}});function Ar(e,t){let n=t??Dl[e]??{};return new Intl.NumberFormat(navigator.languages,n)}function Lr(e){if(!e||e.format!=="custom"){let n={timeZone:e?.timeZone,dateStyle:e?.dateStyle==="disabled"?void 0:e?.dateStyle??vr.dateStyle,timeStyle:e?.timeStyle==="disabled"?void 0:e?.timeStyle??vr.timeStyle};return new Intl.DateTimeFormat(navigator.languages,n)}let t={timeZone:e.timeZone,hour12:e.hour12??!0,fractionalSecondDigits:e.fractionalSecondDigits};return e.year!=="disabled"&&(t.year=e.year??"2-digit"),e.month!=="disabled"&&(t.month=e.month??"numeric"),e.day!=="disabled"&&(t.day=e.day??"numeric"),e.weekday&&e.weekday!=="disabled"&&(t.weekday=e.weekday),e.hour!=="disabled"&&(t.hour=e.hour??"numeric"),e.minute!=="disabled"&&(t.minute=e.minute??"numeric"),e.second!=="disabled"&&(t.second=e.second??"numeric"),new Intl.DateTimeFormat(navigator.languages,t)}function Tr(e){let t={timeZone:"utc",dateStyle:e?.dateStyle==="disabled"?void 0:e?.dateStyle??Il.dateStyle};return new Intl.DateTimeFormat(navigator.languages,t)}function io(e){return e.split("|").at(-1)??e}var Dl,vr,Il,wr=I(()=>{"use strict";Dl={float:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2}},vr={dateStyle:"short",timeStyle:"medium"},Il={dateStyle:"short"}});var En,Rr=I(()=>{"use strict";En=class{constructor(t,n=128){d(this,"Xt");d(this,"c",new Map);d(this,"he",new Map);d(this,"Zi");this.Xt=t,this.Zi=n}async fetchRow(t){if(!this.Xt)throw new Error("LazyRowFetcher disposed");let n=this.c.get(t);if(n)return this.c.delete(t),this.c.set(t,n),n;let i=this.he.get(t);if(i)return i;let o=this.wo(t);this.he.set(t,o);try{let r=await o;if(!this.Xt)return r;if(this.c.set(t,r),this.c.size>this.Zi){let s=this.c.keys().next().value;s!==void 0&&this.c.delete(s)}return r}finally{this.he.delete(t)}}async wo(t){let n=this.Xt;if(!n)throw new Error("LazyRowFetcher disposed");let i=new Map;return await n.with_typed_arrays({start_row:t,end_row:t+1,float32:!0},(o,r,s,a)=>{for(let l=0;l<o.length;l++){let u=o[l];if(u.startsWith("__"))continue;let m=r[l],f=s[l],b=a[l];(f?!(f[0]>>0&1):!1)?i.set(u,null):b?i.set(u,b[m[0]]):i.set(u,m[0])}}),i}dispose(){this.Xt=null,this.c.clear(),this.he.clear()}get isDisposed(){return this.Xt===null}}});function Fr(e,t){let n=Math.floor(Math.log10(e)),i=e/Math.pow(10,n),o;return t?i<1.5?o=1:i<3?o=2:i<7?o=5:o=10:i<=1?o=1:i<=2?o=2:i<=5?o=5:o=10,o*Math.pow(10,n)}function te(e,t,n){n<1&&(n=1);let i=Fr(t-e,!1),o=Fr(i/n,!0),r=Math.ceil(e/o)*o,s=Math.floor(t/o)*o,a=[];for(let l=r;l<=s+o*.001;l+=o)a.push(l);return a}function ie(e){let t=Math.abs(e);return t===0?"0":t>=1e9?(e/1e9).toFixed(1)+"B":t>=1e6?(e/1e6).toFixed(1)+"M":t>=1e3?(e/1e3).toFixed(1)+"K":Number.isInteger(e)?e.toString():t>=1?e.toFixed(1):e.toFixed(2)}function le(e,t){let n=new Date(e);return isNaN(n.getTime())?ie(e):t!==void 0&&t>0?t>=864e5*28?n.toLocaleDateString(void 0,{year:"numeric",month:"short"}):t>=864e5?n.toLocaleDateString(void 0,{month:"short",day:"numeric"}):t>=36e5?n.toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric"}):t>=6e4?n.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}):n.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit",second:"2-digit"}):n.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}var pe=I(()=>{"use strict"});var Mr,Sr,Br=I(()=>{"use strict";Mr={facet_mode:"grid",shared_x_axis:!0,shared_y_axis:!0,coordinated_tooltip:!1,zoom_mode:"shared",facet_padding:6},Sr={auto_alt_y_axis:!1,facet_mode:"grid",facet_zoom_mode:"shared",series_zoom_mode:"dynamic",include_zero:!1,domain_mode:"fit",line_width_px:2,point_size_px:8,band_inner_frac:.5,bar_inner_pad:.1,wick_width_px:1,ohlc_line_width_px:1,gradient_radius_px:32,gradient_intensity:.6,gradient_heat_max:4,gradient_color_mode:"mean",map_tile_provider:"carto-positron",map_tile_alpha:1}});function _e(e,t,n,i,o,r,s={}){if(!e)return;let a=e.getContext("2d");if(!a)return;a.save(),a.setTransform(1,0,0,1,0,0),a.scale(r,r),a.font=`11px ${o.fontFamily}`;let l=16,u=8,m=0;for(let g of n){let y=a.measureText(g).width;y>m&&(m=y)}let f=m+u*2,b=n.length*l+u*2-4,p=t.px+12,c=t.py-b-8;p+f>i.cssWidth&&(p=t.px-f-12),c<0&&(c=t.py+12),c+b>i.cssHeight&&(c=i.cssHeight-b-4);let h=n.length>0;if(s.crosshair&&(a.strokeStyle=o.Dt,a.globalAlpha=.3,a.lineWidth=1,a.setLineDash([4,4]),a.beginPath(),a.moveTo(t.px,i.t.y),a.lineTo(t.px,i.t.y+i.t.height),a.moveTo(i.t.x,t.py),a.lineTo(i.t.x+i.t.width,t.py),a.stroke(),a.setLineDash([]),a.globalAlpha=1),s.highlightRadius&&s.highlightRadius>0&&(a.strokeStyle=o.Dt,a.globalAlpha=.8,a.lineWidth=2,a.beginPath(),a.arc(t.px,t.py,s.highlightRadius,0,Math.PI*2),a.stroke(),a.globalAlpha=1),h){a.fillStyle=o.Sn,a.strokeStyle=o.qi,a.lineWidth=1,a.beginPath(),a.roundRect(p,c,f,b,4),a.fill(),a.stroke(),a.fillStyle=o.Ki,a.textAlign="left",a.textBaseline="top";for(let g=0;g<n.length;g++)a.fillText(n[g],p+u,c+u+g*l)}a.restore()}var Pn,et=I(()=>{"use strict";Pn=class{constructor(){d(this,"Me",null);d(this,"$t",0);d(this,"jt",null);d(this,"on",null);d(this,"ht",!1)}get isPinned(){return this.ht}setHost(t){this.ht&&(this.on?.dismiss(),this.ht=!1),this.on=t}setCursor(t){this.on?.setCursor(t)}attach(t){this.detach(),this.Me=t}detach(){this.$t&&(cancelAnimationFrame(this.$t),this.$t=0),this.jt!==null&&(clearTimeout(this.jt),this.jt=null),this.Me=null}dispatchHover(t,n){if(this.ht||!this.Me||this.$t||this.jt!==null)return;let i=()=>{this.$t=0,this.jt=null,this.Me?.onHover(t,n)};typeof requestAnimationFrame=="function"?this.$t=requestAnimationFrame(i):this.jt=setTimeout(i,16)}dispatchLeave(){this.ht||!this.Me||this.Me.onLeave()}dispatchClick(t,n){if(this.Me&&!this.Me.onClickPre?.(t,n)){if(this.ht){let i=this.Me;this.dismiss(),i.onUnpin?.();return}this.Me.onPin?.(t,n)}}dispatchDblClick(t,n){this.Me?.onDblClick?.(t,n)}pin(t,n,i){t.length!==0&&(this.on?.pin(t,n,i),this.ht=!0)}dismiss(){this.on?.dismiss(),this.ht=!1}}});function Wn(e){let t=e.trim();if(t.startsWith("#")){let i=t.slice(1);return i.length===3&&(i=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]),[parseInt(i.slice(0,2),16)/255,parseInt(i.slice(2,4),16)/255,parseInt(i.slice(4,6),16)/255]}let n=t.match(/rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);return n?[+n[1]/255,+n[2]/255,+n[3]/255]:[.5,.5,.5]}var oo=I(()=>{"use strict"});function Dr(e){if(!e)return ze.slice();let t=e.trim();if(!t)return ze.slice();let n=t.indexOf("(");if(n<0||!/^linear-gradient\\s*\\(/i.test(t))return ze.slice();let i=t.lastIndexOf(")");if(i<=n)return ze.slice();let o=t.substring(n+1,i),r=[],s=0,a=0;for(let b=0;b<o.length;b++){let p=o[b];p==="("?s++:p===")"?s--:p===","&&s===0&&(r.push(o.substring(a,b)),a=b+1)}r.push(o.substring(a));let l=[],u=0;if(r.length>0){let b=r[0].trim().toLowerCase();(b.startsWith("to ")||/^[-\\d.]+(deg|rad|grad|turn)/.test(b))&&(u=1)}for(let b=u;b<r.length;b++){let p=r[b].trim();if(!p)continue;let c=p.match(/\\s([\\-\\d.]+)%\\s*$/),h=c?p.substring(0,c.index).trim():p,g=c?parseFloat(c[1])/100:null;try{let y=Wn(h);l.push({color:y,offset:g})}catch{}}if(l.length===0)return ze.slice();if(l.length===1){let[b,p,c]=l[0].color;return[{offset:0,color:[b,p,c,1]},{offset:1,color:[b,p,c,1]}]}l[0].offset===null&&(l[0].offset=0),l[l.length-1].offset===null&&(l[l.length-1].offset=1);for(let b=1;b<l.length-1;b++){if(l[b].offset!==null)continue;let p=b+1;for(;p<l.length&&l[p].offset===null;)p++;let c=l[b-1].offset,h=l[p].offset,g=p-(b-1);for(let y=b;y<p;y++)l[y].offset=c+(y-(b-1))/g*(h-c);b=p-1}let m=0;return l.map(b=>{let p=Math.max(m,Math.min(1,b.offset));return m=p,{offset:p,color:[b.color[0],b.color[1],b.color[2],1]}})}function be(e,t){if(e.length===0)return[0,0,0,1];if(t<=e[0].offset)return e[0].color.slice();let n=e[e.length-1];if(t>=n.offset)return n.color.slice();let i=0,o=e.length-1;for(;o-i>1;){let u=i+o>>1;e[u].offset<=t?i=u:o=u}let r=e[i],s=e[o],a=s.offset-r.offset,l=a>0?(t-r.offset)/a:0;return[r.color[0]+(s.color[0]-r.color[0])*l,r.color[1]+(s.color[1]-r.color[1])*l,r.color[2]+(s.color[2]-r.color[2])*l,r.color[3]+(s.color[3]-r.color[3])*l]}function Xe(e,t,n){if(!isFinite(e)||t===n)return .5;let i;if(t>=0?i=n:n<=0?i=-t:i=Math.max(-t,n),i<=0)return .5;let o=.5+.5*(e/i);return o<0?0:o>1?1:o}function Ir(e){if(e.length===0)return ze.slice();if(e.length===1){let[n,i,o]=e[0];return[{offset:0,color:[n,i,o,1]},{offset:1,color:[n,i,o,1]}]}let t=e.length-1;return e.map(([n,i,o],r)=>({offset:r/t,color:[n,i,o,1]}))}function Er(e,t=256){let n=new Uint8Array(t*4);for(let i=0;i<t;i++){let o=t===1?0:i/(t-1),r=be(e,o);n[i*4]=Math.round(r[0]*255),n[i*4+1]=Math.round(r[1]*255),n[i*4+2]=Math.round(r[2]*255),n[i*4+3]=Math.round(r[3]*255)}return n}var ze,ve=I(()=>{"use strict";oo();ze=[{offset:0,color:[3/255,102/255,214/255,1]},{offset:1,color:[255/255,127/255,14/255,1]}]});function El(e){return isFinite(e)?e<0?0:e>1?1:e:.5}function Pr(e){return!isFinite(e)||e<0?1:e}function Wr(e){let t=(r,s)=>e[r]||s,n=e["--psp-charts--gradient--background"]||e["--psp-charts--full-gradient--background"]||"linear-gradient(#0366d6 0%, #ff7f0e 100%)",i=Dr(n),o=[];for(let r=1;;r++){let s=e[`--psp-charts--series-${r}--color`];if(!s)break;o.push(Wn(s))}return{fontFamily:t("--psp-charts--font-family",t("font-family","monospace")),backgroundColor:t("--psp--background-color","rgba(255, 255, 255, 1)"),Dt:t("--psp-charts--axis-ticks--color","rgba(160, 0, 0, 0.8)"),ge:t("--psp--color","rgba(180, 0, 0, 0.9)"),fi:t("--psp-charts--axis-lines--color","rgba(160, 0, 0, 0.4)"),Bn:t("--psp-charts--gridline--color","rgba(255, 0, 0, 1)"),V:i,ci:t("--psp-charts--legend--color","rgba(180, 180, 180, 0.9)"),Ro:t("--psp-charts--legend-border--color","rgba(128,128,128,0.3)"),Sn:t("--psp-charts--tooltip--background","rgba(155,155,155,0.8)"),Ki:t("--psp-charts--tooltip--color","#161616"),qi:t("--psp-charts--tooltip--border-color","#fff"),di:El(parseFloat(t("--psp-charts--area--opacity","0.85"))),Ji:Pr(parseFloat(t("--psp-charts--heatmap-gap--px","0"))),Qi:Pr(parseFloat(t("--psp-charts--sunburst-gap--px","1"))),Se:o}}var Gr=I(()=>{"use strict";oo();ve()});function kr(e,t){let n=Rt.get(e);n?n.fullRender=t:(n={glManager:e,fullRender:t,waiters:[]},Rt.set(e,n));let i=Promise.withResolvers();return n.waiters.push(i),Gn||(Gn=Or(Ur)),i.promise}function Nr(e,t){if(!ro.has(e)){t();return}let n=kn.get(e);n||(n=[],kn.set(e,n)),n.push(t)}async function Ur(){let e=Array.from(Rt.values());Rt.clear();let t=[];for(let n of e)try{n.glManager.applyPendingResize(),n.fullRender(),t.push(n)}catch(i){console.error("scheduler: fullRender threw",i);for(let o of n.waiters)o.reject(i)}await Promise.all(t.map(Pl)),Gn=0,Rt.size>0&&(Gn=Or(Ur))}async function Pl(e){ro.add(e.glManager);try{await e.glManager.awaitGpuFence(),e.glManager.endFrame();for(let t of e.waiters)t.resolve()}catch(t){console.error("scheduler: present failed",t);try{e.glManager.endFrame()}catch{}for(let n of e.waiters)n.reject(t)}finally{ro.delete(e.glManager);let t=kn.get(e.glManager);if(t){kn.delete(e.glManager);for(let n of t)try{n()}catch(i){console.error("scheduler: deferred op threw",i)}}}}function Or(e){return typeof requestAnimationFrame=="function"?requestAnimationFrame(e):setTimeout(e,16)}var Rt,Gn,ro,kn,so=I(()=>{"use strict";Rt=new Map,Gn=0,ro=new Set,kn=new Map});var Wl,Gl,he,Ft=I(()=>{"use strict";wr();Rr();pe();Dn();Br();et();Gr();so();Wl=ie,Gl=le,he=class{constructor(){d(this,"e",null);d(this,"I",null);d(this,"d",null);d(this,"eo",{});d(this,"h",null);d(this,"rn",[]);d(this,"E",[]);d(this,"L",[]);d(this,"w",[]);d(this,"Je",{});d(this,"Dn",!1);d(this,"In",!1);d(this,"gt",{});d(this,"pi",{});d(this,"bi",new Map);d(this,"En");d(this,"P",{...Mr});d(this,"g",{...Sr});d(this,"_",new Pn);d(this,"gi",null);d(this,"Pn",Promise.resolve());d(this,"sn",null);d(this,"ce",null)}setGridlineCanvas(t){this.I=t}setChromeCanvas(t){this.d=t}setTheme(t){this.eo=t,this.sn=null}setZoomController(t){this.h=t,t.configure(this.getZoomConfig())}getZoomControllerForFacet(t){if(this.P.zoom_mode==="shared")return this.h;if(!this.h)return null;let n=this.rn[t];return n||(n=new Qe,n.configure(this.getZoomConfig()),this.rn[t]=n),n}computeEffectiveFacetFlags(){let t=this.P.zoom_mode==="independent",n=!t&&this.P.shared_x_axis,i=!t&&this.P.shared_y_axis;return this.Dn=n,this.In=i,{independentZoom:t,effectiveSharedX:n,effectiveSharedY:i}}syncFacetZoomLayouts(t){let n=this.P.zoom_mode==="independent";for(let i=0;i<t.length;i++)if(this.getZoomControllerForFacet(i)?.updateLayout(t[i].layout),!n)return}setZoomBaseDomain(t,n,i,o){this.h&&this.h.setBaseDomain(t,n,i,o);for(let r of this.rn)r&&r.setBaseDomain(t,n,i,o)}getZoomConfig(){return{}}setColumnSlots(t){this.E=t}setViewPivots(t,n){this.L=t,this.w=n}setColumnTypes(t){this.Je=t,this.to()}resetExpandedDomain(){}setGroupByTypes(t){this.gt=t}setColumnsConfig(t){this.pi=t??{},this.to()}to(){this.bi=new Map;for(let[t,n]of Object.entries(this.pi)){let i=this.Je[t]??this.gt[t],o=this.Fo(i,n);o&&this.bi.set(t,o)}}Fo(t,n){if(!(!t||!n)){if(t==="integer"||t==="float"){let i=n.number_format;if(!i)return;let o=Ar(t,i);return r=>o.format(r)}if(t==="datetime"){let i=n.date_format;if(!i)return;let o=Lr(i);return r=>o.format(r)}if(t==="date"){let i=n.date_format;if(!i)return;let o=Tr(i);return r=>o.format(r)}}}getColumnFormatter(t,n="value"){if(t){let r=this.bi.get(io(t));if(r)return r}if(n==="tick")return;let i=t?io(t):void 0,o=i?this.Je[i]??this.gt[i]:void 0;return o==="date"||o==="datetime"?Gl:Wl}setDefaultChartType(t){this.En=t}setFacetConfig(t){this.P={...t}}setPluginConfig(t){this.g={...t},this.P={...this.P,facet_mode:t.facet_mode,zoom_mode:t.facet_zoom_mode},this.Wn=t.series_zoom_mode==="dynamic"}T(){return this.sn||(this.sn=Wr(this.eo)),this.sn}invalidateTheme(){this.sn=null}setView(t){this.ce&&this.ce.dispose(),this.ce=new En(t);let n=this._.isPinned;this._.dismiss(),n&&this.emitUnselect()}tooltipCallbacks(){return{onHover:()=>{},onLeave:()=>{}}}attachTooltip(t){this._.attach(this.tooltipCallbacks()),this._.setHost(t),this.gi=t}async buildClickDetail(t){let n={};if(t.rowIdx!=null&&t.rowIdx>=0&&this.ce)try{let o=await this.ce.fetchRow(t.rowIdx);n=Object.fromEntries(o)}catch{n={}}let i=[];for(let o=0;o<this.L.length;o++){let r=t.groupByValues[o];r!=null&&r!==""&&i.push([this.L[o],"==",r])}for(let o=0;o<this.w.length;o++){let r=t.splitByValues[o];r!=null&&r!==""&&i.push([this.w[o],"==",r])}return{row:n,column_names:[t.columnName],config:{filter:i}}}emitUserClick(t){let n={row:t.row,column_names:t.column_names,config:t.config};this.gi?.emitUserClick?.(n)}emitUserSelect(t){let n={selected:t.selected,row:t.row,column_names:t.column_names,insertConfig:t.insertConfig};this.gi?.emitUserSelect?.(n)}emitClickAndSelect(t){let n=this.Pn.then(async()=>{let i=await this.buildClickDetail(t);this.emitUserClick(i),this.emitUserSelect({selected:!0,row:i.row,column_names:i.column_names,insertConfig:i.config})});return this.Pn=n.catch(i=>{console.error("emitClickAndSelect failed",i)}),n}emitUnselect(t={}){let n=this.Pn.then(()=>{this.emitUserSelect({selected:!1,row:t.row??{},column_names:t.column_names??[],insertConfig:{filter:[]}})});this.Pn=n.catch(i=>{console.error("emitUnselect failed",i)})}requestRender(t){return kr(t,()=>this.It(t))}destroy(){this._.detach(),this._.dismiss(),this.ce&&(this.ce.dispose(),this.ce=null),this.destroyInternal()}}});var Nn,Hr=I(()=>{"use strict";Nn=class{constructor(t,n,i,o,r){d(this,"Qe",new Map);d(this,"ye");d(this,"Ae");d(this,"Et");d(this,"no");this.ye=t,this.Ae=i,this.Et=r,this.no=Math.max(1,Math.ceil((n-t)/r))}io(t,n){return n*this.no+t}insert(t,n,i){let o=Math.floor((n-this.ye)/this.Et),r=Math.floor((i-this.Ae)/this.Et),s=this.io(o,r),a=this.Qe.get(s);a||(a=[],this.Qe.set(s,a)),a.push(t)}query(t,n,i,o,r,s,a){let l=Math.ceil(i/o/this.Et),u=Math.ceil(i/r/this.Et),m=Math.floor((t-this.ye)/this.Et),f=Math.floor((n-this.Ae)/this.Et),b=-1,p=i*i;for(let c=f-u;c<=f+u;c++)for(let h=m-l;h<=m+l;h++){let g=this.Qe.get(this.io(h,c));if(g)for(let y of g){let x=(s[y]-t)*o,C=(a[y]-n)*r,_=x*x+C*C;_<p&&(p=_,b=y)}}return b}}});var Un,Yr=I(()=>{"use strict";Hr();Un=class{constructor(){d(this,"an",null);d(this,"ln",!0)}markDirty(){this.ln=!0}get isDirty(){return this.ln}rebuild(t,n,i){if(n===0){this.an=null,this.ln=!1;return}let o=t.xMax-t.xMin||1,r=t.yMax-t.yMin||1,a=(o+r)/2/Math.max(1,Math.sqrt(n)),l=new Nn(t.xMin,t.xMax,t.yMin,t.yMax,a);i((u,m,f)=>l.insert(u,m,f)),this.an=l,this.ln=!1}query(t,n,i,o,r,s,a){return!this.an||!s||!a?-1:this.an.query(t,n,i,o,r,s,a)}clear(){this.an=null,this.ln=!0}}});function De(e,t,n=[]){let i=new Map;for(let r of e.keys()){if(r.startsWith("__"))continue;let s=r.lastIndexOf("|");if(s===-1)continue;let a=r.substring(0,s);i.has(a)||i.set(a,new Set),i.get(a).add(r)}let o=[];for(let[r,s]of i){let a=new Map,l=!0;for(let u of t){if(!u)continue;let m=`${r}|${u}`,f=e.get(m);if(!s.has(m)||!f?.values){l=!1;break}a.set(u,m)}if(l){for(let u of n){if(!u)continue;let m=`${r}|${u}`;s.has(m)&&e.get(m)?.values&&a.set(u,m)}o.push({prefix:r,colNames:a})}}return o}var Mt=I(()=>{"use strict"});var On,Vr=I(()=>{"use strict";On=class{constructor(t){d(this,"data");d(this,"dictionary",[]);d(this,"dictMap",new Map);this.data=new Int32Array(t),this.data.fill(-1)}set(t,n){let i=this.dictMap.get(n);return i===void 0&&(i=this.dictionary.length,this.dictionary.push(n),this.dictMap.set(n,i)),this.data[t]=i,i}get(t){let n=this.data[t];return n<0?null:this.dictionary[n]}}});function kl(e,t,n,i,o,r){let s=t?[t,n]:[n],a=[];return i&&a.push(i),o&&a.push(o),r&&a.push(r),De(e,s,a).map(l=>({prefix:l.prefix,xColName:t?l.colNames.get(t):"",yColName:l.colNames.get(n),colorColName:i?`${l.prefix}|${i}`:"",sizeColName:o?`${l.prefix}|${o}`:"",labelColName:r?`${l.prefix}|${r}`:""}))}function zr(e,t,n,i){e.glyph.ensureProgram(e,t);let o=e.r,r=e.Z;e.g.domain_mode==="expand"?(e.ye=e.Gn,e.yt=e.kn,e.Ae=e.Nn,e.xt=e.Un,e.f=e.On,e.l=e.Hn,e.et=e.Yn,e.tt=e.Vn):(e.ye=1/0,e.yt=-1/0,e.Ae=1/0,e.xt=-1/0,e.f=1/0,e.l=-1/0,e.et=1/0,e.tt=-1/0,e.Gn=1/0,e.kn=-1/0,e.Nn=1/0,e.Un=-1/0,e.On=1/0,e.Hn=-1/0,e.Yn=1/0,e.Vn=-1/0),e.M=NaN,e.S=NaN,e.Ct=0,e.Zt.clear(),e.yi=0;let a=e.E,l=a[0]||"",u=a[1]||"",m=a[2]||"",f=a[3]||"",b=a[4]||"";e.nt=l,e.it=u,e.oo=!l;let p=t.C.totalCapacity||i;if(e.w.length>0){if(e.v=kl(n,l,u,m,f,b),e.v.length===0){e.R=0,e.U=[];return}if(e._t=e.v[0].xColName,e.ot=e.v[0].yColName,e.r=m,e.q=f,e.zn=b,e.Z=!1,m){let g=n.get(e.v[0].colorColName);e.Z=g?.type==="string"}t.ensureBufferCapacity(p*e.v.length)}else if(e.v=[],e._t=l,e.ot=u,e.r=m,e.q=f,e.zn=b,e.Z=!1,e.r){let g=n.get(e.r);e.Z=g?.type==="string"}(e.r!==o||e.Z!==r)&&(e.a=new Map);let c=Math.max(1,e.v.length);e.R=p,e.U=new Array(c).fill(0);let h=c*p;e.O=new Float32Array(h),e.H=new Float32Array(h),e.vt=new Float32Array(h),e.Pt=new Int32Array(h),e.Wt=b?new On(h):null}function Xr(e,t,n,i,o,r){if(!e.ot)return;let s=o;if(s===0||e.R===0)return;let a=e.v.length>0,l=[];if(a)for(let c of e.v){let h=c.xColName?n.get(c.xColName):null,g=n.get(c.yColName);if(!g?.values)continue;let y=c.sizeColName?n.get(c.sizeColName):null,x=c.colorColName?n.get(c.colorColName)??null:null,C=c.labelColName?n.get(c.labelColName)??null:null;l.push({xCol:h?.values??null,yCol:g.values,xValid:h?.valid,yValid:g.valid,colorCol:x,sizeCol:y?.values??null,labelCol:C})}else{let c=e._t?n.get(e._t):null,h=e.ot?n.get(e.ot):null;if(!h?.values)return;let g=e.r?n.get(e.r)??null:null,y=e.zn?n.get(e.zn)??null:null;l.push({xCol:c?.values??null,yCol:h.values,xValid:c?.valid,yValid:h?.valid,colorCol:g,sizeCol:null,labelCol:y})}if(l.length===0)return;e.ro<s&&(e.xi=new Float32Array(s*2),e.Ci=new Float32Array(s),e._i=new Float32Array(s),e.ro=s);let u=e.xi,m=e.Ci,f=e._i,b=!a&&e.q?n.get(e.q)?.values??null:null;if(e.Z&&e.r){for(let c of l){let h=c.colorCol?.dictionary;if(h)for(let g=0;g<h.length;g++){let y=h[g];e.a.has(y)||e.a.set(y,e.a.size)}}e.a.size>0&&(e.f=0,e.l=e.a.size-1)}!e.r&&e.v.length>1&&(e.f=0,e.l=e.v.length-1);for(let c=0;c<l.length;c++){let h=l[c],g=e.U[c]??0,y=c*e.R,x=e.R-g;if(x<=0)continue;let C=h.colorCol?.valid,_=0;for(let R=0;R<s&&_<x;R++){let L=R;if(h.yValid&&!(h.yValid[L>>3]>>(L&7)&1)||h.xCol&&h.xValid&&!(h.xValid[L>>3]>>(L&7)&1))continue;let w=C!==void 0&&!(C[L>>3]>>(L&7)&1),F=h.yCol[L],G=h.xCol?h.xCol[L]:i+L;if(isNaN(G)||isNaN(F))continue;let[D,B]=e.projectPoint(G,F);if(isNaN(D)||isNaN(B))continue;D<e.ye&&(e.ye=D),D>e.yt&&(e.yt=D),B<e.Ae&&(e.Ae=B),B>e.xt&&(e.xt=B),isNaN(e.M)&&(e.M=D),isNaN(e.S)&&(e.S=B);let P=D-e.M,M=B-e.S,k=y+g+_;e.O[k]=P,e.H[k]=M,e.Pt[k]=i+L,u[_*2]=P,u[_*2+1]=M;let N=h.colorCol;if(w)m[_]=.5,e.vt[k]=.5;else if(N&&!e.Z&&N.values){let W=N.values[L];m[_]=W,e.vt[k]=W,W<e.f&&(e.f=W),W>e.l&&(e.l=W)}else if(N&&e.Z&&N.indices&&N.dictionary){let W=N.dictionary[N.indices[L]];e.a.has(W)||(e.a.set(W,e.a.size),e.l=e.a.size-1);let J=e.a.get(W);m[_]=J,e.vt[k]=J}else m[_]=c,e.vt[k]=c;if(e.Wt&&h.labelCol){let W=h.labelCol,J=W.valid;!(J!==void 0&&!(J[L>>3]>>(L&7)&1))&&W.indices&&W.dictionary&&e.Wt.set(k,W.dictionary[W.indices[L]])}if(h.sizeCol){let W=h.sizeCol[L];f[_]=W,W<e.et&&(e.et=W),W>e.tt&&(e.tt=W)}else if(b){let W=b[L];f[_]=W,W<e.et&&(e.et=W),W>e.tt&&(e.tt=W)}else f[_]=0;_++}if(_===0)continue;let v=(y+g)*2*Float32Array.BYTES_PER_ELEMENT;t.C.upload("a_position",u.subarray(0,_*2),v,2);let A=(y+g)*Float32Array.BYTES_PER_ELEMENT;t.C.upload("a_color_value",m.subarray(0,_),A),t.C.upload("a_size_value",f.subarray(0,_),A),e.U[c]=g+_,e.U[c]>e.yi&&(e.yi=e.U[c])}let p=0;for(let c of e.U)p+=c;e.Ct=p,t.uploadedCount=p,e.Zt.markDirty(),isFinite(e.ye)&&e.setZoomBaseDomain(e.ye,e.yt,e.Ae,e.xt)}var $r=I(()=>{"use strict";Mt();Vr()});function Hn(e,t,n,i,o){let r=e.getContext("2d");r&&(r.save(),r.setTransform(1,0,0,1,0,0),r.scale(o,o),r.font=`11px ${i.fontFamily}`,r.fillStyle=i.ge,r.textAlign="center",r.textBaseline="middle",r.fillText(t,n.x+n.width/2,n.y+n.height/2),r.restore())}var ao=I(()=>{"use strict"});var j,Ae=I(()=>{"use strict";j=class{constructor(t,n,i){d(this,"margins");d(this,"t");d(this,"cssWidth");d(this,"cssHeight");d(this,"J",0);d(this,"se",1);d(this,"ee",0);d(this,"ae",1);this.cssWidth=t,this.cssHeight=n;let r=(i.leftExtra??55)+(i.hasYLabel?16:0),a=(i.bottomExtra??24)+(i.hasXLabel?18:0),l=0,u=i.rightExtra??(i.hasLegend?80:16),m=i.originX??0,f=i.originY??0,b=i.cellWidth??t,p=i.cellHeight??n,c=m+r,h=f+l,g=Math.max(1,b-r-u),y=Math.max(1,p-l-a),x=t-(c+g),C=n-(h+y);this.margins={top:h,right:x,bottom:C,left:c},this.t={x:c,y:h,width:g,height:y}}buildProjectionMatrix(t,n,i,o,r,s,a=.02,l=0,u=0){let m=n-t,f=o-i;m===0&&(m=1),f===0&&(f=1);let b=m*a,p=f*a,c=s&&r==="y"&&i>=0,h=s&&r==="y"&&o<=0,g=s&&r==="x"&&t>=0,y=s&&r==="x"&&n<=0;t-=b,n+=b,i-=p,o+=p,c?(i=0,o+=p):h&&(o=0,i-=p),g?(t=0,n+=b):y&&(n=0,t-=b),this.J=t,this.se=n,this.ee=i,this.ae=o;let x=2*this.margins.left/this.cssWidth-1,C=1-2*this.margins.right/this.cssWidth,_=2*this.margins.bottom/this.cssHeight-1,v=1-2*this.margins.top/this.cssHeight,A=(C-x)/(n-t),R=(v-_)/(o-i),L=x-A*(t-l),w=_-R*(i-u);return new Float32Array([A,0,0,0,0,R,0,0,0,0,-1,0,L,w,0,1])}G(t,n){let{x:i,y:o,width:r,height:s}=this.t,a=(t-this.J)/(this.se-this.J),l=(n-this.ee)/(this.ae-this.ee);return{px:i+a*r,py:o+(1-l)*s}}}});function jr(e){return e.cells.filter(t=>t.isBottomEdge).map(t=>t.layout)}function Zr(e){return e.cells.filter(t=>t.isLeftEdge).map(t=>t.layout)}function zl(e,t,n,i){if(e<=1)return{cols:1,rows:1};let o=1,r=e,s=1/0,a=e;for(let l=1;l<=e;l++){let u=Math.ceil(e/l),m=Math.max(1,(t-(l-1)*i)/l),f=Math.max(1,(n-(u-1)*i)/u),b=m/f,p=Math.max(b,1/b),c=l*u;(p<s||p===s&&c<a)&&(o=l,r=u,s=p,a=c)}return{cols:o,rows:r}}function Ie(e,t){let n=e.length,{cssWidth:i,cssHeight:o}=t;if(n<=0||i<=0||o<=0)return{cells:[]};let r=t.titleBand??Yl,s=t.hasLegend?Vl:0,a=t.xAxis??"cell",l=t.yAxis??"cell",u=a==="none"&&l==="none",m=l==="outer"?Nl+(t.hasYLabel?Ol:0):0,f=a==="outer"?Ul+(t.hasXLabel?Hl:0):0,b=0,p=s,c=m,h=b,g=Math.max(1,i-m-p),y=Math.max(1,o-b-f),x=Math.max(0,t.gap??0),{cols:C,rows:_}=zl(n,g,y,x),v=Math.max(0,C-1)*x,A=Math.max(0,_-1)*x,R=Math.max(1,(g-v)/C),L=Math.max(1,(y-A)/_),w=[];for(let B=0;B<n;B++){let P=Math.floor(B/C),M=B-P*C,k=P===_-1||B+C>=n,N=M===0,W=c+M*(R+x),J=h+P*(L+x),U=J+r,O=W,ne=R,fe=Math.max(1,L-r),ce=new j(i,o,{hasXLabel:a==="cell"&&t.hasXLabel===!0,hasYLabel:l==="cell"&&t.hasYLabel===!0,hasLegend:!1,leftExtra:l==="cell"?void 0:0,bottomExtra:a==="cell"?void 0:0,rightExtra:u?0:void 0,originX:O,originY:U,cellWidth:ne,cellHeight:fe}),de=r>0?{x:O,y:J,width:ne,height:r}:void 0;w.push({index:B,label:e[B],layout:ce,titleRect:de,isLeftEdge:N,isBottomEdge:k})}let F=t.hasLegend?{x:c+g,y:b,width:s,height:y}:void 0,G=a==="outer"?{x:c,y:h+y,width:g,height:f}:void 0;return{cells:w,legendRect:F,outerXAxisRect:G,outerYAxisRect:l==="outer"?{x:0,y:h,width:m,height:y}:void 0}}var Nl,Ul,Ol,Hl,Yl,Vl,St=I(()=>{"use strict";Ae();Nl=55,Ul=24,Ol=16,Hl=18,Yl=18,Vl=96});function Xl(e,t){if(t<=0)return[];let n=new Array(t);for(let i=0;i<t;i++){let o=t===1?.5:i/(t-1),r=be(e,o);n[i]=[r[0],r[1],r[2]]}return n}function re(e,t,n){if(e.length>0){if(e.length>=n)return e.slice(0,n);let i=new Array(n);for(let o=0;o<n;o++)i[o]=e[o%e.length];return i}return Xl(t,n)}var Bt=I(()=>{"use strict";ve()});function Dt(e){e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.enable(e.BLEND),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA)}function It(e,t,n,i){e.enable(e.SCISSOR_TEST),e.scissor(Math.round(t.margins.left*n),Math.round(t.margins.bottom*n),Math.round(t.t.width*n),Math.round(t.t.height*n));try{i()}finally{e.disable(e.SCISSOR_TEST)}}function Ee(e,t,n,i){Dt(e),It(e,t,n,i)}var Et=I(()=>{"use strict"});function Pt(e,t,n){let i=e.gl,o;if(t?.texture){if(o=t.texture,t.lastStops===n)return t}else o=i.createTexture();let r=Er(n,qr);return i.bindTexture(i.TEXTURE_2D,o),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,qr,1,0,i.RGBA,i.UNSIGNED_BYTE,r),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),{texture:o,lastStops:n}}function Le(e,t,n,i=0){let o=e.gl;o.activeTexture(o.TEXTURE0+i),o.bindTexture(o.TEXTURE_2D,t),o.uniform1i(n,i)}var qr,tt=I(()=>{"use strict";ve();qr=256});function ae(e,t,n){e.width=Math.round(t.cssWidth*n),e.height=Math.round(t.cssHeight*n);let i=e.getContext("2d");return i?(i.scale(n,n),i.clearRect(0,0,t.cssWidth,t.cssHeight),i):null}function ge(e,t){let n=e.getContext("2d");return n?(n.setTransform(t,0,0,t,0,0),n):null}var nt=I(()=>{"use strict"});function Yn(e,t,n,i,o,r,s){let a=o==="bottom"?1:-1;e.textAlign="center",e.textBaseline=o==="bottom"?"top":"bottom";let l=a*8;for(let u of n){let m=r(u);m<t.x-1||m>t.x+t.width+1||(e.beginPath(),e.moveTo(m,i),e.lineTo(m,i+a*5),e.stroke(),e.fillText(s(u),m,i+l))}}function Vn(e,t,n,i,o,r,s){let a=o==="left"?-1:1;e.textAlign=o==="left"?"right":"left",e.textBaseline="middle";let l=a*8;for(let u of n){let m=r(u);m<t.y-1||m>t.y+t.height+1||(e.beginPath(),e.moveTo(i,m),e.lineTo(i+a*5,m),e.stroke(),e.fillText(s(u),i+l,m))}}function zn(e,t,n,i){for(let o of n){let r=Math.round(i(o))+.5;r<t.x||r>t.x+t.width||(e.beginPath(),e.moveTo(r,t.y),e.lineTo(r,t.y+t.height),e.stroke())}}function Xn(e,t,n,i){for(let o of n){let r=Math.round(i(o))+.5;r<t.y||r>t.y+t.height||(e.beginPath(),e.moveTo(t.x,r),e.lineTo(t.x+t.width,r),e.stroke())}}var lo=I(()=>{"use strict"});function it(e,t,n){let{t:i}=n,o=Math.max(2,Math.floor(i.width/90)),r=Math.max(2,Math.floor(i.height/60));return{xTicks:te(e.min,e.max,o),yTicks:te(t.min,t.max,r)}}function uo(e,t,n,i,o,r){let s=ge(e,r);if(!s)return;let{t:a}=t;s.strokeStyle=o.Bn,s.lineWidth=1,zn(s,a,n,l=>t.G(l,0).px),Xn(s,a,i,l=>t.G(0,l).py)}function Kr(e,t,n){if(n)return n;let i=t.length>1?t[1]-t[0]:0;return e.isDate?o=>le(o,i):ie}function Jr(e,t,n,i,o,r,s,a,l){let{Dt:u,ge:m,fi:f,fontFamily:b}=s,p=Kr(t,n,l);e.strokeStyle=f,e.lineWidth=1,e.beginPath(),e.moveTo(r.x,o),e.lineTo(r.x+r.width,o),e.stroke(),e.fillStyle=u,e.strokeStyle=u,e.font=`11px ${b}`;for(let c of i)Yn(e,c.t,n,o,"bottom",h=>c.G(h,0).px,p);a&&t.label&&(e.fillStyle=m,e.font=`13px ${b}`,e.textAlign="center",e.textBaseline="bottom",e.fillText(t.label,a.cx,a.baselineY))}function Qr(e,t,n,i,o,r,s,a,l){let{Dt:u,ge:m,fi:f,fontFamily:b}=s,p=Kr(t,n,l);e.strokeStyle=f,e.lineWidth=1,e.beginPath(),e.moveTo(o,r.y),e.lineTo(o,r.y+r.height),e.stroke(),e.fillStyle=u,e.strokeStyle=u,e.font=`11px ${b}`;for(let c of i)Vn(e,c.t,n,o,"left",h=>c.G(0,h).py,p);a&&t.label&&(e.fillStyle=m,e.font=`13px ${b}`,e.save(),e.translate(14,a.pivotY),e.rotate(-Math.PI/2),e.textAlign="center",e.textBaseline="bottom",e.fillText(t.label,0,0),e.restore())}function mo(e,t,n,i,o,r,s,a){let l=ge(e,s);if(!l)return;let{t:u}=n;Jr(l,t,i,[n],u.y+u.height,u,o,r?{cx:u.x+u.width/2,baselineY:n.cssHeight-2}:null,a)}function fo(e,t,n,i,o,r,s,a){let l=ge(e,s);if(!l)return;let{t:u}=n;Qr(l,t,i,[n],u.x,u,o,r?{pivotY:u.y+u.height/2}:null,a)}function es(e,t,n,i,o,r,s,a,l,u){fo(e,n,i,r,s,!0,a,u),mo(e,t,i,o,s,!0,a,l)}function ts(e,t,n,i,o,r,s,a,l){let u=ge(e,a);u&&Jr(u,n,i,o,t.y,t,r,s?{cx:t.x+t.width/2,baselineY:t.y+t.height-2}:null,l)}function ns(e,t,n,i,o,r,s,a,l){let u=ge(e,a);u&&Qr(u,n,i,o,t.x+t.width,t,r,s?{pivotY:t.y+t.height/2}:null,l)}var is=I(()=>{"use strict";pe();nt();lo()});function $l(e){return`rgb(${Math.round(e[0]*255)},${Math.round(e[1]*255)},${Math.round(e[2]*255)})`}function Te(e,t,n,i,o,r){let s={x:t.t.x+t.t.width+12,y:t.margins.top+20,width:Math.max(1,t.cssWidth-t.t.x-t.t.width-12),height:Math.max(1,t.t.height)};Wt(e,s,n,i,o,r)}function Wt(e,t,n,i,o,r=ie){let s=e.getContext("2d");if(!s)return;let a=o.ci,l=o.Ro,u=o.fontFamily,m=16,f=Math.min(120,t.height*.4),b=t.x,p=t.y;s.fillStyle=a,s.font=`9px ${u}`,s.textAlign="left",s.textBaseline="bottom",s.fillText(n.label,b,p-4);let c=n.max,h=n.min,g=s.createLinearGradient(0,p,0,p+f),y=16;for(let C=0;C<=y;C++){let _=C/y,v=c+_*(h-c),A=Xe(v,n.min,n.max),R=be(i,A);g.addColorStop(_,$l(R))}s.fillStyle=g,s.fillRect(b,p,m,f),s.strokeStyle=l,s.lineWidth=1,s.strokeRect(b,p,m,f),s.fillStyle=a,s.font=`10px ${u}`,s.textAlign="left",s.textBaseline="middle";let x=b+m+5;if(s.fillText(r(n.max),x,p+2),s.fillText(r((n.min+n.max)/2),x,p+f/2),s.fillText(r(n.min),x,p+f-2),n.min<0&&n.max>0){let C=(n.max-0)/(n.max-n.min),_=p+C*f;s.strokeStyle=a,s.lineWidth=1,s.beginPath(),s.moveTo(b+m,_),s.lineTo(b+m+4,_),s.stroke(),s.fillStyle=a,s.fillText("0",x,_)}}function ot(e,t,n,i,o){let r={x:t.t.x+t.t.width+12,y:t.margins.top+10,width:Math.max(1,t.cssWidth-t.t.x-t.t.width-12),height:Math.max(1,t.t.height)};Gt(e,r,n,i,o)}function Gt(e,t,n,i,o){let r=e.getContext("2d");if(!r||n.size===0)return;let s=o.ci,a=o.fontFamily,l=10,u=18,m=t.x,f=t.y+u/2;r.font=`11px ${a}`,r.textAlign="left",r.textBaseline="middle";for(let[b,p]of n){if(f+l/2>t.y+t.height)break;let c=i[p]??i[p%i.length]??[0,0,0];r.fillStyle=`rgb(${Math.round(c[0]*255)},${Math.round(c[1]*255)},${Math.round(c[2]*255)})`,r.fillRect(m,f-l/2,l,l),r.fillStyle=s,r.fillText(b,m+l+6,f),f+=u}}var rt=I(()=>{"use strict";pe();ve()});function Pe(e){return isNaN(e)?0:e}function os(e,t){let n=t.gl,i=t.dpr,o=n.canvas.width/i,r=n.canvas.height/i;if(o<=0||r<=0)return;let s=e.v.length>0,a=e.P.facet_mode,l=s&&a==="grid";e.computeEffectiveFacetFlags();let u=e.r!==""&&e.f<e.l,m=l&&e.P.zoom_mode==="independent",f;if(e.h&&!m?f=e.h.getVisibleDomain():f={xMin:e.ye,xMax:e.yt,yMin:e.Ae,yMax:e.xt},!isFinite(f.xMin)||!isFinite(f.yMin))return;let b=e.T(),p=b.Se,c=e.Je[e.nt]||"",h=e.Je[e.it]||"",g=c==="date"||c==="datetime",y=h==="date"||h==="datetime",x=e.Z,C=!x&&!e.r,_=b.V;if(x||C){let v=C?Math.max(1,e.v.length):Math.max(1,e.a.size);if(e.Xn&&e.vi===p&&e.Ai===v)_=e.Xn;else{let A=re(p,b.V,v);_=Ir(A),e.Xn=_,e.vi=p,e.Ai=v}}else e.Xn=null,e.vi=null,e.Ai=-1;e.te=Pt(t,e.te,_),l?Zl(e,t,f,b,{xIsDate:g,yIsDate:y,cssWidth:o,cssHeight:r}):(e.A=null,jl(e,t,f,b,{xIsDate:g,yIsDate:y,cssWidth:o,cssHeight:r,hasColorCol:u})),We(e)}function $n(e,t,n,i){return{min:t,max:n,label:e.nt||(e.oo?"Row":e._t||""),isDate:i}}function jn(e,t,n,i){return{min:t,max:n,label:e.it||e.ot,isDate:i}}function jl(e,t,n,i,o){let r=t.gl,{cssWidth:s,cssHeight:a,xIsDate:l,yIsDate:u,hasColorCol:m}=o,f=new j(s,a,{hasXLabel:!!e.nt,hasYLabel:!!e.it,hasLegend:m});e.u=f,e.h&&e.h.updateLayout(f);let b=f.buildProjectionMatrix(n.xMin,n.xMax,n.yMin,n.yMax,void 0,void 0,void 0,Pe(e.M),Pe(e.S)),p=$n(e,n.xMin,n.xMax,l),c=jn(e,n.yMin,n.yMax,u),{xTicks:h,yTicks:g}=it(p,c,f),y=e.un==="map";if(e.I&&!y){let x=t.dpr;ae(e.I,f,x),uo(e.I,f,h,g,i,x)}else e.I&&y&&ae(e.I,f,t.dpr);Ee(r,f,t.dpr,()=>{y&&e.renderBackground(t,f,b,n,Pe(e.M),Pe(e.S)),e.glyph.draw(e,t,b)}),e.Le=p,e.Te=c,e.$n=h,e.Be=g,e.jn=i.V,e.Zn=m}function Zl(e,t,n,i,o){let r=t.gl,{cssWidth:s,cssHeight:a,xIsDate:l,yIsDate:u}=o,m=e.v.map(v=>v.prefix),f=e.Z&&e.a.size>1,b=!!e.r&&!e.Z&&e.f<e.l,p=f||b,c=Ie(m,{cssWidth:s,cssHeight:a,xAxis:e.Dn?"outer":"cell",yAxis:e.In?"outer":"cell",hasLegend:p,hasXLabel:!!e.nt,hasYLabel:!!e.it,gap:e.P.facet_padding});if(e.A=c,c.cells.length>1){let v=c.cells[0].layout.t;for(let A=1;A<c.cells.length;A++){let R=c.cells[A].layout.t;if(R.width!==v.width||R.height!==v.height){console.warn(`facet-grid: cell ${A} size (${R.width}\\xD7${R.height}) differs from cell 0 (${v.width}\\xD7${v.height})`);break}}}e.u=c.cells[0]?.layout??null,e.syncFacetZoomLayouts(c.cells);let h=e.P.zoom_mode==="independent",g=$n(e,n.xMin,n.xMax,l),y=jn(e,n.yMin,n.yMax,u),x=c.cells[0]?.layout,{xTicks:C,yTicks:_}=x?it(g,y,x):{xTicks:[],yTicks:[]};e.I&&x&&ae(e.I,x,t.dpr),Dt(r);for(let v=0;v<c.cells.length;v++){let A=c.cells[v],R=e.getZoomControllerForFacet(v),L=h&&R?R.getVisibleDomain():n,w=A.layout.buildProjectionMatrix(L.xMin,L.xMax,L.yMin,L.yMax,void 0,void 0,void 0,Pe(e.M),Pe(e.S)),F=e.un==="map";if(e.I&&!F){let G=h?it($n(e,L.xMin,L.xMax,l),jn(e,L.yMin,L.yMax,u),A.layout).xTicks:C,D=h?it($n(e,L.xMin,L.xMax,l),jn(e,L.yMin,L.yMax,u),A.layout).yTicks:_;uo(e.I,A.layout,G,D,i,t.dpr)}It(r,A.layout,t.dpr,()=>{F&&e.renderBackground(t,A.layout,w,L,Pe(e.M),Pe(e.S)),e.glyph.drawSeries(e,t,w,v)})}e.Le=g,e.Te=y,e.$n=C,e.Be=_,e.jn=i.V,e.Zn=p}function We(e){!e.d||!e.u||!e.Le||!e.Te||!e.e||(ae(e.d,e.u,e.e.dpr),e.A?Kl(e):ql(e))}function ql(e){let t=e.u,n=e.T(),i=e.e?.dpr??1;if(e.un==="map"?e.renderMapChrome(e.d,t,n,i):es(e.d,e.Le,e.Te,t,e.$n,e.Be,n,i,e.getColumnFormatter(e._t,"tick"),e.getColumnFormatter(e.ot,"tick")),e.Zn){let r=e.jn??n.V;if(e.Z&&e.a.size>0){let s=re(n.Se,r,e.a.size);ot(e.d,t,e.a,s,n)}else e.r&&Te(e.d,t,{min:e.f,max:e.l,label:e.r},r,n,e.getColumnFormatter(e.r,"value"))}rs(e,e.d,t,0,1),e.le>=0&&e.O&&e.H&&eu(e,e.d,t)}function Kl(e){let t=e.A,n=e.d,i=e.T(),o=e.e?.dpr??1,r=e.$n,s=e.Be,a=e.Le,l=e.Te,u=e.un==="map",m=e.Dn,f=e.In,b=e.P.zoom_mode==="independent";u&&e.renderMapChrome(n,e.u,i,o),!u&&m&&t.outerXAxisRect&&ts(n,t.outerXAxisRect,a,r,jr(t),i,!!e.nt,o,e.getColumnFormatter(e._t,"tick")),!u&&f&&t.outerYAxisRect&&ns(n,t.outerYAxisRect,l,s,Zr(t),i,!!e.it,o,e.getColumnFormatter(e.ot,"tick"));for(let p=0;p<t.cells.length;p++){let c=t.cells[p],h=b?e.getZoomControllerForFacet(p):null,g=h?h.getVisibleDomain():null,y=g?{...a,min:g.xMin,max:g.xMax}:a,x=g?{...l,min:g.yMin,max:g.yMax}:l,C=b?it(y,x,c.layout):{xTicks:r,yTicks:s};!u&&!m&&mo(n,y,c.layout,C.xTicks,i,!!e.nt,o,e.getColumnFormatter(e._t,"tick")),!u&&!f&&fo(n,x,c.layout,C.yTicks,i,!!e.it,o,e.getColumnFormatter(e.ot,"tick")),c.titleRect&&Hn(n,c.label,c.titleRect,i,o),rs(e,n,c.layout,p,p+1)}if(e.Zn&&t.legendRect){let p=e.jn??i.V;if(e.Z&&e.a.size>0){let c=re(i.Se,p,Math.max(1,e.a.size));Gt(n,t.legendRect,e.a,c,i)}else e.r&&Wt(n,{x:t.legendRect.x,y:t.legendRect.y+20,width:t.legendRect.width,height:t.legendRect.height-20},{min:e.f,max:e.l,label:e.r},p,i,e.getColumnFormatter(e.r,"value"))}if(e.le>=0&&e.O&&e.H){let p=isNaN(e.M)?0:e.M,c=isNaN(e.S)?0:e.S,h=e.O[e.le]+p,g=e.H[e.le]+c,y=Jl(e,e.le),x=e.glyph.tooltipOptions(),C=e.k.lines??[];for(let _=0;_<t.cells.length;_++){let v=t.cells[_],A=_===y,R=v.layout.G(h,g),L=v.layout.t;if(R.px<L.x||R.px>L.x+L.width||R.py<L.y||R.py>L.y+L.height)continue;let w=e.P.coordinated_tooltip;_e(n,R,A||w?C:[],v.layout,i,o,{crosshair:x.crosshair,highlightRadius:A?x.highlightRadius:0})}}}function Jl(e,t){return e.R<=0?0:Math.floor(t/e.R)}function rs(e,t,n,i,o){if(!e.Wt||!e.O||!e.H)return;let r=e.Wt.dictionary,s=e.Wt.data,a=e.O,l=e.H,u=isNaN(e.M)?0:e.M,m=isNaN(e.S)?0:e.S,f=e.R;if(f<=0)return;let b=0;for(let x=i;x<o;x++)b+=e.U[x]??0;if(b===0)return;let p=e.e?.dpr??1,c=ge(t,p);if(!c)return;let h=e.T(),g=n.t,y=Math.max(1,Math.ceil(b/Ql));c.save(),c.font=`11px ${h.fontFamily}`,c.fillStyle=h.ge,c.textAlign="left",c.textBaseline="middle";for(let x=i;x<o;x++){let C=e.U[x]??0,_=x*f;for(let v=0;v<C;v+=y){let A=_+v,R=s[A];if(R<0)continue;let{px:L,py:w}=n.G(a[A]+u,l[A]+m);L<g.x||L>g.x+g.width||w<g.y||w>g.y+g.height||c.fillText(r[R],L+8,w-4)}}c.restore()}function eu(e,t,n){let i=e.le;if(i<0||!e.O||!e.H)return;let o=isNaN(e.M)?0:e.M,r=isNaN(e.S)?0:e.S,s=n.G(e.O[i]+o,e.H[i]+r),a=e.k.lines??[],l=e.T();_e(t,s,a,n,l,e.e?.dpr??1,e.glyph.tooltipOptions())}var Ql,co=I(()=>{"use strict";ao();Ae();St();Bt();ve();Et();tt();et();is();nt();rt();Ql=5e3});function tu(e){if(!e.Zt.isDirty||!e.O||!e.H)return;let t=e.O,n=e.H,i=Math.max(1,e.v.length),o=e.R,r=isNaN(e.M)?0:e.M,s=isNaN(e.S)?0:e.S;e.Zt.rebuild({xMin:e.ye-r,xMax:e.yt-r,yMin:e.Ae-s,yMax:e.xt-s},e.Ct,a=>{for(let l=0;l<i;l++){let u=e.U[l]??0,m=l*o;for(let f=0;f<u;f++)a(m+f,t[m+f],n[m+f])}})}function po(e,t,n){if(!e.O||!e.H)return;let{layout:i,facetIdx:o}=nu(e,t,n);if(!i){ss(e);return}let r=i.t;if(t<r.x||t>r.x+r.width||n<r.y||n>r.y+r.height){ss(e);return}let s=i.J,a=i.se,l=i.ee,u=i.ae,m=s+(t-r.x)/r.width*(a-s),f=u-(n-r.y)/r.height*(u-l),b=r.width/(a-s),p=r.height/(u-l),c=isNaN(e.M)?0:e.M,h=isNaN(e.S)?0:e.S,g=m-c,y=f-h,x=o<0?iu(e,g,y,b,p):ou(e,o,g,y,b,p);if(x!==e.le||o!==e.mn){if(e.le=x,e.mn=o,x>=0){let C=e.k.beginHover(x);e.glyph.buildTooltipLines(e,x).then(_=>{e.k.commitHover(C,_)&&We(e)})}else e.k.clearHover();We(e)}}function ss(e){(e.le!==-1||e.mn!==-1)&&(e.le=-1,e.mn=-1,We(e))}function nu(e,t,n){if(e.A){let i=e.A.cells;for(let o=0;o<i.length;o++){let r=i[o].layout.t;if(t>=r.x&&t<=r.x+r.width&&n>=r.y&&n<=r.y+r.height)return{layout:i[o].layout,facetIdx:o}}return{layout:null,facetIdx:-1}}return{layout:e.u,facetIdx:-1}}function iu(e,t,n,i,o){tu(e);let r=e.Zt.query(t,n,kt,i,o,e.O,e.H);if(r>=0)return r;let s=kt*kt,a=Math.max(1,e.v.length),l=e.R,u=e.O,m=e.H;for(let f=0;f<a;f++){let b=e.U[f]??0,p=f*l;for(let c=0;c<b;c++){let h=p+c,g=(u[h]-t)*i,y=(m[h]-n)*o,x=g*g+y*y;x<s&&(s=x,r=h)}}return r}function ou(e,t,n,i,o,r){let s=e.U[t]??0;if(s===0)return-1;let a=e.R,l=t*a,u=e.O,m=e.H,f=kt*kt,b=-1;for(let p=0;p<s;p++){let c=l+p,h=(u[c]-n)*o,g=(m[c]-i)*r,y=h*h+g*g;y<f&&(f=y,b=c)}return b}function as(e,t){if(e._.dismiss(),e.Li=t,t<0||!e.O||!e.H)return;let n=ru(e,t);if(!n)return;let i=isNaN(e.M)?0:e.M,o=isNaN(e.S)?0:e.S,r=n.G(e.O[t]+i,e.H[t]+o),s=e.k.beginPin();e.glyph.buildTooltipLines(e,t).then(a=>{e.k.isPinFresh(s)&&e.Li===t&&a.length!==0&&e._.pin(a,r,n)}),e.le=-1,e.mn=-1,We(e)}function ru(e,t){if(e.A&&e.R>0){let n=Math.floor(t/e.R),i=e.A.cells[n];if(i)return i.layout}return e.u}function ls(e){e._.dismiss(),e.Li=-1}var kt,us=I(()=>{"use strict";co();kt=24});var st,bo=I(()=>{"use strict";st=class{constructor(){d(this,"lines",null);d(this,"hoveredTarget",null);d(this,"Ti",0);d(this,"wi",0)}beginHover(t){return this.lines=null,this.hoveredTarget=t,++this.Ti}commitHover(t,n){return t!==this.Ti?!1:(this.lines=n,!0)}clearHover(){this.lines=null,this.hoveredTarget=null,this.Ti++}beginPin(){return++this.wi}isPinFresh(t){return t===this.wi}invalidatePin(){this.wi++}}});async function Zn(e,t){let n=[];if(!e.Pt||!e.ce)return n;let i=e.Pt[t];if(i<0)return n;if(e.v.length>0&&e.R>0){let s=Math.floor(t/e.R),a=e.v[s];a?.prefix&&n.push(a.prefix)}let o=await e.ce.fetchRow(i),r=e.v.length>0&&e.R>0?e.v[Math.floor(t/e.R)]?.prefix??null:null;for(let[s,a]of o){if(a==null)continue;let l=s;if(r!==null){let u=`${r}|`;if(!s.startsWith(u))continue;l=s.substring(u.length)}else if(s.includes("|"))continue;if(typeof a=="number"){let u=e.getColumnFormatter(s,"value")(a);n.push(`${l}: ${u}`)}else n.push(`${l}: ${a}`)}return n}var ho=I(()=>{"use strict"});function su(e,t,n,i,o){t.uniformMatrix4fv(e.u_projection,!1,n),t.uniform1f(e.u_point_size,i.g.point_size_px*o),i.f<i.l?t.uniform2f(e.u_color_range,i.f,i.l):t.uniform2f(e.u_color_range,0,0),i.et<i.tt?t.uniform2f(e.u_size_range,i.et,i.tt):t.uniform2f(e.u_size_range,0,0);let r=Math.min(i.g.point_size_px,3);t.uniform2f(e.u_point_size_range,Math.max(2*o,i.g.point_size_px/r*o),i.g.point_size_px*r*o)}function ms(e,t,n,i){let o=n.gl;if(!t.te)return!1;o.useProgram(e.program),su(e,o,i,t,n.dpr),Le(n,t.te.texture,e.u_gradient_lut,0);let r=n.C.peek("a_position"),s=n.C.peek("a_color_value"),a=n.C.peek("a_size_value");return!r||!s||!a?!1:(o.bindBuffer(o.ARRAY_BUFFER,r.buffer),o.enableVertexAttribArray(e.a_position),o.vertexAttribPointer(e.a_position,2,o.FLOAT,!1,0,0),o.bindBuffer(o.ARRAY_BUFFER,s.buffer),o.enableVertexAttribArray(e.a_color_value),o.vertexAttribPointer(e.a_color_value,1,o.FLOAT,!1,0,0),o.bindBuffer(o.ARRAY_BUFFER,a.buffer),o.enableVertexAttribArray(e.a_size_value),o.vertexAttribPointer(e.a_size_value,1,o.FLOAT,!1,0,0),!0)}var at,go=I(()=>{"use strict";tt();ho();$i();ji();at=class{constructor(){d(this,"name","point");d(this,"c",null)}ensureProgram(t,n){if(this.c)return;let i=n.gl,o=n.shaders.getOrCreate("scatter",fn,cn);this.c={program:o,u_projection:i.getUniformLocation(o,"u_projection"),u_point_size:i.getUniformLocation(o,"u_point_size"),u_color_range:i.getUniformLocation(o,"u_color_range"),u_gradient_lut:i.getUniformLocation(o,"u_gradient_lut"),u_size_range:i.getUniformLocation(o,"u_size_range"),u_point_size_range:i.getUniformLocation(o,"u_point_size_range"),a_position:i.getAttribLocation(o,"a_position"),a_color_value:i.getAttribLocation(o,"a_color_value"),a_size_value:i.getAttribLocation(o,"a_size_value")}}draw(t,n,i){let o=this.c;if(!o||!ms(o,t,n,i))return;let r=n.gl,s=Math.max(1,t.v.length),a=t.R;for(let l=0;l<s;l++){let u=t.U[l]??0;u<=0||r.drawArrays(r.POINTS,l*a,u)}}drawSeries(t,n,i,o){let r=this.c;if(!r||!ms(r,t,n,i))return;let s=t.U[o]??0;if(s<=0)return;let a=n.gl,l=t.R;a.drawArrays(a.POINTS,o*l,s)}buildTooltipLines(t,n){return Zn(t,n)}tooltipOptions(){return{crosshair:!0,highlightRadius:6}}destroy(t){this.c=null}}});function K(e){let t=e.gl;if(e.isWebGL2){let i=t;return{setDivisor(o,r){o<0||i.vertexAttribDivisor(o,r)},drawArraysInstanced(o,r,s,a){i.drawArraysInstanced(o,r,s,a)}}}let n=t.getExtension("ANGLE_instanced_arrays");return{setDivisor(i,o){i<0||n?.vertexAttribDivisorANGLE(i,o)},drawArraysInstanced(i,o,r,s){n?.drawArraysInstancedANGLE(i,o,r,s)}}}function Ge(e){let t=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,1,2,3]),e.STATIC_DRAW),t}function fs(e){let t=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,1,1]),e.STATIC_DRAW),t}function ke(e,t,n,i,o){if(n<0)return!0;let r=e.C.peek(i);if(!r)return!1;let s=e.gl;return s.bindBuffer(s.ARRAY_BUFFER,r.buffer),s.enableVertexAttribArray(n),s.vertexAttribPointer(n,o,s.FLOAT,!1,0,0),t.setDivisor(n,1),!0}var we=I(()=>{"use strict"});function cs(e,t,n,i){let o=n.gl;if(!t.te)return!1;let r=n.dpr;o.useProgram(e.program),o.uniformMatrix4fv(e.u_projection,!1,i),o.uniform2f(e.u_resolution,o.canvas.width,o.canvas.height),o.uniform1f(e.u_line_width,t.g.line_width_px*r),t.f<t.l?o.uniform2f(e.u_color_range,t.f,t.l):o.uniform2f(e.u_color_range,0,0),Le(n,t.te.texture,e.u_gradient_lut,0);let s=K(n),{setDivisor:a}=s;return o.bindBuffer(o.ARRAY_BUFFER,e.cornerBuffer),o.enableVertexAttribArray(e.a_corner),o.vertexAttribPointer(e.a_corner,1,o.FLOAT,!1,0,0),a(e.a_corner,0),o.enableVertexAttribArray(e.a_start),a(e.a_start,1),o.enableVertexAttribArray(e.a_end),a(e.a_end,1),o.enableVertexAttribArray(e.a_color_start),a(e.a_color_start,1),o.enableVertexAttribArray(e.a_color_end),a(e.a_color_end,1),!0}function ds(e,t,n,i){let o=t.U[i]??0;if(o<2)return;let r=n.gl,s=t.R,a=2*Float32Array.BYTES_PER_ELEMENT,l=Float32Array.BYTES_PER_ELEMENT,u=n.C.peek("a_position"),m=n.C.peek("a_color_value");if(!u||!m)return;let f=i*s*a;r.bindBuffer(r.ARRAY_BUFFER,u.buffer),r.vertexAttribPointer(e.a_start,2,r.FLOAT,!1,a,f),r.vertexAttribPointer(e.a_end,2,r.FLOAT,!1,a,f+a);let b=i*s*l;r.bindBuffer(r.ARRAY_BUFFER,m.buffer),r.vertexAttribPointer(e.a_color_start,1,r.FLOAT,!1,l,b),r.vertexAttribPointer(e.a_color_end,1,r.FLOAT,!1,l,b+l),K(n).drawArraysInstanced(r.TRIANGLE_STRIP,0,4,o-1)}function ps(e,t){let{setDivisor:n}=K(t);n(e.a_start,0),n(e.a_end,0),n(e.a_color_start,0),n(e.a_color_end,0)}var lt,yo=I(()=>{"use strict";tt();we();pe();zi();Xi();lt=class{constructor(){d(this,"name","line");d(this,"c",null)}ensureProgram(t,n){if(this.c)return;let i=n.gl,o=n.shaders.getOrCreate("line",un,mn),r=Ge(i);this.c={program:o,cornerBuffer:r,u_projection:i.getUniformLocation(o,"u_projection"),u_resolution:i.getUniformLocation(o,"u_resolution"),u_line_width:i.getUniformLocation(o,"u_line_width"),u_color_range:i.getUniformLocation(o,"u_color_range"),u_gradient_lut:i.getUniformLocation(o,"u_gradient_lut"),a_start:i.getAttribLocation(o,"a_start"),a_end:i.getAttribLocation(o,"a_end"),a_color_start:i.getAttribLocation(o,"a_color_start"),a_color_end:i.getAttribLocation(o,"a_color_end"),a_corner:i.getAttribLocation(o,"a_corner")}}draw(t,n,i){let o=this.c;if(!o||!cs(o,t,n,i))return;let s=Math.max(1,t.v.length);for(let a=0;a<s;a++)ds(o,t,n,a);ps(o,n)}drawSeries(t,n,i,o){let r=this.c;r&&cs(r,t,n,i)&&(ds(r,t,n,o),ps(r,n))}async buildTooltipLines(t,n){let i=[];if(!t.O||!t.H)return i;if(t.v.length>0&&t.R>0){let b=Math.floor(n/t.R),p=t.v[b];p&&i.push(p.prefix)}let o=t.O[n],r=t.H[n],s=t.Je[t.nt]||"",l=s==="date"||s==="datetime"?le(o):ie(o);i.push(`${t.nt||"Row"}: ${l}`);let u=t.Je[t.it]||"",f=u==="date"||u==="datetime"?le(r):ie(r);return i.push(`${t.it}: ${f}`),i}tooltipOptions(){return{crosshair:!0,highlightRadius:5}}destroy(t){let n=this.c;n?.cornerBuffer&&t.e&&t.e.gl.deleteBuffer(n.cornerBuffer),this.c=null}}});function fu(e){switch(e){case"density":return au;case"extreme":return uu;case"signed":return mu;case"mean":default:return lu}}function bs(e){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function xo(e,t){return{program:t,u_projection:e.getUniformLocation(t,"u_projection"),u_radius_ndc:e.getUniformLocation(t,"u_radius_ndc"),u_intensity:e.getUniformLocation(t,"u_intensity"),u_color_range:e.getUniformLocation(t,"u_color_range"),a_corner:e.getAttribLocation(t,"a_corner"),a_position:e.getAttribLocation(t,"a_position"),a_color_value:e.getAttribLocation(t,"a_color_value")}}function cu(e){let t=e.gl;if(e.isWebGL2){let n=t;if(n.getExtension("EXT_color_buffer_float"))return{internalFormat:n.RGBA16F,format:n.RGBA,type:n.HALF_FLOAT,isFloat:!0}}return{internalFormat:t.RGBA,format:t.RGBA,type:t.UNSIGNED_BYTE,isFloat:!1}}function hs(e){let t=e.C.peek("a_position"),n=e.C.peek("a_color_value");return!!t&&!!n}function pu(e,t){if(!e.r||e.Z)return t.robustBounds=null,null;let n=t.robustBounds;if(n&&n.dataCount===e.Ct&&n.colorName===e.r&&n.colorIsString===e.Z)return{lo:n.lo,hi:n.hi};let i=bu(e);return i?(t.robustBounds={lo:i.lo,hi:i.hi,dataCount:e.Ct,colorName:e.r,colorIsString:e.Z},i):(t.robustBounds=null,null)}function bu(e){if(!e.vt||e.Ct<2)return null;let t=e.R,n=Math.max(1,e.v.length),i=Math.max(1,Math.ceil(e.Ct/du)),o=[],r=e.vt;for(let m=0;m<n;m++){let f=e.U[m]??0,b=m*t;for(let p=0;p<f;p+=i){let c=r[b+p];Number.isFinite(c)&&o.push(c)}}if(o.length<2)return null;o.sort((m,f)=>m-f);let s=Math.floor(o.length*.05),a=Math.min(o.length-1,Math.ceil(o.length*.95)),l=o[s],u=o[a];return u>l?{lo:l,hi:u}:e.l>e.f?{lo:e.f,hi:e.l}:null}var au,lu,uu,mu,ut,du,Co=I(()=>{"use strict";tt();we();ho();Zi();qi();Ki();pr();hr();Ji();Qi();au=0,lu=1,uu=2,mu=3,ut=class{constructor(){d(this,"name","density");d(this,"c",null)}ensureProgram(t,n){if(this.c){this.ensureHeatTarget(t,n);return}let i=n.gl,o=n.shaders.getOrCreate("density-splat",Je,Tn),r=n.shaders.getOrCreate("density-resolve",Rn,Fn),s=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,s),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),i.STATIC_DRAW);let a=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,a),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),i.STATIC_DRAW);let{internalFormat:l,format:u,type:m,isFloat:f}=cu(n),b=bs(i),p=i.createFramebuffer();this.c={splat:xo(i,o),extremeSplat:null,mrtSplat:null,resolve:{program:r,u_heat:i.getUniformLocation(r,"u_heat"),u_extreme:i.getUniformLocation(r,"u_extreme"),u_gradient_lut:i.getUniformLocation(r,"u_gradient_lut"),u_heat_max:i.getUniformLocation(r,"u_heat_max"),u_color_mode:i.getUniformLocation(r,"u_color_mode"),a_corner:i.getAttribLocation(r,"a_corner")},quadCornerBuffer:s,tripleCornerBuffer:a,heatTexture:b,heatFramebuffer:p,extremeTexture:null,extremeFramebuffer:null,mrtFramebuffer:null,heatWidth:0,heatHeight:0,heatType:m,heatInternalFormat:l,heatFormat:u,floatFbo:f,indexedBlend:null,signedDowngradeWarned:!1,robustBounds:null},this.ensureHeatTarget(t,n)}draw(t,n,i){let o=this.c;if(!o||!hs(n))return;let r=Math.max(1,t.v.length),s=t.R,a=0;for(let l=0;l<r;l++)a+=t.U[l]??0;a!==0&&this.runSplatAndResolve(t,n,o,i,l=>{for(let u=0;u<r;u++){let m=t.U[u]??0;m<=0||l(u*s,m)}})}drawSeries(t,n,i,o){let r=this.c;if(!r||!hs(n))return;let s=t.U[o]??0;if(s<=0)return;let a=t.R;this.runSplatAndResolve(t,n,r,i,l=>l(o*a,s))}buildTooltipLines(t,n){return Zn(t,n)}tooltipOptions(){return{crosshair:!0,highlightRadius:0}}destroy(t){let n=this.c;if(!n||!t.e){this.c=null;return}let i=t.e.gl;i.deleteBuffer(n.quadCornerBuffer),i.deleteBuffer(n.tripleCornerBuffer),i.deleteTexture(n.heatTexture),i.deleteFramebuffer(n.heatFramebuffer),n.extremeTexture&&i.deleteTexture(n.extremeTexture),n.extremeFramebuffer&&i.deleteFramebuffer(n.extremeFramebuffer),n.mrtFramebuffer&&i.deleteFramebuffer(n.mrtFramebuffer),this.c=null}ensureHeatTarget(t,n){let i=this.c;if(!i)return;let o=n.gl,r=o.canvas.width,s=o.canvas.height;if(!(r===i.heatWidth&&s===i.heatHeight)&&!(r<=0||s<=0)){if(this.allocAccumTexture(o,i,i.heatTexture,r,s),o.bindFramebuffer(o.FRAMEBUFFER,i.heatFramebuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,i.heatTexture,0),i.extremeTexture&&(this.allocAccumTexture(o,i,i.extremeTexture,r,s),i.extremeFramebuffer&&(o.bindFramebuffer(o.FRAMEBUFFER,i.extremeFramebuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,i.extremeTexture,0)),i.mrtFramebuffer)){let a=o;a.bindFramebuffer(a.FRAMEBUFFER,i.mrtFramebuffer),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,i.heatTexture,0),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT1,a.TEXTURE_2D,i.extremeTexture,0)}o.bindFramebuffer(o.FRAMEBUFFER,null),i.heatWidth=r,i.heatHeight=s}}allocAccumTexture(t,n,i,o,r){t.bindTexture(t.TEXTURE_2D,i),t.texImage2D(t.TEXTURE_2D,0,n.heatInternalFormat,o,r,0,n.heatFormat,n.heatType,null)}ensureExtremeTarget(t,n){let i=t.gl;if(n.extremeTexture)return;let o=bs(i);if(n.extremeTexture=o,n.extremeFramebuffer=i.createFramebuffer(),this.allocAccumTexture(i,n,o,n.heatWidth,n.heatHeight),i.bindFramebuffer(i.FRAMEBUFFER,n.extremeFramebuffer),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,o,0),n.indexedBlend===null){let r=t.isWebGL2?i.getExtension("OES_draw_buffers_indexed"):null;n.indexedBlend=r??!1}if(n.indexedBlend){let r=i;n.mrtFramebuffer=r.createFramebuffer(),r.bindFramebuffer(r.FRAMEBUFFER,n.mrtFramebuffer),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,n.heatTexture,0),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT1,r.TEXTURE_2D,o,0)}i.bindFramebuffer(i.FRAMEBUFFER,null)}ensureExtremeSplatProgram(t,n){if(n.extremeSplat)return n.extremeSplat;let i=t.shaders.getOrCreate("density-extreme",Je,wn);return n.extremeSplat=xo(t.gl,i),n.extremeSplat}ensureMrtSplatProgram(t,n){if(n.mrtSplat)return n.mrtSplat;let i=t.shaders.getOrCreate("density-mrt",br,gr);return n.mrtSplat=xo(t.gl,i),n.mrtSplat}activeMode(t,n,i){let o=n.g.gradient_color_mode;return o==="signed"&&!i.floatFbo?(this.warnDowngradeOnce(i,"signed mode requires a float framebuffer (EXT_color_buffer_float); falling back to mean."),"mean"):o==="extreme"&&!t.isWebGL2?(this.warnDowngradeOnce(i,"extreme mode requires WebGL2 (for MAX blend and a second color attachment); falling back to mean."),"mean"):o}warnDowngradeOnce(t,n){t.signedDowngradeWarned||(t.signedDowngradeWarned=!0,console.warn(`Density: ${n}`))}runSplatAndResolve(t,n,i,o,r){if(this.ensureHeatTarget(t,n),i.heatWidth===0||i.heatHeight===0||!t.te)return;let s=this.activeMode(n,t,i),a=t.f<t.l&&(!!t.r||t.v.length>1),l=0,u=0;if(s!=="density"&&a&&(l=t.f,u=t.l,!t.Z&&(s==="mean"||s==="extreme"))){let f=pu(t,i);f&&(l=f.lo,u=f.hi)}s==="extreme"&&this.ensureExtremeTarget(n,i),s==="extreme"&&i.indexedBlend?this.runMrtExtremePass(n,i,o,t.g.gradient_intensity,n.dpr*t.g.gradient_radius_px,l,u,r):(this.runHeatPass(n,i,o,t.g.gradient_intensity,n.dpr*t.g.gradient_radius_px,l,u,r),s==="extreme"&&this.runExtremePass(n,i,o,t.g.gradient_intensity,n.dpr*t.g.gradient_radius_px,l,u,r)),this.runResolvePass(n,i,t,s)}runHeatPass(t,n,i,o,r,s,a,l){let u=t.gl,m=!!u.getParameter(u.SCISSOR_TEST);u.bindFramebuffer(u.FRAMEBUFFER,n.heatFramebuffer),u.viewport(0,0,n.heatWidth,n.heatHeight),this.clearTarget(u,m),u.blendFunc(u.ONE,u.ONE),u.blendEquation(u.FUNC_ADD),this.bindSplatProgram(u,n.splat,i,o,r,n.heatWidth,n.heatHeight,s,a),this.bindAndDispatchInstanced(t,n,n.splat,l),this.unbindSplatInstancing(t,n.splat)}runExtremePass(t,n,i,o,r,s,a,l){let u=t.gl,m=!!u.getParameter(u.SCISSOR_TEST),f=this.ensureExtremeSplatProgram(t,n);u.bindFramebuffer(u.FRAMEBUFFER,n.extremeFramebuffer),u.viewport(0,0,n.heatWidth,n.heatHeight),this.clearTarget(u,m),u.blendFunc(u.ONE,u.ONE);let b=u;b.blendEquation(b.MAX),this.bindSplatProgram(u,f,i,o,r,n.heatWidth,n.heatHeight,s,a),this.bindAndDispatchInstanced(t,n,f,l),this.unbindSplatInstancing(t,f),u.blendEquation(u.FUNC_ADD)}runMrtExtremePass(t,n,i,o,r,s,a,l){let u=t.gl,m=n.indexedBlend,f=!!u.getParameter(u.SCISSOR_TEST),b=this.ensureMrtSplatProgram(t,n);u.bindFramebuffer(u.FRAMEBUFFER,n.mrtFramebuffer),u.viewport(0,0,n.heatWidth,n.heatHeight),u.drawBuffers([u.COLOR_ATTACHMENT0,u.COLOR_ATTACHMENT1]),this.clearTarget(u,f),m.enableiOES(u.BLEND,0),m.enableiOES(u.BLEND,1),m.blendEquationiOES(0,u.FUNC_ADD),m.blendFunciOES(0,u.ONE,u.ONE),m.blendEquationiOES(1,u.MAX),m.blendFunciOES(1,u.ONE,u.ONE),this.bindSplatProgram(u,b,i,o,r,n.heatWidth,n.heatHeight,s,a),this.bindAndDispatchInstanced(t,n,b,l),this.unbindSplatInstancing(t,b),m.blendEquationiOES(0,u.FUNC_ADD),m.blendEquationiOES(1,u.FUNC_ADD),m.blendFunciOES(0,u.SRC_ALPHA,u.ONE_MINUS_SRC_ALPHA),m.blendFunciOES(1,u.SRC_ALPHA,u.ONE_MINUS_SRC_ALPHA),u.drawBuffers([u.COLOR_ATTACHMENT0])}clearTarget(t,n){n&&t.disable(t.SCISSOR_TEST),t.clearColor(0,0,0,0),t.clear(t.COLOR_BUFFER_BIT),n&&t.enable(t.SCISSOR_TEST)}bindSplatProgram(t,n,i,o,r,s,a,l,u){t.useProgram(n.program),t.uniformMatrix4fv(n.u_projection,!1,i),t.uniform1f(n.u_intensity,o);let m=2*r/Math.max(1,s),f=2*r/Math.max(1,a);t.uniform2f(n.u_radius_ndc,m,f),t.uniform2f(n.u_color_range,l,u)}bindAndDispatchInstanced(t,n,i,o){let r=t.gl;r.bindBuffer(r.ARRAY_BUFFER,n.quadCornerBuffer),r.enableVertexAttribArray(i.a_corner),r.vertexAttribPointer(i.a_corner,2,r.FLOAT,!1,0,0);let s=K(t);s.setDivisor(i.a_corner,0),s.setDivisor(i.a_position,1),s.setDivisor(i.a_color_value,1);let a=t.C.peek("a_position"),l=t.C.peek("a_color_value");o((u,m)=>{let f=2*Float32Array.BYTES_PER_ELEMENT,b=Float32Array.BYTES_PER_ELEMENT;r.bindBuffer(r.ARRAY_BUFFER,a.buffer),r.enableVertexAttribArray(i.a_position),r.vertexAttribPointer(i.a_position,2,r.FLOAT,!1,f,u*f),r.bindBuffer(r.ARRAY_BUFFER,l.buffer),r.enableVertexAttribArray(i.a_color_value),r.vertexAttribPointer(i.a_color_value,1,r.FLOAT,!1,b,u*b),s.drawArraysInstanced(r.TRIANGLE_STRIP,0,4,m)})}unbindSplatInstancing(t,n){let i=K(t);i.setDivisor(n.a_position,0),i.setDivisor(n.a_color_value,0)}runResolvePass(t,n,i,o){let r=t.gl;r.bindFramebuffer(r.FRAMEBUFFER,null),r.viewport(0,0,r.canvas.width,r.canvas.height),r.blendEquation(r.FUNC_ADD),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA);let s=n.resolve;r.useProgram(s.program),r.uniform1f(s.u_heat_max,i.g.gradient_heat_max),r.uniform1i(s.u_color_mode,fu(o)),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,n.heatTexture),r.uniform1i(s.u_heat,0),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,n.extremeTexture??n.heatTexture),r.uniform1i(s.u_extreme,1),Le(t,i.te.texture,s.u_gradient_lut,2),r.bindBuffer(r.ARRAY_BUFFER,n.tripleCornerBuffer),r.enableVertexAttribArray(s.a_corner),r.vertexAttribPointer(s.a_corner,2,r.FLOAT,!1,0,0),r.drawArrays(r.TRIANGLES,0,3)}};du=5e4});var $e,qn,Kn,Jn,_o=I(()=>{"use strict";Ft();Yr();$r();co();us();bo();go();yo();Co();$e=class extends he{constructor(n){super();d(this,"glyph");d(this,"un","cartesian");d(this,"te",null);d(this,"_t","");d(this,"ot","");d(this,"nt","");d(this,"it","");d(this,"oo",!1);d(this,"r","");d(this,"q","");d(this,"zn","");d(this,"Z",!1);d(this,"v",[]);d(this,"ye",1/0);d(this,"yt",-1/0);d(this,"Ae",1/0);d(this,"xt",-1/0);d(this,"M",NaN);d(this,"S",NaN);d(this,"f",1/0);d(this,"l",-1/0);d(this,"et",1/0);d(this,"tt",-1/0);d(this,"Gn",1/0);d(this,"kn",-1/0);d(this,"Nn",1/0);d(this,"Un",-1/0);d(this,"On",1/0);d(this,"Hn",-1/0);d(this,"Yn",1/0);d(this,"Vn",-1/0);d(this,"R",0);d(this,"U",[]);d(this,"yi",0);d(this,"O",null);d(this,"H",null);d(this,"vt",null);d(this,"Pt",null);d(this,"Wt",null);d(this,"Ct",0);d(this,"a",new Map);d(this,"k",new st);d(this,"xi",null);d(this,"Ci",null);d(this,"_i",null);d(this,"ro",0);d(this,"Zt",new Un);d(this,"u",null);d(this,"le",-1);d(this,"Li",-1);d(this,"mn",-1);d(this,"A",null);d(this,"Le",null);d(this,"Te",null);d(this,"$n",null);d(this,"Be",null);d(this,"jn",null);d(this,"Zn",!1);d(this,"Xn",null);d(this,"vi",null);d(this,"Ai",-1);this.glyph=n}projectPoint(n,i){return[n,i]}renderBackground(n,i,o,r,s,a){}renderMapChrome(n,i,o,r){}tooltipCallbacks(){return{onHover:(n,i)=>po(this,n,i),onLeave:()=>{this.le!==-1&&(this.le=-1,We(this))},onPin:(n,i)=>{if(po(this,n,i),this.le>=0){let o=this.le;as(this,o),this.Mo(o)}},onUnpin:()=>{this.emitUnselect()}}}async Mo(n){if(!this.Pt)return;let i=this.Pt[n],o=this.E[1]||this.E[0]||"",r=[];if(this.v.length>0&&this.R>0){let s=Math.floor(n/this.R),a=this.v[s];a?.prefix&&this.w.length>0&&(r=a.prefix.split("|"))}await this.emitClickAndSelect({rowIdx:i!=null&&i>=0?i:null,columnName:o,groupByValues:[],splitByValues:r})}async uploadAndRender(n,i,o,r){let s=r-o;this.e=n,o===0&&zr(this,n,i,r),s!==0&&(Xr(this,n,i,o,s,r),this.g.domain_mode==="expand"&&(this.Gn=this.ye,this.kn=this.yt,this.Nn=this.Ae,this.Un=this.xt,this.On=this.f,this.Hn=this.l,this.Yn=this.et,this.Vn=this.tt),await this.requestRender(n))}resetExpandedDomain(){this.Gn=1/0,this.kn=-1/0,this.Nn=1/0,this.Un=-1/0,this.On=1/0,this.Hn=-1/0,this.Yn=1/0,this.Vn=-1/0}It(n){n.uploadedCount===0&&this.Ct===0||(this.e=n,os(this,n))}destroyInternal(){this.glyph.destroy(this),this.te=null,this.O=null,this.H=null,this.vt=null,this.Pt=null,this.Wt=null,this.k.clearHover(),this.a.clear(),this.Zt.clear(),this.xi=null,this.Ci=null,this._i=null,this.v=[],this.U=[],ls(this)}},qn=class extends $e{constructor(){super(new at)}},Kn=class extends $e{constructor(){super(new lt)}},Jn=class extends $e{constructor(){super(new ut)}}});function Na(e,t){if(t>ka||t<-ka)return[NaN,NaN];let n=e*Math.PI*6378137/180,i=t*Math.PI/180,o=6378137*Math.log(Math.tan(Math.PI/4+i/2));return[n,o]}function Ua(e,t,n){let i=1<<e,o=2*Fe/i,r=-Fe+t*o,s=r+o,a=Fe-n*o,l=a-o;return{xMin:r,yMin:l,xMax:s,yMax:a}}function Oa(e,t=256,n=19){if(!isFinite(e)||e<=0)return 0;let i=Math.log2(2*Fe/(t*e));return Math.max(0,Math.min(n,Math.floor(i)))}function Ha(e,t){let n=1<<t,i=2*Fe/n,o=Math.floor((e.xMin+Fe)/i),r=Math.floor((e.xMax+Fe)/i),s=Math.floor((Fe-e.yMax)/i),a=Math.floor((Fe-e.yMin)/i),l=[];for(let u=s;u<=a;u++)if(!(u<0||u>=n))for(let m=o;m<=r;m++)m<0||m>=n||l.push({z:t,x:m,y:u});return l}var Fe,ka,tr=I(()=>{"use strict";Fe=Math.PI*6378137,ka=85.0511287798066});var ki,Ya=I(()=>{"use strict";ki=class{constructor(t=256){d(this,"be",new Map);d(this,"xo");this.xo=t}get(t){let n=this.be.get(t);return n!==void 0&&(this.be.delete(t),this.be.set(t,n)),n}set(t,n,i){if(this.be.has(n)){let o=this.be.get(n);t.deleteTexture(o),this.be.delete(n)}for(this.be.set(n,i);this.be.size>this.xo;){let o=this.be.keys().next().value;if(o===void 0)break;let r=this.be.get(o);t.deleteTexture(r),this.be.delete(o)}}has(t){return this.be.has(t)}dispose(t){for(let n of this.be.values())t.deleteTexture(n);this.be.clear()}}});function _t(e,t,n,i){return`${e}/${t}/${n}/${i}`}var Ni,Va=I(()=>{"use strict";Ni=class{constructor(){d(this,"he",new Map);d(this,"Co",()=>{})}setOnLoad(t){this.Co=t}load(t,n,i,o){let r=_t(t.id,n,i,o),s=this.he.get(r);if(s)return s.promise;let a=new AbortController,l=t.urlFor(n,i,o),u=this.Do(l,a.signal).then(m=>(this.he.delete(r),m&&this.Co(),m)).catch(()=>(this.he.delete(r),null));return this.he.set(r,{promise:u,abort:a}),u}cancelAll(){for(let t of this.he.values())t.abort.abort();this.he.clear()}cancelExcept(t){for(let[n,i]of this.he)t.has(n)||(i.abort.abort(),this.he.delete(n))}async Do(t,n){let i=await fetch(t,{signal:n});if(!i.ok)return null;let o=await i.blob();return await createImageBitmap(o)}}});var Ui,za=I(()=>{"use strict";tr();Ya();Va();eo();to();Ui=class{constructor(){d(this,"i",null);d(this,"W",null);d(this,"c",new ki);d(this,"An",new Ni);d(this,"Ln",null);d(this,"_o",1);d(this,"vo",()=>{})}setOnTileLoad(t){this.vo=t,this.An.setOnLoad(t)}setSource(t,n){this.Ln?.id!==n.id&&(this.c.dispose(t),this.An.cancelAll(),this.Ln=n)}setAlpha(t){this._o=Math.max(0,Math.min(1,t))}get source(){return this.Ln}render(t,n,i,o,r,s){let a=this.Ln;if(!a)return;this.Io(t);let l=this.i,u=this.W;if(!l||!u)return;let m=t.gl,f=t.dpr,b=Math.max(1,n.t.width*f),p=o.xMax-o.xMin;if(!isFinite(p)||p<=0)return;let c=p/b,h=Oa(c,a.tileSize,a.maxZoom),g=Ha(o,h),y=new Set;for(let C of g)y.add(_t(a.id,C.z,C.x,C.y));this.An.cancelExcept(y),m.useProgram(l.program),m.uniformMatrix4fv(l.u_projection,!1,i),m.uniform1f(l.u_alpha,this._o),m.bindBuffer(m.ARRAY_BUFFER,u),m.enableVertexAttribArray(l.a_corner),m.vertexAttribPointer(l.a_corner,2,m.FLOAT,!1,0,0),m.activeTexture(m.TEXTURE0),m.uniform1i(l.u_tile,0);let x=m.isEnabled(m.BLEND);m.enable(m.BLEND),m.blendFunc(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA);for(let C of g)this.Eo(m,l,a,C,r,s);x||m.disable(m.BLEND)}destroy(t){this.An.cancelAll(),this.c.dispose(t),this.W&&(t.deleteBuffer(this.W),this.W=null),this.i=null}Eo(t,n,i,o,r,s){let a=Ua(o.z,o.x,o.y),l={xMin:a.xMin-r,xMax:a.xMax-r,yMin:a.yMin-s,yMax:a.yMax-s},u=_t(i.id,o.z,o.x,o.y),m=this.c.get(u);if(m){this.Ao(t,n,m,l,[0,0],[1,1]);return}this.Po(t,i,o);for(let f=1;f<=6;f++){let b=o.z-f;if(b<0)return;let p=o.x>>f,c=o.y>>f,h=_t(i.id,b,p,c),g=this.c.get(h);if(!g)continue;let y=1<<f,x=o.x-p*y,C=o.y-c*y,_=1/y,v=[x*_,C*_],A=[v[0]+_,v[1]+_];this.Ao(t,n,g,l,v,A);return}}Ao(t,n,i,o,r,s){t.bindTexture(t.TEXTURE_2D,i),t.uniform2f(n.u_extent_min,o.xMin,o.yMin),t.uniform2f(n.u_extent_max,o.xMax,o.yMax),t.uniform2f(n.u_uv_min,r[0],r[1]),t.uniform2f(n.u_uv_max,s[0],s[1]),t.drawArrays(t.TRIANGLE_STRIP,0,4)}Po(t,n,i){let o=_t(n.id,i.z,i.x,i.y);this.c.has(o)||this.An.load(n,i.z,i.x,i.y).then(r=>{if(!r)return;if(this.Ln?.id!==n.id){r.close();return}let s=t.createTexture();if(!s){r.close();return}t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,s),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r),this.c.set(t,o,s),this.vo()})}Io(t){if(this.i&&this.W)return;let n=t.gl,i=t.shaders.getOrCreate("map-tile",Mn,Sn);this.i={program:i,u_projection:n.getUniformLocation(i,"u_projection"),u_extent_min:n.getUniformLocation(i,"u_extent_min"),u_extent_max:n.getUniformLocation(i,"u_extent_max"),u_uv_min:n.getUniformLocation(i,"u_uv_min"),u_uv_max:n.getUniformLocation(i,"u_uv_max"),u_tile:n.getUniformLocation(i,"u_tile"),u_alpha:n.getUniformLocation(i,"u_alpha"),a_corner:n.getAttribLocation(i,"a_corner")};let o=n.createBuffer();o&&(n.bindBuffer(n.ARRAY_BUFFER,o),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,1,1]),n.STATIC_DRAW),this.W=o)}}});function Wm(){return new en("carto-positron","https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png","\\xA9 OpenStreetMap contributors \\xA9 CARTO",256,19,["a","b","c","d"])}function Gm(){return new en("carto-dark-matter","https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png","\\xA9 OpenStreetMap contributors \\xA9 CARTO",256,19,["a","b","c","d"])}function km(){return new en("carto-voyager","https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png","\\xA9 OpenStreetMap contributors \\xA9 CARTO",256,19,["a","b","c","d"])}function nr(e){switch(e){case"carto-dark-matter":return Gm();case"carto-voyager":return km();case"carto-positron":default:return Wm()}}var en,Xa=I(()=>{"use strict";en=class{constructor(t,n,i,o=256,r=19,s=[]){this.id=t;this.template=n;this.attribution=i;this.tileSize=o;this.maxZoom=r;this.subdomains=s}urlFor(t,n,i){let o=this.template.replace("{z}",String(t)).replace("{x}",String(n)).replace("{y}",String(i));if(this.subdomains.length>0){let r=(n+i)%this.subdomains.length;o=o.replace("{s}",this.subdomains[r])}return o}}});var Oi={};el(Oi,{MapChart:()=>vt,MapDensityChart:()=>rr,MapLineChart:()=>or,MapScatterChart:()=>ir});var vt,ir,or,rr,Hi=I(()=>{"use strict";_o();go();yo();Co();za();Xa();tr();nt();vt=class extends $e{constructor(n){super(n);d(this,"un","map");d(this,"Ye");this.Ye=new Ui,this.Ye.setOnTileLoad(()=>{this.e&&this.requestRender(this.e)})}projectPoint(n,i){return Na(n,i)}getZoomConfig(){return{lockAspect:!0}}setPluginConfig(n){super.setPluginConfig(n),this.e&&this.Ye.setSource(this.e.gl,nr(n.map_tile_provider)),this.Ye.setAlpha(n.map_tile_alpha)}renderBackground(n,i,o,r,s,a){this.Ye.source||(this.Ye.setSource(n.gl,nr(this.g.map_tile_provider)),this.Ye.setAlpha(this.g.map_tile_alpha)),this.Ye.render(n,i,o,r,s,a)}renderMapChrome(n,i,o,r){if(!n)return;let s=ge(n,r);if(!s)return;let a=this.Ye.source?.attribution??"";if(!a)return;let l=i.t;s.save(),s.font=`10px ${o.fontFamily}`,s.textAlign="right",s.textBaseline="bottom";let u=4,f=s.measureText(a).width,b=12,p=l.x+l.width-4,c=l.y+l.height-4;s.fillStyle="rgba(255, 255, 255, 0.75)",s.fillRect(p-f-u*2,c-b-u,f+u*2,b+u),s.fillStyle=o.ge,s.fillText(a,p-u,c-u/2),s.restore()}destroyInternal(){this.e&&this.Ye.destroy(this.e.gl),super.destroyInternal()}},ir=class extends vt{constructor(){super(new at)}},or=class extends vt{constructor(){super(new lt)}},rr=class extends vt{constructor(){super(new ut)}}});typeof window>"u"&&(globalThis.window={});var Tt=class{constructor(t){d(this,"D");d(this,"Tn",new Map);this.D=t}precompile(t){for(let n of t)this.getOrCreate(n.name,n.vert,n.frag)}getOrCreate(t,n,i){let o=this.Tn.get(t);if(o)return o;let r=this.D,s=r.createShader(r.VERTEX_SHADER);if(r.shaderSource(s,n),r.compileShader(s),!r.getShaderParameter(s,r.COMPILE_STATUS)){let l=r.getShaderInfoLog(s);throw r.deleteShader(s),new Error(`Vertex shader compile error [${t}]: ${l}`)}let a=r.createShader(r.FRAGMENT_SHADER);if(r.shaderSource(a,i),r.compileShader(a),!r.getShaderParameter(a,r.COMPILE_STATUS)){let l=r.getShaderInfoLog(a);throw r.deleteShader(s),r.deleteShader(a),new Error(`Fragment shader compile error [${t}]: ${l}`)}if(o=r.createProgram(),r.attachShader(o,s),r.attachShader(o,a),r.linkProgram(o),!r.getProgramParameter(o,r.LINK_STATUS)){let l=r.getProgramInfoLog(o);throw r.deleteProgram(o),r.deleteShader(s),r.deleteShader(a),new Error(`Shader link error [${t}]: ${l}`)}return r.deleteShader(s),r.deleteShader(a),this.Tn.set(t,o),o}releaseAll(){for(let t of this.Tn.values())this.D.deleteProgram(t);this.Tn.clear()}};var an="attribute vec2 a_corner;attribute float a_x_center;attribute float a_half_width;attribute float a_y0;attribute float a_y1;attribute vec3 a_color;attribute float a_series_id;attribute float a_axis;uniform mat4 u_proj_left;uniform mat4 u_proj_right;uniform float u_hover_series;uniform float u_horizontal;varying vec3 v_color;varying float v_hover;varying vec2 v_local;void main(){vec2 A;if(u_horizontal>0.5){A=vec2(mix(a_y0,a_y1,a_corner.x),a_x_center+(a_corner.y-0.5)*2.*a_half_width);}else{A=vec2(a_x_center+(a_corner.x-0.5)*2.*a_half_width,mix(a_y0,a_y1,a_corner.y));}mat4 B=a_axis<0.5?u_proj_left:u_proj_right;gl_Position=B*vec4(A,0.,1.);v_color=a_color;v_hover=abs(a_series_id-u_hover_series)<0.5?1.:0.;v_local=a_corner;}";var ln="precision highp float;varying vec3 v_color;varying float v_hover;varying vec2 v_local;void main(){vec3 A=v_color;if(v_hover>0.5){A=mix(A,vec3(1.),0.25);}gl_FragColor=vec4(A,1.);}";zi();Xi();$i();ji();var dn="attribute vec2 a_position;uniform mat4 u_projection;void main(){gl_Position=u_projection*vec4(a_position,0.,1.);}";var pn="precision highp float;uniform vec3 u_color;uniform float u_opacity;void main(){gl_FragColor=vec4(u_color,u_opacity);}";var Se="attribute vec2 a_start;attribute vec2 a_end;attribute float a_corner;uniform mat4 u_projection;uniform vec2 u_resolution;uniform float u_line_width;varying float v_edge_dist;void main(){vec4 A=u_projection*vec4(a_start,0.,1.);vec4 B=u_projection*vec4(a_end,0.,1.);vec2 C=A.xy*u_resolution*0.5;vec2 D=B.xy*u_resolution*0.5;vec2 E=D-C;float F=length(E);E=F>0.001?E/F:vec2(1.,0.);vec2 G=vec2(-E.y,E.x);float H=step(1.5,a_corner);float I=1.-mod(a_corner,2.)*2.;vec4 J=mix(A,B,H);float K=(u_line_width+1.5)*0.5;vec2 L=(G*I*K)/(u_resolution*0.5);gl_Position=J+vec4(L,0.,0.);v_edge_dist=I;}";var Be="precision highp float;uniform vec4 u_color;uniform float u_line_width;varying float v_edge_dist;void main(){float A=abs(v_edge_dist);float B=u_line_width/(u_line_width+1.5);float C=1.-smoothstep(B,1.,A);gl_FragColor=vec4(u_color.rgb,u_color.a*C);}";var bn="attribute vec2 a_position;attribute vec3 a_color;uniform mat4 u_projection;uniform float u_point_size;varying vec3 v_color;varying float v_point_size;void main(){gl_Position=u_projection*vec4(a_position,0.,1.);gl_PointSize=u_point_size;v_point_size=u_point_size;v_color=a_color;}";var hn="precision highp float;varying vec3 v_color;varying float v_point_size;void main(){vec2 A=gl_PointCoord-vec2(0.5);float B=length(A);if(B>0.5)discard;float C=1.5/max(v_point_size,1.);float D=1.-smoothstep(0.5-C,0.5,B);gl_FragColor=vec4(v_color,D);}";var gn="attribute vec2 a_corner;attribute float a_x_center;attribute float a_half_width;attribute float a_y0;attribute float a_y1;attribute vec3 a_color;uniform mat4 u_projection;varying vec3 v_color;void main(){float A=a_x_center+(a_corner.x-0.5)*2.*a_half_width;float B=mix(a_y0,a_y1,a_corner.y);gl_Position=u_projection*vec4(A,B,0.,1.);v_color=a_color;}";var yn="precision highp float;varying vec3 v_color;void main(){gl_FragColor=vec4(v_color,1.);}";var xn="attribute vec2 a_corner;attribute vec2 a_cell;attribute float a_color_t;uniform mat4 u_projection;uniform vec2 u_cell_inset;uniform vec2 u_cell_size;varying float v_color_t;void main(){vec2 A=0.5*u_cell_size;vec2 B=u_cell_size-2.*u_cell_inset;float C=a_cell.x-A.x+u_cell_inset.x+a_corner.x*B.x;float D=a_cell.y-A.y+u_cell_inset.y+a_corner.y*B.y;gl_Position=u_projection*vec4(C,D,0.,1.);v_color_t=a_color_t;}";var Cn="precision highp float;uniform sampler2D u_gradient_lut;varying float v_color_t;void main(){float A=clamp(v_color_t,0.,1.);vec4 B=texture2D(u_gradient_lut,vec2(A,0.5));gl_FragColor=vec4(B.rgb,1.);}";var _n="attribute float a_strip_t;attribute float a_side;attribute vec2 a_angles;attribute vec2 a_radii;attribute vec4 a_color;uniform vec2 u_center;uniform vec2 u_resolution;uniform float u_border_px;varying vec4 v_color;varying vec2 v_edge;void main(){float A=u_border_px*0.5;float B=a_radii.x+A;float C=a_radii.y-A;if(C<=B){gl_Position=vec4(2.,2.,2.,1.);v_color=vec4(0.);v_edge=vec2(0.);return;}float D=mix(B,C,a_side);float E=A/max(D,1.);float F=a_angles.y-a_angles.x;E=min(E,F*0.5);float G=mix(a_angles.x+E,a_angles.y-E,a_strip_t);vec2 H=u_center+vec2(cos(G),sin(G))*D;vec2 I=(H/u_resolution)*2.-1.;gl_Position=vec4(I.x,-I.y,0.,1.);v_color=a_color;v_edge=vec2(a_strip_t,a_side);}";var vn="precision highp float;varying vec4 v_color;void main(){gl_FragColor=v_color;}";var An="attribute vec2 a_position;attribute vec4 a_color;uniform vec2 u_resolution;varying vec4 v_color;void main(){vec2 A=(a_position/u_resolution)*2.-1.;A.y=-A.y;gl_Position=vec4(A,0.,1.);v_color=a_color;}";var Ln="precision highp float;varying vec4 v_color;void main(){gl_FragColor=v_color;}";Zi();qi();Ki();Ji();Qi();eo();to();var no=[{name:"bar",vert:an,frag:ln},{name:"line",vert:un,frag:mn},{name:"scatter",vert:fn,frag:cn},{name:"bar-area",vert:dn,frag:pn},{name:"bar-scatter",vert:bn,frag:hn},{name:"line-uniform",vert:Se,frag:Be},{name:"candlestick-body",vert:gn,frag:yn},{name:"heatmap",vert:xn,frag:Cn},{name:"sunburst-arc",vert:_n,frag:vn},{name:"treemap",vert:An,frag:Ln},{name:"density-splat",vert:Je,frag:Tn},{name:"density-extreme",vert:Je,frag:wn},{name:"density-resolve",vert:Rn,frag:Fn},{name:"map-tile",vert:Mn,frag:Sn}];var wt=class{constructor(t){d(this,"D");d(this,"o",new Map);d(this,"tn",0);d(this,"wn",0);this.D=t}get totalCapacity(){return this.tn}get maxCapacity(){return this.wn}set maxCapacity(t){this.wn=t}ensureCapacity(t){this.tn=this.wn>0?Math.min(t,this.wn):t}peek(t){return this.o.get(t)}getOrCreate(t,n,i){let o=this.tn*n*i,r=this.o.get(t);if(r&&r.byteCapacity>=o)return r;let s=this.D;r&&s.deleteBuffer(r.buffer);let a=s.createBuffer();return s.bindBuffer(s.ARRAY_BUFFER,a),s.bufferData(s.ARRAY_BUFFER,o,s.DYNAMIC_DRAW),r={buffer:a,byteCapacity:o},this.o.set(t,r),r}upload(t,n,i,o=1){let r=this.D,s=this.getOrCreate(t,o,n.BYTES_PER_ELEMENT);if(!1){let a=i+n.byteLength;if(a>s.byteCapacity)throw new Error(`BufferPool.upload("${t}"): write ${i}..${a} exceeds capacity ${s.byteCapacity} (_totalCapacity=${this.tn}, components=${o}, bytes=${n.BYTES_PER_ELEMENT}). Did you pass the full scratch buffer instead of a subarray(0, n)?`)}return r.bindBuffer(r.ARRAY_BUFFER,s.buffer),r.bufferSubData(r.ARRAY_BUFFER,i,n),s.buffer}releaseAll(){for(let t of this.o.values())this.D.deleteBuffer(t.buffer);this.o.clear(),this.tn=0}};var Bn=class{constructor(t,n={}){d(this,"Vt");d(this,"D");d(this,"Rn");d(this,"Rt");d(this,"o");d(this,"Fn",0);d(this,"Vi",0);d(this,"zi",0);d(this,"Xi",1);d(this,"ui");d(this,"mi",null);d(this,"pt",null);d(this,"Mn",null);this.Vt=t,this.ui=n.precompile??!1;let i=t.getContext("webgl2",{antialias:!0,alpha:!0,premultipliedAlpha:!1});if(i)this.D=i,this.Rn=!0;else{let o=t.getContext("webgl",{antialias:!0,alpha:!0,premultipliedAlpha:!1});if(!o)throw new Error("WebGL is not supported");this.D=o,this.Rn=!1}this.Rt=new Tt(this.D),this.o=new wt(this.D),this.ui&&this.Rt.precompile(no),t.addEventListener("webglcontextlost",o=>{o.preventDefault()}),t.addEventListener("webglcontextrestored",()=>{this.Rt.releaseAll(),this.o.releaseAll(),this.Rt=new Tt(this.D),this.o=new wt(this.D),this.Fn=0,this.ui&&this.Rt.precompile(no)})}get gl(){return this.D}get isWebGL2(){return this.Rn}get shaders(){return this.Rt}get C(){return this.o}get uploadedCount(){return this.Fn}set uploadedCount(t){this.Fn=t}resize(t,n,i){this.Vi=t,this.zi=n,this.Xi=i;let o=Math.round(t*i),r=Math.round(n*i);(this.Vt.width!==o||this.Vt.height!==r)&&(this.Vt.width=o,this.Vt.height=r,this.D.viewport(0,0,o,r))}requestResize(t,n,i){this.Mn={cssWidth:t,cssHeight:n,dpr:i}}applyPendingResize(){if(!this.Mn)return!1;let{cssWidth:t,cssHeight:n,dpr:i}=this.Mn;return this.Mn=null,this.resize(t,n,i),!0}get cssWidth(){return this.Vi}get cssHeight(){return this.zi}get dpr(){return this.Xi}clear(){this.D.clearColor(0,0,0,0),this.D.clear(this.D.COLOR_BUFFER_BIT|this.D.DEPTH_BUFFER_BIT),this.Fn=0}setFrameCallback(t){this.mi=t}endFrame(){if(!this.mi)return;let t=this.Vt;if(typeof t.transferToImageBitmap!="function")return;let n=t.transferToImageBitmap();this.mi(n)}async awaitGpuFence(){if(!this.Rn){this.D.finish();return}let t=this.D,n=t.fenceSync(t.SYNC_GPU_COMMANDS_COMPLETE,0);if(!n){t.finish();return}try{let i=t.SYNC_FLUSH_COMMANDS_BIT;for(;;){let o=t.clientWaitSync(n,i,0);if(o===t.ALREADY_SIGNALED||o===t.CONDITION_SATISFIED)return;if(o===t.WAIT_FAILED){t.finish();return}i=0,await this.To()}}finally{t.deleteSync(n)}}ensureBufferCapacity(t){this.o.ensureCapacity(t)}To(){return this.pt||(this.pt=new MessageChannel,this.pt.port1.start()),new Promise(t=>{let n=this.pt;n.port1.addEventListener("message",()=>t(),{once:!0}),n.port2.postMessage(null)})}destroy(){this.o.releaseAll(),this.Rt.releaseAll(),this.pt&&(this.pt.port1.close(),this.pt.port2.close(),this.pt=null);let t=this.D.getExtension("WEBGL_lose_context");t&&t.loseContext()}};Dn();Dn();function Cr(e,t,n,i){let{controller:o,layout:r}=e,s=r.t,a=o.getVisibleDomain(),l=a.xMin+(t-s.x)/s.width*(a.xMax-a.xMin),u=a.yMax-(n-s.y)/s.height*(a.yMax-a.yMin),m=Math.pow(1.1,-i/100),f=o.lockedAxis;f!=="x"&&(o.scaleX=Math.max(1,Math.min(1e5,o.scaleX*m))),f!=="y"&&(o.scaleY=Math.max(1,Math.min(1e5,o.scaleY*m)));let b=o.getVisibleDomain(),p=b.xMin+(t-s.x)/s.width*(b.xMax-b.xMin),c=b.yMax-(n-s.y)/s.height*(b.yMax-b.yMin),h=o.baseXRange,g=o.baseYRange;f!=="x"&&h>0&&(o.normTranslateX+=(l-p)/h),f!=="y"&&g>0&&(o.normTranslateY+=(u-c)/g)}function _r(e,t,n){let{controller:i,layout:o}=e,r=i.getVisibleDomain(),s=o.t,a=(r.xMax-r.xMin)/s.width,l=(r.yMax-r.yMin)/s.height,u=i.lockedAxis,m=i.baseXRange,f=i.baseYRange;u!=="x"&&m>0&&(i.normTranslateX-=t*a/m),u!=="y"&&f>0&&(i.normTranslateY+=n*l/f)}var In=class{constructor(t){d(this,"zt");this.zt=t}pin(t,n,i){this.zt({kind:"pin",payload:{lines:t,pos:n,bounds:i}})}dismiss(){this.zt({kind:"dismiss"})}setCursor(t){this.zt({kind:"setCursor",cursor:t})}emitUserClick(t){this.zt({kind:"userClick",payload:t})}emitUserSelect(t){this.zt({kind:"userSelect",payload:t})}};_o();Ft();var Qn=class{constructor(t=1024){d(this,"size");d(this,"value");d(this,"colorValue");d(this,"sizeSign");d(this,"x0");d(this,"y0");d(this,"x1");d(this,"y1");d(this,"a0");d(this,"a1");d(this,"r0");d(this,"r1");d(this,"depth");d(this,"parent");d(this,"firstChild");d(this,"nextSibling");d(this,"lastChild");d(this,"childCount");d(this,"leafRowIdx");d(this,"name");d(this,"colorLabel");d(this,"count",0);d(this,"capacity",0);this.so(t)}reset(){this.count>0&&(this.x0.fill(0,0,this.count),this.y0.fill(0,0,this.count),this.x1.fill(0,0,this.count),this.y1.fill(0,0,this.count),this.a0.fill(0,0,this.count),this.a1.fill(0,0,this.count),this.r0.fill(0,0,this.count),this.r1.fill(0,0,this.count)),this.count=0}allocate(){this.count===this.capacity&&this.so(this.capacity*2);let t=this.count++;return this.firstChild[t]=-1,this.nextSibling[t]=-1,this.lastChild[t]=-1,this.childCount[t]=0,this.leafRowIdx[t]=-1,this.size[t]=0,this.value[t]=0,this.colorValue[t]=NaN,this.sizeSign[t]=1,this.name[t]="",this.colorLabel[t]="",t}appendChild(t,n){this.parent[n]=t,this.depth[n]=this.depth[t]+1,this.nextSibling[n]=-1;let i=this.lastChild[t];i===-1?this.firstChild[t]=n:this.nextSibling[i]=n,this.lastChild[t]=n,this.childCount[t]++}isLeaf(t){return this.firstChild[t]===-1}so(t){let n=Math.max(t,1024),i=(o,r)=>{let s=new r(n);return o&&o.length>0&&s.set(o),s};this.size=i(this.size,Float32Array),this.value=i(this.value,Float32Array),this.colorValue=i(this.colorValue,Float32Array),this.sizeSign=i(this.sizeSign,Int8Array),this.x0=i(this.x0,Float32Array),this.y0=i(this.y0,Float32Array),this.x1=i(this.x1,Float32Array),this.y1=i(this.y1,Float32Array),this.a0=i(this.a0,Float32Array),this.a1=i(this.a1,Float32Array),this.r0=i(this.r0,Float32Array),this.r1=i(this.r1,Float32Array),this.depth=i(this.depth,Int32Array),this.parent=i(this.parent,Int32Array),this.firstChild=i(this.firstChild,Int32Array),this.nextSibling=i(this.nextSibling,Int32Array),this.lastChild=i(this.lastChild,Int32Array),this.childCount=i(this.childCount,Int32Array),this.leafRowIdx=i(this.leafRowIdx,Int32Array),this.name?this.name.length=n:this.name=new Array(n),this.colorLabel?this.colorLabel.length=n:this.colorLabel=new Array(n),this.capacity=n}};function ei(e,t){let n=[],i=t;for(;e.parent[i]!==-1;)n.push(e.name[i]),i=e.parent[i];return n.reverse()}bo();var mt=class extends he{constructor(){super(...arguments);d(this,"q","");d(this,"r","");d(this,"K","empty");d(this,"s",new Qn);d(this,"Y",-1);d(this,"p",-1);d(this,"ue",[]);d(this,"Gt",new Map);d(this,"qn",0);d(this,"f",1/0);d(this,"l",-1/0);d(this,"a",new Map);d(this,"X",null);d(this,"ne",0);d(this,"k",new st)}};Mt();function ti(e,t,n,i){let o=[];if(i<=n)return o;let r=n,s=e[n];for(let a=n+1;a<i;a++){let l=e[a];l!==s&&(o.push({startIdx:r,endIdx:a-1,label:t[s]??""}),r=a,s=l)}return o.push({startIdx:r,endIdx:i-1,label:t[s]??""}),o}function Nt(e,t,n){if(n<t)return[];let i=[];for(let o of e){if(o.endIdx<t||o.startIdx>n)continue;let r=o.startIdx<t?t:o.startIdx,s=o.endIdx>n?n:o.endIdx;r===o.startIdx&&s===o.endIdx?i.push(o):i.push({startIdx:r,endIdx:s,label:o.label})}return i}pe();function je(e,t,n,i,o){if(!e||t<=0)return null;let r=new Float64Array(t),s=1/0,a=-1/0;for(let u=0;u<t;u++){let m=e[u+n];r[u]=m,m<s&&(s=m),m>a&&(a=m)}let l=1/0;for(let u=1;u<t;u++){let m=Math.abs(r[u]-r[u-1]);m>0&&m<l&&(l=m)}return(!isFinite(l)||l===0)&&(l=Math.max(1,a-s)),{categoryPositions:r,numericCategoryDomain:{min:s-l/2,max:a+l/2,isDate:o,label:i,bandWidth:l}}}function ft(e,t){if(e.length!==1)return{mode:"category"};let n=t[e[0]];return n==="date"||n==="datetime"||n==="integer"||n==="float"?{mode:"numeric",numericType:n}:{mode:"category"}}function hu(e,t,n){return t?n==="boolean"?e?"true":"false":n==="date"||n==="datetime"?le(e):n==="integer"?String(e|0):n==="float"?ie(e):String(e):""}function vo(e,t,n){let i=e.values,o=e.valid,r=new Int32Array(t),s=[""],a=new Map;a.set("",0);for(let l=0;l<t;l++){let u=o?!!(o[l>>3]>>(l&7)&1):!0,m=i[l],f=hu(m,u,n),b=a.get(f);b===void 0&&(b=s.length,s.push(f),a.set(f,b)),r[l]=b}return{indices:r,dictionary:s}}function ct(e,t,n,i=[]){let o=[];for(let u=0;;u++){let m=e.get(`__ROW_PATH_${u}__`);if(!m)break;if(m.type==="string"&&m.indices&&m.dictionary)o.push({indices:m.indices,dictionary:m.dictionary});else if(m.values){let f=i[u]??"string";o.push(vo(m,t,f))}else break}let r=0;if(n>0&&o.length>0)for(;r<t;){let u=!1;for(let m of o){let f=m.dictionary[m.indices[r]];if(f!=null&&f!==""){u=!0;break}}if(u)break;r++}let s=Math.max(0,t-r),a=o.length;return{rowPaths:n>0&&a>0?o.map((u,m)=>{let f=new Array(s),b=0;for(let c=0;c<s;c++){let h=u.dictionary[u.indices[c+r]]??"";f[c]=h,h.length>b&&(b=h.length)}let p=m===a-1?[]:ti(u.indices,u.dictionary,r,r+s).map(c=>({startIdx:c.startIdx-r,endIdx:c.endIdx-r,label:c.label}));return{labels:f,runs:p,maxLabelChars:b}}):[],numCategories:s,rowOffset:r}}function Ut(e){e.s.reset(),e.Gt.clear();let t=e.s.allocate();e.s.name[t]="Total",e.s.depth[t]=0,e.s.parent[t]=-1,e.Gt.set(t,new Map),e.Y=t,e.p=t,e.ue=[t],e.qn=0,e.f=1/0,e.l=-1/0,e.a.clear(),e.X=null,e.ne=0}function gu(e,t,n){let i=e.Gt.get(t);i||(i=new Map,e.Gt.set(t,i));let o=i.get(n);if(o!==void 0)return o;let r=e.s.allocate();return e.s.name[r]=n,e.s.appendChild(t,r),i.set(n,r),r}function ni(e,t,n,i,o,r,s){let a=e.Y,l=t.length;for(let u=0;u<l;u++){let m=gu(e,a,t[u]);u===l-1&&((s===0||l===s)&&(e.s.size[m]=Math.abs(n),e.s.sizeSign[m]=n<0?-1:1,e.s.leafRowIdx[m]=r),isNaN(i)||(e.s.colorValue[m]=i,i<e.f&&(e.f=i),i>e.l&&(e.l=i)),o&&(e.s.colorLabel[m]=o,e.a.has(o)||e.a.set(o,e.a.size))),a=m}}function ii(e,t,n){let i=NaN,o="";return t?(e.K==="numeric"&&t.values?i=t.values[n]:e.K==="series"&&t.indices&&t.dictionary&&(o=t.dictionary[t.indices[n]]),{colorValue:i,colorLabel:o}):{colorValue:i,colorLabel:o}}function gs(e,t){if(e.K!=="series"||!t?.dictionary)return;let n=t.dictionary;for(let i=0;i<n.length;i++){let o=n[i];e.a.has(o)||e.a.set(o,e.a.size)}}function yu(e,t){if(e.w.length===0)return null;let n=e.q?[e.q]:[],i=e.r?[e.r]:[],o=De(t,n,i);return o.length===0?null:o.map(r=>({prefix:r.prefix,sizeCol:e.q?t.get(`${r.prefix}|${e.q}`)??null:null,colorCol:e.r?t.get(`${r.prefix}|${e.r}`)??null:null}))}function Ot(e,t){let n=[];for(let h=0;;h++){let g=t.get(`__ROW_PATH_${h}__`);if(!g)break;if(g.type==="string"&&g.indices&&g.dictionary)n.push({indices:g.indices,dictionary:g.dictionary});else if(g.values){let y=e.L[h],x=e.gt[y]??"string";n.push(vo(g,g.values.length,x))}else break}let i=n.length>0,o=e.L.length,r=yu(e,t),s=r!==null,a=e.q?t.get(e.q):null,l=e.r?t.get(e.r):null,u=s?r[0].sizeCol:a,m=i?n[0].indices.length:u?.values?.length??0;if(m===0)return;if(s)for(let h of r)gs(e,h.colorCol);else gs(e,l);let f=e.qn,b=s&&i?o+1:o;if(!i){let h;for(let[y,x]of t){if(y.startsWith("__")||s&&y.includes("|"))continue;let C=y.lastIndexOf("|"),_=C===-1?y:y.substring(C+1);if(!(_===e.q||_===e.r)&&x.type==="string"&&x.indices&&x.dictionary){h=x;break}}let g=s?r:null;for(let y=0;y<m;y++){let x=h?.indices&&h?.dictionary?h.dictionary[h.indices[y]]:`Row ${f+y}`;if(g)for(let C of g){let _=C.sizeCol?.values?C.sizeCol.values[y]:1,{colorValue:v,colorLabel:A}=ii(e,C.colorCol,y);ni(e,[C.prefix,x],_,v,A,f+y,b)}else{let C=a?.values?a.values[y]:1,{colorValue:_,colorLabel:v}=ii(e,l,y);ni(e,[x],C,_,v,f+y,b)}}e.qn=f+m;return}let p=s?1:0,c=new Array(n.length+p);for(let h=0;h<m;h++){let g=0;for(let y=0;y<n.length;y++){let x=n[y],C=x.dictionary[x.indices[h]];if(!C&&C!=="0")break;c[p+g++]=C}if(g!==0)if(s)for(let y of r){c[0]=y.prefix;let x=c.slice(0,g+1),C=y.sizeCol?.values?y.sizeCol.values[h]:1,{colorValue:_,colorLabel:v}=ii(e,y.colorCol,h);ni(e,x,C,_,v,f+h,b)}else{let y=c.slice(0,g),x=a?.values?a.values[h]:1,{colorValue:C,colorLabel:_}=ii(e,l,h);ni(e,y,x,C,_,f+h,b)}}e.qn=f+m}function Ht(e){let t=e.s,n=t.value,i=t.size,o=t.firstChild,r=t.nextSibling,s=new Int32Array(128);s[0]=e.Y,s[1]=0;let a=1;for(let l=0;l<t.count;l++)n[l]=0;for(;a>0;){a--;let l=s[a*2];if(s[a*2+1]===0){s[a*2+1]=1,a++;for(let m=o[l];m!==-1;m=r[m]){if((a+1)*2>s.length){let f=new Int32Array(s.length*2);f.set(s),s=f}s[a*2]=m,s[a*2+1]=0,a++}}else if(o[l]===-1)n[l]=Math.max(0,i[l]);else{let m=0;for(let f=o[l];f!==-1;f=r[f])m+=n[f];n[l]=m}}if(e.ue.length>1){let l=[];for(let f=1;f<e.ue.length;f++)l.push(t.name[e.ue[f]]);let u=e.Y,m=!0;for(let f of l){let p=e.Gt.get(u)?.get(f);if(p===void 0){m=!1;break}u=p}if(m&&t.firstChild[u]!==-1){e.p=u,dt(e,u);return}}e.p=e.Y,e.ue=[e.Y]}function dt(e,t){let n=[],i=t;for(;i!==-1;)n.unshift(i),i=e.s.parent[i];e.ue=n}var xu=1,Ao=14,ys=1,xs=4;function oi(e,t,n,i,o,r,s,a,l){if(e.x0[t]=Math.round(n),e.y0[t]=Math.round(i),e.x1[t]=Math.round(o),e.y1[t]=Math.round(r),e.firstChild[t]===-1||(o-n)*(r-i)<xs)return;let m=e.depth[t]-s,f=l&&m===1&&e.firstChild[t]!==-1,b=f?Ao:ys,p=f?xu:ys,c=e.x0[t]+p,h=e.y0[t]+b,g=e.x1[t]-p,y=e.y1[t]-p;if(g<=c||y<=h)return;let x=0;for(let C=e.firstChild[t];C!==-1;C=e.nextSibling[C])e.value[C]>0&&(a[x++]=C);x!==0&&Yt(e,a,0,x,c,h,g,y,s,a.subarray(x),l)}function Yt(e,t,n,i,o,r,s,a,l,u,m){let f=i-n;if(f===0)return;if(f===1){oi(e,t[n],o,r,s,a,l,u,m);return}let b=0;for(let v=n;v<i;v++)b+=e.value[t[v]];let p=b/2,c=0,h=n+1,g=1/0;for(let v=n;v<i-1;v++){c+=e.value[t[v]];let A=Math.abs(c-p);A<g&&(g=A,h=v+1)}let y=0;for(let v=n;v<h;v++)y+=e.value[t[v]];let x=y/b,C=s-o,_=a-r;if(C>=_){let v=Math.round(o+C*x);Yt(e,t,n,h,o,r,v,a,l,u,m),Yt(e,t,h,i,v,r,s,a,l,u,m)}else{let v=Math.round(r+_*x);Yt(e,t,n,h,o,r,s,v,l,u,m),Yt(e,t,h,i,o,v,s,a,l,u,m)}}function Cs(e,t,n,i){e.ne=Lo(e,t,n,i,0)}function Lo(e,t,n,i,o){let r=e.s,s=r.x0,a=r.y0,l=r.x1,u=r.y1,m=r.depth,f=r.firstChild,b=r.nextSibling,p=r.value;(!e.X||e.X.length<r.count)&&(e.X=new Int32Array(r.count));let c=e.X,h=o,g=new Int32Array(128);g[0]=t;let y=1;for(;y>0;){y--;let x=g[y];if(p[x]<=0||(m[x]>=i&&(c[h++]=x),m[x]-i>=n))continue;let C=l[x]-s[x],_=u[x]-a[x];if(!(C*_<xs))for(let v=f[x];v!==-1;v=b[v]){if(y>=g.length){let A=new Int32Array(g.length*2);A.set(g),g=A}g[y++]=v}}return h}Bt();rt();Ae();St();ve();function ri(e,t,n){return .299*e+.587*t+.114*n}function Cu(e,t){let n=be(e,t);return[n[0],n[1],n[2]]}function Vt(e,t,n,i){let o=e.s,r=o.colorValue[t];if(e.K==="numeric"&&!isNaN(r)&&e.l>e.f)return Cu(n,Xe(r,e.f,e.l));let s=e.a.get(o.colorLabel[t])??0;return i[s%i.length]??[0,0,0]}function si(e,t,n,i,o){let r=Vt(e,t,n,i),s=e.s.sizeSign[t]<0?o:1;return[r[0],r[1],r[2],s]}function ai(e,t,n,i,o,r,s){let a=Math.round(i*n),l=Math.round(o*n);(t.width!==a||t.height!==l)&&(t.width=a,t.height=l,e.At=!0);let u=t.getContext("2d");if(u){if(e.At){e.me?.close(),e.me=null,e.At=!1;let m=++e.fn;r(u),createImageBitmap(t).then(f=>{e.fn===m?(e.me?.close(),e.me=f):f.close()})}else e.me&&(u.clearRect(0,0,t.width,t.height),u.drawImage(e.me,0,0));s&&(u.save(),u.scale(n,n),s(u),u.restore())}}function To(e,t,n,i,o){if(o===0)return{x:e-n/2,y:t,width:n,height:i};if(o===90)return{x:e-i/2,y:t,width:i,height:n};let r=(n+i)/Math.SQRT2;return{x:e-r,y:t,width:r,height:r}}function wo(e,t){return e.x<=t.x+t.width&&t.x<=e.x+e.width&&e.y<=t.y+t.height&&t.y<=e.y+e.height}function _s(e,t){return e.x+e.width+14>t.x+t.width}function Ro(e,t){return e.x>=t.x&&e.x+e.width<=t.x+t.width&&e.y>=t.y&&e.y+e.height<=t.y+t.height}function Ze(e,t,n){if(n<=0)return"";if(e.measureText(t).width<=n)return t;let i=0,o=t.length;for(;i<o;){let r=i+o+1>>1,s=t.slice(0,r)+"\\u2026";e.measureText(s).width<=n?i=r:o=r-1}return i===0?"":t.slice(0,i)+"\\u2026"}function vs(e,t,n,i){if(i<=0||n<=0)return[];if(e.measureText(t).width<=n)return[t];let o=[],r=t;for(;r.length>0&&o.length<i;){let s=o.length===i-1,a=r.length;for(;a>0&&e.measureText(r.slice(0,a)).width>n;)a--;if(a===0&&(a=1),a===r.length){o.push(r);break}let l=a,u=r.lastIndexOf(" ",a);if(u>0&&(l=u),s){o.push(Ze(e,r,n));break}o.push(r.slice(0,l)),r=r.slice(l).trimStart()}return o.length===1&&o[0].length<=2?[]:o}function As(e,t,n,i,o,r,s,a){if(n.length===0)return;let{Sn:l,Ki:u,qi:m}=t;e.font=`11px ${a}`;let f=16,b=8,p=0;for(let x of n){let C=e.measureText(x).width;C>p&&(p=C)}let c=p+b*2,h=n.length*f+b*2-4,g=i+12,y=o-h-8;g+c>r&&(g=i-c-12),g<0&&(g=4),y<0&&(y=o+12),y+h>s&&(y=s-h-4),e.fillStyle=l,e.strokeStyle=m,e.lineWidth=1,e.beginPath(),e.roundRect(g,y,c,h,4),e.fill(),e.stroke(),e.fillStyle=u,e.textAlign="left",e.textBaseline="top";for(let x=0;x<n.length;x++)e.fillText(n[x],g+b,y+b+x*f)}var Ls=24,_u=8,Ts=12,ws=2,Rs=" \\u203A ";function li(e,t,n,i,o){e.De=[];let r=e.T().Sn;t.fillStyle=r,t.fillRect(0,0,n,Ls),t.font=`11px ${i}`,t.textAlign="left",t.textBaseline="middle";let s=_u,a=e.s;for(let l=0;l<e.ue.length;l++){let u=e.ue[l],m=l===e.ue.length-1,f=a.name[u];t.fillStyle=o;let b=t.measureText(f).width;t.fillText(f,s,Ts),e.De.push({nodeId:u,x0:s-ws,y0:0,x1:s+b+ws,y1:Ls}),s+=b,m||(t.fillText(Rs,s,Ts),s+=t.measureText(Rs).width)}}function ui(e,t,n,i,o,r,s,a){let l=e.k.hoveredTarget===n?e.k.lines??[]:[];l.length!==0&&As(t,e.T(),l,i,o,r,s,a)}function pt(e,t){if(e.p===-1)return;let n=t.gl,i=t.cssWidth,o=t.cssHeight;if(i<=0||o<=0)return;let r=e.s,s=e.w.length>0&&e.P.facet_mode==="grid",a=e.ue.length>1?28:0,u=(e.K==="series"?e.a.size>1:e.K==="numeric"&&e.f<e.l)?90:0,m=new Int32Array(Math.max(r.count,64));if(s)vu(e,m,i,o,a,u);else{e.A=null;let c=r.depth[e.p];oi(r,e.p,0,a,i-u,o,c,m,e.Kn),Cs(e,e.p,100,c),Mo(e);let h=e.we,g=e.Ie;for(let y=0;y<e.ne;y++)h[y]=c,g[y]=e.p}e.i||(e.i=t.shaders.getOrCreate("treemap",An,Ln),e.B={u_resolution:n.getUniformLocation(e.i,"u_resolution"),a_position:n.getAttribLocation(e.i,"a_position"),a_color:n.getAttribLocation(e.i,"a_color")});let f=e.T(),b=f.V,p=re(f.Se,b,Math.max(1,e.a.size));if(e.I){let c=e.I.getContext("2d");c&&c.clearRect(0,0,e.I.width,e.I.height)}e.At=!0,Au(e,n,b,p,f.di),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendFunc(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA),n.useProgram(e.i),n.uniform2f(e.B.u_resolution,i,o),n.bindBuffer(n.ARRAY_BUFFER,e.kt),n.enableVertexAttribArray(e.B.a_position),n.vertexAttribPointer(e.B.a_position,2,n.FLOAT,!1,0,0),n.bindBuffer(n.ARRAY_BUFFER,e.Nt),n.enableVertexAttribArray(e.B.a_color),n.vertexAttribPointer(e.B.a_color,4,n.FLOAT,!1,0,0),n.drawArrays(n.TRIANGLES,0,e.Ri),bt(e)}function vu(e,t,n,i,o,r){let s=e.s,a=[],l=[];for(let c=s.firstChild[e.Y];c!==-1;c=s.nextSibling[c])s.value[c]<=0||(a.push(c),l.push(s.name[c]));let u=Math.max(1,i-o),m=Math.max(1,n-r),f=Ie(l,{cssWidth:m,cssHeight:u,hasLegend:!1,xAxis:"none",yAxis:"none",gap:e.P.facet_padding});e.A=f,Mo(e);let b=e.we,p=0;for(let c=0;c<a.length;c++){let h=a[c],g=f.cells[c];if(!g)continue;let y=s.name[h],x=e.Ue.get(y)??h,C=s.depth[x],_=g.layout.t;oi(s,x,_.x,_.y+o,_.x+_.width,_.y+o+_.height,C,t,e.Kn);let v=Lo(e,x,100,C,p);b.length<v&&Mo(e);let A=e.we,R=e.Ie;for(let L=p;L<v;L++)A[L]=C,R[L]=x;p=v}e.ne=p}function Mo(e){let t=e.X?.length??e.s.count;(!e.we||e.we.length<t)&&(e.we=new Int32Array(t)),(!e.Ie||e.Ie.length<t)&&(e.Ie=new Int32Array(t))}function Au(e,t,n,i,o){let r=e.s,s=e.X,a=e.ne,l=e.we,u=e.Ie,m=g=>l?l[g]:r.depth[e.p],f=g=>u?u[g]:e.p,b=0;for(let g=0;g<a;g++){let y=s[g];if(y===f(g))continue;let x=r.x1[y]-r.x0[y],C=r.y1[y]-r.y0[y];x<1||C<1||(r.firstChild[y]===-1?b++:r.depth[y]-m(g)===1&&(b+=2))}let p=new Float32Array(b*6*2),c=new Float32Array(b*6*4),h=0;for(let g=0;g<a;g++){let y=s[g];if(y===f(g))continue;let x=r.x0[y],C=r.y0[y],_=r.x1[y],v=r.y1[y],A=_-x,R=v-C;if(!(A<1||R<1)){if(r.firstChild[y]===-1){let L=si(e,y,n,i,o);h=Fo(p,c,h,x,C,_-1,v-1,L)}else if(r.depth[y]-m(g)===1){let w=[.25,.25,.25,1];h=Fo(p,c,h,x,v-1,_,v,w),h=Fo(p,c,h,_-1,C,_,v,w)}}}e.Ri=h,e.kt||(e.kt=t.createBuffer()),t.bindBuffer(t.ARRAY_BUFFER,e.kt),t.bufferData(t.ARRAY_BUFFER,p.subarray(0,h*2),t.DYNAMIC_DRAW),e.Nt||(e.Nt=t.createBuffer()),t.bindBuffer(t.ARRAY_BUFFER,e.Nt),t.bufferData(t.ARRAY_BUFFER,c.subarray(0,h*4),t.DYNAMIC_DRAW)}function Fo(e,t,n,i,o,r,s,a){let l=n*2,u=n*4;e[l+0]=i,e[l+1]=o,e[l+2]=r,e[l+3]=o,e[l+4]=i,e[l+5]=s,e[l+6]=r,e[l+7]=o,e[l+8]=r,e[l+9]=s,e[l+10]=i,e[l+11]=s;for(let m=0;m<6;m++)t[u+m*4+0]=a[0],t[u+m*4+1]=a[1],t[u+m*4+2]=a[2],t[u+m*4+3]=a[3];return n+6}function bt(e){if(!e.d||e.p===-1)return;let t=e.e;if(!t)return;let{dpr:n,cssWidth:i,cssHeight:o}=t,r=e.$!==-1?e.$:e.F;ai(e,e.d,n,i,o,s=>Lu(e,s,n,i,o),r!==-1?s=>{let a=e.T(),{fontFamily:l}=a,u=e.s;Tu(s,u,r);let m=e.X,f=e.ne,b=e.we,p=e.Ie;for(let c=0;c<f;c++){let h=m[c],g=p?p[c]:e.p;if(h===g||u.firstChild[h]===-1)continue;let y=u.x1[h]-u.x0[h],x=u.y1[h]-u.y0[h],C=b?b[c]:u.depth[e.p],_=u.depth[h]-C;_===1?mi(s,u,h,y,x,a,!e.Kn):_===2&&mi(s,u,h,y,x,a,!0)}if(u.firstChild[r]===-1){let c=a.V,h=re(a.Se,c,Math.max(1,e.a.size)),g=u.x1[r]-u.x0[r],y=u.y1[r]-u.y0[r];Fs(e,s,r,g,y,l,c,h,!0)}e.$===-1&&e.F!==-1&&wu(e,s,e.F,i,o,l)}:null)}function Lu(e,t,n,i,o){let r=e.d;t.clearRect(0,0,r.width,r.height),t.save(),t.scale(n,n);let s=e.T(),{fontFamily:a,ge:l}=s,u=s.V,m=re(s.Se,u,Math.max(1,e.a.size)),f=e.s,b=e.X,p=e.ne,c=e.we,h=e.Ie;for(let g=0;g<p;g++){let y=b[g],x=h?h[g]:e.p;if(y===x||f.firstChild[y]!==-1)continue;let C=f.x1[y]-f.x0[y],_=f.y1[y]-f.y0[y];Fs(e,t,y,C,_,a,u,m)}for(let g=0;g<p;g++){let y=b[g],x=h?h[g]:e.p;if(y===x||f.firstChild[y]===-1)continue;let C=f.x1[y]-f.x0[y],_=f.y1[y]-f.y0[y],v=c?c[g]:f.depth[e.p],A=f.depth[y]-v;A===1?mi(t,f,y,C,_,s,!e.Kn):A===2&&mi(t,f,y,C,_,s,!0)}if(e.ue.length>1&&li(e,t,i,a,l),e.K==="series"&&e.a.size>1){let g=new j(i,o,{hasXLabel:!1,hasYLabel:!1,hasLegend:!0});ot(r,g,e.a,m,s)}else if(e.K==="numeric"&&e.f<e.l){let g=new j(i,o,{hasXLabel:!1,hasYLabel:!1,hasLegend:!0});Te(r,g,{min:e.f,max:e.l,label:e.r},u,s,e.getColumnFormatter(e.r,"value"))}if(e.A){t.font=`11px ${a}`,t.fillStyle=l,t.textAlign="center",t.textBaseline="top";for(let g of e.A.cells){let y=g.layout.t;t.fillText(g.label,y.x+y.width/2,y.y-14)}}t.restore()}function Fs(e,t,n,i,o,r,s,a,l=!1){if(i<30||o<14)return;let b=e.s,p=Vt(e,n,s,a),c=ri(p[0],p[1],p[2]),h=l?c>.5?"rgba(0,0,0,0.85)":"rgba(255,255,255,0.9)":c>.5?"rgba(0,0,0,0.5)":"rgba(255,255,255,0.55)",g=Math.min(11,Math.floor(o/2));if(g<7)return;t.font=`${g}px ${r}`;let y=i-8,x=g*1.3,C=Math.max(1,Math.floor((o-8)/x)),_=vs(t,b.name[n],y,C);if(_.length===0)return;let v=_.length*x,A=b.y0[n]+(o-v)/2+x/2;t.fillStyle=h,t.textAlign="center",t.textBaseline="middle";let R=b.x0[n]+i/2;for(let L=0;L<_.length;L++)t.fillText(_[L],R,A+L*x)}function mi(e,t,n,i,o,{fontFamily:r,ge:s,backgroundColor:a},l){let u=t.x0[n],m=t.y0[n],f=t.name[n];if(l){if(i<60||o<30)return;let b=12;e.font=`${b}px ${r}`;let p=f,c=i-16;if(e.measureText(p).width>c){for(;p.length>1;)if(p=p.slice(0,-1),e.measureText(p+"\\u2026").width<=c){p+="\\u2026";break}}if(p.length<=3)return;e.save(),e.beginPath(),e.rect(u,m,i,o),e.clip();let g=u+i/2,y=m+o/2;e.textAlign="center",e.textBaseline="middle",e.lineWidth=2,e.strokeStyle=s,e.lineJoin="round",e.strokeText(p,g,y),e.fillStyle=a,e.fillText(p,g,y),e.restore()}else{if(i<40||o<22)return;let b=11;e.font=`${b}px ${r}`;let p=f,c=i-10;if(e.measureText(p).width>c){for(;p.length>1;)if(p=p.slice(0,-1),e.measureText(p+"\\u2026").width<=c){p+="\\u2026";break}}e.fillStyle=s,e.globalAlpha=.85,e.textAlign="left",e.textBaseline="top",e.fillText(p,u+5,m+4),e.globalAlpha=1}}function Tu(e,t,n){e.strokeStyle="rgba(255,255,255,0.9)",e.lineWidth=2,e.strokeRect(t.x0[n],t.y0[n],t.x1[n]-t.x0[n],t.y1[n]-t.y0[n])}function wu(e,t,n,i,o,r){let s=e.s,a=(s.x0[n]+s.x1[n])/2,l=(s.y0[n]+s.y1[n])/2;ui(e,t,n,a,l,i,o,r)}function So(e,t,n){let i=e.s,o=i.x0,r=i.y0,s=i.x1,a=i.y1,l=i.depth,u=i.firstChild,m=e.X,f=e.ne,b=e.we,p=e.Ie,c=-1,h=1/0,g=-1,y=1/0,x=-1;if(!m)return{leafId:-1,branchId:-1,inHeader:!1};for(let C=0;C<f;C++){let _=m[C],v=p?p[C]:e.p;if(_===v||!(t>=o[_]&&t<=s[_]&&n>=r[_]&&n<=a[_]))continue;let A=(s[_]-o[_])*(a[_]-r[_]);if(u[_]!==-1){A<y&&(y=A,g=_);let R=b?b[C]:l[e.p],L=l[_]-R;if(L===1&&n<=r[_]+Ao&&(x=_),L===2){let w=s[_]-o[_],F=a[_]-r[_];if(w>=60&&F>=30){let G=r[_]+F/2,D=o[_]+w/2;Math.abs(n-G)<10&&Math.abs(t-D)<w*.4&&(x=_)}}}else A<h&&(h=A,c=_)}return x!==-1?{leafId:-1,branchId:x,inHeader:!0}:{leafId:c,branchId:g,inHeader:!1}}function Ms(e,t,n){if(e.$!==-1)return;for(let a of e.De)if(t>=a.x0&&t<=a.x1&&n>=a.y0&&n<=a.y1){e._.setCursor("pointer"),e.F=-1,bt(e);return}let{leafId:i,branchId:o,inHeader:r}=So(e,t,n),s=r?o:i!==-1?i:o;if(s!==e.F){if(e.F=s,e._.setCursor(o!==-1?"pointer":"default"),s!==-1){let a=e.k.beginHover(s);Is(e,s).then(l=>{e.k.commitHover(a,l)&&bt(e)})}else e.k.clearHover();bt(e)}}function Ss(e,t,n){if(e.$!==-1){Xt(e),e.emitUnselect();return}for(let s of e.De)if(t>=s.x0&&t<=s.x1&&n>=s.y0&&n<=s.y1){s.nodeId!==e.p&&(fi(e,s.nodeId),e.emitUnselect());return}let{leafId:i,branchId:o,inHeader:r}=So(e,t,n);o!==-1&&r?(fi(e,o),zt(e,o,"branch")):i!==-1?(Ds(e,i),zt(e,i,"leaf")):o!==-1&&(fi(e,o),zt(e,o,"branch"))}async function zt(e,t,n){let i=e.s,o=ei(i,t),r=e.w.length>0&&e.P.facet_mode==="grid",s=r?o.slice(0,e.w.length):[],a=r?o.slice(e.w.length,e.w.length+e.L.length):o.slice(0,e.L.length),l=n==="leaf"?i.leafRowIdx[t]??null:null;await e.emitClickAndSelect({rowIdx:l!=null&&l>=0?l:null,columnName:e.q,groupByValues:a,splitByValues:s})}function Bs(e,t,n){let i=e.$!==-1;Xt(e),i&&e.emitUnselect();let{leafId:o,branchId:r}=So(e,t,n),s=e.s,a=r;if(a===-1&&o!==-1){let l=s.parent[o];l!==e.p&&l!==-1&&(a=l)}a!==-1&&a!==e.p&&s.firstChild[a]!==-1&&(fi(e,a),zt(e,a,"branch"),o!==-1&&s.firstChild[o]===-1&&(Ds(e,o),zt(e,o,"leaf")))}function fi(e,t){let n=e.s;if(e.w.length>0&&e.P.facet_mode==="grid"){let i=t;for(;i!==-1&&n.parent[i]!==e.Y;)i=n.parent[i];if(i!==-1){let o=n.name[i];e.Ue.set(o,t)}e.F=-1,e.e&&pt(e,e.e);return}e.p=t,dt(e,t),e.F=-1,e.e&&pt(e,e.e)}function Ds(e,t){e._.dismiss(),e.$=t;let n=e.s,i=(n.x0[t]+n.x1[t])/2,o=(n.y0[t]+n.y1[t])/2,r=e.e?.cssWidth??0,s=e.e?.cssHeight??0;Is(e,t).then(a=>{e.$===t&&a.length!==0&&e._.pin(a,{px:i,py:o},{cssWidth:r,cssHeight:s})}),e.F=-1,bt(e)}function Xt(e){e._.dismiss(),e.$=-1}async function Is(e,t){let n=e.s,i=[],o=[],r=t;for(;n.parent[r]!==-1;)o.push(n.name[r]),r=n.parent[r];o.reverse(),o.length>0?i.push(o.join(" \\u203A ")):i.push(n.name[t]);let s=e.getColumnFormatter(e.q,"value");if(i.push(`Value: ${s(n.value[t])}`),e.r&&!isNaN(n.colorValue[t])){let u=e.getColumnFormatter(e.r,"value");i.push(`${e.r}: ${u(n.colorValue[t])}`)}let a=n.leafRowIdx[t];if(n.firstChild[t]===-1&&a!==-1&&e.ce){let u=await e.ce.fetchRow(a);for(let[m,f]of u)f!=null&&(m===e.r&&!isNaN(n.colorValue[t])||(typeof f=="number"?i.push(`${m}: ${e.getColumnFormatter(m,"value")(f)}`):i.push(`${m}: ${f}`)))}return n.firstChild[t]!==-1&&i.push(`Children: ${n.childCount[t]}`),i}function Ru(e){for(let t of e.keys())if(!t.startsWith("__"))return t;return""}var ci=class extends mt{constructor(){super(...arguments);d(this,"i",null);d(this,"B",null);d(this,"kt",null);d(this,"Nt",null);d(this,"Ri",0);d(this,"F",-1);d(this,"$",-1);d(this,"De",[]);d(this,"me",null);d(this,"At",!0);d(this,"fn",0);d(this,"Ue",new Map);d(this,"A",null);d(this,"Kn",!1);d(this,"we",null);d(this,"Ie",null)}tooltipCallbacks(){return{onHover:(n,i)=>Ms(this,n,i),onLeave:()=>{this.F!==-1&&this.$===-1&&(this.F=-1,this.e&&pt(this,this.e))},onClickPre:(n,i)=>(Ss(this,n,i),!0),onDblClick:(n,i)=>Bs(this,n,i)}}async uploadAndRender(n,i,o,r){if(this.e=n,o===0){let s=this.E;if(this.q=s[0]||Ru(i)||"",this.r=s[1]||"",!this.r)this.K="empty";else{let a=this.Je[this.r],l=a==="float"||a==="integer"||a==="date"||a==="datetime";this.K=l?"numeric":"series"}this.F=-1,this.$=-1,this.De=[],this.Ue.clear(),this.A=null,this.we=null,this.Ie=null,this.Ri=0,this.k.clearHover(),this.k.invalidatePin(),Xt(this),this.me?.close(),this.me=null,this.At=!0,this.fn++,Ut(this)}Ot(this,i),Ht(this),this.Y!==-1&&await this.requestRender(n)}It(n){this.Y!==-1&&(this.e=n,pt(this,n))}destroyInternal(){Xt(this),this.me?.close(),this.me=null;let n=this.e?.gl;n&&(this.kt&&n.deleteBuffer(this.kt),this.Nt&&n.deleteBuffer(this.Nt)),this.kt=null,this.Nt=null,this.i=null,this.B=null,this.Y=-1,this.p=-1,this.ue=[],this.Gt.clear(),this.X=null,this.ne=0,this.De=[],this.Ue.clear(),this.A=null,this.we=null,this.Ie=null}};Bt();rt();Ae();we();var Es=4,$t=30;function Fu(e,t){let n=0,i=e.depth[t],o=new Int32Array(128);o[0]=t;let r=1;for(;r>0;){r--;let s=o[r],a=e.depth[s]-i;a>n&&(n=a);for(let l=e.firstChild[s];l!==-1;l=e.nextSibling[l]){if(r>=o.length){let u=new Int32Array(o.length*2);u.set(o),o=u}o[r++]=l}}return n}function Bo(e,t,n){let i=e.depth[t],o=Math.max(1,Fu(e,t)),s=Math.max(0,n-$t)/o;e.a0[t]=0,e.a1[t]=2*Math.PI,e.r0[t]=0,e.r1[t]=$t,Ps(e,t,0,2*Math.PI,$t,s,i)}function Ps(e,t,n,i,o,r,s){let a=e.value[t];if(a<=0)return;let l=i-n,u=n;for(let m=e.firstChild[t];m!==-1;m=e.nextSibling[m]){let f=e.value[m];if(f<=0)continue;let b=f/a,p=u,c=u+l*b;u=c;let h=o,g=o+r;e.a0[m]=p,e.a1[m]=c,e.r0[m]=h,e.r1[m]=g;let y=c-p,x=(h+g)/2;y*x*r<Es||e.firstChild[m]!==-1&&Ps(e,m,p,c,g,r,s)}}function Ws(e,t){e.ne=Do(e,t,0)}function Do(e,t,n){let i=e.s,o=i.a0,r=i.a1,s=i.r0,a=i.r1,l=i.firstChild,u=i.nextSibling,m=i.value;(!e.X||e.X.length<i.count)&&(e.X=new Int32Array(i.count));let f=e.X,b=n,p=new Int32Array(128);p[0]=t;let c=1;for(;c>0;){c--;let h=p[c];if(m[h]<=0)continue;f[b++]=h;let g=r[h]-o[h],y=(s[h]+a[h])/2,x=g*y,C=a[h]-s[h];if(!(x*C<Es))for(let _=l[h];_!==-1;_=u[_]){if(c>=p.length){let v=new Int32Array(p.length*2);v.set(p),p=v}p[c++]=_}}return b}St();rt();var di=32,Mu=28,Su=90;function pi(e,t){if(e.m.length===0)return{centerX:e.rt,centerY:e.st};let n=e.s;for(let i of e.m){let o=t;for(;o!==-1;){if(o===i.drillRoot)return{centerX:i.centerX,centerY:i.centerY};o=n.parent[o]}}return{centerX:e.rt,centerY:e.st}}function ht(e,t){if(e.p===-1)return;let n=t.gl,i=t.cssWidth,o=t.cssHeight;if(i<=0||o<=0)return;let r=e.w.length>0&&e.P.facet_mode==="grid",s=e.K==="series"?e.a.size>1:e.K==="numeric"&&e.f<e.l,a=!r&&e.ue.length>1?Mu:0,l=s?Su:0;if(r)Bu(e,i,o,l);else{e.A=null,e.m=[];let c=i-l,h=o-a;e.rt=c/2,e.st=a+h/2,e.Fi=Math.max(0,Math.min(c,h)/2-4),Bo(e.s,e.p,e.Fi),Ws(e,e.p)}Du(e,t);let u=e.T(),m=u.V,f=re(u.Se,m,Math.max(1,e.a.size));if(e.I){let c=e.I.getContext("2d");c&&c.clearRect(0,0,e.I.width,e.I.height)}let b=t.dpr;e.At=!0,Iu(e,n,m,f,u.di,b),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendFunc(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA),n.useProgram(e.i);let p=e.B;if(n.uniform2f(p.u_resolution,n.canvas.width,n.canvas.height),n.uniform1f(p.u_border_px,u.Qi*b),e.m.length>0)for(let c of e.m)c.instanceCount!==0&&(n.uniform2f(p.u_center,c.centerX*b,c.centerY*b),Gs(e,n,t,c.instanceStart,c.instanceCount));else n.uniform2f(p.u_center,e.rt*b,e.st*b),Gs(e,n,t,0,e.Mi);Ne(e)}function Bu(e,t,n,i){let o=e.s,r=[],s=[];for(let f=o.firstChild[e.Y];f!==-1;f=o.nextSibling[f])o.value[f]<=0||(r.push(f),s.push(o.name[f]));let a=Math.max(1,t-i),l=Ie(s,{cssWidth:a,cssHeight:n,hasLegend:!1,xAxis:"none",yAxis:"none",gap:e.P.facet_padding});e.A=l;let u=[],m=0;for(let f=0;f<r.length;f++){let b=r[f],p=l.cells[f];if(!p)continue;let c=o.name[b],h=e.Ue.get(c)??b,g=p.layout.t,y=g.x+g.width/2,x=g.y+g.height/2,C=Math.max(0,Math.min(g.width,g.height)/2-4);Bo(o,h,C);let _=Do(e,h,m),v=m,A=_-m;u.push({label:c,centerX:y,centerY:x,maxRadius:C,drillRoot:h,instanceStart:v,instanceCount:A,nodeStart:v,nodeCount:A}),m=_}e.ne=m,e.m=u,u.length>0&&(e.rt=u[0].centerX,e.st=u[0].centerY,e.Fi=u[0].maxRadius)}function Du(e,t){if(e.i)return;let n=t.gl,i=t.shaders.getOrCreate("sunburst-arc",_n,vn);e.i=i,e.B={u_center:n.getUniformLocation(i,"u_center"),u_resolution:n.getUniformLocation(i,"u_resolution"),u_border_px:n.getUniformLocation(i,"u_border_px"),a_strip_t:n.getAttribLocation(i,"a_strip_t"),a_side:n.getAttribLocation(i,"a_side"),a_angles:n.getAttribLocation(i,"a_angles"),a_radii:n.getAttribLocation(i,"a_radii"),a_color:n.getAttribLocation(i,"a_color")};let o=new Float32Array((di+1)*2*2);for(let r=0;r<=di;r++){let s=r/di,a=r*4;o[a+0]=s,o[a+1]=0,o[a+2]=s,o[a+3]=1}e.qt=n.createBuffer(),n.bindBuffer(n.ARRAY_BUFFER,e.qt),n.bufferData(n.ARRAY_BUFFER,o,n.STATIC_DRAW),e.Kt=n.createBuffer()}function Iu(e,t,n,i,o,r){let s=e.s,a=e.X,l=e.m.length>0,u=l?e.m.reduce((p,c)=>p+c.instanceCount,0):e.ne,m=new Float32Array(u*8),f=0,b=(p,c,h)=>{let g=f;for(let y=p;y<c;y++){let x=a[y];if(x===h)continue;let C=s.a0[x],_=s.a1[x],v=s.r0[x],A=s.r1[x];if(_<=C||A<=v)continue;let R=si(e,x,n,i,o),L=f*8;m[L+0]=C,m[L+1]=_,m[L+2]=v*r,m[L+3]=A*r,m[L+4]=R[0],m[L+5]=R[1],m[L+6]=R[2],m[L+7]=R[3],f++}return{rangeStart:g,rangeCount:f-g}};if(l)for(let p of e.m){let c=p.instanceStart,h=c+p.instanceCount,{rangeStart:g,rangeCount:y}=b(c,h,p.drillRoot);p.instanceStart=g,p.instanceCount=y}else b(0,e.ne,e.p);e.Mi=f,t.bindBuffer(t.ARRAY_BUFFER,e.Kt),t.bufferData(t.ARRAY_BUFFER,m.subarray(0,f*8),t.DYNAMIC_DRAW)}function Gs(e,t,n,i,o){if(o===0)return;let r=e.B;t.bindBuffer(t.ARRAY_BUFFER,e.qt);let s=2*Float32Array.BYTES_PER_ELEMENT;t.enableVertexAttribArray(r.a_strip_t),t.vertexAttribPointer(r.a_strip_t,1,t.FLOAT,!1,s,0),t.enableVertexAttribArray(r.a_side),t.vertexAttribPointer(r.a_side,1,t.FLOAT,!1,s,Float32Array.BYTES_PER_ELEMENT);let a=K(n),{setDivisor:l}=a;l(r.a_strip_t,0),l(r.a_side,0),t.bindBuffer(t.ARRAY_BUFFER,e.Kt);let u=8*Float32Array.BYTES_PER_ELEMENT,m=Float32Array.BYTES_PER_ELEMENT,f=i*u;t.enableVertexAttribArray(r.a_angles),t.vertexAttribPointer(r.a_angles,2,t.FLOAT,!1,u,f),l(r.a_angles,1),t.enableVertexAttribArray(r.a_radii),t.vertexAttribPointer(r.a_radii,2,t.FLOAT,!1,u,f+2*m),l(r.a_radii,1),t.enableVertexAttribArray(r.a_color),t.vertexAttribPointer(r.a_color,4,t.FLOAT,!1,u,f+4*m),l(r.a_color,1),a.drawArraysInstanced(t.TRIANGLE_STRIP,0,2*(di+1),o),l(r.a_angles,0),l(r.a_radii,0),l(r.a_color,0)}function Ne(e){if(!e.d||e.p===-1)return;let t=e.e;if(!t)return;let{dpr:n,cssWidth:i,cssHeight:o}=t;ai(e,e.d,n,i,o,r=>Eu(e,r,n,i,o),e.F!==-1?r=>{Pu(r,e,e.F),Wu(e,r,e.F,i,o,e.T().fontFamily)}:null)}function Eu(e,t,n,i,o){let r=e.d;t.clearRect(0,0,r.width,r.height),t.save(),t.scale(n,n);let s=e.T(),{fontFamily:a,ge:l,Sn:u}=s,m=s.V,f=re(s.Se,m,Math.max(1,e.a.size)),b=e.s,p=e.X,c=e.ne,h=e.m.length>0;if(h)for(let y of e.m){let x=y.nodeStart+y.nodeCount;for(let C=y.nodeStart;C<x;C++){let _=p[C];_!==y.drillRoot&&ks(e,t,_,a,m,f,y.centerX,y.centerY)}}else for(let y=0;y<c;y++){let x=p[y];x!==e.p&&ks(e,t,x,a,m,f,e.rt,e.st)}let g=Math.max(0,$t-s.Qi*.5);if(t.fillStyle=u,t.textAlign="center",t.textBaseline="middle",h){for(let y of e.m)if(t.beginPath(),t.fillStyle=u,t.arc(y.centerX,y.centerY,g,0,2*Math.PI),t.fill(),t.fillStyle=l,t.font=`11px ${a}`,t.fillText(b.name[y.drillRoot],y.centerX,y.centerY),e.A){let x=e.A.cells.find(C=>C.label===y.label);x?.titleRect&&(t.fillStyle=l,t.font=`11px ${a}`,t.textBaseline="middle",t.fillText(y.label,x.titleRect.x+x.titleRect.width/2,x.titleRect.y+x.titleRect.height/2))}}else t.beginPath(),t.arc(e.rt,e.st,g,0,2*Math.PI),t.fill(),t.fillStyle=l,t.font=`11px ${a}`,t.fillText(b.name[e.p],e.rt,e.st);if(!h&&e.ue.length>1&&li(e,t,i,a,l),h&&e.A?.legendRect){if(e.K==="series"&&e.a.size>1)Gt(r,e.A.legendRect,e.a,f,s);else if(e.K==="numeric"&&e.f<e.l){let y=new j(i,o,{hasXLabel:!1,hasYLabel:!1,hasLegend:!0});Te(r,y,{min:e.f,max:e.l,label:e.r},m,s,e.getColumnFormatter(e.r,"value"))}}else if(e.K==="series"&&e.a.size>1){let y=new j(i,o,{hasXLabel:!1,hasYLabel:!1,hasLegend:!0});ot(r,y,e.a,f,s)}else if(e.K==="numeric"&&e.f<e.l){let y=new j(i,o,{hasXLabel:!1,hasYLabel:!1,hasLegend:!0});Te(r,y,{min:e.f,max:e.l,label:e.r},m,s,e.getColumnFormatter(e.r,"value"))}t.restore()}function ks(e,t,n,i,o,r,s,a){let l=e.s,u=l.a0[n],m=l.a1[n],f=l.r0[n],b=l.r1[n],p=b-f,c=(f+b)/2,g=(m-u)*c;if(p<16||g<8)return;let y=Math.min(11,Math.floor(g*.7));if(y<7)return;t.font=`${y}px ${i}`;let x=l.name[n],C=p-4,_=x;if(t.measureText(_).width>C){for(;_.length>1;)if(_=_.slice(0,-1),t.measureText(_+"\\u2026").width<=C){_+="\\u2026";break}}if(_.length<2)return;let v=(u+m)/2;t.save(),t.translate(s,a);let A=v,R=v>Math.PI/2&&v<3*Math.PI/2;e.ao==="upright"&&R&&(A+=Math.PI),t.rotate(A);let L=Vt(e,n,o,r),w=ri(L[0],L[1],L[2]);t.fillStyle=w>.5?"rgba(0,0,0,0.85)":"rgba(255,255,255,0.9)",t.textAlign="center",t.textBaseline="middle";let F=e.ao==="upright"&&R?-c:c;t.fillText(_,F,0),t.restore()}function Pu(e,t,n){let i=t.s,o=i.a0[n],r=i.a1[n],s=i.r0[n],a=i.r1[n],{centerX:l,centerY:u}=pi(t,n);e.strokeStyle="rgba(255,255,255,0.9)",e.lineWidth=2,e.beginPath(),e.arc(l,u,a,o,r),e.arc(l,u,s,r,o,!0),e.closePath(),e.stroke()}function Wu(e,t,n,i,o,r){let s=e.s,a=(s.a0[n]+s.a1[n])/2,l=(s.r0[n]+s.r1[n])/2,{centerX:u,centerY:m}=pi(e,n),f=u+Math.cos(a)*l,b=m+Math.sin(a)*l;ui(e,t,n,f,b,i,o,r)}function Us(e,t,n){if(e.m.length===0)return{centerX:e.rt,centerY:e.st,drillRoot:e.p};for(let i of e.m){let o=t-i.centerX,r=n-i.centerY;if(!(Math.sqrt(o*o+r*r)>i.maxRadius+4))return{centerX:i.centerX,centerY:i.centerY,drillRoot:i.drillRoot}}return null}function Gu(e,t,n){let i=e.s,o=t;for(;o!==-1;){if(o===n)return!0;o=i.parent[o]}return!1}function Os(e,t,n){let i=Us(e,t,n);if(!i)return-1;let o=e.s,r=e.X,s=e.ne;if(!r)return-1;let a=t-i.centerX,l=n-i.centerY,u=Math.sqrt(a*a+l*l),m=Math.atan2(l,a);if(m<0&&(m+=2*Math.PI),u<o.r1[e.Y]+.001&&i.drillRoot!==e.Y)return i.drillRoot;let f=e.m.length>0;for(let b=0;b<s;b++){let p=r[b];if(p===i.drillRoot||f&&!Gu(e,p,i.drillRoot))continue;let c=o.a0[p],h=o.a1[p],g=o.r0[p],y=o.r1[p];if(!(u<g||u>y)&&!(m<c||m>h))return p}return-1}function Hs(e,t,n){if(e.$!==-1)return;for(let r of e.De)if(t>=r.x0&&t<=r.x1&&n>=r.y0&&n<=r.y1){e._.setCursor("pointer"),e.F!==-1&&(e.F=-1,Ne(e));return}let i=Os(e,t,n),o=e.s;if(e._.setCursor(i!==-1&&o.firstChild[i]!==-1?"pointer":"default"),i!==e.F){if(e.F=i,i!==-1){let r=e.k.beginHover(i);Vs(e,i).then(s=>{e.k.commitHover(r,s)&&Ne(e)})}else e.k.clearHover();Ne(e)}}function Ys(e,t,n){if(e.$!==-1){bi(e),e.emitUnselect();return}for(let s of e.De)if(t>=s.x0&&t<=s.x1&&n>=s.y0&&n<=s.y1){s.nodeId!==e.p&&(Io(e,s.nodeId),e.emitUnselect());return}let i=e.s,o=Us(e,t,n);if(o){let s=t-o.centerX,a=n-o.centerY;if(Math.sqrt(s*s+a*a)<i.r1[e.Y]+.001){let u=i.parent[o.drillRoot];if(u!==-1&&u!==e.Y)Io(e,u),e.emitUnselect();else if(e.m.length>0){let m=e.m.find(f=>f.drillRoot===o.drillRoot);m&&(e.Ue.delete(m.label),e.emitUnselect()),e.e&&ht(e,e.e)}return}}let r=Os(e,t,n);r!==-1&&(i.firstChild[r]!==-1?(Io(e,r),Ns(e,r,"branch")):(ku(e,r),Ns(e,r,"leaf")))}async function Ns(e,t,n){let i=e.s,o=ei(i,t),r=e.w.length>0&&e.P.facet_mode==="grid",s=r?o.slice(0,e.w.length):[],a=r?o.slice(e.w.length,e.w.length+e.L.length):o.slice(0,e.L.length),l=n==="leaf"?i.leafRowIdx[t]??null:null;await e.emitClickAndSelect({rowIdx:l!=null&&l>=0?l:null,columnName:e.q,groupByValues:a,splitByValues:s})}function Io(e,t){let n=e.s;if(e.w.length>0&&e.P.facet_mode==="grid"){let i=t;for(;i!==-1&&n.parent[i]!==e.Y;)i=n.parent[i];i!==-1&&e.Ue.set(n.name[i],t),e.F=-1,e.e&&ht(e,e.e);return}e.p=t,dt(e,t),e.F=-1,e.e&&ht(e,e.e)}function ku(e,t){e._.dismiss(),e.$=t;let n=e.s,i=(n.a0[t]+n.a1[t])/2,o=(n.r0[t]+n.r1[t])/2,{centerX:r,centerY:s}=pi(e,t),a=r+Math.cos(i)*o,l=s+Math.sin(i)*o,u=e.e?.cssWidth??0,m=e.e?.cssHeight??0;Vs(e,t).then(f=>{e.$===t&&f.length!==0&&e._.pin(f,{px:a,py:l},{cssWidth:u,cssHeight:m})}),e.F=-1,Ne(e)}function bi(e){e._.dismiss(),e.$=-1}async function Vs(e,t){let n=e.s,i=[],o=[],r=t;for(;n.parent[r]!==-1;)o.push(n.name[r]),r=n.parent[r];o.reverse(),o.length>0?i.push(o.join(" \\u203A ")):i.push(n.name[t]);let s=e.getColumnFormatter(e.q,"value");if(i.push(`Value: ${s(n.value[t])}`),e.r&&!isNaN(n.colorValue[t])){let u=e.getColumnFormatter(e.r,"value");i.push(`${e.r}: ${u(n.colorValue[t])}`)}let a=n.leafRowIdx[t];if(n.firstChild[t]===-1&&a!==-1&&e.ce){let u=await e.ce.fetchRow(a);for(let[m,f]of u)f!=null&&(m===e.r&&!isNaN(n.colorValue[t])||(typeof f=="number"?i.push(`${m}: ${e.getColumnFormatter(m,"value")(f)}`):i.push(`${m}: ${f}`)))}return n.firstChild[t]!==-1&&i.push(`Children: ${n.childCount[t]}`),i}function Nu(e){for(let t of e.keys())if(!t.startsWith("__"))return t;return""}var hi=class extends mt{constructor(){super(...arguments);d(this,"i",null);d(this,"B",null);d(this,"qt",null);d(this,"Kt",null);d(this,"Mi",0);d(this,"ao","upright");d(this,"rt",0);d(this,"st",0);d(this,"Fi",0);d(this,"F",-1);d(this,"$",-1);d(this,"De",[]);d(this,"me",null);d(this,"At",!0);d(this,"fn",0);d(this,"A",null);d(this,"Ue",new Map);d(this,"m",[])}tooltipCallbacks(){return{onHover:(n,i)=>Hs(this,n,i),onLeave:()=>{this.F!==-1&&this.$===-1&&(this.F=-1,Ne(this))},onClickPre:(n,i)=>(Ys(this,n,i),!0)}}async uploadAndRender(n,i,o,r){if(this.e=n,o===0){let s=this.E;if(this.q=s[0]||Nu(i)||"",this.r=s[1]||"",!this.r)this.K="empty";else{let a=this.Je[this.r],l=a==="float"||a==="integer"||a==="date"||a==="datetime";this.K=l?"numeric":"series"}this.F=-1,this.$=-1,this.De=[],this.Ue.clear(),this.A=null,this.m=[],this.Mi=0,this.k.clearHover(),this.k.invalidatePin(),bi(this),this.me?.close(),this.me=null,this.At=!0,this.fn++,Ut(this)}Ot(this,i),Ht(this),this.Y!==-1&&await this.requestRender(n)}It(n){this.Y!==-1&&(this.e=n,ht(this,n))}destroyInternal(){bi(this),this.me?.close(),this.me=null;let n=this.e?.gl;n&&(this.qt&&n.deleteBuffer(this.qt),this.Kt&&n.deleteBuffer(this.Kt)),this.qt=null,this.Kt=null,this.i=null,this.B=null,this.Y=-1,this.p=-1,this.ue=[],this.Gt.clear(),this.X=null,this.ne=0,this.De=[],this.A=null,this.Ue.clear(),this.m=[]}};Ft();var gt=class extends he{constructor(){super(...arguments);d(this,"Re",[]);d(this,"ie",0);d(this,"lt",0);d(this,"i",null);d(this,"W",null);d(this,"u",null);d(this,"Le",null);d(this,"Te",null);d(this,"Be",null);d(this,"Wn",!0)}getZoomConfig(){return{lockAxis:"y"}}};Mt();function gi(e,t=.5,n=.1){let i=t/Math.max(1,e),o=i*(1-n)/2;return{slotWidth:i,halfWidth:o}}function zs(e,t,n="bar"){let i=t?.[e]?.chart_type?.toLowerCase?.();return i==="bar"||i==="line"||i==="scatter"||i==="area"?i:n}function Xs(e,t,n){let i=n?.[e]?.stack;return typeof i=="boolean"?i:t==="bar"||t==="area"}function $s(e,t){return t?.[e]?.alt_axis===!0}var js=50,qe=0,yi=1;function xi(){return{count:0,catIdx:new Int32Array(0),seriesId:new Int32Array(0),axis:new Uint8Array(0),chartType:new Uint8Array(0),xCenter:new Float64Array(0),halfWidth:new Float64Array(0),y0:new Float64Array(0),y1:new Float64Array(0)}}function Uu(e,t){return e&&e.catIdx.length>=t?(e.count=0,e):{count:0,catIdx:new Int32Array(t),seriesId:new Int32Array(t),axis:new Uint8Array(t),chartType:new Uint8Array(t),xCenter:new Float64Array(t),halfWidth:new Float64Array(t),y0:new Float64Array(t),y1:new Float64Array(t)}}function jt(e,t,n,i,o){let r=e.seriesId[t],s=e.catIdx[t];return{catIdx:s,aggIdx:Math.floor(r/n),splitIdx:r%n,seriesId:r,xCenter:e.xCenter[t],halfWidth:e.halfWidth[t],y0:e.y0[t],y1:e.y1[t],value:i[s*o+r],axis:e.axis[t],chartType:e.chartType[t]===qe?"bar":"area"}}function Zs(e,t){return e&&e.length>=t?e:new Float64Array(Math.max(t,e?.length??0))}function Ou(e,t){e[t>>3]|=1<<(t&7)}function qs(e){let{columns:t,numRows:n,columnSlots:i,groupBy:o,splitBy:r,groupByTypes:s,columnsConfig:a,defaultChartType:l,autoAltYAxis:u,bandInnerFrac:m,barInnerPad:f,includeZero:b,scratchBars:p,scratchPosStack:c,scratchNegStack:h}=e,g=ft(o,s),y={aggregates:[],splitPrefixes:[],rowPaths:[],numCategories:0,rowOffset:0,axisMode:g,numericCategoryDomain:null,categoryPositions:null,series:[],bars:xi(),posStack:c??null,negStack:h??null,samples:new Float32Array(0),sampleValid:new Uint8Array(0),leftDomain:{min:0,max:0},rightDomain:null,hasRightAxis:!1},x=i.filter(S=>!!S);if(x.length===0)return y;let C=[];if(r.length>0){for(let S of De(t,[],x))S.colNames.size>0&&C.push(S.prefix);C.length===0&&C.push("")}else C.push("");let _=o.map(S=>s[S]??"string"),{rowPaths:v,numCategories:A,rowOffset:R}=ct(t,n,o.length,_);if(A===0)return{...y,aggregates:x,splitPrefixes:C,rowPaths:v,rowOffset:R};let L=[],w=x.length,F=C.length;for(let S=0;S<w;S++)for(let E=0;E<F;E++){let V=x[S],Y=C[E],X=Y===""?V:`${Y}${w>1?` | ${V}`:""}`,q=zs(V,a,l),$=Xs(V,q,a);L.push({seriesId:S*F+E,aggIdx:S,splitIdx:E,aggName:V,splitKey:Y,label:X,color:[.5,.5,.5],axis:0,chartType:q,stack:$})}let G=[];for(let S=0;S<w;S++)G.push(b?{min:0,max:0}:{min:1/0,max:-1/0});let D=A,B=L.length,P=D*w,M=Zs(c??null,P),k=Zs(h??null,P);M.fill(0,0,P),k.fill(0,0,P);let N=new Float32Array(D*B),W=new Uint8Array(D*B+7>>3),J=null,U=null,O=1;if(g.mode==="numeric"&&D>0){let S=t.get("__ROW_PATH_0__"),E=je(S?.values,D,R,o[0]??"",g.numericType==="date"||g.numericType==="datetime");E&&(J=E.categoryPositions,U=E.numericCategoryDomain,O=E.numericCategoryDomain.bandWidth)}let ne=gi(w,m,f),fe=ne.slotWidth*O,ce=ne.halfWidth*O,de=new Float64Array(w),ye=(w-1)/2;for(let S=0;S<w;S++)de[S]=(S-ye)*fe;let Me=new Array(w*F),At=new Array(w*F);for(let S=0;S<w;S++){let E=x[S];for(let V=0;V<F;V++){let Y=C[V],X=Y===""?E:`${Y}|${E}`,q=t.get(X),$=S*F+V;Me[$]=q?.values??null,At[$]=q?.valid??null}}let on=D*w*F,H=Uu(p??null,on),z=0;for(let S=0;S<D;S++){let E=S+R,V=J?J[S]:S;for(let Y=0;Y<w;Y++){let X=de[Y],q=V+X,$=G[Y];for(let rn=0;rn<F;rn++){let sn=Y*F+rn,Ve=L[sn],ur=Y*F+rn,mr=Me[ur];if(!mr)continue;let fr=At[ur];if(fr&&!(fr[E>>3]>>(E&7)&1))continue;let se=mr[E];if(!isFinite(se))continue;let cr=S*B+sn;if(N[cr]=se,Ou(W,cr),(Ve.chartType==="bar"||Ve.chartType==="area")&&Ve.stack){if(se===0)continue;let Lt=S*w+Y,xe,Ce;se>=0?(xe=M[Lt],Ce=xe+se,M[Lt]=Ce):(xe=k[Lt],Ce=xe+se,k[Lt]=Ce),xe<$.min&&($.min=xe),Ce<$.min&&($.min=Ce),xe>$.max&&($.max=xe),Ce>$.max&&($.max=Ce),H.catIdx[z]=S,H.seriesId[z]=sn,H.axis[z]=0,H.chartType[z]=Ve.chartType==="bar"?qe:yi,H.xCenter[z]=q,H.halfWidth[z]=ce,H.y0[z]=xe,H.y1[z]=Ce,z++}else if(se<$.min&&($.min=se),se>$.max&&($.max=se),b&&(0<$.min&&($.min=0),0>$.max&&($.max=0)),Ve.chartType==="bar"||Ve.chartType==="area"){if(se===0)continue;H.catIdx[z]=S,H.seriesId[z]=sn,H.axis[z]=0,H.chartType[z]=Ve.chartType==="bar"?qe:yi,H.xCenter[z]=q,H.halfWidth[z]=ce,H.y0[z]=0,H.y1[z]=se,z++}}}}H.count=z;let Q=!1;if(u&&w>=2){let S=new Array(w),E=0,V=1/0;for(let Y=0;Y<w;Y++){let X=G[Y],q=Math.max(Math.abs(X.min),Math.abs(X.max),1e-12);S[Y]=q,q>E&&(E=q),q<V&&(V=q)}if(E/V>js){let Y=E/Math.sqrt(js);for(let X=0;X<w;X++)if(S[X]<Y)for(let $ of L)$.aggIdx===X&&($.axis=1);for(let X=0;X<H.count;X++)H.axis[X]=L[H.seriesId[X]].axis;Q=L.some(X=>X.axis===1)}}let ee=!1;for(let S=0;S<w;S++)if($s(x[S],a))for(let E of L)E.aggIdx===S&&(E.axis=1,ee=!0);if(ee){for(let S=0;S<H.count;S++)H.axis[S]=L[H.seriesId[S]].axis;Q=!0}let Z=b?{min:0,max:0}:{min:1/0,max:-1/0},oe=b?{min:0,max:0}:{min:1/0,max:-1/0};for(let S=0;S<H.count;S++){let E=H.axis[S]===0?Z:oe,V=H.y0[S],Y=H.y1[S];V<E.min&&(E.min=V),Y<E.min&&(E.min=Y),V>E.max&&(E.max=V),Y>E.max&&(E.max=Y)}for(let S=0;S<B;S++){let E=L[S];if(E.stack&&(E.chartType==="bar"||E.chartType==="area"))continue;let V=E.axis===0?Z:oe;for(let Y=0;Y<D;Y++){let X=Y*B+S;if(!(W[X>>3]>>(X&7)&1))continue;let q=N[X];q<V.min&&(V.min=q),q>V.max&&(V.max=q)}}(!isFinite(Z.min)||!isFinite(Z.max)||Z.min===0&&Z.max===0)&&(Z.min=0,Z.max=1);let ar=!isFinite(oe.min)||!isFinite(oe.max)||oe.min===0&&oe.max===0;return{aggregates:x,splitPrefixes:C,rowPaths:v,numCategories:A,rowOffset:R,axisMode:g,numericCategoryDomain:U,categoryPositions:J,series:L,bars:H,posStack:M,negStack:k,samples:N,sampleValid:W,leftDomain:Z,rightDomain:Q?ar?{min:0,max:1}:oe:null,hasRightAxis:Q}}Ae();Et();et();we();var Ks=qe;function Js(e,t,n){if(e.cn===0)return;let i=e.B,o=K(n),{setDivisor:r}=o;t.bindBuffer(t.ARRAY_BUFFER,e.W),t.enableVertexAttribArray(i.a_corner),t.vertexAttribPointer(i.a_corner,2,t.FLOAT,!1,0,0),r(i.a_corner,0),ke(n,o,i.a_x_center,"bar_x",1)&&ke(n,o,i.a_half_width,"bar_hw",1)&&ke(n,o,i.a_y0,"bar_y0",1)&&ke(n,o,i.a_y1,"bar_y1",1)&&ke(n,o,i.a_color,"bar_color",3)&&ke(n,o,i.a_series_id,"bar_sid",1)&&ke(n,o,i.a_axis,"bar_axis",1)&&o.drawArraysInstanced(t.TRIANGLE_STRIP,0,4,e.cn),r(i.a_x_center,0),r(i.a_half_width,0),r(i.a_y0,0),r(i.a_y1,0),r(i.a_color,0),r(i.a_series_id,0),r(i.a_axis,0)}var Ci=10;function _i(e){return e.Ee>=0?jt(e.fe,e.Ee,e.Oe.length,e.He,e.b.length):e.Pe}function Eo(e,t,n){if(!e.u)return;let i=e.u,o=i.t;if(t<o.x||t>o.x+o.width||n<o.y||n>o.y+o.height){Yu(e);return}let r=i.J,s=i.se,a=i.ee,l=i.ae,u,m,f,b;if(e.ut){let y=r,x=s,C=Math.min(a,l),_=Math.max(a,l),v=y+(t-o.x)/o.width*(x-y);u=C+(n-o.y)/o.height*(_-C),m=v,f=o.height/(_-C),b=o.width/(x-y)}else u=r+(t-o.x)/o.width*(s-r),m=l-(n-o.y)/o.height*(l-a),f=o.width/(s-r),b=o.height/(l-a);let p=e.dn&&e.oe&&!e.ut?e.oe.max-(n-o.y)/o.height*(e.oe.max-e.oe.min):m,c=e.dn&&e.oe&&!e.ut?o.height/(e.oe.max-e.oe.min):b,h=-1,g=null;if(g=Qs(e,"scatter",u,m,p,f,b,c),g||(g=Qs(e,"line",u,m,p,f,b,c)),!g){let y=e.fe,x=y.chartType,C=y.seriesId,_=y.xCenter,v=y.halfWidth,A=y.y0,R=y.y1,L=y.axis,w=e.Q;for(let F=0;F<y.count;F++){if(x[F]!==qe||w.has(C[F]))continue;let G=_[F],D=v[F];if(u<G-D||u>G+D)continue;let B=L[F]===0?m:p,P=A[F],M=R[F],k=P<M?P:M,N=P<M?M:P;if(B>=k&&B<=N){h=F;break}}}if(h<0&&!g){let y=Hu(e,u,m,p);y&&(y.idx>=0?h=y.idx:g=y.bar)}Vu(e,h,g)}function Qs(e,t,n,i,o,r,s,a){let l=e.ie,u=e.b.length;if(l===0||u===0)return null;let m=e.He,f=e.Ut,p=Ci*Ci,c=null,h=e.mt;for(let g of e.b){if(g.chartType!==t||e.Q.has(g.seriesId))continue;let y=g.axis===1?o:i,x=g.axis===1?a:s,C=h?0:Math.max(0,Math.floor(n-Ci/r)),_=h?l-1:Math.min(l-1,Math.ceil(n+Ci/r));for(let v=C;v<=_;v++){let A=v*u+g.seriesId;if(!(f[A>>3]>>(A&7)&1))continue;let R=m[A],L=h?h[v]:v,w=(L-n)*r,F=(R-y)*x,G=w*w+F*F;G<p&&(p=G,c={catIdx:v,aggIdx:g.aggIdx,splitIdx:g.splitIdx,seriesId:g.seriesId,xCenter:L,halfWidth:0,y0:0,y1:R,value:R,axis:g.axis,chartType:"bar"})}}return c}function Hu(e,t,n,i){let o=Math.round(t);if(o<0||o>=e.ie||Math.abs(t-o)>.5)return null;let r=e.b.length,s=e.He,a=e.Ut,l=e.fe,u=l.chartType,m=l.catIdx,f=l.seriesId,b=l.axis,p=l.y0,c=l.y1;for(let h=0;h<l.count;h++){if(u[h]!==yi||m[h]!==o||e.Q.has(f[h]))continue;let g=b[h]===0?n:i,y=p[h],x=c[h],C=y<x?y:x,_=y<x?x:y;if(g>=C&&g<=_)return{idx:h,bar:null}}for(let h of e.b){if(h.chartType!=="area"||h.stack||e.Q.has(h.seriesId))continue;let g=o*r+h.seriesId;if(!(a[g>>3]>>(g&7)&1))continue;let y=s[g],x=h.axis===1?i:n,C=Math.min(0,y),_=Math.max(0,y);if(x>=C&&x<=_)return{idx:-1,bar:{catIdx:o,aggIdx:h.aggIdx,splitIdx:h.splitIdx,seriesId:h.seriesId,xCenter:o,halfWidth:.5,y0:0,y1:y,value:y,axis:h.axis,chartType:"area"}}}return null}function Yu(e){(e.Ee!==-1||e.Pe!==null)&&(e.Ee=-1,e.Pe=null,e.e&&Ue(e,e.e))}function Vu(e,t,n){let i=e.Ee===t,o=(e.Pe?.seriesId??-1)===(n?.seriesId??-1)&&(e.Pe?.catIdx??-1)===(n?.catIdx??-1);i&&o||(e.Ee=t,e.Pe=n,e.e&&Ue(e,e.e))}function ea(e,t,n){if(e.Jn.length===0)return!1;for(let i of e.Jn){let o=i.rect;if(t>=o.x&&t<=o.x+o.width&&n>=o.y&&n<=o.y+o.height)return e.Q.has(i.seriesId)?e.Q.delete(i.seriesId):e.Q.add(i.seriesId),e.Lt=null,e.Qn=!1,e.ei=null,e.e&&(vi(e,e.e),Ai(e,e.e),Ue(e,e.e)),!0}return!1}function Po(e,t){let n=[],i=e.b[t.seriesId],o=zu(e,t.catIdx);o&&n.push(o);let r=e.getColumnFormatter(i.aggName,"value");return n.push(`${i.aggName}: ${r(t.value)}`),i.splitKey&&n.push(`Split: ${i.splitKey}`),t.y0!==0&&(n.push(`Base: ${r(t.y0)}`),n.push(`Top: ${r(t.y1)}`)),n}function zu(e,t){if(e.ft==="numeric"&&e.j){let i=e.fe,o=null;for(let s=0;s<i.count;s++)if(i.catIdx[s]===t){o=i.xCenter[s];break}if(o==null)return"";let r=e.L[0];return e.getColumnFormatter(r,"value")(o)}if(e.Re.length===0)return"";let n=[];for(let i of e.Re){let o=i.labels[t];o!=null&&o!==""&&n.push(o)}return n.join(" / ")}function ta(e,t){t<0||t>=e.fe.count||(e.Si=t,ia(e,jt(e.fe,t,e.Oe.length,e.He,e.b.length)))}function na(e,t){e.Si=-1,ia(e,t)}function ia(e,t){if(e._.dismiss(),!e.u)return;let n=e.u,o=(e.b[t.seriesId]?.chartType??"bar")==="bar"?(t.y0+t.y1)/2:t.y1,r=t.axis===0?e.ut?n.G(o,t.xCenter):n.G(t.xCenter,o):Wo(e,t.xCenter,o),s=Po(e,t);s.length!==0&&(e._.pin(s,r,n),e.Ee=-1,e.Pe=null,e.e&&Ue(e,e.e))}pe();pe();nt();var Xu=25,$u=22,Li=5,yt=11,No=14,ju=55,Zu=60,qu=10;function Go(e,t){return e.G(t,0).px}function ko(e,t){return e.G(0,t).py}function Ku(e,t,n){let i=Math.max(0,n-100);return e*16>i?{size:t*6.62+10,rotation:90}:e*(t*6+10)>i?{size:t*4+20,rotation:45}:{size:Xu,rotation:0}}function oa(e,t){let n=e.levels.length,i=[];for(let o=0;o<n;o++){let r=e.levels[o];o===n-1?i.push(Ku(e.numRows,r.maxLabelChars,t)):i.push({size:$u,rotation:0})}return i}function ra(e){let t=e.levels.length,n=[],i=6.2;for(let o=0;o<t;o++)if(o===t-1){let r=e.levels[o].maxLabelChars;n.push(Math.max(ju,r*i+qu))}else n.push(Zu);return n}function sa(e){let t=0;for(let n of e)t+=n;return t}function xt(e,t){return e.numRows===0||e.levels.length===0?24:sa(oa(e,t).map(n=>n.size))}function aa(e){return e.numRows===0||e.levels.length===0?55:sa(ra(e))}function Ju(e,t,n,i){let o=t-e+1;if(o<=0)return[];let r=Math.max(1,Math.floor(n/i));if(o<=r){let l=[];for(let u=e;u<=t;u++)l.push(u);return l}let s=Math.ceil(o/r),a=[];for(let l=e;l<=t;l+=s)a.push(l);return a}function la(e,t){return e.labels[t]??""}function ua(e,t,n,i){let o=i?Math.min(t,n):t,r=i?Math.max(t,n):n,s=Math.max(0,Math.ceil(o)),a=Math.min(e-1,Math.floor(r));return a<s?null:[s,a]}function ma(e,t,n,i){let o=[];for(let r of e){let s=t(r.startIdx-.5),a=t(r.endIdx+.5),l=Math.max(n,Math.min(s,a)),u=Math.min(i,Math.max(s,a));u>l&&o.push({run:r,nearEdge:s,farEdge:a,nearClip:l,farClip:u})}return o}function Zt(e,t,n,i){if(n.numRows===0||n.levels.length===0)return;let{Dt:o,ge:r,fontFamily:s}=i,{t:a}=t,l=a.y+a.height;e.strokeStyle=o,e.fillStyle=o,e.lineWidth=1,e.font=`${yt}px ${s}`;let u=oa(n,a.width),m=ua(n.numRows,t.J,t.se,!1);if(!m)return;let[f,b]=m,p=n.levels.length,c=l;for(let g=p-1;g>=0;g--){let y=n.levels[g],x=u[g],C=c;c+=x.size,g===p-1?Qu(e,t,y,f,b,C,x,s,o):em(e,t,y,f,b,C,s,o)}let h=n.levelLabels.filter(g=>!!g).join(" / ");h&&(e.fillStyle=r,e.font=`13px ${s}`,e.textAlign="center",e.textBaseline="bottom",e.fillText(h,a.x+a.width/2,t.cssHeight-2))}function Qu(e,t,n,i,o,r,s,a,l){let{t:u}=t,f=Math.max(40,Math.min(n.maxLabelChars*6.2+8,u.width/2)),b=s.rotation===0?Ju(i,o,u.width,f):tm(i,o);e.strokeStyle=l,e.fillStyle=l,e.beginPath();for(let g of b){let y=Go(t,g);y<u.x-1||y>u.x+u.width+1||(e.moveTo(y,r),e.lineTo(y,r+Li))}e.stroke(),e.font=`${yt}px ${a}`;let p=r+Li+3,c={x:u.x,width:u.width,y:r,height:9999},h=[];for(let g of b){let y=Go(t,g);if(y<u.x-1||y>u.x+u.width+1)continue;let x=la(n,g);if(!x)continue;let C=e.measureText(x).width,_=To(y,p,C,No,s.rotation);if(Ro(_,c)){if(s.rotation===0){if(h.some(v=>wo(v,_)))continue}else if(h.some(v=>_s(v,_)))continue;h.push(_),ca(e,x,y,p,s.rotation,"center")}}}function em(e,t,n,i,o,r,s,a){let{t:l}=t,u=Nt(n.runs,i,o);if(u.length===0)return;let m=ma(u,c=>Go(t,c),l.x,l.x+l.width);if(m.length===0)return;e.strokeStyle=a,e.fillStyle=a,e.beginPath();for(let c of m)e.moveTo(c.nearClip,r+3),e.lineTo(c.farClip,r+3),e.moveTo(c.nearEdge,r),e.lineTo(c.nearEdge,r+3),e.moveTo(c.farEdge,r),e.lineTo(c.farEdge,r+3);e.stroke(),e.font=`${yt}px ${s}`;let f=r+3+4,b=[],p={x:l.x,width:l.width,y:r,height:9999};for(let c of m){let h=(c.nearClip+c.farClip)/2,g=c.run.label;if(!g)continue;let y=c.farClip-c.nearClip-4,x=Ze(e,g,y);if(!x)continue;let C=e.measureText(x).width,_=To(h,f,C,No,0);Ro(_,p)&&(b.some(v=>wo(v,_))||(b.push(_),ca(e,x,h,f,0,"center")))}}function tm(e,t){let n=[];for(let i=e;i<=t;i++)n.push(i);return n}function fa(e,t,n,i){if(n.numRows===0||n.levels.length===0)return;let{Dt:o,ge:r,fontFamily:s}=i,{t:a}=t,l=a.x;e.strokeStyle=o,e.fillStyle=o,e.lineWidth=1,e.font=`${yt}px ${s}`;let u=ra(n),m=ua(n.numRows,t.ee,t.ae,!0);if(!m)return;let[f,b]=m,p=n.levels.length,c=l;for(let g=p-1;g>=0;g--){let y=n.levels[g],x=u[g],C=c;c-=x,g===p-1?nm(e,t,y,f,b,C,s,o):im(e,t,y,f,b,C,x,s,o)}let h=n.levelLabels.filter(g=>!!g).join(" / ");h&&(e.fillStyle=r,e.font=`13px ${s}`,e.save(),e.translate(14,a.y+a.height/2),e.rotate(-Math.PI/2),e.textAlign="center",e.textBaseline="bottom",e.fillText(h,0,0),e.restore())}function nm(e,t,n,i,o,r,s,a){let{t:l}=t,u=No+4,m=o-i+1,f=Math.max(1,Math.floor(l.height/u)),b=m<=f?1:Math.ceil(m/f);e.strokeStyle=a,e.fillStyle=a,e.beginPath();for(let p=i;p<=o;p+=b){let c=ko(t,p);c<l.y-1||c>l.y+l.height+1||(e.moveTo(r-Li,c),e.lineTo(r,c))}e.stroke(),e.font=`${yt}px ${s}`,e.textAlign="right",e.textBaseline="middle";for(let p=i;p<=o;p+=b){let c=ko(t,p);if(c<l.y-1||c>l.y+l.height+1)continue;let h=la(n,p);h&&e.fillText(h,r-Li-3,c)}}function im(e,t,n,i,o,r,s,a,l){let{t:u}=t,m=Nt(n.runs,i,o);if(m.length===0)return;let f=ma(m,p=>ko(t,p),u.y,u.y+u.height);if(f.length===0)return;e.strokeStyle=l,e.fillStyle=l;let b=r-3;e.beginPath();for(let p of f)e.moveTo(b,p.nearClip),e.lineTo(b,p.farClip),e.moveTo(b,p.nearEdge),e.lineTo(r,p.nearEdge),e.moveTo(b,p.farEdge),e.lineTo(r,p.farEdge);e.stroke(),e.font=`${yt}px ${a}`,e.textAlign="right",e.textBaseline="middle";for(let p of f){let c=(p.nearClip+p.farClip)/2,h=p.run.label;if(!h)continue;let g=s-6,y=Ze(e,h,g);y&&e.fillText(y,b-3,c)}}function ca(e,t,n,i,o,r){if(o===0){e.textAlign=r==="end"?"right":"center",e.textBaseline="top",e.fillText(t,n,i);return}e.save(),e.translate(n,i),e.rotate(-o*Math.PI/180),e.textAlign="right",e.textBaseline="middle",e.fillText(t,-2,0),e.restore()}lo();function da(e,t,n){if(n)return n;if(!e.isDate)return ie;let i=t.length>1?t[1]-t[0]:0;return o=>le(o,i)}function Uo(e,t,n,i,o,r,s){let{ge:a,fontFamily:l}=r,{t:u}=t,m=o==="bottom"?u.y+u.height:u.y;e.fillStyle=a,e.font=`11px ${l}`,e.lineWidth=1,Yn(e,u,i,m,o,f=>t.G(f,0).px,da(n,i,s)),e.font=`13px ${l}`,e.textAlign="center",e.textBaseline="bottom",e.fillText(n.label,u.x+u.width/2,o==="bottom"?t.cssHeight-2:10)}function Oo(e,t,n,i,o,r,s){let{ge:a,fontFamily:l}=r,{t:u}=t,m=o==="left"?u.x:u.x+u.width;e.fillStyle=a,e.font=`11px ${l}`,e.lineWidth=1,Vn(e,u,i,m,o,f=>t.G(0,f).py,da(n,i,s)),e.font=`13px ${l}`,e.save(),o==="left"?(e.translate(14,u.y+u.height/2),e.rotate(-Math.PI/2)):(e.translate(t.cssWidth-10,u.y+u.height/2),e.rotate(Math.PI/2)),e.textAlign="center",e.textBaseline="bottom",e.fillText(n.label,0,0),e.restore()}function Ti(e,t,n,i,o,r){Uo(e,t,n,i,"bottom",o,r)}function wi(e,t,n,i,o,r){Oo(e,t,n,i,"left",o,r)}function Ri(e,t,n,i,o,r,s,a,l,u=!1,m={}){let f=ae(e,o,s);if(!f)return;let{t:b}=o;if(f.strokeStyle=r.fi,f.lineWidth=1,f.beginPath(),f.moveTo(b.x,b.y),f.lineTo(b.x,b.y+b.height),f.lineTo(b.x+b.width,b.y+b.height),a&&(u?(f.moveTo(b.x,b.y),f.lineTo(b.x+b.width,b.y)):(f.moveTo(b.x+b.width,b.y),f.lineTo(b.x+b.width,b.y+b.height))),f.stroke(),u){if(t.mode==="category"?fa(f,o,t.domain,r):wi(f,o,t.domain,t.ticks,r,m.category),Uo(f,o,n,i,"bottom",r,m.value),a&&l){let p=o.J,c=o.se;o.J=a.min,o.se=a.max,Uo(f,o,a,l,"top",r,m.alt),o.J=p,o.se=c}}else if(t.mode==="category"?Zt(f,o,t.domain,r):Ti(f,o,t.domain,t.ticks,r,m.category),Oo(f,o,n,i,"left",r,m.value),a&&l){let p=o.ee,c=o.ae;o.ee=a.min,o.ae=a.max,Oo(f,o,a,l,"right",r,m.alt),o.ee=p,o.ae=c}}function Fi(e,t,n,i,o,r=!1){let s=ae(e,t,o);s&&(s.strokeStyle=i.Bn,s.lineWidth=1,r?zn(s,t.t,n,a=>t.G(a,0).px):Xn(s,t.t,n,a=>t.G(0,a).py))}var Oe=null;function pa(e){if(Oe&&Oe.xCenters.length>=e&&Oe.colors.length>=e*3)return Oe;let t=Math.max(e,Oe?.xCenters.length??0);return Oe={xCenters:new Float32Array(t),halfWidths:new Float32Array(t),y0s:new Float32Array(t),y1s:new Float32Array(t),seriesIds:new Float32Array(t),axes:new Float32Array(t),colors:new Float32Array(t*3)},Oe}function vi(e,t){let n=e.fe,i=n.count,o=0;if(i>0){let s=pa(i);(!e.pn||e.pn.length<i)&&(e.pn=new Int32Array(i));let a=e.pn,l=e.xe,u=e.b,m=e.Q,f=n.chartType,b=n.seriesId,p=n.xCenter,c=n.halfWidth,h=n.y0,g=n.y1,y=n.axis;for(let x=0;x<i;x++){if(f[x]!==Ks)continue;let C=b[x];if(m.has(C))continue;s.xCenters[o]=p[x]-l,s.halfWidths[o]=c[x],s.y0s[o]=h[x],s.y1s[o]=g[x],s.seriesIds[o]=C,s.axes[o]=y[x];let _=u[C].color;s.colors[o*3]=_[0],s.colors[o*3+1]=_[1],s.colors[o*3+2]=_[2],a[o]=x,o++}}if(e.cn=o,o===0){e.We=null;return}let r=Oe;t.C.ensureCapacity(o),t.C.upload("bar_x",r.xCenters.subarray(0,o),0,1),t.C.upload("bar_hw",r.halfWidths.subarray(0,o),0,1),t.C.upload("bar_y0",r.y0s.subarray(0,o),0,1),t.C.upload("bar_y1",r.y1s.subarray(0,o),0,1),t.C.upload("bar_sid",r.seriesIds.subarray(0,o),0,1),t.C.upload("bar_axis",r.axes.subarray(0,o),0,1),t.C.upload("bar_color",r.colors.subarray(0,o*3),0,3),(!e.We||e.We.length<o*3)&&(e.We=new Float32Array(Math.max(o*3,e.We?.length??0))),e.We.set(r.colors.subarray(0,o*3))}function om(e,t){let n=e.cn;if(n===0)return;let i=e.pn,o=e.b,r=e.fe.seriesId,s=pa(n);for(let l=0;l<n;l++){let u=o[r[i[l]]].color;s.colors[l*3]=u[0],s.colors[l*3+1]=u[1],s.colors[l*3+2]=u[2]}let a=e.We;if(a&&a.length>=n*3){let l=!0;for(let u=0;u<n*3;u++)if(a[u]!==s.colors[u]){l=!1;break}if(l)return}t.C.upload("bar_color",s.colors.subarray(0,n*3),0,3),(!a||a.length<n*3)&&(e.We=new Float32Array(n*3)),e.We.set(s.colors.subarray(0,n*3))}function ba(e){e.N.lines.invalidateBuffers(e),e.N.scatter.invalidateBuffers(e),e.N.areas.invalidateBuffers(e)}function Ai(e,t){e.N.lines.rebuildBuffers(e,t),e.N.scatter.rebuildBuffers(e,t),e.N.areas.rebuildBuffers(e,t)}function Ue(e,t){let n=t.gl,i=t.dpr,o=n.canvas.width/i,r=n.canvas.height/i;if(o<=0||r<=0||e.ie===0)return;let s=e.T();Ho(e)&&e.cn>0&&om(e,t);let a=e.ut,l=e.ft==="numeric",u=l?e.j.min:-.5,m=l?e.j.max:e.ie-.5,f=e.Bi.min,b=e.Bi.max;e.h&&(a?e.h.setBaseDomain(f,b,u,m):e.h.setBaseDomain(u,m,f,b));let p=u,c=m,h=f,g=b,y=e.oe?.min??0,x=e.oe?.max??1;if(e.h){let M=e.h.getVisibleDomain();a?(h=M.xMin,g=M.xMax,p=M.yMin,c=M.yMax):(p=M.xMin,c=M.xMax,h=M.yMin,g=M.yMax)}if(e.Wn&&e.h&&!e.h.isDefault()){let M=um(e,p,c);M.hasLeft&&(h=M.leftMin,g=M.leftMax),e.oe&&M.hasRight&&(y=M.rightMin,x=M.rightMax)}e.g.include_zero&&(h>0&&(h=0),g<0&&(g=0),e.oe&&(y>0&&(y=0),x<0&&(x=0)));let C=e.b.length>1,_=e.L.length>0,v={levels:e.Re,numRows:e.ie,levelLabels:e.L.slice()},A;if(a){let M=l?55:aa(v);A=new j(o,r,{hasXLabel:!0,hasYLabel:_,hasLegend:C,leftExtra:M})}else if(l)A=new j(o,r,{hasXLabel:_,hasYLabel:!0,hasLegend:C,bottomExtra:24});else{let k=C?80:16,N=Math.max(1,o-71-k),W=xt(v,N);A=new j(o,r,{hasXLabel:_,hasYLabel:!0,hasLegend:C,bottomExtra:W})}e.u=A,e.h&&e.h.updateLayout(A);let R=e.g.include_zero,L=a?A.buildProjectionMatrix(h,g,c,p,"x",R,void 0,0,e.xe):A.buildProjectionMatrix(p,c,h,g,"y",R,void 0,e.xe,0),w;if(e.dn&&e.oe&&!a){let M=A.J,k=A.se,N=A.ee,W=A.ae;w=A.buildProjectionMatrix(p,c,y,x,"y",R,void 0,e.xe,0),A.J=M,A.se=k,A.ee=N,A.ae=W}else w=L;let F=te(h,g,6),G=e.dn&&e.oe&&!a?te(y,x,6):null,D=v,B={min:h,max:g,label:e.uo},P=e.oe&&!a?{min:y,max:x,label:e.mo}:null;e.I&&Fi(e.I,A,F,s,t.dpr,a),Ee(n,A,t.dpr,()=>{a||e.N.areas.draw(e,n,t,L,w,s.di),n.useProgram(e.i);let M=e.B;n.uniformMatrix4fv(M.u_proj_left,!1,L),n.uniformMatrix4fv(M.u_proj_right,!1,w),n.uniform1f(M.u_horizontal,a?1:0);let k=e.b.length>1?_i(e):null;n.uniform1f(M.u_hover_series,k?k.seriesId:-1),Js(e,n,t),a||(e.N.lines.draw(e,n,t,L,w),e.N.scatter.draw(e,n,t,L,w))}),e.Le=D,e.Te=B,e.Be=F,e.fo=P,e.co=G,e.Ot=l?te(p,c,6):null,rm(e)}function rm(e){if(!e.d||!e.u||!e.Te||!e.Be)return;let t=e.T(),n;if(e.ft==="numeric"&&e.j&&e.Ot)n={mode:"numeric",domain:{min:e.j.min,max:e.j.max,isDate:e.j.isDate,label:e.j.label},ticks:e.Ot};else if(e.Le)n={mode:"category",domain:e.Le};else return;let i=e.b.find(s=>s.axis===0),o=e.b.find(s=>s.axis===1),r=e.L[0];Ri(e.d,n,e.Te,e.Be,e.u,t,e.e?.dpr??1,e.fo??void 0,e.co??void 0,e.ut,{value:e.getColumnFormatter(i?.aggName??null,"tick"),alt:e.getColumnFormatter(o?.aggName??null,"tick"),category:e.getColumnFormatter(r,"tick")}),am(e),_i(e)&&lm(e)}var Mi=new Float64Array(0);function sm(e,t,n){if(e.Qn)return;let i=e.b;Mi.length<i.length&&(Mi=new Float64Array(i.length)),t.save(),t.font=`11px ${n}`;for(let o=0;o<i.length;o++)Mi[o]=t.measureText(i[o].label).width;t.restore(),e.Qn=!0}function am(e){if(e.Jn=[],!e.d||!e.u||e.b.length<=1)return;let t=e.d.getContext("2d");if(!t)return;t.save();let n=e.T(),i=n.ci,o=n.fontFamily;sm(e,t,o);let r=e.u,s=10,a=18,l=r.t.x+r.t.width+12,u=r.margins.top+10;t.font=`11px ${o}`,t.textAlign="left",t.textBaseline="middle";let m=e.b,f=Mi;for(let b=0;b<m.length;b++){let p=m[b],c=e.Q.has(p.seriesId),h=Math.round(p.color[0]*255),g=Math.round(p.color[1]*255),y=Math.round(p.color[2]*255);t.globalAlpha=c?.3:1,t.fillStyle=`rgb(${h},${g},${y})`,t.fillRect(l,u-s/2,s,s),t.fillStyle=i,t.fillText(p.label,l+s+6,u);let x=f[b];c&&(t.strokeStyle=i,t.lineWidth=1,t.beginPath(),t.moveTo(l+s+6,u),t.lineTo(l+s+6+x,u),t.stroke()),t.globalAlpha=1;let C={x:l-2,y:u-a/2,width:s+6+x+4,height:a};e.Jn.push({seriesId:p.seriesId,rect:C}),u+=a}t.restore()}function lm(e){if(!e.d||!e.u)return;let t=_i(e);if(!t)return;let n=e.u,o=(e.b[t.seriesId]?.chartType??"bar")==="bar"?(t.y0+t.y1)/2:t.y1,r=t.axis===0?e.ut?n.G(o,t.xCenter):n.G(t.xCenter,o):Wo(e,t.xCenter,o),s=Po(e,t),a=e.T();_e(e.d,r,s,n,a,e.e?.dpr??1)}function Wo(e,t,n){let i=e.u,{x:o,y:r,width:s,height:a}=i.t,l=(t-i.J)/(i.se-i.J),u=e.oe,m=(n-u.min)/(u.max-u.min);return{px:o+l*s,py:r+(1-m)*a}}function um(e,t,n){let i=e.Lt;if(i&&i.catMin===t&&i.catMax===n&&i.hidden===e.Q)return i;let o=fm(e),r=1/0,s=-1/0,a=!1,l=1/0,u=-1/0,m=!1;if(o.n>0){let b=Math.max(0,Math.floor(t)),p=Math.min(o.n-1,Math.ceil(n)),c=o.leftMin,h=o.leftMax,g=o.rightMin,y=o.rightMax,x=o.hasLeft,C=o.hasRight;for(let _=b;_<=p;_++)x[_]&&(c[_]<r&&(r=c[_]),h[_]>s&&(s=h[_]),a=!0),C[_]&&(g[_]<l&&(l=g[_]),y[_]>u&&(u=y[_]),m=!0)}let f=i??mm();return f.catMin=t,f.catMax=n,f.hidden=e.Q,f.leftMin=r,f.leftMax=s,f.hasLeft=a,f.rightMin=l,f.rightMax=u,f.hasRight=m,e.Lt=f,f}function mm(){return{catMin:0,catMax:0,hidden:new Set,leftMin:0,leftMax:0,hasLeft:!1,rightMin:0,rightMax:0,hasRight:!1}}function fm(e){let t=e.ie,n=e.po,i=n&&n.leftMin.length>=t;if(n&&i&&e.ei===e.Q)return n;!n||!i?(n={leftMin:new Float64Array(t),leftMax:new Float64Array(t),rightMin:new Float64Array(t),rightMax:new Float64Array(t),hasLeft:new Uint8Array(t),hasRight:new Uint8Array(t),n:t},e.po=n):n.n=t;for(let h=0;h<t;h++)n.leftMin[h]=1/0,n.leftMax[h]=-1/0,n.rightMin[h]=1/0,n.rightMax[h]=-1/0,n.hasLeft[h]=0,n.hasRight[h]=0;let o=e.fe,r=e.Q,s=o.catIdx,a=o.seriesId,l=o.y0,u=o.y1,m=o.axis;for(let h=0;h<o.count;h++){if(r.has(a[h]))continue;let g=s[h];if(g<0||g>=t)continue;let y=l[h],x=u[h],C=y<x?y:x,_=y<x?x:y;m[h]===1?(C<n.rightMin[g]&&(n.rightMin[g]=C),_>n.rightMax[g]&&(n.rightMax[g]=_),n.hasRight[g]=1):(C<n.leftMin[g]&&(n.leftMin[g]=C),_>n.leftMax[g]&&(n.leftMax[g]=_),n.hasLeft[g]=1)}let f=[e.bn,e.hn],b=e.He,p=e.Ut,c=e.b.length;for(let h of f)for(let g of h){if(r.has(g.seriesId))continue;let y=g.axis===1,x=g.seriesId;for(let C=0;C<t;C++){let _=C*c+x;if(!(p[_>>3]>>(_&7)&1))continue;let v=b[_];y?(v<n.rightMin[C]&&(n.rightMin[C]=v),v>n.rightMax[C]&&(n.rightMax[C]=v),n.hasRight[C]=1):(v<n.leftMin[C]&&(n.leftMin[C]=v),v>n.leftMax[C]&&(n.leftMax[C]=v),n.hasLeft[C]=1)}}return e.ei=r,n}Bt();we();function ue(e,t,n,i,o,r){let s=e.shaders.getOrCreate(t,n,i),a=e.gl,l={program:s};for(let u of o)l[u]=a.getUniformLocation(s,u);for(let u of r)l[u]=a.getAttribLocation(s,u);return l}var qt=new Float32Array(0);function cm(e){return qt.length>=e||(qt=new Float32Array(Math.max(e,qt.length*2))),qt}var Si=class{constructor(){d(this,"i",null);d(this,"o",null)}ensureProgram(t){if(this.i)return this.i;let n=Ge(t.gl),i=ue(t,"bar-line",Se,Be,["u_projection","u_color","u_resolution","u_line_width"],["a_start","a_end","a_corner"]);return this.i={...i,cornerBuffer:n},this.i}invalidateBuffers(t){let n=this.o;if(!n||!t.e){this.o=null;return}let i=t.e.gl;for(let o of n.series)i.deleteBuffer(o.gpuBuffer);this.o=null}rebuildBuffers(t,n){let i=t.bn;if(i.length===0){this.o=null;return}let o=t.ie;if(o===0){this.o=null;return}this.ensureProgram(n);let r=n.gl,s=t.He,a=t.Ut,l=t.xe,u=t.mt,m=t.b.length,f=[];for(let b of i){let p=cm(o*2),c=[],h=0,g=0;for(let x=0;x<o;x++){let C=x*m+b.seriesId;if(a[C>>3]>>(C&7)&1){let v=u?u[x]-l:x;p[h++]=v,p[h++]=s[C]}else if(h>g){let v=(h-g)/2;v>=2&&c.push({offsetBytes:g*4,count:v}),g=h}}if(h>g){let x=(h-g)/2;x>=2&&c.push({offsetBytes:g*4,count:x})}if(c.length===0)continue;let y=r.createBuffer();r.bindBuffer(r.ARRAY_BUFFER,y),r.bufferData(r.ARRAY_BUFFER,p.subarray(0,h),r.STATIC_DRAW),f.push({seriesId:b.seriesId,axis:b.axis,color:[b.color[0],b.color[1],b.color[2]],gpuBuffer:y,runs:c})}this.o={series:f}}draw(t,n,i,o,r){let s=this.o,a=this.i;if(!s||!a||s.series.length===0)return;let l=i.dpr;n.useProgram(a.program),n.uniform2f(a.u_resolution,n.canvas.width,n.canvas.height),n.uniform1f(a.u_line_width,t.g.line_width_px*l);let u=K(i),{setDivisor:m,drawArraysInstanced:f}=u;n.bindBuffer(n.ARRAY_BUFFER,a.cornerBuffer),n.enableVertexAttribArray(a.a_corner),n.vertexAttribPointer(a.a_corner,1,n.FLOAT,!1,0,0),m(a.a_corner,0);let b=2*Float32Array.BYTES_PER_ELEMENT,p=t.Q;for(let c of s.series){if(p.has(c.seriesId))continue;n.bindBuffer(n.ARRAY_BUFFER,c.gpuBuffer),n.uniformMatrix4fv(a.u_projection,!1,c.axis===1?r:o);let h=t.b[c.seriesId].color;n.uniform4f(a.u_color,h[0],h[1],h[2],1),n.enableVertexAttribArray(a.a_start),m(a.a_start,1),n.enableVertexAttribArray(a.a_end),m(a.a_end,1);for(let g of c.runs)n.vertexAttribPointer(a.a_start,2,n.FLOAT,!1,b,g.offsetBytes),n.vertexAttribPointer(a.a_end,2,n.FLOAT,!1,b,g.offsetBytes+b),f(n.TRIANGLE_STRIP,0,4,g.count-1)}m(a.a_start,0),m(a.a_end,0)}destroy(t){let n=t.e?.gl;if(n){this.invalidateBuffers(t);let i=this.i;i&&n.deleteBuffer(i.cornerBuffer)}this.i=null,this.o=null}};var Re=new Float32Array(0),me=new Float32Array(0);function dm(e){Re.length<e*2&&(Re=new Float32Array(Math.max(e*2,Re.length*2))),me.length<e*3&&(me=new Float32Array(Math.max(e*3,me.length*2)))}var Bi=class{constructor(){d(this,"i",null);d(this,"o",null)}ensureProgram(t){if(this.i)return this.i;let n=t.gl,i=ue(t,"bar-scatter",bn,hn,["u_projection","u_point_size"],["a_position","a_color"]);return this.i={...i,posLeftBuffer:n.createBuffer(),posRightBuffer:n.createBuffer(),colorLeftBuffer:n.createBuffer(),colorRightBuffer:n.createBuffer()},this.i}invalidateBuffers(t){this.o=null}rebuildBuffers(t,n){let i=t.hn;if(i.length===0){this.o=null;return}let o=t.ie,r=t.b.length;if(o===0||r===0){this.o=null;return}let s=this.ensureProgram(n),a=n.gl,l=t.He,u=t.Ut,m=t.mt,f=t.xe,b=t.Q,p=0,c=0;for(let x of i)if(!b.has(x.seriesId))for(let C=0;C<o;C++){let _=C*r+x.seriesId;u[_>>3]>>(_&7)&1&&(x.axis===1?c++:p++)}let h=p+c;if(h===0){this.o=null;return}dm(h);let g=0,y=p;for(let x of i){if(b.has(x.seriesId))continue;let C=x.color[0],_=x.color[1],v=x.color[2];for(let A=0;A<o;A++){let R=A*r+x.seriesId;if(!(u[R>>3]>>(R&7)&1))continue;let L=m?m[A]-f:A,w=l[R];x.axis===1?(Re[y*2]=L,Re[y*2+1]=w,me[y*3]=C,me[y*3+1]=_,me[y*3+2]=v,y++):(Re[g*2]=L,Re[g*2+1]=w,me[g*3]=C,me[g*3+1]=_,me[g*3+2]=v,g++)}}p>0&&(a.bindBuffer(a.ARRAY_BUFFER,s.posLeftBuffer),a.bufferData(a.ARRAY_BUFFER,Re.subarray(0,p*2),a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,s.colorLeftBuffer),a.bufferData(a.ARRAY_BUFFER,me.subarray(0,p*3),a.STATIC_DRAW)),c>0&&(a.bindBuffer(a.ARRAY_BUFFER,s.posRightBuffer),a.bufferData(a.ARRAY_BUFFER,Re.subarray(p*2,h*2),a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,s.colorRightBuffer),a.bufferData(a.ARRAY_BUFFER,me.subarray(p*3,h*3),a.STATIC_DRAW)),this.o={leftCount:p,rightCount:c}}draw(t,n,i,o,r){let s=this.o,a=this.i;if(!s||!a||s.leftCount===0&&s.rightCount===0)return;let l=i.dpr;n.useProgram(a.program),n.uniform1f(a.u_point_size,t.g.point_size_px*l),ha(n,a,a.posLeftBuffer,a.colorLeftBuffer,s.leftCount,o),ha(n,a,a.posRightBuffer,a.colorRightBuffer,s.rightCount,r)}destroy(t){let n=t.e?.gl;if(n){let i=this.i;i&&(n.deleteBuffer(i.posLeftBuffer),n.deleteBuffer(i.posRightBuffer),n.deleteBuffer(i.colorLeftBuffer),n.deleteBuffer(i.colorRightBuffer))}this.i=null,this.o=null}};function ha(e,t,n,i,o,r){o!==0&&(e.uniformMatrix4fv(t.u_projection,!1,r),e.bindBuffer(e.ARRAY_BUFFER,n),e.enableVertexAttribArray(t.a_position),e.vertexAttribPointer(t.a_position,2,e.FLOAT,!1,0,0),e.bindBuffer(e.ARRAY_BUFFER,i),e.enableVertexAttribArray(t.a_color),e.vertexAttribPointer(t.a_color,3,e.FLOAT,!1,0,0),e.drawArrays(e.POINTS,0,o))}var Kt=new Float32Array(0);function pm(e){return Kt.length>=e||(Kt=new Float32Array(Math.max(e,Kt.length*2))),Kt}var Di=class{constructor(){d(this,"i",null);d(this,"o",null)}ensureProgram(t){return this.i?this.i:(this.i=ue(t,"bar-area",dn,pn,["u_projection","u_color","u_opacity"],["a_position"]),this.i)}invalidateBuffers(t){let n=this.o;if(!n||!t.e){this.o=null;return}let i=t.e.gl;for(let o of n.series)i.deleteBuffer(o.gpuBuffer);this.o=null}rebuildBuffers(t,n){let i=t.ti;if(i.length===0){this.o=null;return}let o=t.ie,r=t.b.length;if(o===0||r===0){this.o=null;return}this.ensureProgram(n);let s=n.gl,a=t.He,l=t.Ut,u=t.mt,m=t.xe,f=t.Di,b=t.fe,p=[];for(let c of i){let h=bm(c,o,r,a,l,f,b.y0,b.y1,u,m);if(h.totalVertices===0)continue;let g=s.createBuffer();s.bindBuffer(s.ARRAY_BUFFER,g),s.bufferData(s.ARRAY_BUFFER,h.scratch.subarray(0,h.totalVertices*2),s.STATIC_DRAW),p.push({seriesId:c.seriesId,axis:c.axis,color:[c.color[0],c.color[1],c.color[2]],gpuBuffer:g,strips:h.descriptors})}this.o={series:p}}draw(t,n,i,o,r,s){let a=this.o,l=this.i;if(!a||!l||a.series.length===0)return;n.useProgram(l.program),n.uniform1f(l.u_opacity,s);let u=t.Q;for(let m of a.series){if(u.has(m.seriesId))continue;n.uniformMatrix4fv(l.u_projection,!1,m.axis===1?r:o);let f=t.b[m.seriesId].color;n.uniform3f(l.u_color,f[0],f[1],f[2]),n.bindBuffer(n.ARRAY_BUFFER,m.gpuBuffer),n.enableVertexAttribArray(l.a_position),n.vertexAttribPointer(l.a_position,2,n.FLOAT,!1,0,0);for(let b of m.strips)n.bindBuffer(n.ARRAY_BUFFER,m.gpuBuffer),n.vertexAttribPointer(l.a_position,2,n.FLOAT,!1,0,b.offsetBytes),n.drawArrays(n.TRIANGLE_STRIP,0,b.vertexCount)}}destroy(t){this.invalidateBuffers(t),this.i=null}};function bm(e,t,n,i,o,r,s,a,l,u){let m=pm(t*4),f=[],b=e.seriesId*1e9,p=0,c=0;for(let h=0;h<t;h++){let g=0,y=0,x=!1;if(e.stack){let C=r?.get(b+h);C!==void 0&&(g=s[C],y=a[C],x=!0)}else{let C=h*n+e.seriesId;o[C>>3]>>(C&7)&1&&(y=i[C],x=!0)}if(x){let C=l?l[h]-u:h;m[p++]=C,m[p++]=g,m[p++]=C,m[p++]=y}else if(p>c){let C=(p-c)/2;C>=4&&f.push({offsetBytes:c*4,vertexCount:C}),c=p}}if(p>c){let h=(p-c)/2;h>=4&&f.push({offsetBytes:c*4,vertexCount:h})}return{descriptors:f,totalVertices:p/2,scratch:m}}var He=class extends gt{constructor(n="vertical"){super();d(this,"ut");d(this,"B",null);d(this,"Ii",[]);d(this,"Oe",[]);d(this,"b",[]);d(this,"fe",xi());d(this,"Ei",[]);d(this,"bn",[]);d(this,"hn",[]);d(this,"ti",[]);d(this,"uo","");d(this,"mo","");d(this,"Di",null);d(this,"We",null);d(this,"ni",null);d(this,"ii",null);d(this,"Pi",null);d(this,"Wi",null);d(this,"Bi",{min:0,max:1});d(this,"oe",null);d(this,"dn",!1);d(this,"Jt",null);d(this,"Qt",null);d(this,"Ce",null);d(this,"ft","category");d(this,"j",null);d(this,"xe",0);d(this,"Ot",null);d(this,"mt",null);d(this,"Q",new Set);d(this,"Ee",-1);d(this,"Si",-1);d(this,"Pe",null);d(this,"He",new Float32Array(0));d(this,"Ut",new Uint8Array(0));d(this,"N",{lines:new Si,scatter:new Bi,areas:new Di});d(this,"fo",null);d(this,"co",null);d(this,"cn",0);d(this,"pn",new Int32Array(0));d(this,"Jn",[]);d(this,"Qn",!1);d(this,"Lt",null);d(this,"po",null);d(this,"ei",null);this.ut=n==="horizontal"}getZoomConfig(){return{lockAxis:this.ut?"x":"y"}}tooltipCallbacks(){return{onHover:(n,i)=>Eo(this,n,i),onLeave:()=>{(this.Ee!==-1||this.Pe)&&(this.Ee=-1,this.Pe=null,this.e&&Ue(this,this.e))},onClickPre:(n,i)=>ea(this,n,i),onPin:(n,i)=>{if(Eo(this,n,i),this.Ee>=0){let o=this.Ee;ta(this,o);let r=jt(this.fe,o,this.Oe.length,this.He,this.b.length);this.bo(r)}else if(this.Pe){let o=this.Pe;na(this,o),this.bo(o)}},onUnpin:()=>{this.emitUnselect()}}}async bo(n){if(!this.Ii[n.aggIdx])return;let i=this.Re.map(s=>s.labels[n.catIdx]??null),o=this.Oe[n.splitIdx]??"",r=this.w.length>0&&o!==""?o.split("|"):[];await this.emitClickAndSelect({rowIdx:n.catIdx+this.lt,columnName:this.Ii[n.aggIdx],groupByValues:i,splitByValues:r})}async uploadAndRender(n,i,o,r){this.e=n;let s=n.gl;if(o!==0)return;if(!this.i){this.i=n.shaders.getOrCreate("bar",an,ln);let l=this.i;this.B={u_proj_left:s.getUniformLocation(l,"u_proj_left"),u_proj_right:s.getUniformLocation(l,"u_proj_right"),u_hover_series:s.getUniformLocation(l,"u_hover_series"),u_horizontal:s.getUniformLocation(l,"u_horizontal"),a_corner:s.getAttribLocation(l,"a_corner"),a_x_center:s.getAttribLocation(l,"a_x_center"),a_half_width:s.getAttribLocation(l,"a_half_width"),a_y0:s.getAttribLocation(l,"a_y0"),a_y1:s.getAttribLocation(l,"a_y1"),a_color:s.getAttribLocation(l,"a_color"),a_series_id:s.getAttribLocation(l,"a_series_id"),a_axis:s.getAttribLocation(l,"a_axis")},this.W=s.createBuffer(),s.bindBuffer(s.ARRAY_BUFFER,this.W),s.bufferData(s.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,1,1]),s.STATIC_DRAW)}let a=qs({columns:i,numRows:r,columnSlots:this.E,groupBy:this.L,splitBy:this.w,groupByTypes:this.gt,columnsConfig:this.pi,defaultChartType:this.En,autoAltYAxis:this.g.auto_alt_y_axis,bandInnerFrac:this.g.band_inner_frac,barInnerPad:this.g.bar_inner_pad,includeZero:this.g.include_zero,scratchBars:this.fe,scratchPosStack:this.Pi,scratchNegStack:this.Wi});this.g.domain_mode==="expand"?(this.Jt&&(a.leftDomain.min=Math.min(this.Jt.min,a.leftDomain.min),a.leftDomain.max=Math.max(this.Jt.max,a.leftDomain.max)),this.Jt={...a.leftDomain},a.rightDomain&&(this.Qt&&(a.rightDomain.min=Math.min(this.Qt.min,a.rightDomain.min),a.rightDomain.max=Math.max(this.Qt.max,a.rightDomain.max)),this.Qt={...a.rightDomain}),a.numericCategoryDomain&&(this.Ce&&(a.numericCategoryDomain.min=Math.min(this.Ce.min,a.numericCategoryDomain.min),a.numericCategoryDomain.max=Math.max(this.Ce.max,a.numericCategoryDomain.max)),this.Ce={min:a.numericCategoryDomain.min,max:a.numericCategoryDomain.max})):(this.Jt=null,this.Qt=null,this.Ce=null),this.Ii=a.aggregates,this.Oe=a.splitPrefixes,this.Re=a.rowPaths,this.ie=a.numCategories,this.lt=a.rowOffset,this.ft=a.axisMode.mode,this.j=a.numericCategoryDomain,this.mt=a.categoryPositions,this.xe=a.numericCategoryDomain?.min??0,this.b=a.series,this.fe=a.bars,this.Pi=a.posStack,this.Wi=a.negStack,this.He=a.samples,this.Ei.length=0,this.bn.length=0,this.hn.length=0,this.ti.length=0;for(let l of a.series)switch(l.chartType){case"bar":this.Ei.push(l);break;case"line":this.bn.push(l);break;case"scatter":this.hn.push(l);break;case"area":this.ti.push(l);break}this.uo=ga(a.series,0),this.mo=ga(a.series,1),this.Di=hm(this.fe),this.Lt=null,this.Qn=!1,this.ni=null,this.ii=null,this.ei=null,this.We=null,this.Ut=a.sampleValid,this.Bi=a.leftDomain,this.oe=a.rightDomain,this.dn=a.hasRightAxis,Ho(this),vi(this,n),ba(this),Ai(this,n),await this.requestRender(n)}It(n){this.i&&(this.e=n,Ue(this,n))}resetExpandedDomain(){this.Jt=null,this.Qt=null,this.Ce=null}destroyInternal(){if(this.e){let n=this.e.gl;this.W&&n.deleteBuffer(this.W),ym(this)}this.i=null,this.B=null,this.W=null,this.fe=xi(),this.b=[],this.Ei=[],this.bn=[],this.hn=[],this.ti=[],this.Di=null,this.ni=null,this.ii=null,this.We=null,this.Pi=null,this.Wi=null,this.Re=[],this.ie=0,this.Q.clear()}};function hm(e){let t=new Map;for(let n=0;n<e.count;n++)e.chartType[n]===1&&t.set(e.seriesId[n]*1e9+e.catIdx[n],n);return t}function ga(e,t){let n=new Set,i=[];for(let o of e)o.axis===t&&(n.has(o.aggName)||(n.add(o.aggName),i.push(o.aggName)));return i.join(", ")}function Ho(e){let t=e.T(),n=t.Se,i=t.V,o=e.b.length,r=e.ii;if(e.ni&&r&&r.Se===n&&r.V===i&&r.seriesLength===o)return!1;let s=gm(n,i,o);e.ni=s,e.ii={Se:n,V:i,seriesLength:o};for(let a=0;a<e.b.length;a++)e.b[a].color=s[a];return!0}function gm(e,t,n){return re(e,t,n)}function ym(e){e.N.lines.destroy(e),e.N.scatter.destroy(e),e.N.areas.destroy(e)}var Ii=class extends He{constructor(){super("horizontal")}};Ft();Ae();function Yo(e){let{columns:t,numRows:n,groupBy:i,splitBy:o,groupByTypes:r}=e,s=ft(i,r),a={xLevels:[],yColumnNames:[],yLevels:[],numX:0,numY:0,rowOffset:0,cells:[],cells2D:[],colorMin:0,colorMax:1,xAxisMode:s,yAxisMode:{mode:"category"},xPositions:null,yPositions:null,xNumericDomain:null,yNumericDomain:null},l=i.map(w=>r[w]??"string"),{rowPaths:u,numCategories:m,rowOffset:f}=ct(t,n,i.length,l),b=null,p=null;if(s.mode==="numeric"&&m>0){let w=t.get("__ROW_PATH_0__"),F=je(w?.values,m,f,i[0]??"",s.numericType==="date"||s.numericType==="datetime");F&&(b=F.categoryPositions,p=F.numericCategoryDomain)}let c=[];for(let w of t.keys())w.startsWith("__")||!t.get(w)?.values||c.push(w);let h=c.length;if(m===0||h===0)return{...a,xLevels:u,rowOffset:f};let g=_m(c),y=xm(o,r),x={mode:"category"},C=null,_=null;if(y.mode==="numeric"){let w=Cm(c,y.numericType);if(w){let F=je(w,h,0,o[0]??"",y.numericType==="date"||y.numericType==="datetime");F&&(x=y,C=F.categoryPositions,_=F.numericCategoryDomain)}}let v=[],A=new Array(m*h).fill(null),R=1/0,L=-1/0;for(let w=0;w<h;w++){let F=t.get(c[w]),G=F.values,D=F.valid;for(let B=0;B<m;B++){let P=B+f;if(D&&!(D[P>>3]>>(P&7)&1))continue;let M=G[P];if(!isFinite(M))continue;let k={xIdx:B,yIdx:w,value:M};v.push(k),A[w*m+B]=k,M<R&&(R=M),M>L&&(L=M)}}return!isFinite(R)||!isFinite(L)?(R=0,L=1):R===L&&(L=R+1),{xLevels:u,yColumnNames:c,yLevels:g,numX:m,numY:h,rowOffset:f,cells:v,cells2D:A,colorMin:R,colorMax:L,xAxisMode:s,yAxisMode:x,xPositions:b,yPositions:C,xNumericDomain:p,yNumericDomain:_}}function xm(e,t){if(e.length!==1)return{mode:"category"};let n=t[e[0]];return n==="date"||n==="datetime"||n==="integer"||n==="float"?{mode:"numeric",numericType:n}:{mode:"category"}}function Cm(e,t){let n=new Float64Array(e.length);for(let i=0;i<e.length;i++){let o=e[i],r=o.indexOf("|"),s=r===-1?o:o.slice(0,r),a;if(t==="date"||t==="datetime"?(a=Date.parse(s),isFinite(a)||(a=Date.parse(s.replace(" ","T")))):a=Number(s),!isFinite(a))return null;n[i]=a}return n}function ya(e,t){return t.map(n=>{let i=new Map;for(let[o,r]of e){if(o.startsWith("__ROW_PATH_")||o==="__GROUPING_ID__"){i.set(o,r);continue}let s=o.lastIndexOf("|");(s===-1?o:o.slice(s+1))===n&&i.set(o,r)}return{label:n,columns:i}})}function _m(e){if(e.length===0)return[];let t=0,n=e.map(o=>o.split("|"));for(let o of n)o.length>t&&(t=o.length);if(t===0)return[];let i=[];for(let o=0;o<t;o++){let r=[],s=new Map,a=new Int32Array(e.length),l=new Array(e.length),u=0;for(let b=0;b<e.length;b++){let p=n[b][o]??"",c=s.get(p);c===void 0&&(c=r.length,r.push(p),s.set(p,c)),a[b]=c,l[b]=p,p.length>u&&(u=p.length)}let f=o===t-1?[]:ti(a,r,0,e.length);i.push({labels:l,runs:f,maxLabelChars:u})}return i}Ae();ao();Et();we();nt();St();function zo(e,t){return t?.skipLeafLevel&&e.length>0?e.slice(0,-1):e}var vm=80,Am=20,Vo=5,Xo=11;function Ct(e,t){return e.G(0,t).py}function xa(e,t){let n=zo(e.levels,t),i=n.length,o=[];for(let r=0;r<i;r++){let s=n[r].maxLabelChars;if(r===i-1){let a=Math.max(vm,s*6.5+16);o.push({size:a})}else{let a=Math.max(Am,s*6.5+16);o.push({size:a})}}return o}function Ca(e,t){let n=zo(e.levels,t);if(e.numRows===0||n.length===0)return 55;let i=xa(e,t),o=0;for(let r of i)o+=r.size;return o}function Lm(e,t){return e.labels[t]??""}function $o(e,t,n,i,o){let r=zo(n.levels,o);if(n.numRows===0||r.length===0)return;let{Dt:s,ge:a,fontFamily:l}=i,{t:u}=t;e.strokeStyle=s,e.fillStyle=s,e.lineWidth=1,e.font=`${Xo}px ${l}`;let m=xa(n,o),f=Math.max(0,Math.ceil(t.ee)),b=Math.min(n.numRows-1,Math.floor(t.ae));if(b<f)return;let p=r.length,c=u.x;for(let g=p-1;g>=0;g--){let y=r[g],x=m[g],C=c,_=c-x.size;c=_,g===p-1?Tm(e,t,y,f,b,C,_,l,s):wm(e,t,y,f,b,_,C,l,s)}let h=n.levelLabels.filter(g=>!!g).join(" / ");h&&(e.fillStyle=a,e.font=`13px ${l}`,e.save(),e.translate(14,u.y+u.height/2),e.rotate(-Math.PI/2),e.textAlign="center",e.textBaseline="top",e.fillText(h,0,0),e.restore())}function Tm(e,t,n,i,o,r,s,a,l){let u=t.t;e.strokeStyle=l,e.fillStyle=l,e.beginPath();for(let f=i;f<=o;f++){let b=Ct(t,f);b<u.y-1||b>u.y+u.height+1||(e.moveTo(r,b),e.lineTo(r-Vo,b))}e.stroke(),e.font=`${Xo}px ${a}`,e.textAlign="right",e.textBaseline="middle";let m=r-Vo-4-s-4;for(let f=i;f<=o;f++){let b=Ct(t,f);if(b<u.y-1||b>u.y+u.height+1)continue;let p=Lm(n,f);if(!p)continue;let c=Ze(e,p,m);c&&e.fillText(c,r-Vo-4,b)}}function wm(e,t,n,i,o,r,s,a,l){let u=t.t,m=Nt(n.runs,i,o);if(m.length===0)return;e.strokeStyle=l,e.fillStyle=l;let f=s-3;e.beginPath();for(let b of m){let p=Ct(t,b.endIdx+.5),c=Ct(t,b.startIdx-.5),h=Math.min(p,c),g=Math.max(p,c),y=Math.max(u.y,h),x=Math.min(u.y+u.height,g);x<=y||(e.moveTo(f,y),e.lineTo(f,x),e.moveTo(f,y),e.lineTo(f+3,y),e.moveTo(f,x),e.lineTo(f+3,x))}e.stroke(),e.font=`${Xo}px ${a}`;for(let b of m){let p=Ct(t,b.endIdx+.5),c=Ct(t,b.startIdx-.5),h=Math.min(p,c),g=Math.max(p,c),y=Math.max(u.y,h),x=Math.min(u.y+u.height,g);if(x<=y)continue;let C=(y+x)/2,_=r+(s-r-3)/2,v=b.label;if(!v)continue;let A=x-y-4,R=Ze(e,v,Math.max(0,A));R&&(e.save(),e.translate(_,C),e.rotate(-Math.PI/2),e.textAlign="center",e.textBaseline="middle",e.fillText(R,0,0),e.restore())}}pe();rt();ve();tt();et();function Zo(e,t,n){if(e.ho=t,e.go=n,e.m.length>0){for(let o=0;o<e.m.length;o++){let r=e.m[o],s=r.layout.t;if(t<s.x||t>s.x+s.width||n<s.y||n>s.y+s.height)continue;let a=va(r.layout,r.pipeline.numX,r.pipeline.numY,r.pipeline.cells2D,r.pipeline.xPositions,r.pipeline.yPositions,r.pipeline.xNumericDomain?.bandWidth??1,r.pipeline.yNumericDomain?.bandWidth??1,t,n);jo(e,a,o);return}jo(e,null,-1);return}if(!e.u)return;let i=va(e.u,e.Tt,e.wt,e.oi,e.gn,e.yn,e.ct?.bandWidth??1,e.dt?.bandWidth??1,t,n);jo(e,i,-1)}function _a(e,t,n){if(e.length===0)return-1;let i=0,o=e.length-1;for(;i<o;){let s=i+o>>1;e[s]<t?i=s+1:o=s}let r=i;return r>0&&Math.abs(e[r-1]-t)<Math.abs(e[r]-t)&&(r-=1),Math.abs(e[r]-t)>n*.5?-1:r}function va(e,t,n,i,o,r,s,a,l,u){let m=e.t;if(l<m.x||l>m.x+m.width||u<m.y||u>m.y+m.height)return null;let f=e.J,b=e.se,p=e.ee,c=e.ae,h=f+(l-m.x)/m.width*(b-f),g=c-(u-m.y)/m.height*(c-p),y=o?_a(o,h,s):Math.round(h),x=r?_a(r,g,a):Math.round(g);return y<0||y>=t||x<0||x>=n?null:i[x*t+y]??null}function jo(e,t,n){let i=e.Fe;(i?.xIdx??-1)===(t?.xIdx??-1)&&(i?.yIdx??-1)===(t?.yIdx??-1)&&e.xn===n||(e.Fe=t,e.xn=n,e.e&&e.Gi&&e.Gi())}function Aa(e,t){let n=[];for(let i of e){let o=i.labels[t];o!=null&&o!==""&&n.push(o)}return n.join(" / ")}function qo(e){if(!e.d||!e.Fe)return;let t,n,i,o=null;if(e.xn>=0){let b=e.m[e.xn];if(!b)return;t=b.layout,n=b.pipeline.xLevels,i=b.pipeline.yLevels,o=b.label}else{if(!e.u)return;t=e.u,n=e.Ht,i=e.Yt}let r=e.Fe,s={px:e.ho,py:e.go},a=[];o&&a.push(o);let l=Aa(n,r.xIdx),u=Aa(i,r.yIdx);l&&a.push(l),u&&a.push(u);let m=e.getColumnFormatter(e.E[0],"value");a.push(`Value: ${m(r.value)}`);let f=e.T();_e(e.d,s,a,t,f,e.e?.dpr??1)}var Ko={skipLeafLevel:!0};function La(e,t){let n=t.gl,i=t.dpr,o=n.canvas.width/i,r=n.canvas.height/i;if(o<=0||r<=0)return;if(e.m.length>0){Rm(e,t,o,r);return}if(e.Tt===0||e.wt===0)return;let s=e.T(),a={levels:e.Ht,numRows:e.Tt,levelLabels:e.L.slice()},l={levels:e.Yt,numRows:e.wt,levelLabels:[]},u=e.Cn.mode==="numeric",m=e._n.mode==="numeric",f=m?55:Ca(l,Ko),b=u?24:xt(a,Math.max(1,o-f-110)),p=new j(o,r,{hasXLabel:e.L.length>0,hasYLabel:!1,hasLegend:!0,bottomExtra:b,leftExtra:f});e.u=p,e.h&&e.h.updateLayout(p);let c=u?e.ct.min:-.5,h=u?e.ct.max:e.Tt-.5,g=m?e.dt.min:-.5,y=m?e.dt.max:e.wt-.5;e.h&&e.h.setBaseDomain(c,h,g,y);let x=e.h?e.h.getVisibleDomain():{xMin:c,xMax:h,yMin:g,yMax:y},C=p.buildProjectionMatrix(x.xMin,x.xMax,x.yMin,x.yMax,void 0,void 0,0,e.M,e.S),_=p.t,v=_.width/(x.xMax-x.xMin),A=_.height/(x.yMax-x.yMin),R=s.Ji*.5,L=u?e.ct.bandWidth:1,w=m?e.dt.bandWidth:1,F=Math.min(L*.5,v>0?R/v:0),G=Math.min(w*.5,A>0?R/A:0);if(e.I){let D=ae(e.I,p,t.dpr)}Ta(e,t),wa(e,t),e.te=Pt(t,e.te,s.V),Ee(n,p,t.dpr,()=>{n.useProgram(e.i);let D=e.B;n.uniformMatrix4fv(D.u_projection,!1,C),n.uniform2f(D.u_cell_inset,F,G),n.uniform2f(D.u_cell_size,L,w),Le(t,e.te.texture,D.u_gradient_lut,0),Ra(e,n,t,0,e.yo)}),Ei(e)}function Ta(e,t){if(e.i)return;let n=t.gl,i=t.shaders.getOrCreate("heatmap",xn,Cn);e.i=i,e.B={u_projection:n.getUniformLocation(i,"u_projection"),u_cell_inset:n.getUniformLocation(i,"u_cell_inset"),u_cell_size:n.getUniformLocation(i,"u_cell_size"),u_gradient_lut:n.getUniformLocation(i,"u_gradient_lut"),a_corner:n.getAttribLocation(i,"a_corner"),a_cell:n.getAttribLocation(i,"a_cell"),a_color_t:n.getAttribLocation(i,"a_color_t")};let o=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,o),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,1,1]),n.STATIC_DRAW),e.W=o}function wa(e,t){let n=e.Qe.length;if(e.yo=n,n===0)return;let i=new Float32Array(n*2),o=new Float32Array(n);if(e.m.length>0){let r=0;for(let s of e.m){let a=s.pipeline.xPositions,l=s.pipeline.yPositions,u=s.xOrigin,m=s.yOrigin;for(let f of s.pipeline.cells)i[r*2]=a?a[f.xIdx]-u:f.xIdx,i[r*2+1]=l?l[f.yIdx]-m:f.yIdx,o[r]=Xe(f.value,e.f,e.l),r++}}else{let r=e.gn,s=e.yn,a=e.M,l=e.S;for(let u=0;u<n;u++){let m=e.Qe[u];i[u*2]=r?r[m.xIdx]-a:m.xIdx,i[u*2+1]=s?s[m.yIdx]-l:m.yIdx,o[u]=Xe(m.value,e.f,e.l)}}t.C.ensureCapacity(n),t.C.upload("heatmap_cell",i,0,2),t.C.upload("heatmap_t",o,0,1)}function Ra(e,t,n,i,o){if(o===0)return;let r=e.B,s=K(n),{setDivisor:a}=s,l=Float32Array.BYTES_PER_ELEMENT;t.bindBuffer(t.ARRAY_BUFFER,e.W),t.enableVertexAttribArray(r.a_corner),t.vertexAttribPointer(r.a_corner,2,t.FLOAT,!1,0,0),a(r.a_corner,0);let u=n.C.peek("heatmap_cell"),m=n.C.peek("heatmap_t");!u||!m||(t.bindBuffer(t.ARRAY_BUFFER,u.buffer),t.enableVertexAttribArray(r.a_cell),t.vertexAttribPointer(r.a_cell,2,t.FLOAT,!1,0,i*2*l),a(r.a_cell,1),t.bindBuffer(t.ARRAY_BUFFER,m.buffer),t.enableVertexAttribArray(r.a_color_t),t.vertexAttribPointer(r.a_color_t,1,t.FLOAT,!1,0,i*l),a(r.a_color_t,1),s.drawArraysInstanced(t.TRIANGLE_STRIP,0,4,o),a(r.a_cell,0),a(r.a_color_t,0))}function Ei(e){if(!e.d)return;if(e.m.length>0){Fm(e);return}if(!e.u)return;let t=e.u,n=e.T(),i=e.e?.dpr??1,o=ae(e.d,t,i);if(!o)return;o.strokeStyle=n.Bn,o.lineWidth=1,o.beginPath(),o.moveTo(t.t.x,t.t.y),o.lineTo(t.t.x,t.t.y+t.t.height),o.lineTo(t.t.x+t.t.width,t.t.y+t.t.height),o.stroke();let r={levels:e.Ht,numRows:e.Tt,levelLabels:e.L.slice()},s={levels:e.Yt,numRows:e.wt,levelLabels:[]},a=e.L[0],l=e.L[1]??e.w[0];if(e.Cn.mode==="numeric"&&e.ct){let u=te(t.J,t.se,6);Ti(o,t,e.ct,u,n,e.getColumnFormatter(a,"tick"))}else Zt(o,t,r,n);if(e._n.mode==="numeric"&&e.dt){let u=te(t.ee,t.ae,6);wi(o,t,e.dt,u,n,e.getColumnFormatter(l,"tick"))}else $o(o,t,s,n,Ko);Te(e.d,t,{min:e.f,max:e.l,label:e.ki},n.V,n,e.getColumnFormatter(e.E[0],"value")),e.Fe&&qo(e)}function Rm(e,t,n,i){let o=t.gl,r=e.T(),{effectiveSharedX:s,effectiveSharedY:a}=e.computeEffectiveFacetFlags(),l=Ie(e.m.map(m=>m.label),{cssWidth:n,cssHeight:i,xAxis:s?"outer":"cell",yAxis:a?"outer":"cell",hasLegend:!0,hasXLabel:e.L.length>0,hasYLabel:!1,gap:8});e.A=l;for(let m=0;m<e.m.length;m++){let f=l.cells[m];f&&(e.m[m].layout=f.layout)}e.syncFacetZoomLayouts(l.cells),Ta(e,t),wa(e,t),e.te=Pt(t,e.te,r.V),o.useProgram(e.i);let u=e.B;Le(t,e.te.texture,u.u_gradient_lut,0),Dt(o);for(let m=0;m<e.m.length;m++){let f=e.m[m];if(f.instanceCount===0)continue;let{numX:b,numY:p}=f.pipeline;if(b===0||p===0)continue;let c=f.layout,h=f.pipeline.xAxisMode.mode==="numeric",g=f.pipeline.yAxisMode.mode==="numeric",y=h?f.pipeline.xNumericDomain.min:-.5,x=h?f.pipeline.xNumericDomain.max:b-.5,C=g?f.pipeline.yNumericDomain.min:-.5,_=g?f.pipeline.yNumericDomain.max:p-.5,v=e.getZoomControllerForFacet(m);v&&v.setBaseDomain(y,x,C,_);let A=v?v.getVisibleDomain():{xMin:y,xMax:x,yMin:C,yMax:_},R=c.buildProjectionMatrix(A.xMin,A.xMax,A.yMin,A.yMax,void 0,void 0,0,f.xOrigin,f.yOrigin),L=c.t,w=L.width/(A.xMax-A.xMin),F=L.height/(A.yMax-A.yMin),G=r.Ji*.5,D=h?f.pipeline.xNumericDomain.bandWidth:1,B=g?f.pipeline.yNumericDomain.bandWidth:1,P=Math.min(D*.5,w>0?G/w:0),M=Math.min(B*.5,F>0?G/F:0);It(o,c,t.dpr,()=>{o.uniformMatrix4fv(u.u_projection,!1,R),o.uniform2f(u.u_cell_inset,P,M),o.uniform2f(u.u_cell_size,D,B),Ra(e,o,t,f.instanceStart,f.instanceCount)})}Ei(e)}function Fm(e){if(!e.d||!e.A)return;let t=e.T(),n=e.e?.dpr??1,i=ae(e.d,e.m[0].layout,n);if(!i)return;let o=e.Dn,r=e.In,s=e.A;for(let a=0;a<e.m.length;a++){let l=e.m[a],u=s.cells[a],m=l.layout,f=m.t;i.strokeStyle=t.Bn,i.lineWidth=1,i.beginPath(),i.moveTo(f.x,f.y),i.lineTo(f.x,f.y+f.height),i.lineTo(f.x+f.width,f.y+f.height),i.stroke();let b={levels:l.pipeline.xLevels,numRows:l.pipeline.numX,levelLabels:e.L.slice()},p={levels:l.pipeline.yLevels,numRows:l.pipeline.numY,levelLabels:[]},c=e.L[0],h=e.L[1]??e.w[0];if(!o||u.isBottomEdge)if(l.pipeline.xAxisMode.mode==="numeric"&&l.pipeline.xNumericDomain){let g=te(m.J,m.se,6);Ti(i,m,l.pipeline.xNumericDomain,g,t,e.getColumnFormatter(c,"tick"))}else Zt(i,m,b,t);if(!r||u.isLeftEdge)if(l.pipeline.yAxisMode.mode==="numeric"&&l.pipeline.yNumericDomain){let g=te(m.ee,m.ae,6);wi(i,m,l.pipeline.yNumericDomain,g,t,e.getColumnFormatter(h,"tick"))}else $o(i,m,p,t,Ko)}for(let a=0;a<s.cells.length;a++){let l=s.cells[a],u=e.m[a];!u||!l.titleRect||Hn(e.d,u.label,l.titleRect,t,n)}s.legendRect&&Wt(e.d,{x:s.legendRect.x,y:s.legendRect.y+20,width:s.legendRect.width,height:Math.max(1,s.legendRect.height-20)},{min:e.f,max:e.l,label:""},t.V,t,e.getColumnFormatter(e.E[0],"value")),e.Fe&&qo(e)}var Pi=class extends he{constructor(){super(...arguments);d(this,"i",null);d(this,"B",null);d(this,"W",null);d(this,"te",null);d(this,"Ht",[]);d(this,"Yt",[]);d(this,"Ni",[]);d(this,"Tt",0);d(this,"wt",0);d(this,"lt",0);d(this,"Cn",{mode:"category"});d(this,"_n",{mode:"category"});d(this,"gn",null);d(this,"yn",null);d(this,"ct",null);d(this,"dt",null);d(this,"M",0);d(this,"S",0);d(this,"Qe",[]);d(this,"oi",[]);d(this,"yo",0);d(this,"f",0);d(this,"l",1);d(this,"ki","");d(this,"Fe",null);d(this,"u",null);d(this,"ho",0);d(this,"go",0);d(this,"m",[]);d(this,"A",null);d(this,"xn",-1);d(this,"Gi",()=>Ei(this))}tooltipCallbacks(){return{onHover:(n,i)=>Zo(this,n,i),onLeave:()=>{this.Fe&&(this.Fe=null,this.Gi())},onPin:(n,i)=>{Zo(this,n,i),this.Fe&&this.So(this.Fe.xIdx,this.Fe.yIdx)},onUnpin:()=>{this.emitUnselect()}}}async So(n,i){let o=this.Ht.map(a=>a.labels[n]??null),r=this.Yt.slice(0,this.w.length).map(a=>a.labels[i]??null),s=this.E[0]??"";await this.emitClickAndSelect({rowIdx:n+this.lt,columnName:s,groupByValues:o,splitByValues:r})}async uploadAndRender(n,i,o,r){if(this.e=n,o!==0)return;let s=this.E.filter(a=>!!a);if(s.length>1){let a=ya(i,s),l=[],u=[],m=1/0,f=-1/0;for(let b of a){let p=Yo({columns:b.columns,numRows:r,groupBy:this.L,splitBy:this.w,groupByTypes:this.gt}),c=u.length;for(let h of p.cells)u.push({xIdx:h.xIdx,yIdx:h.yIdx,value:h.value});l.push({label:b.label,pipeline:p,layout:new j(1,1,{hasXLabel:!1,hasYLabel:!1,hasLegend:!1}),instanceStart:c,instanceCount:p.cells.length,xOrigin:p.xNumericDomain?.min??0,yOrigin:p.yNumericDomain?.min??0}),isFinite(p.colorMin)&&p.colorMin<m&&(m=p.colorMin),isFinite(p.colorMax)&&p.colorMax>f&&(f=p.colorMax)}!isFinite(m)||!isFinite(f)?(m=0,f=1):m===f&&(f=m+1),this.Ht=[],this.Yt=[],this.Ni=[],this.Tt=0,this.wt=0,this.lt=0,this.oi=[],this.u=null,this.Cn={mode:"category"},this._n={mode:"category"},this.gn=null,this.yn=null,this.ct=null,this.dt=null,this.M=0,this.S=0,this.m=l,this.Qe=u,this.f=m,this.l=f,this.ki=s.join(", ")}else{let a=Yo({columns:i,numRows:r,groupBy:this.L,splitBy:this.w,groupByTypes:this.gt});this.m=[],this.A=null,this.Ht=a.xLevels,this.Yt=a.yLevels,this.Ni=a.yColumnNames,this.Tt=a.numX,this.wt=a.numY,this.lt=a.rowOffset,this.Qe=a.cells,this.oi=a.cells2D,this.f=a.colorMin,this.l=a.colorMax,this.ki=s[0]??"Color",this.Cn=a.xAxisMode,this._n=a.yAxisMode,this.gn=a.xPositions,this.yn=a.yPositions,this.ct=a.xNumericDomain,this.dt=a.yNumericDomain,this.M=a.xNumericDomain?.min??0,this.S=a.yNumericDomain?.min??0}await this.requestRender(n)}It(n){this.e=n;let i=this.Tt>0&&this.wt>0,o=this.m.length>0;!i&&!o||La(this,n)}destroyInternal(){this.W&&this.e&&this.e.gl.deleteBuffer(this.W),this.i=null,this.B=null,this.W=null,this.Ht=[],this.Yt=[],this.Ni=[],this.Qe=[],this.oi=[],this.Fe=null,this.m=[],this.A=null,this.xn=-1,this.Cn={mode:"category"},this._n={mode:"category"},this.gn=null,this.yn=null,this.ct=null,this.dt=null}};Mt();function Jt(){return{count:0,catIdx:new Int32Array(0),splitIdx:new Int32Array(0),seriesId:new Int32Array(0),xCenter:new Float64Array(0),halfWidth:new Float64Array(0),open:new Float64Array(0),close:new Float64Array(0),high:new Float64Array(0),low:new Float64Array(0),isUp:new Uint8Array(0)}}function Mm(e,t){return e&&e.catIdx.length>=t?(e.count=0,e):{count:0,catIdx:new Int32Array(t),splitIdx:new Int32Array(t),seriesId:new Int32Array(t),xCenter:new Float64Array(t),halfWidth:new Float64Array(t),open:new Float64Array(t),close:new Float64Array(t),high:new Float64Array(t),low:new Float64Array(t),isUp:new Uint8Array(t)}}var Fa={splitPrefixes:[],rowPaths:[],numCategories:0,rowOffset:0,axisMode:{mode:"category"},numericCategoryDomain:null,categoryPositions:null,series:[],yDomain:{min:0,max:1}};function Ma(e){let{columns:t,numRows:n,columnSlots:i,groupBy:o,splitBy:r,groupByTypes:s,bandInnerFrac:a,barInnerPad:l,scratchCandles:u}=e,m=ft(o,s),f=i[0]||"";if(!f)return{...Fa,candles:Jt()};let b=i[1]||"",p=i[2]||"",c=i[3]||"",h=[];if(r.length>0){let U=[f];b&&U.push(b),p&&U.push(p),c&&U.push(c);for(let O of De(t,[f],U))O.colNames.has(f)&&h.push(O.prefix);h.length===0&&h.push("")}else h.push("");let g=o.map(U=>s[U]??"string"),{rowPaths:y,numCategories:x,rowOffset:C}=ct(t,n,o.length,g);if(x===0)return{...Fa,axisMode:m,splitPrefixes:h,rowPaths:y,rowOffset:C,candles:Jt()};let _=h.length,v=[];for(let U=0;U<_;U++){let O=h[U];v.push({seriesId:U,splitIdx:U,splitKey:O,label:O===""?f:O})}let A=null,R=null,L=1;if(m.mode==="numeric"&&x>0){let U=t.get("__ROW_PATH_0__"),O=je(U?.values,x,C,o[0]??"",m.numericType==="date"||m.numericType==="datetime");O&&(A=O.categoryPositions,R=O.numericCategoryDomain,L=O.numericCategoryDomain.bandWidth)}let w=gi(_,a,l),F=w.slotWidth*L,G=w.halfWidth*L,D=(_-1)/2,B=[];for(let U=0;U<_;U++){let O=h[U],ne=Me=>O===""?Me:`${O}|${Me}`,fe=t.get(ne(f));if(!fe?.values){B.push({openCol:null,closeCol:null,highCol:null,lowCol:null,openValid:null,closeValid:null,highValid:null,lowValid:null});continue}let ce=b?t.get(ne(b)):null,de=p?t.get(ne(p)):null,ye=c?t.get(ne(c)):null;B.push({openCol:fe.values,closeCol:ce?.values??null,highCol:de?.values??null,lowCol:ye?.values??null,openValid:fe.valid??null,closeValid:ce?.valid??null,highValid:de?.valid??null,lowValid:ye?.valid??null})}let P=x*_,M=Mm(u??null,P),k=0,N=1/0,W=-1/0,J=x;for(let U=0;U<_;U++){let O=B[U],ne=O.openCol;if(!ne)continue;let fe=O.closeCol,ce=O.highCol,de=O.lowCol,ye=O.openValid,Me=O.closeValid,At=O.highValid,on=O.lowValid,H=(U-D)*F;for(let z=0;z<J;z++){let Q=z+C;if(ye&&!(ye[Q>>3]>>(Q&7)&1))continue;let ee=ne[Q];if(!isFinite(ee))continue;let Z;if(fe&&(!Me||(Me[Q>>3]>>(Q&7)&1)!==0)){let E=fe[Q];Z=isFinite(E)?E:ee}else{let E=z<J-1?z+1+C:Q;if(!ye||(ye[E>>3]>>(E&7)&1)!==0){let V=ne[E];Z=isFinite(V)?V:ee}else Z=ee}let oe;if(ce&&(!At||(At[Q>>3]>>(Q&7)&1)!==0)){let E=ce[Q];oe=isFinite(E)?E:ee>Z?ee:Z}else oe=ee>Z?ee:Z;let Ke;if(de&&(!on||(on[Q>>3]>>(Q&7)&1)!==0)){let E=de[Q];Ke=isFinite(E)?E:ee<Z?ee:Z}else Ke=ee<Z?ee:Z;let lr=(A?A[z]:z)+H,S=Z>=ee?1:0;M.catIdx[k]=z,M.splitIdx[k]=U,M.seriesId[k]=U,M.xCenter[k]=lr,M.halfWidth[k]=G,M.open[k]=ee,M.close[k]=Z,M.high[k]=oe,M.low[k]=Ke,M.isUp[k]=S,k++,Ke<N&&(N=Ke),oe>W&&(W=oe)}}if(M.count=k,!isFinite(N)||!isFinite(W))N=0,W=1;else if(N===W){let U=Math.max(Math.abs(N),1)*.05;N-=U,W+=U}return{splitPrefixes:h,rowPaths:y,numCategories:x,rowOffset:C,axisMode:m,numericCategoryDomain:R,categoryPositions:A,series:v,candles:M,yDomain:{min:N,max:W}}}Ae();ve();Et();et();pe();var Sm=3;function Sa(e,t,n){let i=0,o=t;for(;i<o;){let r=i+o>>>1;e[r]<n?i=r+1:o=r}return i}function Jo(e,t,n){if(e.Ui!==-1)return;let i=e.u;if(!i)return;let o=e.de;if(o.count===0){e.pe!==-1&&(e.pe=-1,Ye(e));return}let r=i.t,s=i.J,a=i.se,l=i.ee,u=i.ae;if(t<r.x||t>r.x+r.width||n<r.y||n>r.y+r.height){e.pe!==-1&&(e.pe=-1,Ye(e));return}let m=s+(t-r.x)/r.width*(a-s),f=u-(n-r.y)/r.height*(u-l),b=r.width/(a-s),p=Sm/b,c=o.xCenter,h=o.halfWidth,g=o.open,y=o.close,x=o.high,C=o.low,_=o.count>0?h[0]:0,v=Math.max(_,p),A=Sa(c,o.count,m-v),R=Sa(c,o.count,m+v+1e-12),L=-1;for(let w=R-1;w>=A;w--){let F=c[w],G=h[w],D=m>=F-G&&m<=F+G,B=Math.abs(m-F)<=p;if(!D&&!B)continue;let P=g[w],M=y[w],k=P<M?P:M,N=P<M?M:P,W=D&&f>=k&&f<=N,J=f>=C[w]&&f<=x[w];if(W||J){L=w;break}}L!==e.pe&&(e.pe=L,Ye(e))}function Ba(e,t){e._.dismiss(),e.Ui=t;let n=e.de;if(t<0||t>=n.count||!e.u)return;let i=Qo(e,t);if(i.length===0)return;let o=n.xCenter[t],r=(n.high[t]+n.low[t])/2,s=e.u.G(o,r),a=e.u.cssWidth,l=e.u.cssHeight;e._.pin(i,s,{cssWidth:a,cssHeight:l}),e.pe=-1,Ye(e)}function Qo(e,t){let n=[],i=e.de;if(t<0||t>=i.count)return n;let o=i.catIdx[t],r=i.splitIdx[t],s=i.open[t],a=i.close[t],l=i.high[t],u=i.low[t];if(e.ft==="numeric"&&e.j&&e.mt){let c=e.mt[o],h=e.L[0];n.push(e.getColumnFormatter(h,"value")(c))}else if(e.Re.length>0){let c=[];for(let h of e.Re){let g=h.labels[o]??"";g&&c.push(g)}c.length>0&&n.push(c.join(" \\u203A "))}else n.push(`Row ${o+e.lt}`);if(r>=0&&e.Oe.length>1){let c=e.Oe[r];c&&n.push(c)}let m=e.getColumnFormatter(e.E[0],"value"),f=e.getColumnFormatter(e.E[1],"value"),b=e.getColumnFormatter(e.E[2],"value"),p=e.getColumnFormatter(e.E[3],"value");return n.push(`Open: ${m(s)}`),n.push(`Close: ${f(a)}`),n.push(`High: ${b(l)}`),n.push(`Low: ${p(u)}`),n}function Da(e,t,n,i,o){let r=1/0,s=-1/0,a={cat:0,lo:0,hi:0,skip:!1};for(let u=0;u<e.length;u++)a.skip=!1,i(e[u],a),!a.skip&&(a.cat<t||a.cat>n||(a.lo<r&&(r=a.lo),a.hi>s&&(s=a.hi)));let l=isFinite(r)&&isFinite(s);if(l&&r===s){let u=Math.abs(r)||1;r-=u,s+=u}return o.min=r,o.max=s,o.hasFit=l,o}function er(e){let n=e.T().V;if(e.ri===n)return;let i=be(n,1),o=be(n,0);e.si=[i[0],i[1],i[2]],e.ai=[o[0],o[1],o[2]],e.ri=n}function Ia(e){e.N.bodyWick.invalidateBuffers(e),e.N.ohlc.invalidateBuffers(e)}function Ea(e,t){e.N.bodyWick.rebuildBuffers(e,t),e.N.ohlc.rebuildBuffers(e,t)}function Pa(e,t){let n=t.gl,i=t.dpr,o=n.canvas.width/i,r=n.canvas.height/i;if(o<=0||r<=0||e.ie===0)return;let s=e.T();er(e);let a=e.ft==="numeric",l=a?e.j.min:-.5,u=a?e.j.max:e.ie-.5;e.h&&e.h.setBaseDomain(l,u,e.vn.min,e.vn.max);let m=e.h?e.h.getVisibleDomain():{xMin:l,xMax:u,yMin:e.vn.min,yMax:e.vn.max};if(e.Wn&&e.h&&!e.h.isDefault()){let C=Dm(e,m.xMin,m.xMax);C.hasFit&&(m.yMin=C.min,m.yMax=C.max)}let f=e.L.length>0,b={levels:e.Re,numRows:e.ie,levelLabels:e.L.slice()},p;if(a)p=new j(o,r,{hasXLabel:f,hasYLabel:!0,hasLegend:!1,bottomExtra:24});else{let v=Math.max(1,o-71-16),A=xt(b,v);p=new j(o,r,{hasXLabel:f,hasYLabel:!0,hasLegend:!1,bottomExtra:A})}e.u=p,e.h&&e.h.updateLayout(p);let c=p.buildProjectionMatrix(m.xMin,m.xMax,m.yMin,m.yMax,"y",void 0,void 0,e.xe,0),h=te(m.yMin,m.yMax,6),g=e.E[0]||"",y=b,x={min:m.yMin,max:m.yMax,label:g};e.I&&Fi(e.I,p,h,s,t.dpr),Ee(n,p,t.dpr,()=>{e.En==="ohlc"?e.N.ohlc.draw(e,n,t,c):e.N.bodyWick.draw(e,n,t,c)}),e.Le=y,e.Te=x,e.Be=h,e.Ot=a?te(m.xMin,m.xMax,6):null,Ye(e)}function Ye(e){if(!e.d||!e.u||!e.Te||!e.Be)return;let t=e.T(),n;if(e.ft==="numeric"&&e.j&&e.Ot)n={mode:"numeric",domain:{min:e.j.min,max:e.j.max,isDate:e.j.isDate,label:e.j.label},ticks:e.Ot};else if(e.Le)n={mode:"category",domain:e.Le};else return;let i=e.E[0]??e.E[1]??e.E[2]??e.E[3],o=e.L[0];Ri(e.d,n,e.Te,e.Be,e.u,t,e.e?.dpr??1,void 0,void 0,!1,{value:e.getColumnFormatter(i,"tick"),category:e.getColumnFormatter(o,"tick")}),e.pe>=0&&e.pe<e.de.count&&Bm(e)}function Bm(e){if(!e.d||!e.u)return;let t=e.pe,n=e.de;if(t<0||t>=n.count)return;let i=e.u,o=n.xCenter[t],r=(n.high[t]+n.low[t])/2,s=i.G(o,r),a=Qo(e,t),l=e.T();_e(e.d,s,a,i,l,e.e?.dpr??1,{crosshair:!1,highlightRadius:0})}function Dm(e,t,n){let i=e.Lt;if(i&&i.xMin===t&&i.xMax===n)return i;let o=i??Im();o.xMin=t,o.xMax=n;let r=e.de,s=1/0,a=-1/0,l=!1,u=r.xCenter,m=r.low,f=r.high;for(let b=0;b<r.count;b++){let p=u[b];p<t||p>n||(m[b]<s&&(s=m[b]),f[b]>a&&(a=f[b]),l=!0)}return o.min=l?s:0,o.max=l?a:1,o.hasFit=l,e.Lt=o,o}function Im(){return{xMin:0,xMax:0,min:0,max:1,hasFit:!1}}we();var Wi=class{constructor(){d(this,"i",null);d(this,"o",null)}ensureProgram(t){if(this.i)return this.i;let n=t.gl,i=fs(n),r={...ue(t,"candlestick-body",gn,yn,["u_projection"],["a_corner","a_x_center","a_half_width","a_y0","a_y1","a_color"]),quadBuffer:i,instanceBuffer:n.createBuffer()},s=Ge(n),l={...ue(t,"line-uniform",Se,Be,["u_projection","u_color","u_resolution","u_line_width"],["a_corner","a_start","a_end"]),cornerBuffer:s,segmentBuffer:n.createBuffer()};return this.i={body:r,wick:l},this.i}invalidateBuffers(t){let n=this.o;if(!n||!t.e){this.o=null;return}let i=t.e.gl;i.deleteBuffer(n.upWickBuffer),i.deleteBuffer(n.downWickBuffer),this.o=null}rebuildBuffers(t,n){let i=t.de,o=this.ensureProgram(n),r=n.gl,s=t.xe;if(i.count===0){let F=r.createBuffer(),G=r.createBuffer();this.o={bodyCount:0,upWickCount:0,downWickCount:0,upWickBuffer:F,downWickBuffer:G};return}let a=new Float32Array(i.count*7),l=0,u=0,m=i.xCenter,f=i.halfWidth,b=i.open,p=i.close,c=i.isUp,h=t.si,g=t.ai;for(let F=0;F<i.count;F++){let G=b[F],D=p[F],B=G<D?G:D,P=G<D?D:G,M=c[F]!==0,k=M?h:g,N=F*7;a[N+0]=m[F]-s,a[N+1]=f[F]*.7,a[N+2]=B,a[N+3]=P,a[N+4]=k[0],a[N+5]=k[1],a[N+6]=k[2],M?l++:u++}r.bindBuffer(r.ARRAY_BUFFER,o.body.instanceBuffer),r.bufferData(r.ARRAY_BUFFER,a,r.STATIC_DRAW);let y=new Float32Array(l*4),x=new Float32Array(u*4),C=0,_=0,v=i.low,A=i.high;for(let F=0;F<i.count;F++){let G=m[F]-s,D=v[F],B=A[F];c[F]!==0?(y[C+0]=G,y[C+1]=D,y[C+2]=G,y[C+3]=B,C+=4):(x[_+0]=G,x[_+1]=D,x[_+2]=G,x[_+3]=B,_+=4)}let R=this.o,L=R?.upWickBuffer??r.createBuffer(),w=R?.downWickBuffer??r.createBuffer();r.bindBuffer(r.ARRAY_BUFFER,L),r.bufferData(r.ARRAY_BUFFER,y,r.STATIC_DRAW),r.bindBuffer(r.ARRAY_BUFFER,w),r.bufferData(r.ARRAY_BUFFER,x,r.STATIC_DRAW),this.o={bodyCount:i.count,upWickCount:l,downWickCount:u,upWickBuffer:L,downWickBuffer:w}}draw(t,n,i,o){let r=this.o;if(!r||r.bodyCount===0)return;let s=this.ensureProgram(i);Em(n,i,s.body,r.bodyCount,o),Pm(t,n,i,s.wick,r,o)}destroy(t){let n=t.e?.gl;if(n){this.invalidateBuffers(t);let i=this.i;i&&(n.deleteBuffer(i.body.quadBuffer),n.deleteBuffer(i.body.instanceBuffer),n.deleteBuffer(i.wick.cornerBuffer),n.deleteBuffer(i.wick.segmentBuffer))}this.i=null,this.o=null}};function Em(e,t,n,i,o){if(i===0)return;let r=7*Float32Array.BYTES_PER_ELEMENT;e.useProgram(n.program),e.uniformMatrix4fv(n.u_projection,!1,o);let s=K(t),{setDivisor:a}=s;e.bindBuffer(e.ARRAY_BUFFER,n.quadBuffer),e.enableVertexAttribArray(n.a_corner),e.vertexAttribPointer(n.a_corner,2,e.FLOAT,!1,0,0),a(n.a_corner,0),e.bindBuffer(e.ARRAY_BUFFER,n.instanceBuffer);let l=Float32Array.BYTES_PER_ELEMENT,u=(m,f,b)=>{e.enableVertexAttribArray(m),e.vertexAttribPointer(m,f,e.FLOAT,!1,r,b),a(m,1)};u(n.a_x_center,1,0),u(n.a_half_width,1,1*l),u(n.a_y0,1,2*l),u(n.a_y1,1,3*l),u(n.a_color,3,4*l),s.drawArraysInstanced(e.TRIANGLE_STRIP,0,4,i),a(n.a_x_center,0),a(n.a_half_width,0),a(n.a_y0,0),a(n.a_y1,0),a(n.a_color,0)}function Pm(e,t,n,i,o,r){if(o.upWickCount===0&&o.downWickCount===0)return;let s=n.dpr;t.useProgram(i.program),t.uniformMatrix4fv(i.u_projection,!1,r),t.uniform2f(i.u_resolution,t.canvas.width,t.canvas.height),t.uniform1f(i.u_line_width,e.g.wick_width_px*s);let a=K(n),{setDivisor:l}=a;t.bindBuffer(t.ARRAY_BUFFER,i.cornerBuffer),t.enableVertexAttribArray(i.a_corner),t.vertexAttribPointer(i.a_corner,1,t.FLOAT,!1,0,0),l(i.a_corner,0),Wa(t,a,i,o.upWickBuffer,o.upWickCount,e.si),Wa(t,a,i,o.downWickBuffer,o.downWickCount,e.ai),l(i.a_start,0),l(i.a_end,0)}function Wa(e,t,n,i,o,r){if(o===0)return;let s=2*Float32Array.BYTES_PER_ELEMENT,{setDivisor:a}=t;e.uniform4f(n.u_color,r[0],r[1],r[2],1),e.bindBuffer(e.ARRAY_BUFFER,i),e.enableVertexAttribArray(n.a_start),e.vertexAttribPointer(n.a_start,2,e.FLOAT,!1,2*s,0),a(n.a_start,1),e.enableVertexAttribArray(n.a_end),e.vertexAttribPointer(n.a_end,2,e.FLOAT,!1,2*s,s),a(n.a_end,1),t.drawArraysInstanced(e.TRIANGLE_STRIP,0,4,o)}we();var Gi=class{constructor(){d(this,"i",null);d(this,"o",null)}ensureProgram(t){if(this.i)return this.i;let n=t.gl,i=Ge(n),o=ue(t,"line-uniform",Se,Be,["u_projection","u_color","u_resolution","u_line_width"],["a_corner","a_start","a_end"]);return this.i={...o,cornerBuffer:i,segmentBuffer:n.createBuffer()},this.i}invalidateBuffers(t){let n=this.o;if(!n||!t.e){this.o=null;return}let i=t.e.gl;i.deleteBuffer(n.upBuffer),i.deleteBuffer(n.downBuffer),this.o=null}rebuildBuffers(t,n){if(t.En!=="ohlc")return;let i=t.de,o=n.gl;this.ensureProgram(n);let r=t.xe,s=i.xCenter,a=i.halfWidth,l=i.open,u=i.close,m=i.high,f=i.low,b=i.isUp,p=0,c=0;for(let A=0;A<i.count;A++)b[A]!==0?p++:c++;let h=new Float32Array(p*3*4),g=new Float32Array(c*3*4),y=0,x=0;for(let A=0;A<i.count;A++){let R=s[A]-r,L=l[A],w=u[A],F=f[A],G=m[A],D=a[A],B=b[A]!==0?h:g,P=b[A]!==0?y:x;B[P++]=R,B[P++]=F,B[P++]=R,B[P++]=G,B[P++]=R-D,B[P++]=L,B[P++]=R,B[P++]=L,B[P++]=R,B[P++]=w,B[P++]=R+D,B[P++]=w,b[A]!==0?y=P:x=P}let C=this.o,_=C?.upBuffer??o.createBuffer(),v=C?.downBuffer??o.createBuffer();o.bindBuffer(o.ARRAY_BUFFER,_),o.bufferData(o.ARRAY_BUFFER,h,o.STATIC_DRAW),o.bindBuffer(o.ARRAY_BUFFER,v),o.bufferData(o.ARRAY_BUFFER,g,o.STATIC_DRAW),this.o={upBuffer:_,downBuffer:v,upInstanceCount:p*3,downInstanceCount:c*3}}draw(t,n,i,o){let r=this.o;if(!r||r.upInstanceCount===0&&r.downInstanceCount===0)return;let s=this.ensureProgram(i),a=i.dpr;n.useProgram(s.program),n.uniformMatrix4fv(s.u_projection,!1,o),n.uniform2f(s.u_resolution,n.canvas.width,n.canvas.height),n.uniform1f(s.u_line_width,t.g.ohlc_line_width_px*a);let l=K(i),{setDivisor:u}=l;n.bindBuffer(n.ARRAY_BUFFER,s.cornerBuffer),n.enableVertexAttribArray(s.a_corner),n.vertexAttribPointer(s.a_corner,1,n.FLOAT,!1,0,0),u(s.a_corner,0),Ga(n,l,s,r.upBuffer,r.upInstanceCount,t.si),Ga(n,l,s,r.downBuffer,r.downInstanceCount,t.ai),u(s.a_start,0),u(s.a_end,0)}destroy(t){let n=t.e?.gl;if(n){this.invalidateBuffers(t);let i=this.i;i&&(n.deleteBuffer(i.cornerBuffer),n.deleteBuffer(i.segmentBuffer))}this.i=null,this.o=null}};function Ga(e,t,n,i,o,r){if(o===0)return;let s=4*Float32Array.BYTES_PER_ELEMENT,a=2*Float32Array.BYTES_PER_ELEMENT,{setDivisor:l}=t;e.uniform4f(n.u_color,r[0],r[1],r[2],1),e.bindBuffer(e.ARRAY_BUFFER,i),e.enableVertexAttribArray(n.a_start),e.vertexAttribPointer(n.a_start,2,e.FLOAT,!1,s,0),l(n.a_start,1),e.enableVertexAttribArray(n.a_end),e.vertexAttribPointer(n.a_end,2,e.FLOAT,!1,s,a),l(n.a_end,1),t.drawArraysInstanced(e.TRIANGLE_STRIP,0,4,o)}var Qt=class extends gt{constructor(){super(...arguments);d(this,"B",null);d(this,"Oe",[]);d(this,"b",[]);d(this,"de",Jt());d(this,"vn",{min:0,max:1});d(this,"en",null);d(this,"Ce",null);d(this,"ft","category");d(this,"j",null);d(this,"mt",null);d(this,"Ot",null);d(this,"xe",0);d(this,"si",[0,.8,.4]);d(this,"ai",[.8,.2,.2]);d(this,"ri",null);d(this,"pe",-1);d(this,"Ui",-1);d(this,"N",{bodyWick:new Wi,ohlc:new Gi});d(this,"Wn",!0);d(this,"Lt",null)}tooltipCallbacks(){return{onHover:(n,i)=>Jo(this,n,i),onLeave:()=>{this.pe!==-1&&(this.pe=-1,Ye(this))},onPin:(n,i)=>{if(Jo(this,n,i),this.pe>=0){let o=this.pe;Ba(this,o),this.Bo(o)}},onUnpin:()=>{this.emitUnselect()}}}async Bo(n){if(n<0||n>=this.de.count)return;let i=this.de.catIdx[n],o=this.de.splitIdx[n],r=this.Re.map(u=>u.labels[i]??null),s=this.Oe[o]??"",a=this.w.length>0&&s!==""?s.split("|"):[],l=this.E[1]||this.E.find(u=>!!u)||"";await this.emitClickAndSelect({rowIdx:i+this.lt,columnName:l,groupByValues:r,splitByValues:a})}invalidateTheme(){super.invalidateTheme(),this.ri=null}async uploadAndRender(n,i,o,r){if(this.e=n,o!==0)return;let s=Ma({columns:i,numRows:r,columnSlots:this.E,groupBy:this.L,splitBy:this.w,groupByTypes:this.gt,bandInnerFrac:this.g.band_inner_frac,barInnerPad:this.g.bar_inner_pad,scratchCandles:this.de});this.g.domain_mode==="expand"?(this.en&&(s.yDomain.min=Math.min(this.en.min,s.yDomain.min),s.yDomain.max=Math.max(this.en.max,s.yDomain.max)),this.en={...s.yDomain},s.numericCategoryDomain&&(this.Ce&&(s.numericCategoryDomain.min=Math.min(this.Ce.min,s.numericCategoryDomain.min),s.numericCategoryDomain.max=Math.max(this.Ce.max,s.numericCategoryDomain.max)),this.Ce={min:s.numericCategoryDomain.min,max:s.numericCategoryDomain.max})):(this.en=null,this.Ce=null),this.Re=s.rowPaths,this.ie=s.numCategories,this.lt=s.rowOffset,this.Oe=s.splitPrefixes,this.b=s.series,this.de=s.candles,this.vn=s.yDomain,this.ft=s.axisMode.mode,this.j=s.numericCategoryDomain,this.mt=s.categoryPositions,this.xe=s.numericCategoryDomain?.min??0,this.Lt=null,er(this),Ia(this),Ea(this,n),await this.requestRender(n)}It(n){this.e=n,Pa(this,n)}resetExpandedDomain(){this.en=null,this.Ce=null}destroyInternal(){if(this.e){let n=this.e.gl;this.W&&n.deleteBuffer(this.W),this.N.bodyWick.destroy(this),this.N.ohlc.destroy(this)}this.i=null,this.B=null,this.W=null,this.de=Jt(),this.b=[],this.Re=[],this.ie=0,this.ri=null}};var $a={scatter:async()=>qn,line:async()=>Kn,density:async()=>Jn,treemap:async()=>ci,sunburst:async()=>hi,heatmap:async()=>Pi,"y-bar":async()=>He,"y-line":async()=>He,"y-scatter":async()=>He,"y-area":async()=>He,"x-bar":async()=>Ii,candlestick:async()=>Qt,ohlc:async()=>Qt,"map-scatter":async()=>(await Promise.resolve().then(()=>(Hi(),Oi))).MapScatterChart,"map-line":async()=>(await Promise.resolve().then(()=>(Hi(),Oi))).MapLineChart,"map-density":async()=>(await Promise.resolve().then(()=>(Hi(),Oi))).MapDensityChart};async function ja(e,t,n){let i=new Map;await e.with_typed_arrays(n??{},async(o,r,s,a)=>{for(let l=0;l<o.length;l++){let u=o[l],m=r[l],f=s[l]??void 0,b=a[l];b!==null?i.set(u,{type:"string",indices:m,dictionary:b,valid:f}):m instanceof Float32Array?i.set(u,{type:"float32",values:m,valid:f}):m instanceof Int32Array?i.set(u,{type:"int32",values:m,valid:f}):m instanceof Float64Array?i.set(u,{type:"float64",values:m,valid:f}):i.set(u,{type:"float32",values:new Float32Array(m),valid:f})}await t(i)})}var Za=new Map;async function qa(e){let t=[e.family,e.src,e.weight??"",e.style??""].join("|"),n=Za.get(t);if(n){await n;return}n=(async()=>{try{let i={};e.style&&(i.style=e.style),e.weight&&(i.weight=e.weight),e.stretch&&(i.stretch=e.stretch);let o=new FontFace(e.family,e.src,i);await o.load(),self.fonts.add(o)}catch(i){console.warn(`Failed to load font ${e.family}:`,i)}})(),Za.set(t,n),await n}function tn(e,t){switch(t.kind){case"setViewByName":e.setViewByName(t.name);break;case"setColumnsConfig":e.chartImpl.setColumnsConfig?.(t.cfg);break;case"setPluginConfig":e.chartImpl.setPluginConfig?.(t.cfg),e.redraw();break;case"setBufferMaxCapacity":e.glManager.C.maxCapacity=t.n;break;case"loadAndRender":e.loadAndRender(t);break;case"redraw":e.redraw();break;case"resize":console.log("resize"),e.resize(t.cssWidth,t.cssHeight,t.dpr),e.redraw();break;case"clear":e.clear();break;case"invalidateTheme":e.chartImpl.setTheme?.(t.themeVars),e.chartImpl.invalidateTheme?.(),e.resize(e.cssWidth,e.cssHeight,e.dpr);break;case"restoreZoom":e.restoreZoom(t.state);break;case"resetAllZooms":e.resetAllZooms(),e.redraw(),e.post({kind:"zoomChanged",isDefault:e.allZoomsDefault()});break;case"resetExpandedDomain":e.resetExpandedDomain();break;case"interaction":e.onInteraction(t.event);break;case"saveZoom":e.post({kind:"saveZoomReply",requestId:t.requestId,state:e.saveZoom()});break;case"destroy":e.destroy();break;case"init":break;case"snapshotPng":{let n=t.requestId;e.snapshotPng().then(i=>{e.post({kind:"snapshotPngReply",requestId:n,blob:i})}).catch(i=>{e.post({kind:"error",message:String(i)})});break}}}var nn=new Map;function sr(e,t,n){let i={sessionId:e,msg:t};n&&n.length>0?self.postMessage(i,n):self.postMessage(i)}function Nm(e){return{postMessage:(t,n)=>sr(e,t,n),addEventListener:()=>{},removeEventListener:()=>{},start:()=>{},close:()=>{},dispatchEvent:()=>!1,onmessage:null,onmessageerror:null}}function Ka(e){self.addEventListener("message",function(t){let n=t.data,{sessionId:i,msg:o}=n;if(o.kind==="init"){if(nn.has(i)){sr(i,{kind:"error",message:`sessionId ${i} already initialized`});return}e(o,Nm(i)).then(s=>{nn.set(i,s)}).catch(s=>{sr(i,{kind:"error",message:String(s)})});return}if(o.kind==="destroy"){let s=nn.get(i);s&&(tn(s,o),nn.delete(i));return}let r=nn.get(i);r&&tn(r,o)})}so();var Yi=class extends Error{constructor(){super("StaleGenerationError")}};async function Ja(e){let t=$a[e];if(!t)throw new Error(`Unknown chart tag: ${e}`);return await t()}var Vi=class{constructor(t,n,i,o,r,s){d(this,"chartImpl");d(this,"glManager");d(this,"zoomController",null);d(this,"gridlines");d(this,"chrome");d(this,"cssWidth");d(this,"cssHeight");d(this,"dpr");d(this,"client");d(this,"view");d(this,"table");d(this,"controlPort");d(this,"Oi",0);d(this,"li",null);d(this,"Hi",0);d(this,"Yi",0);this.client=n,this.view=i,this.table=o,this.controlPort=r,this.chartImpl=new s;let a=t.glCanvas??new OffscreenCanvas(Math.max(1,Math.round(t.cssWidth*t.dpr)),Math.max(1,Math.round(t.cssHeight*t.dpr)));this.glManager=new Bn(a,{precompile:t.precompileShaders??!1}),t.renderMode==="blit"&&this.glManager.setFrameCallback(u=>{this.post({kind:"frameBitmap",bitmap:u},[u])}),this.gridlines=t.gridlinesCanvas,this.chrome=t.chromeCanvas,this.cssWidth=t.cssWidth,this.cssHeight=t.cssHeight,this.dpr=t.dpr,this.chartImpl.setGridlineCanvas?.(t.gridlinesCanvas),this.chartImpl.setChromeCanvas?.(t.chromeCanvas),this.chartImpl.setTheme?.(t.themeVars),t.defaultChartType&&this.chartImpl.setDefaultChartType?.(t.defaultChartType),this.chartImpl.setFacetConfig?.(t.facetConfig),this.chartImpl.setPluginConfig?.(t.pluginConfig),this.chartImpl.setZoomController&&(this.zoomController=new Qe,this.chartImpl.setZoomController(this.zoomController)),this.chartImpl.setView?.(i),this.glManager.C.maxCapacity=t.bufferMaxCapacity,this.glManager.resize(t.cssWidth,t.cssHeight,t.dpr);let l=new In(u=>{switch(u.kind){case"pin":this.post({kind:"pinTooltip",lines:u.payload.lines,pos:u.payload.pos,bounds:u.payload.bounds});break;case"dismiss":this.post({kind:"dismissTooltip"});break;case"setCursor":this.post({kind:"setCursor",cursor:u.cursor});break;case"userClick":this.post({kind:"userClick",detail:u.payload});break;case"userSelect":this.post({kind:"userSelect",selected:u.payload.selected,row:u.payload.row,column_names:u.payload.column_names,insertConfig:u.payload.insertConfig});break}});this.chartImpl.attachTooltip?.(l)}setViewByName(t){this.view=this.client.__unsafe_open_view(t),this.chartImpl.setView?.(this.view)}async loadAndRender(t){let n=++this.Oi;try{let[i,o,r,s]=await Promise.all([this.view.num_rows(),this.view.schema(),this.view.expression_schema(),this.table?.schema()??Promise.resolve({})]);if(this.Oi!==n)return;this.chartImpl.setViewPivots?.(t.viewerConfig.group_by,t.viewerConfig.split_by),this.chartImpl.setColumnTypes?.(o),this.chartImpl.setGroupByTypes?.({...s,...r}),this.chartImpl.setColumnSlots?.(t.viewerConfig.columns);let a=Object.keys(o).length||1,l=Math.floor(this.glManager.C.maxCapacity/a),u=Math.min(i,l);this.glManager.ensureBufferCapacity(u);try{await ja(this.view,async m=>{if(this.Oi!==n)throw new Yi;await this.chartImpl.uploadAndRender(this.glManager,m,0,u)},{end_row:u,float32:t.options.float32})}catch(m){if(!(m instanceof Yi))throw m}}catch(i){console.error("loadAndRender failed",i)}finally{this.post({kind:"loadAndRenderAck",msgId:t.msgId})}}redraw(){this.chartImpl.requestRender(this.glManager)}resize(t,n,i){this.cssWidth=t,this.cssHeight=n,this.dpr=i,this.glManager.requestResize(t,n,i),this.chartImpl.requestRender(this.glManager)}clear(){Nr(this.glManager,()=>{this.glManager.clear(),this.gridlines.getContext("2d")?.clearRect(0,0,this.gridlines.width,this.gridlines.height)})}saveZoom(){return this.zoomController?.serialize()}restoreZoom(t){t&&this.zoomController?.restore(t)}allZoomsDefault(){if(this.zoomController&&!this.zoomController.isDefault())return!1;let t=this.chartImpl?.rn;if(t){for(let n of t)if(n&&!n.isDefault())return!1}return!0}resetAllZooms(){this.zoomController?.reset();let t=this.chartImpl?.rn;if(t)for(let n of t)n?.reset();this.resetExpandedDomain()}resetExpandedDomain(){this.chartImpl.resetExpandedDomain?.()}Lo(t,n){let i=this.chartImpl,o=i?.A;if(o){for(let a=0;a<o.cells.length;a++){let l=o.cells[a],u=l.layout.t;if(t>=u.x&&t<=u.x+u.width&&n>=u.y&&n<=u.y+u.height){let m=i.getZoomControllerForFacet?.(a)??this.zoomController;return m?{controller:m,layout:l.layout}:null}}return null}if(!this.zoomController)return null;let r=i?.u;if(!r)return null;let s=r.t;return t<s.x||t>s.x+s.width||n<s.y||n>s.y+s.height?null:{controller:this.zoomController,layout:r}}onInteraction(t){switch(t.type){case"wheel":{let n=this.Lo(t.mx,t.my);if(!n)return;Cr(n,t.mx,t.my,t.deltaY),this.chartImpl.requestRender(this.glManager),this.post({kind:"zoomChanged",isDefault:this.allZoomsDefault()});break}case"pointerdown":{let n=this.Lo(t.mx,t.my);if(!n)return;this.li=n,this.Hi=t.mx,this.Yi=t.my;break}case"pointermove":{if(this.li){let n=t.mx-this.Hi,i=t.my-this.Yi;this.Hi=t.mx,this.Yi=t.my,_r(this.li,n,i),this.chartImpl.requestRender(this.glManager),this.post({kind:"zoomChanged",isDefault:this.allZoomsDefault()})}else this._()?.dispatchHover(t.mx,t.my);break}case"pointerup":{this.li=null;break}case"pointerleave":{this._()?.dispatchLeave();break}case"click":{this._()?.dispatchClick(t.mx,t.my);break}case"dblclick":{this._()?.dispatchDblClick(t.mx,t.my);break}}}_(){return this.chartImpl?._??null}async snapshotPng(){this.glManager.applyPendingResize(),this.chartImpl.It(this.glManager);let t=this.glManager.gl,n=t.canvas,i=n.width,o=n.height,r=new Uint8ClampedArray(i*o*4);t.readPixels(0,0,i,o,t.RGBA,t.UNSIGNED_BYTE,r);let s=new OffscreenCanvas(i,o),a=s.getContext("2d");if(!a)throw new Error("snapshotPng: 2D context unavailable");let u=this.chartImpl.T?.()?.backgroundColor??"transparent";u!=="transparent"&&(a.fillStyle=u,a.fillRect(0,0,i,o)),a.drawImage(this.gridlines,0,0);let m=new OffscreenCanvas(i,o),f=m.getContext("2d");if(!f)throw new Error("snapshotPng: 2D context unavailable for GL blit");return f.putImageData(new ImageData(r,i,o),0,0),a.save(),a.scale(1,-1),a.drawImage(m,0,-o),a.restore(),a.drawImage(this.chrome,0,0),await s.convertToBlob({type:"image/png"})}destroy(){this.chartImpl.destroy(),this.glManager.destroy()}post(t,n){n&&n.length>0?this.controlPort.postMessage(t,n):this.controlPort.postMessage(t)}},Um=typeof globalThis.importScripts=="function";async function Om(e,t){if(!e.clientWorkerURL||!e.clientWasm||!e.proxyPort)throw new Error("Init error");let n=await import(e.clientWorkerURL.toString());await n.initSync({module:e.clientWasm}),e.fontFaces?.length&&await Promise.all(e.fontFaces.map(qa));let i=e.proxyPort,o=new n.Client(async u=>{let m=u.slice().buffer;i.postMessage(m,[m])},async()=>i.close());i.addEventListener("message",u=>{o.handle_response(new Uint8Array(u.data))}),i.start();let r=o.__unsafe_open_view(e.viewName),s=e.tableName?await o.open_table(e.tableName):null,a=await Ja(e.chartTag),l=new Vi(e,o,r,s,t,a);return l.post({kind:"ready"}),l}async function Jy(e){let t=e.client.__unsafe_open_view(e.msg.viewName),n=e.msg.tableName?await e.client.open_table(e.msg.tableName):null,i=await Ja(e.msg.chartTag),o=new Vi(e.msg,e.client,t,n,e.controlPort,i);return e.controlPort.addEventListener("message",r=>{let s=r.data;s?.kind!=="init"&&tn(o,s)}),e.controlPort.start(),o.post({kind:"ready"}),o}Um&&Ka(Om);export{Vi as WorkerRenderer,Jy as bootstrapInProcess};\n';var A=null;async function he(){if(A)return A;let r=new Blob([q],{type:"application/javascript"});return A=URL.createObjectURL(r),A}var D=he;var w=null,N=new Map,ce=0;async function fe(){return w||(w=(async()=>{let r=await D(),e=new Worker(r,{type:"module",name:"viewer-charts"});return e.addEventListener("message",t=>{let i=t.data;N.get(i.sessionId)?.(i.msg)}),e})(),w)}var M=class{_handle=null;_proxyChannel=null;_proxySession=null;_client;_view;_tableName;_clientWorkerURL;_clientWasm;_chartTag;_maxCells;_precompileShaders;_ready;_resolveReady;_rejectReady;_pending=new Map;_pendingCounter=0;_onZoomChanged=null;_allZoomsDefault=!0;_hostGlCanvas=null;_displayCtx=null;_hostSink=null;_lastInsertConfig=void 0;constructor(e){this._client=e.client,this._view=e.view,this._tableName=e.tableName,this._clientWorkerURL=e.clientWorkerURL,this._clientWasm=e.clientWasm,this._chartTag=e.chartTag,this._maxCells=e.maxCells,this._precompileShaders=e.precompileShaders??!1,this._onZoomChanged=e.onZoomChanged??null,this._ready=new Promise((t,i)=>{this._resolveReady=t,this._rejectReady=i})}async init(e){this._hostGlCanvas=e.gl;let t=await D();m==="worker"&&(this._proxyChannel=new MessageChannel,this._proxySession=this._client.new_proxy_session(c=>{let W=c.slice().buffer;this._proxyChannel.port1.postMessage(W,[W])}),this._proxyChannel.port1.addEventListener("message",c=>{this._proxySession.handle_request(new Uint8Array(c.data))}),this._proxyChannel.port1.start());let i;e.renderBlitMode==="blit"?this._displayCtx=e.gl.getContext("2d"):i=e.gl.transferControlToOffscreen();let n=e.gridlines.transferControlToOffscreen(),o=e.chrome.transferControlToOffscreen(),a=e.gl.getBoundingClientRect(),l=window.devicePixelRatio||1,h=k(e.gl),g=m==="worker"?j():[],_=m==="worker"?this._clientWasm:void 0,F=m==="worker"?this._clientWorkerURL:void 0,J=m==="worker"?this._proxyChannel.port2:void 0,U={kind:"init",renderMode:e.renderBlitMode,glCanvas:i,gridlinesCanvas:n,chromeCanvas:o,proxyPort:J,clientWorkerURL:F,clientWasm:_,chartTag:this._chartTag,viewName:this._view.__unsafe_get_name(),tableName:this._tableName,facetConfig:e.facetConfig,pluginConfig:e.pluginConfig,defaultChartType:e.defaultChartType,themeVars:h,fontFaces:g,cssWidth:a.width,cssHeight:a.height,dpr:l,bufferMaxCapacity:0,precompileShaders:this._precompileShaders};if(this._handle=await this._createHandle(t,U),this._handle.addMessageListener(c=>this._handleRendererMsg(c)),m==="worker"){let c=[n,o,this._proxyChannel.port2];i&&c.unshift(i),this._handle.post(U,c)}await this._ready}async _createHandle(e,t){if(m==="worker"){let o=await fe(),a=++ce;return{post:(l,h)=>o.postMessage({sessionId:a,msg:l},h),addMessageListener:l=>{N.set(a,l)},terminate:()=>{N.delete(a)}}}let i=await import(e),n=new MessageChannel;return await i.bootstrapInProcess({msg:t,client:this._client,controlPort:n.port2}),{post:(o,a)=>n.port1.postMessage(o,a),addMessageListener:o=>{n.port1.addEventListener("message",a=>o(a.data)),n.port1.start()},terminate:()=>{n.port1.close(),n.port2.close()}}}setView(e){this._view=e,this._post({kind:"setViewByName",name:this._view.__unsafe_get_name()})}setColumnsConfig(e){this._post({kind:"setColumnsConfig",cfg:e})}setPluginConfig(e){this._post({kind:"setPluginConfig",cfg:e})}setBufferMaxCapacity(e){this._post({kind:"setBufferMaxCapacity",n:e})}loadAndRender(e){let{id:t,promise:i}=this._allocPending("loadAndRender"),n={kind:"loadAndRender",msgId:t,viewerConfig:e.viewerConfig,options:{float32:e.options?.float32??!0}};return this._post(n),i}redraw(){this._post({kind:"redraw"})}resize(){if(!this._hostGlCanvas)return;let e=this._hostGlCanvas.getBoundingClientRect(),t=window.devicePixelRatio||1;this._post({kind:"resize",cssWidth:e.width,cssHeight:e.height,dpr:t})}clear(){this._post({kind:"clear"})}invalidateTheme(){if(!this._hostGlCanvas)return;let e=k(this._hostGlCanvas);this._post({kind:"invalidateTheme",themeVars:e})}async saveZoom(){let{id:e}=this._allocPending("saveZoom");this._post({kind:"saveZoom",requestId:e})}_allocPending(e){let t=++this._pendingCounter,i=new Promise((n,o)=>{this._pending.set(t,{kind:e,resolve:n,reject:o})});return{id:t,promise:i}}restoreZoom(e){this._post({kind:"restoreZoom",state:e})}allZoomsDefault(){return this._allZoomsDefault}resetAllZooms(){this._post({kind:"resetAllZooms"})}resetExpandedDomain(){this._post({kind:"resetExpandedDomain"})}snapshotPng(){let{id:e,promise:t}=this._allocPending("snapshotPng");return this._post({kind:"snapshotPng",requestId:e}),t}forwardInteraction(e){this._post({kind:"interaction",event:e})}destroy(){this._post({kind:"destroy"}),this._proxySession&&this._proxySession.close().catch(()=>{}),this._proxyChannel&&(this._proxyChannel.port1.close(),this._proxyChannel=null),this._handle&&(this._handle.terminate(),this._handle=null),this._hostSink?.dismiss(),this._hostSink=null,this._hostGlCanvas=null,this._displayCtx=null;let e=new Error("RendererTransport destroyed");for(let t of this._pending.values())t.kind==="loadAndRender"?t.resolve(void 0):t.reject(e);this._pending.clear()}_post(e){this._postRaw(e,[])}_postRaw(e,t){this._handle&&this._handle.post(e,t)}_handleRendererMsg(e){switch(e.kind){case"ready":this._resolveReady();break;case"zoomChanged":this._allZoomsDefault=e.isDefault,this._onZoomChanged?.(e.isDefault);break;case"saveZoomReply":this._resolvePending(e.requestId,"saveZoom",e.state);break;case"pinTooltip":this._ensureHostSink()?.pin(e.lines,e.pos,e.bounds);break;case"dismissTooltip":this._hostSink?.dismiss();break;case"setCursor":this._ensureHostSink()?.setCursor(e.cursor);break;case"userClick":this._dispatchOnViewer(new CustomEvent("perspective-click",{bubbles:!0,composed:!0,detail:e.detail}));break;case"userSelect":{let t=this._lastInsertConfig?[this._lastInsertConfig]:[],i=e.selected?[e.insertConfig]:[];this._lastInsertConfig=e.selected?e.insertConfig:void 0;let n=new P(e.selected,e.row,e.column_names,t,i);this._dispatchOnViewer(new CustomEvent("perspective-global-filter",{bubbles:!0,composed:!0,detail:n}));break}case"frameBitmap":this._drawFrameBitmap(e.bitmap);break;case"error":this._rejectReady(new Error(e.message));break;case"loadAndRenderAck":this._resolvePending(e.msgId,"loadAndRender",void 0);break;case"snapshotPngReply":this._resolvePending(e.requestId,"snapshotPng",e.blob);break}}_resolvePending(e,t,i){let n=this._pending.get(e);!n||n.kind!==t||(this._pending.delete(e),n.resolve(i))}_drawFrameBitmap(e){if(this._displayCtx&&this._hostGlCanvas){let t=e.width,i=e.height;this._hostGlCanvas.width!==t&&(this._hostGlCanvas.width=t),this._hostGlCanvas.height!==i&&(this._hostGlCanvas.height=i),this._displayCtx.globalCompositeOperation="copy",this._displayCtx.drawImage(e,0,0)}e.close()}_dispatchOnViewer(e){if(!this._hostGlCanvas)return;let t=this._hostGlCanvas;for(;t;){if(t instanceof HTMLElement&&t.tagName==="PERSPECTIVE-VIEWER"){t.dispatchEvent(e);return}t=t.host??t.parentNode??null}}_ensureHostSink(){if(this._hostSink)return this._hostSink;let e=this._hostGlCanvas?.parentElement;return!e||!this._hostGlCanvas?null:(this._hostSink=new C(this._hostGlCanvas,e),this._hostSink)}};var de={...G};function me(r,e){switch(r){case"auto_alt_y_axis":return{kind:"Bool",key:r,default:e.auto_alt_y_axis};case"include_zero":return{kind:"Bool",key:r,default:e.include_zero};case"domain_mode":return{kind:"Enum",key:r,default:e.domain_mode,variants:[{value:"fit",label:"Fit"},{value:"expand",label:"Expand"}]};case"facet_mode":return{kind:"Enum",key:r,default:s.facet_mode,variants:[{value:"grid",label:"Grid"},{value:"overlay",label:"Overlay"}]};case"facet_zoom_mode":return{kind:"Enum",key:r,default:s.facet_zoom_mode,variants:[{value:"shared",label:"Shared"},{value:"independent",label:"Independent"}]};case"series_zoom_mode":return{kind:"Enum",key:r,default:s.series_zoom_mode,variants:[{value:"dynamic",label:"Dynamic"},{value:"fixed",label:"Fixed"}]};case"line_width_px":return{kind:"Number",key:r,default:s.line_width_px,min:.5,step:.5,max:16};case"point_size_px":return{kind:"Number",key:r,default:s.point_size_px,min:1,max:32};case"band_inner_frac":return{kind:"Number",key:r,default:s.band_inner_frac,min:.1,max:1,step:.01};case"bar_inner_pad":return{kind:"Number",key:r,default:s.bar_inner_pad,min:0,max:.9,step:.01};case"wick_width_px":return{kind:"Number",key:r,default:s.wick_width_px,min:.5,step:.5,max:8};case"ohlc_line_width_px":return{kind:"Number",key:r,default:s.ohlc_line_width_px,min:.5,step:.5,max:8};case"gradient_radius_px":return{kind:"Number",key:r,default:s.gradient_radius_px,min:2,step:1,max:256};case"gradient_intensity":return{kind:"Number",key:r,default:s.gradient_intensity,min:.05,step:.05,max:4};case"gradient_heat_max":return{kind:"Number",key:r,default:s.gradient_heat_max,min:.1,step:.1,max:64};case"gradient_color_mode":return{kind:"Enum",key:r,default:s.gradient_color_mode,variants:[{value:"mean",label:"Mean (density-weighted)"},{value:"density",label:"Density only"},{value:"extreme",label:"Extremes"},{value:"signed",label:"Signed sum"}]};case"map_tile_provider":return{kind:"Enum",key:r,default:s.map_tile_provider,variants:[{value:"carto-positron",label:"Light (Positron)"},{value:"carto-dark-matter",label:"Dark Matter"},{value:"carto-voyager",label:"Voyager"}]};case"map_tile_alpha":return{kind:"Number",key:r,default:s.map_tile_alpha,min:0,max:1,step:.05}}}var ge=(()=>{let r=new CSSStyleSheet;return r.replaceSync(X),[r]})(),R=class extends HTMLElement{_initialized=!1;_glCanvas;_gridlineCanvas;_chromeCanvas;_renderer=null;_rendererPromise=null;_rawEventForwarder=null;_generation=0;_renderBlitMode=Z;_resetClickAbort=null;_pluginConfigStore=null;get _pluginConfig(){return this._pluginConfigStore||(this._pluginConfigStore=this._effectiveDefaults()),this._pluginConfigStore}set _pluginConfig(e){this._pluginConfigStore=e}_effectiveDefaults(){return{...s,...this._chartType.plugin_field_defaults??{}}}connectedCallback(){if(!this._initialized){this.attachShadow({mode:"open"});for(let e of ge)this.shadowRoot.adoptedStyleSheets.push(e);this.shadowRoot.innerHTML='<div class="webgl-container"><div class="zoom-controls"><button class="zoom-reset">Reset Zoom</button></div></div>',this._initialized=!0}this._glCanvas?.isConnected||this._buildCanvasStack()}_buildCanvasStack(){let e=this.shadowRoot.querySelector(".webgl-container");e.insertAdjacentHTML("afterbegin",'<canvas class="webgl-gridlines"></canvas><canvas class="webgl-canvas"></canvas><canvas class="webgl-chrome"></canvas>'),this._glCanvas=e.querySelector(".webgl-canvas"),this._gridlineCanvas=e.querySelector(".webgl-gridlines"),this._chromeCanvas=e.querySelector(".webgl-chrome")}_clearCanvasStack(){let e=this.shadowRoot?.querySelector(".webgl-container");if(e)for(let t of Array.from(e.querySelectorAll("canvas")))t.remove();this._glCanvas=null,this._gridlineCanvas=null,this._chromeCanvas=null}disconnectedCallback(){this.delete(),this._clearCanvasStack()}_ensureRenderer(e){return this._initialized||this.connectedCallback(),this._rendererPromise?this._rendererPromise:(this._rendererPromise=this._buildRenderer(e).then(t=>(this._renderer=t,this._setupInteraction(t),t)),this._rendererPromise)}_setupInteraction(e){if(this._rawEventForwarder)return;let t=this.shadowRoot.querySelector(".zoom-controls");this._rawEventForwarder=new b,this._rawEventForwarder.attach(this._glCanvas,n=>{e.forwardInteraction(n)});let i=this.shadowRoot.querySelector(".zoom-reset");i&&(this._resetClickAbort=new AbortController,i.addEventListener("click",()=>{e.resetAllZooms(),t&&t.classList.remove("visible")},{signal:this._resetClickAbort.signal}))}async _buildRenderer(e){let t=this.parentElement,i=await t.getClient(),n=customElements.get("perspective-viewer"),o=n.get_wasm_module(),a=n.get_worker_url(),l=await t?.getTable?.(),h=l?await l.get_name():void 0,g=this.shadowRoot.querySelector(".zoom-controls"),_=new M({client:i,view:e,tableName:h,clientWorkerURL:a,clientWasm:o,chartTag:this._chartType.tag,maxCells:this._chartType.max_cells,precompileShaders:!0,onZoomChanged:F=>{g&&g.classList.toggle("visible",!F)}});return await _.init({gl:this._glCanvas,gridlines:this._gridlineCanvas,chrome:this._chromeCanvas,facetConfig:{...de,facet_mode:this._pluginConfig.facet_mode,zoom_mode:this._pluginConfig.facet_zoom_mode},pluginConfig:this._pluginConfig,defaultChartType:this._chartType.default_chart_type,renderBlitMode:this._renderBlitMode}),_}setBlitMode(e){console.assert(this._initialized,"Already initialized"),this._renderBlitMode=e}get_static_config(){return{name:this._chartType.name,category:this._chartType.category,select_mode:this._chartType.selectMode,min_config_columns:this._chartType.initial.count,config_column_names:this._chartType.initial.names,max_cells:this._chartType.max_cells,max_columns:this._chartType.max_columns,group_rollup_modes:["flat"],priority:0,can_render_column_styles:!!this._chartType.default_chart_type||this._chartType.category==="Cartesian Charts"}}column_config_schema(e,t,i,n,o){let a=[],l=this._chartType.default_chart_type;if(l&&(e==="integer"||e==="float")){a.push({kind:"Enum",key:"chart_type",default:l,variants:[{value:"bar",label:"Bar"},{value:"line",label:"Line"},{value:"scatter",label:"Scatter"},{value:"area",label:"Area"}]});let h=n?.chart_type??l,g=h==="bar"||h==="area";g&&a.push({kind:"Bool",key:"stack",default:g}),(l==="bar"||l==="line"||l==="scatter"||l==="area")&&a.push({kind:"Bool",key:"alt_axis",default:!1})}return e==="integer"||e==="float"?a.push({kind:"NumberFormat"}):(e==="date"||e==="datetime")&&a.push({kind:"DatetimeFormat"}),{fields:a}}plugin_config_schema(e){let t=this._effectiveDefaults();return{fields:this._chartType.applicable_plugin_fields.map(n=>me(n,t))}}async draw(e){return this._renderer?.resetExpandedDomain(),this._renderer?.resetAllZooms(),this._drawImpl(e)}async update(e){return this._drawImpl(e)}async _drawImpl(e){let t=++this._generation,i=await this._ensureRenderer(e);if(this._generation!==t)return;i.setView(e),i.setBufferMaxCapacity(this._chartType.max_cells);let o=await this.parentElement?.getViewConfig?.()??{};this._generation===t&&await i.loadAndRender({viewerConfig:{group_by:o?.group_by??[],split_by:o?.split_by??[],columns:o?.columns??[]},options:{float32:!0}})}async clear(){this._generation++,this._renderer?.clear()}async resize(){this._renderer?.resize()}restyle(){return this._renderer?.invalidateTheme(),5}save(){let e={},t=this._renderer?.saveZoom();t&&(e.zoom=t);let i={};for(let n of this._chartType.applicable_plugin_fields)i[n]=this._pluginConfig[n];return Object.keys(i).length>0&&(e.plugin_config=i),e}async render(e){return await this._ensureRenderer(e),await this.draw(e),this._renderer.snapshotPng()}restore(e,t){e?.zoom&&this._renderer?.restoreZoom(e.zoom),this._pluginConfig={...this._effectiveDefaults(),...e},this._renderer?.setPluginConfig(this._pluginConfig),this._renderer?.setColumnsConfig(t??{})}delete(){this._generation++,this._rawEventForwarder&&(this._rawEventForwarder.detach(),this._rawEventForwarder=null),this._resetClickAbort&&(this._resetClickAbort.abort(),this._resetClickAbort=null),this._renderer&&(this._renderer.destroy(),this._renderer=null),this._rendererPromise=null}};function pe(...r){let e=new Set(r.length>0?r:S.map(t=>t.name));S.forEach(t=>{if(e.has(t.name)){let i=`perspective-viewer-charts-${t.tag}`;customElements.define(i,class extends R{_chartType=t;static _chartType=t}),customElements.whenDefined("perspective-viewer").then(async()=>{await customElements.get("perspective-viewer").registerPlugin(i)})}})}pe();export{P as PerspectiveSelectDetail,pe as register};
3
+ //# sourceMappingURL=perspective-viewer-charts.js.map