@synnaxlabs/pluto 0.41.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/dist/{Center-Dr9Np3yZ.js → Center-CNcAEDgS.js} +2 -2
  2. package/dist/{Center-sJghNsrv.cjs → Center-Map6aflE.cjs} +1 -1
  3. package/dist/ContextMenu-DmRPxhnI.cjs +1 -0
  4. package/dist/{ContextMenu-GUed89mt.js → ContextMenu-fLU0wr9S.js} +19 -20
  5. package/dist/DateTime-CP3OmEGY.cjs +1 -0
  6. package/dist/{DateTime-DEbT6v4l.js → DateTime-CWAcEwXO.js} +2 -2
  7. package/dist/{Divider-Bpe7zJig.js → Divider-BTLn5ucU.js} +103 -97
  8. package/dist/{Divider-CloQr3vQ.cjs → Divider-Dvb6dsgX.cjs} +4 -4
  9. package/dist/Dropdown-CaGzfZRa.cjs +1 -0
  10. package/dist/{Dropdown-4Cti-bbQ.js → Dropdown-nw8kRSbl.js} +110 -111
  11. package/dist/Haul-B8zGWk0I.cjs +1 -0
  12. package/dist/{Haul-Bw54Yj6J.js → Haul-Cnuzk7Z-.js} +37 -38
  13. package/dist/Item-BzrQqxRC.cjs +1 -0
  14. package/dist/{Item-9WCCzBv2.js → Item-FmwC-twg.js} +10 -11
  15. package/dist/{Keyboard-CZFi6COK.cjs → Keyboard-BfvjkBgh.cjs} +1 -1
  16. package/dist/{Keyboard-634856lT.js → Keyboard-Cevv7vrQ.js} +2 -2
  17. package/dist/{Link-fkoogssj.cjs → Link-DI7BZ5dL.cjs} +1 -1
  18. package/dist/{Link-BEheZd26.js → Link-Dljdu4e9.js} +1 -1
  19. package/dist/{Pack-D6Z6WuZl.cjs → Pack-lJqoOmHx.cjs} +1 -1
  20. package/dist/{Pack-DhZO_rza.js → Pack-to0DG2iP.js} +2 -2
  21. package/dist/Provider-BlM1x1cF.cjs +1 -0
  22. package/dist/{Provider-UAXPVomG.js → Provider-C_B463cg.js} +301 -292
  23. package/dist/{Space-DunsWl06.js → Space-C2oZDkE1.js} +1 -1
  24. package/dist/{Space-BtaH1buB.cjs → Space-DfcVsxz8.cjs} +1 -1
  25. package/dist/{Text-CaRMYy3U.js → Text-BXADoWYY.js} +54 -52
  26. package/dist/Text-BiYpGaEZ.js +35 -0
  27. package/dist/Text-BjHlLKsp.cjs +1 -0
  28. package/dist/{Text-3PiRcn8q.js → Text-CWiPrDI1.js} +75 -77
  29. package/dist/Text-DrIBbnml.cjs +1 -0
  30. package/dist/Text-ZJqK1cI3.cjs +4 -0
  31. package/dist/{Toggle-CZd8L4GI.js → Toggle-CeUVv58o.js} +102 -104
  32. package/dist/Toggle-CfwYy9fe.cjs +1 -0
  33. package/dist/{Video-4XQ1qozd.js → Video-BZ1XTEez.js} +1 -1
  34. package/dist/{Video-BM9uJLaQ.cjs → Video-C7YoF37-.cjs} +1 -1
  35. package/dist/WithIcon-DG7VJxsE.cjs +1 -0
  36. package/dist/WithIcon-pBZ7H9Lq.js +98 -0
  37. package/dist/align.cjs +1 -1
  38. package/dist/align.js +1 -1
  39. package/dist/button.cjs +1 -1
  40. package/dist/button.js +1 -1
  41. package/dist/color.cjs +1 -1
  42. package/dist/color.js +1 -1
  43. package/dist/css-B7c7_G5h.js +4746 -0
  44. package/dist/css-hg3QdDDt.cjs +15 -0
  45. package/dist/css.cjs +1 -1
  46. package/dist/css.js +2 -2
  47. package/dist/deep-B1etRzze.cjs +1 -0
  48. package/dist/deep-BytImVW-.js +102 -0
  49. package/dist/dimensions-Cz-q0Mok.cjs +1 -0
  50. package/dist/dimensions-DcjW7X3n.js +19 -0
  51. package/dist/dropdown.cjs +1 -1
  52. package/dist/dropdown.js +1 -1
  53. package/dist/eraser-BOx6Xhwn.cjs +11 -0
  54. package/dist/eraser-Bsb4kKS3.js +1148 -0
  55. package/dist/ether.cjs +1 -1
  56. package/dist/ether.js +67 -75
  57. package/dist/{external-CVGidiDt.js → external-1KJXZcr9.js} +2 -2
  58. package/dist/{external-DVajt6X6.cjs → external-BHHC7TQ_.cjs} +1 -1
  59. package/dist/external-BLEs2AYM.cjs +46 -0
  60. package/dist/external-BdVuZd3H.cjs +1 -0
  61. package/dist/external-BiBhgCdz.cjs +1 -0
  62. package/dist/external-C75Z9Zbn.cjs +1 -0
  63. package/dist/external-CEfSeJMr.js +432 -0
  64. package/dist/external-CLTPcWrI.cjs +1 -0
  65. package/dist/{external-C0ZRdtdj.js → external-CRNR1bD0.js} +28 -28
  66. package/dist/{external-CnxSp7fm.cjs → external-Cfj1plcw.cjs} +1 -1
  67. package/dist/{external-DNF8yEwq.js → external-Ck1rVwUu.js} +27 -28
  68. package/dist/external-Cni9ftkW.cjs +1 -0
  69. package/dist/{external-BlUic3Vz.js → external-DCcp3sQD.js} +7 -8
  70. package/dist/{external-B-Cao-ae.cjs → external-DCfs7IFi.cjs} +1 -1
  71. package/dist/external-DDD_nc3x.js +400 -0
  72. package/dist/external-DNT-gmZx.cjs +1 -0
  73. package/dist/{external-BY2AjzRx.js → external-DeCeUbqe.js} +20 -19
  74. package/dist/{external-BFOrrNde.js → external-DgSaeiBz.js} +3 -3
  75. package/dist/{external-kZf9CjYn.cjs → external-DhfASB4W.cjs} +37 -37
  76. package/dist/{external-BCUxzSzk.js → external-bkwgRzLc.js} +9 -10
  77. package/dist/{external-BIwhkj24.js → external-hgzjVlDR.js} +1996 -2011
  78. package/dist/external-pUEPQrp_.cjs +1 -0
  79. package/dist/{external-CH66YjTZ.js → external-qwaFowDe.js} +12 -13
  80. package/dist/{external-BbrPEGJw.js → external-sUHGRdqd.js} +2 -2
  81. package/dist/{font-DCE90lco.cjs → font-BFTKtIQk.cjs} +1 -1
  82. package/dist/{font-BXKdXsr5.js → font-Crn-D_ua.js} +2 -2
  83. package/dist/{fontString-BBvH9Ypy.cjs → fontString-DQLaRHQV.cjs} +1 -1
  84. package/dist/{fontString-C7Q9Laqk.js → fontString-DjnDxFrE.js} +1 -1
  85. package/dist/header.cjs +1 -1
  86. package/dist/header.js +1 -1
  87. package/dist/hooks-CM9HWxYc.js +296 -0
  88. package/dist/hooks-CTKCi-OE.cjs +1 -0
  89. package/dist/index.cjs +7 -7
  90. package/dist/index.js +8599 -8514
  91. package/dist/input.cjs +1 -1
  92. package/dist/input.js +1 -1
  93. package/dist/list.cjs +1 -1
  94. package/dist/list.js +1 -1
  95. package/dist/menu.cjs +1 -1
  96. package/dist/menu.js +1 -1
  97. package/dist/pluto.css +1 -1
  98. package/dist/provider-BDFfcHVT.js +12851 -0
  99. package/dist/provider-XPRFhwnl.cjs +58 -0
  100. package/dist/src/aether/aether/aether.d.ts +17 -18
  101. package/dist/src/aether/aether/aether.d.ts.map +1 -1
  102. package/dist/src/aether/aether/aether.spec.spec.d.ts +1 -5
  103. package/dist/src/aether/aether/aether.spec.spec.d.ts.map +1 -1
  104. package/dist/src/aether/main.d.ts.map +1 -1
  105. package/dist/src/aether/main.spec.d.ts +1 -5
  106. package/dist/src/aether/main.spec.d.ts.map +1 -1
  107. package/dist/src/aether/message.d.ts +11 -1
  108. package/dist/src/aether/message.d.ts.map +1 -1
  109. package/dist/src/alamos/aether/alamos.d.ts +19 -25
  110. package/dist/src/alamos/aether/alamos.d.ts.map +1 -1
  111. package/dist/src/button/Button.d.ts +2 -2
  112. package/dist/src/button/Button.d.ts.map +1 -1
  113. package/dist/src/button/color.d.ts +2 -2
  114. package/dist/src/button/color.d.ts.map +1 -1
  115. package/dist/src/channel/LinePlot.d.ts +4 -4
  116. package/dist/src/channel/LinePlot.d.ts.map +1 -1
  117. package/dist/src/color/BaseSwatch.d.ts +3 -3
  118. package/dist/src/color/BaseSwatch.d.ts.map +1 -1
  119. package/dist/src/color/GradientPicker.d.ts +1 -2
  120. package/dist/src/color/GradientPicker.d.ts.map +1 -1
  121. package/dist/src/color/Picker.d.ts +1 -1
  122. package/dist/src/color/Picker.d.ts.map +1 -1
  123. package/dist/src/color/Provider.d.ts +8 -100
  124. package/dist/src/color/Provider.d.ts.map +1 -1
  125. package/dist/src/color/external.d.ts +0 -4
  126. package/dist/src/color/external.d.ts.map +1 -1
  127. package/dist/src/css/color.d.ts +2 -2
  128. package/dist/src/css/color.d.ts.map +1 -1
  129. package/dist/src/divider/Divider.d.ts +2 -1
  130. package/dist/src/divider/Divider.d.ts.map +1 -1
  131. package/dist/src/ether.d.ts +0 -1
  132. package/dist/src/ether.d.ts.map +1 -1
  133. package/dist/src/form/Form.d.ts +1 -1
  134. package/dist/src/form/Form.d.ts.map +1 -1
  135. package/dist/src/haul/Haul.d.ts +7 -63
  136. package/dist/src/haul/Haul.d.ts.map +1 -1
  137. package/dist/src/hooks/useResize.d.ts.map +1 -1
  138. package/dist/src/index.d.ts +1 -0
  139. package/dist/src/index.d.ts.map +1 -1
  140. package/dist/src/input/Text.d.ts +4 -4
  141. package/dist/src/input/Text.d.ts.map +1 -1
  142. package/dist/src/mosaic/types.d.ts +6 -66
  143. package/dist/src/mosaic/types.d.ts.map +1 -1
  144. package/dist/src/pluto/Pluto.d.ts.map +1 -1
  145. package/dist/src/pluto/aether/pluto.d.ts.map +1 -1
  146. package/dist/src/select/Multiple.d.ts +2 -3
  147. package/dist/src/select/Multiple.d.ts.map +1 -1
  148. package/dist/src/state/state.d.ts +1 -2
  149. package/dist/src/state/state.d.ts.map +1 -1
  150. package/dist/src/status/Circle.d.ts.map +1 -1
  151. package/dist/src/status/aether/aggregator.d.ts +34 -96
  152. package/dist/src/status/aether/aggregator.d.ts.map +1 -1
  153. package/dist/src/status/aether/types.d.ts +23 -27
  154. package/dist/src/status/aether/types.d.ts.map +1 -1
  155. package/dist/src/synnax/Provider.d.ts +4 -0
  156. package/dist/src/synnax/Provider.d.ts.map +1 -1
  157. package/dist/src/synnax/aether/provider.d.ts +54 -388
  158. package/dist/src/synnax/aether/provider.d.ts.map +1 -1
  159. package/dist/src/table/aether/Table.d.ts +58 -418
  160. package/dist/src/table/aether/Table.d.ts.map +1 -1
  161. package/dist/src/table/cells/Cells.d.ts +38 -153
  162. package/dist/src/table/cells/Cells.d.ts.map +1 -1
  163. package/dist/src/table/cells/Forms.d.ts.map +1 -1
  164. package/dist/src/table/cells/registry.d.ts +6 -3
  165. package/dist/src/table/cells/registry.d.ts.map +1 -1
  166. package/dist/src/tabs/Selector.d.ts.map +1 -1
  167. package/dist/src/tabs/types.d.ts +5 -38
  168. package/dist/src/tabs/types.d.ts.map +1 -1
  169. package/dist/src/tag/Tag.d.ts +3 -4
  170. package/dist/src/tag/Tag.d.ts.map +1 -1
  171. package/dist/src/telem/aether/context.d.ts +8 -8
  172. package/dist/src/telem/aether/context.d.ts.map +1 -1
  173. package/dist/src/telem/aether/factory.d.ts +6 -2
  174. package/dist/src/telem/aether/factory.d.ts.map +1 -1
  175. package/dist/src/telem/aether/noop.d.ts.map +1 -1
  176. package/dist/src/telem/aether/pipeline.d.ts +25 -215
  177. package/dist/src/telem/aether/pipeline.d.ts.map +1 -1
  178. package/dist/src/telem/aether/provider.d.ts +7 -5
  179. package/dist/src/telem/aether/provider.d.ts.map +1 -1
  180. package/dist/src/telem/aether/remote.d.ts +62 -183
  181. package/dist/src/telem/aether/remote.d.ts.map +1 -1
  182. package/dist/src/telem/aether/static.d.ts +21 -74
  183. package/dist/src/telem/aether/static.d.ts.map +1 -1
  184. package/dist/src/telem/aether/telem.d.ts +60 -284
  185. package/dist/src/telem/aether/telem.d.ts.map +1 -1
  186. package/dist/src/telem/aether/transformers.d.ts +79 -321
  187. package/dist/src/telem/aether/transformers.d.ts.map +1 -1
  188. package/dist/src/telem/client/cache/cache.d.ts +1 -1
  189. package/dist/src/telem/client/cache/cache.d.ts.map +1 -1
  190. package/dist/src/telem/client/cache/dynamic.d.ts +5 -5
  191. package/dist/src/telem/client/cache/dynamic.d.ts.map +1 -1
  192. package/dist/src/telem/client/cache/static.d.ts +3 -3
  193. package/dist/src/telem/client/cache/static.d.ts.map +1 -1
  194. package/dist/src/telem/client/cache/unary.d.ts +3 -3
  195. package/dist/src/telem/client/cache/unary.d.ts.map +1 -1
  196. package/dist/src/telem/client/client.d.ts +8 -12
  197. package/dist/src/telem/client/client.d.ts.map +1 -1
  198. package/dist/src/telem/client/external.d.ts +0 -1
  199. package/dist/src/telem/client/external.d.ts.map +1 -1
  200. package/dist/src/telem/client/reader.d.ts +28 -10
  201. package/dist/src/telem/client/reader.d.ts.map +1 -1
  202. package/dist/src/telem/client/reader.spec.d.ts +6 -1
  203. package/dist/src/telem/client/reader.spec.d.ts.map +1 -1
  204. package/dist/src/telem/client/streamer.d.ts +6 -6
  205. package/dist/src/telem/client/streamer.d.ts.map +1 -1
  206. package/dist/src/telem/client/streamer.spec.d.ts +2 -0
  207. package/dist/src/telem/client/streamer.spec.d.ts.map +1 -0
  208. package/dist/src/telem/control/Indicator.d.ts.map +1 -1
  209. package/dist/src/telem/control/aether/chip.d.ts +44 -232
  210. package/dist/src/telem/control/aether/chip.d.ts.map +1 -1
  211. package/dist/src/telem/control/aether/controller.d.ts +36 -73
  212. package/dist/src/telem/control/aether/controller.d.ts.map +1 -1
  213. package/dist/src/telem/control/aether/indicator.d.ts +49 -257
  214. package/dist/src/telem/control/aether/indicator.d.ts.map +1 -1
  215. package/dist/src/telem/control/aether/legend.d.ts +18 -132
  216. package/dist/src/telem/control/aether/legend.d.ts.map +1 -1
  217. package/dist/src/telem/control/aether/state.d.ts +10 -44
  218. package/dist/src/telem/control/aether/state.d.ts.map +1 -1
  219. package/dist/src/text/Text.d.ts +5 -4
  220. package/dist/src/text/Text.d.ts.map +1 -1
  221. package/dist/src/text/core/types.d.ts +17 -14
  222. package/dist/src/text/core/types.d.ts.map +1 -1
  223. package/dist/src/text/dimensions.d.ts +1 -0
  224. package/dist/src/text/dimensions.d.ts.map +1 -1
  225. package/dist/src/theming/aether/provider.d.ts +755 -5891
  226. package/dist/src/theming/aether/provider.d.ts.map +1 -1
  227. package/dist/src/theming/core/theme.d.ts +314 -1848
  228. package/dist/src/theming/core/theme.d.ts.map +1 -1
  229. package/dist/src/theming/css.d.ts.map +1 -1
  230. package/dist/src/tree/Tree.d.ts +1 -1
  231. package/dist/src/tree/Tree.d.ts.map +1 -1
  232. package/dist/src/tree/core.d.ts.map +1 -1
  233. package/dist/src/triggers/Provider.d.ts.map +1 -1
  234. package/dist/src/triggers/triggers.d.ts +248 -9
  235. package/dist/src/triggers/triggers.d.ts.map +1 -1
  236. package/dist/src/util/component.d.ts +7 -1
  237. package/dist/src/util/component.d.ts.map +1 -1
  238. package/dist/src/viewport/use.d.ts +8 -1
  239. package/dist/src/viewport/use.d.ts.map +1 -1
  240. package/dist/src/vis/axis/axis.d.ts +17 -48
  241. package/dist/src/vis/axis/axis.d.ts.map +1 -1
  242. package/dist/src/vis/axis/canvas.d.ts +17 -20
  243. package/dist/src/vis/axis/canvas.d.ts.map +1 -1
  244. package/dist/src/vis/axis/preciseTimeScale.d.ts +1 -2
  245. package/dist/src/vis/axis/preciseTimeScale.d.ts.map +1 -1
  246. package/dist/src/vis/axis/ticks.d.ts +11 -11
  247. package/dist/src/vis/axis/ticks.d.ts.map +1 -1
  248. package/dist/src/vis/button/aether/button.d.ts +10 -80
  249. package/dist/src/vis/button/aether/button.d.ts.map +1 -1
  250. package/dist/src/vis/canvas/Canvas.d.ts +2 -2
  251. package/dist/src/vis/canvas/Canvas.d.ts.map +1 -1
  252. package/dist/src/vis/canvas/aether/canvas.d.ts +45 -193
  253. package/dist/src/vis/canvas/aether/canvas.d.ts.map +1 -1
  254. package/dist/src/vis/diagram/Diagram.d.ts.map +1 -1
  255. package/dist/src/vis/diagram/aether/Diagram.d.ts +62 -469
  256. package/dist/src/vis/diagram/aether/Diagram.d.ts.map +1 -1
  257. package/dist/src/vis/diagram/aether/types.d.ts +29 -249
  258. package/dist/src/vis/diagram/aether/types.d.ts.map +1 -1
  259. package/dist/src/vis/diagram/edge/Edge.d.ts +2 -3
  260. package/dist/src/vis/diagram/edge/Edge.d.ts.map +1 -1
  261. package/dist/src/vis/diagram/edge/connector/connector.d.ts +5 -8
  262. package/dist/src/vis/diagram/edge/connector/connector.d.ts.map +1 -1
  263. package/dist/src/vis/diagram/edge/paths.d.ts +3 -4
  264. package/dist/src/vis/diagram/edge/paths.d.ts.map +1 -1
  265. package/dist/src/vis/draw2d/canvas.d.ts +21 -3
  266. package/dist/src/vis/draw2d/canvas.d.ts.map +1 -1
  267. package/dist/src/vis/draw2d/index.d.ts +3 -4
  268. package/dist/src/vis/draw2d/index.d.ts.map +1 -1
  269. package/dist/src/vis/eraser/aether/eraser.d.ts +30 -170
  270. package/dist/src/vis/eraser/aether/eraser.d.ts.map +1 -1
  271. package/dist/src/vis/grid/grid.d.ts +14 -24
  272. package/dist/src/vis/grid/grid.d.ts.map +1 -1
  273. package/dist/src/vis/legend/Container.d.ts +42 -86
  274. package/dist/src/vis/legend/Container.d.ts.map +1 -1
  275. package/dist/src/vis/legend/Simple.d.ts +3 -4
  276. package/dist/src/vis/legend/Simple.d.ts.map +1 -1
  277. package/dist/src/vis/light/aether/light.d.ts +10 -80
  278. package/dist/src/vis/light/aether/light.d.ts.map +1 -1
  279. package/dist/src/vis/line/aether/line.d.ts +18 -101
  280. package/dist/src/vis/line/aether/line.d.ts.map +1 -1
  281. package/dist/src/vis/lineplot/Axis.d.ts.map +1 -1
  282. package/dist/src/vis/lineplot/LinePlot.d.ts +2 -3
  283. package/dist/src/vis/lineplot/LinePlot.d.ts.map +1 -1
  284. package/dist/src/vis/lineplot/aether/BoundQuerier.d.ts +35 -0
  285. package/dist/src/vis/lineplot/aether/BoundQuerier.d.ts.map +1 -0
  286. package/dist/src/vis/lineplot/aether/LinePlot.d.ts +82 -489
  287. package/dist/src/vis/lineplot/aether/LinePlot.d.ts.map +1 -1
  288. package/dist/src/vis/lineplot/aether/XAxis.d.ts +51 -191
  289. package/dist/src/vis/lineplot/aether/XAxis.d.ts.map +1 -1
  290. package/dist/src/vis/lineplot/aether/YAxis.d.ts +49 -194
  291. package/dist/src/vis/lineplot/aether/YAxis.d.ts.map +1 -1
  292. package/dist/src/vis/lineplot/aether/axis.d.ts +27 -98
  293. package/dist/src/vis/lineplot/aether/axis.d.ts.map +1 -1
  294. package/dist/src/vis/lineplot/aether/external.d.ts +1 -0
  295. package/dist/src/vis/lineplot/aether/external.d.ts.map +1 -1
  296. package/dist/src/vis/lineplot/external.d.ts +1 -0
  297. package/dist/src/vis/lineplot/external.d.ts.map +1 -1
  298. package/dist/src/vis/lineplot/range/Provider.d.ts.map +1 -1
  299. package/dist/src/vis/lineplot/range/aether/annotation.d.ts +15 -52
  300. package/dist/src/vis/lineplot/range/aether/annotation.d.ts.map +1 -1
  301. package/dist/src/vis/lineplot/range/aether/provider.d.ts +43 -294
  302. package/dist/src/vis/lineplot/range/aether/provider.d.ts.map +1 -1
  303. package/dist/src/vis/lineplot/tooltip/aether/tooltip.d.ts +17 -154
  304. package/dist/src/vis/lineplot/tooltip/aether/tooltip.d.ts.map +1 -1
  305. package/dist/src/vis/lineplot/useBoundQuerier.d.ts +11 -0
  306. package/dist/src/vis/lineplot/useBoundQuerier.d.ts.map +1 -0
  307. package/dist/src/vis/log/aether/Log.d.ts +82 -461
  308. package/dist/src/vis/log/aether/Log.d.ts.map +1 -1
  309. package/dist/src/vis/measure/aether/measure.d.ts +24 -249
  310. package/dist/src/vis/measure/aether/measure.d.ts.map +1 -1
  311. package/dist/src/vis/performance/Performance.d.ts +2 -0
  312. package/dist/src/vis/performance/Performance.d.ts.map +1 -0
  313. package/dist/src/vis/performance/aether/index.d.ts +2 -0
  314. package/dist/src/vis/performance/aether/index.d.ts.map +1 -0
  315. package/dist/src/vis/performance/aether/performance.d.ts +15 -0
  316. package/dist/src/vis/performance/aether/performance.d.ts.map +1 -0
  317. package/dist/src/vis/performance/index.d.ts +2 -0
  318. package/dist/src/vis/performance/index.d.ts.map +1 -0
  319. package/dist/src/vis/render/GLProgram.d.ts +1 -2
  320. package/dist/src/vis/render/GLProgram.d.ts.map +1 -1
  321. package/dist/src/vis/render/context.d.ts +1 -0
  322. package/dist/src/vis/render/context.d.ts.map +1 -1
  323. package/dist/src/vis/render/controller.d.ts +7 -12
  324. package/dist/src/vis/render/controller.d.ts.map +1 -1
  325. package/dist/src/vis/render/loop.d.ts +15 -5
  326. package/dist/src/vis/render/loop.d.ts.map +1 -1
  327. package/dist/src/vis/rule/Rule.d.ts +1 -1
  328. package/dist/src/vis/rule/Rule.d.ts.map +1 -1
  329. package/dist/src/vis/rule/aether/aether.d.ts +8 -57
  330. package/dist/src/vis/rule/aether/aether.d.ts.map +1 -1
  331. package/dist/src/vis/schematic/Forms.d.ts.map +1 -1
  332. package/dist/src/vis/schematic/Symbols.d.ts +3 -4
  333. package/dist/src/vis/schematic/Symbols.d.ts.map +1 -1
  334. package/dist/src/vis/schematic/primitives/Primitives.d.ts +34 -35
  335. package/dist/src/vis/schematic/primitives/Primitives.d.ts.map +1 -1
  336. package/dist/src/vis/schematic/registry.d.ts +96 -1
  337. package/dist/src/vis/schematic/registry.d.ts.map +1 -1
  338. package/dist/src/vis/setpoint/aether/setpoint.d.ts +16 -155
  339. package/dist/src/vis/setpoint/aether/setpoint.d.ts.map +1 -1
  340. package/dist/src/vis/text/atlas.d.ts +32 -0
  341. package/dist/src/vis/text/atlas.d.ts.map +1 -0
  342. package/dist/src/vis/text/index.d.ts +2 -0
  343. package/dist/src/vis/text/index.d.ts.map +1 -0
  344. package/dist/src/vis/toggle/aether/toggle.d.ts +16 -150
  345. package/dist/src/vis/toggle/aether/toggle.d.ts.map +1 -1
  346. package/dist/src/vis/value/aether/value.d.ts +144 -569
  347. package/dist/src/vis/value/aether/value.d.ts.map +1 -1
  348. package/dist/src/vis/value/use.d.ts +55 -199
  349. package/dist/src/vis/value/use.d.ts.map +1 -1
  350. package/dist/{state-Bd_8X2jl.cjs → state-_FFrG5nH.cjs} +1 -1
  351. package/dist/tabs.cjs +1 -1
  352. package/dist/tabs.js +1 -1
  353. package/dist/text.cjs +1 -1
  354. package/dist/text.js +2 -2
  355. package/dist/theming.cjs +1 -1
  356. package/dist/theming.js +2 -2
  357. package/dist/{toArray-Dvn9FA_3.js → toArray-B7nD2CTw.js} +1 -1
  358. package/dist/{toArray-DRKOku1s.cjs → toArray-BvVYuN_b.cjs} +1 -1
  359. package/dist/tree.cjs +1 -1
  360. package/dist/tree.js +1 -1
  361. package/dist/triggers.cjs +1 -1
  362. package/dist/triggers.js +1 -1
  363. package/dist/units-CKKNRQlP.cjs +1 -0
  364. package/dist/units-a8CggrTe.js +11 -0
  365. package/dist/{useClickOutside-BYjsXGgb.js → useClickOutside-CKMnqdvH.js} +29 -30
  366. package/dist/useClickOutside-CPAEkvf8.cjs +1 -0
  367. package/dist/{useDebouncedCallback-Dg4BDGP-.js → useDebouncedCallback-Cyd6pZ59.js} +1 -1
  368. package/dist/useDebouncedCallback-DsKlBI86.cjs +1 -0
  369. package/dist/{useMemoCompare-BEDaTIXL.js → useMemoCompare-B930TM0g.js} +2 -2
  370. package/dist/useMemoCompare-DprA41gC.cjs +1 -0
  371. package/dist/{useVirtualCursorDragWebKit-BixysrXI.js → useVirtualCursorDragWebKit-BrSOJpYY.js} +22 -23
  372. package/dist/useVirtualCursorDragWebKit-Cvp93Pya.cjs +1 -0
  373. package/dist/value-B7u8K1CW.cjs +57 -0
  374. package/dist/value-BdZLWVof.js +5974 -0
  375. package/dist/video.cjs +1 -1
  376. package/dist/video.js +1 -1
  377. package/package.json +9 -8
  378. package/dist/ContextMenu-DCxj35_j.cjs +0 -1
  379. package/dist/DateTime-D6J8sRSH.cjs +0 -1
  380. package/dist/Dropdown-C7Im-qW-.cjs +0 -1
  381. package/dist/Haul-hv7TLQ7N.cjs +0 -1
  382. package/dist/Item-piF6rFAm.cjs +0 -1
  383. package/dist/Provider-DNTq46b0.cjs +0 -1
  384. package/dist/Text-BTEov6di.cjs +0 -1
  385. package/dist/Text-DNspRcte.js +0 -36
  386. package/dist/Text-DylGoRKw.cjs +0 -4
  387. package/dist/Text-X_BHez8W.cjs +0 -1
  388. package/dist/Toggle-BKKBcuTj.cjs +0 -1
  389. package/dist/WithIcon-CC-RSx6r.js +0 -93
  390. package/dist/WithIcon-Dn8eAoMj.cjs +0 -1
  391. package/dist/aggregator-74jWxDne.cjs +0 -1
  392. package/dist/aggregator-DMvP8cai.js +0 -83
  393. package/dist/css-Cj2UCGXB.cjs +0 -1
  394. package/dist/css-Dyt-QnKy.js +0 -1199
  395. package/dist/deep-Cvb4bVYY.js +0 -105
  396. package/dist/deep-ICSlPm58.cjs +0 -1
  397. package/dist/dimensions-Cc0z-IDd.js +0 -18
  398. package/dist/dimensions-Djqdrqi0.cjs +0 -1
  399. package/dist/eraser-9-LOWZvk.cjs +0 -11
  400. package/dist/eraser-BjtEI-1I.js +0 -823
  401. package/dist/external-B-UNCzPY.cjs +0 -1
  402. package/dist/external-B18FBGpk.cjs +0 -1
  403. package/dist/external-BG1mV1W8.cjs +0 -1
  404. package/dist/external-BWeX0nyq.js +0 -399
  405. package/dist/external-BbmpRAH3.cjs +0 -1
  406. package/dist/external-D2vS6j9c.cjs +0 -46
  407. package/dist/external-DHmQqAfL.js +0 -435
  408. package/dist/external-DRGfSFQT.cjs +0 -1
  409. package/dist/external-DX4m-5qT.cjs +0 -1
  410. package/dist/external-DlywBW-S.cjs +0 -1
  411. package/dist/hooks-BQJQyGWV.js +0 -293
  412. package/dist/hooks-ClXSlga9.cjs +0 -1
  413. package/dist/index-CSKP1UPN.js +0 -2343
  414. package/dist/index-Ch3utIMa.cjs +0 -15
  415. package/dist/provider-CH0eoGfz.js +0 -10358
  416. package/dist/provider-D054LCpB.cjs +0 -53
  417. package/dist/src/color/core/color.d.ts +0 -143
  418. package/dist/src/color/core/color.d.ts.map +0 -1
  419. package/dist/src/color/core/color.spec.d.ts +0 -2
  420. package/dist/src/color/core/color.spec.d.ts.map +0 -1
  421. package/dist/src/color/core/external.d.ts +0 -5
  422. package/dist/src/color/core/external.d.ts.map +0 -1
  423. package/dist/src/color/core/gradient.d.ts +0 -58
  424. package/dist/src/color/core/gradient.d.ts.map +0 -1
  425. package/dist/src/color/core/index.d.ts +0 -2
  426. package/dist/src/color/core/index.d.ts.map +0 -1
  427. package/dist/src/color/core/palette.d.ts +0 -74
  428. package/dist/src/color/core/palette.d.ts.map +0 -1
  429. package/dist/src/color/core/transformColorsToHex.d.ts +0 -6
  430. package/dist/src/color/core/transformColorsToHex.d.ts.map +0 -1
  431. package/dist/src/telem/client/types.d.ts +0 -20
  432. package/dist/src/telem/client/types.d.ts.map +0 -1
  433. package/dist/transformColorsToHex-DE7uEs1w.cjs +0 -1
  434. package/dist/transformColorsToHex-UBrryWh5.js +0 -14
  435. package/dist/units-DjoHPrqM.cjs +0 -1
  436. package/dist/units-MBd0L3ff.js +0 -8
  437. package/dist/useClickOutside-4k9PAT_i.cjs +0 -1
  438. package/dist/useDebouncedCallback-BBsAgC9k.cjs +0 -1
  439. package/dist/useMemoCompare-DORTZbzY.cjs +0 -1
  440. package/dist/useVirtualCursorDragWebKit-BSafZVD_.cjs +0 -1
  441. package/dist/value-CudL8z5e.js +0 -5957
  442. package/dist/value-DT0qJqgQ.cjs +0 -57
@@ -1,57 +0,0 @@
1
- "use strict";var Pi=Object.defineProperty;var ki=(e,n,t)=>n in e?Pi(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var h=(e,n,t)=>ki(e,typeof n!="symbol"?n+"":n,t);const g=require("./index-Ch3utIMa.cjs"),p=require("zod"),w=require("./provider-D054LCpB.cjs"),V=require("./aggregator-74jWxDne.cjs"),l=require("./css-Cj2UCGXB.cjs"),ee=require("./fontString-BBvH9Ypy.cjs"),ft=require("./dimensions-Djqdrqi0.cjs"),B=require("./eraser-9-LOWZvk.cjs"),ks=require("./debounce-heEWeOqL.cjs"),Rs=require("./state-Bd_8X2jl.cjs"),sr=require("./deep-ICSlPm58.cjs"),$s=require("./toArray-DRKOku1s.cjs");var Ri=Object.defineProperty,$i=(e,n,t)=>n in e?Ri(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,He=(e,n,t)=>$i(e,typeof n!="symbol"?n+"":n,t);class Mi{constructor(n,t){He(this,"handlers"),He(this,"transform"),He(this,"closer"),this.transform=n,this.handlers=t??new Map}onChange(n){return this.handlers.set(n,null),()=>this.handlers.delete(n)}notify(n){let t=n;if(this.transform!=null){const[r,s]=this.transform(n);if(!s)return;t=r}this.handlers.forEach((r,s)=>s(t))}setCloser(n){this.closer=n}async close(){var n;return await((n=this.closer)==null?void 0:n.call(this))}}class Yi{constructor(n){He(this,"handlers"),this.handlers=n??new Map}onChange(n){return this.handlers.set(n,null),()=>this.handlers.delete(n)}notify(n){this.handlers.forEach((t,r)=>r(n))}}const ar=Object.freeze(Object.defineProperty({__proto__:null,BaseObserver:Yi,Observer:Mi},Symbol.toStringTag,{value:"Module"})),tt="layout",Hn="data",st="tool";var K;let I=(K=class{constructor(n){h(this,"f");this.f=n}static control(n,t){n.set(K.CONTEXT_KEY,new K(t),!1)}static useRequest(n){return n.get(K.CONTEXT_KEY).f}static useOptionalRequest(n){var t;return((t=n.getOptional(K.CONTEXT_KEY))==null?void 0:t.f)??null}static requestRender(n,t){this.useRequest(n)(t)}},h(K,"CONTEXT_KEY","pluto-vis-renderer"),K);const Oi=p.z.object({props:w.Ip.nullable(),state:w.$p.connectivity.connectionStateZ.nullable()}),ir={synnax:null,state:w.$p.connectivity.DEFAULT};var lt;let We=(lt=class extends w.Composite{constructor(){super(...arguments);h(this,"schema",lt.stateZ)}async afterUpdate(t){var r;if(t.setPreviously(or)||An(t,ir),this.state.props==null){this.internal.synnax!=null&&(this.setState(s=>({...s,state:w.$p.connectivity.DEFAULT})),(r=this.internal.synnax)==null||r.close(),this.internal.synnax=null),An(t,this.internal);return}this.prevState.props!=null&&sr.I.equal(this.state.props,this.prevState.props)&&this.internal.synnax!=null||(this.internal.synnax=new w.$p(this.state.props),this.internal.synnax.connectivity.onChange(s=>this.setState(a=>({...a,state:s}))),An(t,this.internal))}},h(lt,"TYPE","synnax.Provider"),h(lt,"stateZ",Oi),lt);const or="pluto-client-context",An=(e,n)=>e.set(or,n),Le=e=>e.get(or).synnax,Ms={[We.TYPE]:We},zi=Object.freeze(Object.defineProperty({__proto__:null,Provider:We,REGISTRY:Ms,ZERO_CONTEXT_VALUE:ir,use:Le},Symbol.toStringTag,{value:"Module"}));class ct extends ar.Observer{async cleanup(){}}class Ve extends ct{async set(){return await Promise.resolve()}}h(Ve,"TYPE","noop-boolean-sink");const kn={type:Ve.TYPE,props:{},variant:"sink",valueType:"boolean"};class Xe extends ct{async set(){return await Promise.resolve()}}h(Xe,"TYPE","noop-numeric-sink");const Ys={type:Xe.TYPE,props:{},variant:"sink",valueType:"number"};class Ke extends ct{async value(){return await Promise.resolve(!1)}}h(Ke,"TYPE","noop-boolean-source");const lr={type:Ke.TYPE,props:{},variant:"source",valueType:"boolean"};class Qe extends ct{async value(){return 0}}h(Qe,"TYPE","noop-numeric-source");const Os={type:Qe.TYPE,props:{},variant:"source",valueType:"number"};class tn extends ct{async value(){return""}}h(tn,"TYPE","noop-string-source");const zs={type:tn.TYPE,props:{},variant:"source",valueType:"string"};class en extends ct{async value(){return{key:"noop",variant:"disabled",message:"unknown",time:g.m.now()}}}h(en,"TYPE","noop-status-source");const cr={type:en.TYPE,props:{},variant:"source",valueType:"status"};class nn extends ct{async value(){return l.ZERO}}h(nn,"TYPE","noop-color-source");const Rn={type:nn.TYPE,props:{},variant:"source",valueType:"color"};class rn extends ct{async value(){return[l.G.ZERO,[]]}}h(rn,"TYPE","noop-series");const Ls={type:rn.TYPE,props:{},variant:"source",valueType:"series"},Li={[Ve.TYPE]:Ve,[Xe.TYPE]:Xe,[Ke.TYPE]:Ke,[Qe.TYPE]:Qe,[en.TYPE]:en,[nn.TYPE]:nn,[tn.TYPE]:tn,[rn.TYPE]:rn};class Ds{constructor(){h(this,"type","noop")}create(n){const t=Li[n.type];return t==null?null:new t}}const Di=p.z.instanceof(ArrayBuffer),De=p.z.object({type:p.z.string(),variant:p.z.enum(["source","sink","source-transformer","sink-transformer"]),valueType:p.z.string(),props:p.z.any(),transfer:p.z.array(Di).optional()}),ut=De.extend({variant:p.z.literal("source")}),$n=De.extend({variant:p.z.literal("sink")}),As=De.extend({variant:p.z.literal("source-transformer")}),Zs=De.extend({variant:p.z.literal("sink-transformer")}),sn=ut.extend({valueType:p.z.literal("series")}),ur=ut.extend({valueType:p.z.literal("boolean")}),Mn=$n.extend({valueType:p.z.literal("boolean")}),Ai=Zs.extend({valueType:p.z.literal("boolean")}),Zi=As.extend({valueType:p.z.literal("boolean")}),Is=ut.extend({valueType:p.z.literal("number")}),Ns=$n.extend({valueType:p.z.literal("number")}),hr=ut.extend({valueType:p.z.literal("color")}),dr=ut.extend({valueType:p.z.literal("status")}),fr=ut.extend({valueType:p.z.literal("string")});class Yn extends ar.BaseObserver{constructor(t){super();h(this,"props_");h(this,"uProps_");h(this,"schema");this.uProps_=t}get props(){if(this.props_==null){const t=this._schema.safeParse(this.uProps_);if(t.success)this.props_=t.data;else throw new w.L(`[BaseTelem] - expected props to be valid, but found the following errors:
2
- ${t.error.message}`)}return this.props_}get _schema(){if(this.schema==null)throw new w.L(`[BaseTelem] - expected subclass to define props schema, but none was found.
3
- Make sure to define a property 'schema' on the class.`);return this.schema}async cleanup(){}}class G extends Yn{}class On extends Yn{}class wt extends G{constructor(){super(...arguments);h(this,"sources",{})}get source(){const[t]=Object.values(this.sources);if(t==null)throw new w.L("[UnarySourceTransformer] - expected source to exist, but none was found.");return t}async value(){return this.transform(await this.source.value())}onChange(t){return this.source.onChange(()=>{this.source.value().then(r=>{this.shouldNotify(r)&&t()}).catch(console.error)})}setSources(t){this.sources=t}shouldNotify(t){return!0}transform(t){throw new w.L(`[UnarySourceTransformer] - expected subclass to define transform method, but none was found.
4
- Make sure to define a method 'transform' on the class.`)}}class Us extends G{constructor(){super(...arguments);h(this,"sources",{})}async value(){const t=Object.fromEntries(await Promise.all(Object.entries(this.sources).map(async([r,s])=>[r,await s.value()])));return this.transform(t)}setSources(t){this.sources={...this.sources,...t}}transform(t){throw new w.L(`[MultiSourceTransformer] - expected subclass to define transform method, but none was found.
5
- Make sure to define a method 'transform' on the class.`)}}class _s extends Yn{constructor(){super(...arguments);h(this,"sinks",{})}get sink(){const[t]=Object.values(this.sinks);if(t==null)throw new w.L("[UnarySinkTransformer] - expected sink to exist, but none was found.");return t}async set(t){return await this.sink.set(this.transform(t))}setSinks(t){this.sinks={...this.sinks,...t}}transform(t){throw new w.L(`[UnarySinkTransformer] - expected subclass to define transform method, but none was found.
6
- Make sure to define a method 'transform' on the class.`)}}const pr=p.z.object({from:p.z.string(),to:p.z.string()}),gr=p.z.object({connections:p.z.array(pr),outlet:p.z.string(),segments:p.z.record(ut)});class mr{constructor(n){h(this,"type","pipeline");h(this,"factory");this.factory=n}create(n){switch(n.type){case de.TYPE:return new de(n.props,this.factory);case fe.TYPE:return new fe(n.props,this.factory);default:return null}}}class de extends G{constructor(t,r){super(t);h(this,"schema",gr);h(this,"sources",{});const{connections:s,segments:a}=this.props;Object.entries(a).forEach(([i,o])=>{const c=r.create(o);c!=null&&(this.sources[i]=c)}),s.forEach(({from:i,to:o})=>{const c=this.sources[i],u=this.sources[o];c==null||u==null||"setSources"in u&&u.setSources({[i]:c})})}get outlet(){const{outlet:t}=this.props,r=this.sources[t];if(r==null)throw new w.L(`[SourcePipeline] - expected source to exist at outlet '${t}', but none was found.`);return r}async value(){return await this.outlet.value()}onChange(t){return this.outlet.onChange(t)}async cleanup(){await Promise.all(Object.values(this.sources).map(async t=>{var r;return await((r=t.cleanup)==null?void 0:r.call(t))}))}}h(de,"TYPE","source-pipeline");const Bs=(e,n)=>({variant:"source",props:n,type:de.TYPE,valueType:e}),yr=p.z.object({connections:p.z.array(pr),inlet:p.z.string(),segments:p.z.record($n)});class fe extends On{constructor(t,r){super(t);h(this,"schema",yr);h(this,"sinks",{});const{connections:s,segments:a}=this.props;Object.entries(a).forEach(([i,o])=>{const c=r.create(o);c!=null&&(this.sinks[i]=c)}),s.forEach(({from:i,to:o})=>{const c=this.sinks[i],u=this.sinks[o];c==null||u==null||"setSinks"in c&&c.setSinks({[o]:u})})}get inlet(){const{inlet:t}=this.props,r=this.sinks[t];if(r==null)throw new w.L(`[SinkPipeline] - expected source to exist at inlet '${t}', but none was found.`);return r}async set(t){return await this.inlet.set(t)}async cleanup(){await Promise.all(Object.values(this.sinks).map(async t=>{var r;return await((r=t.cleanup)==null?void 0:r.call(t))}))}}h(fe,"TYPE","sink-pipeline");const Fs=(e,n)=>({variant:"sink",props:n,type:fe.TYPE,valueType:e}),wr=p.z.object({channel:p.z.number().or(p.z.string())});class pe extends G{constructor(t,r){super(r);h(this,"client");h(this,"removeStreamHandler",null);h(this,"channelKey",0);h(this,"schema",wr);h(this,"leadingBuffer",null);h(this,"valid",!1);this.client=t}get testingOnlyLeadingBuffer(){return this.leadingBuffer}get testingOnlyValid(){return this.valid}async cleanup(){var t,r;await((t=this.removeStreamHandler)==null?void 0:t.call(this)),this.valid=!1,(r=this.leadingBuffer)==null||r.release(),this.leadingBuffer=null,this.removeStreamHandler=null}async value(){if(g.w$1(this.props.channel))return 0;if(this.channelKey===0){const t=await br(this.client,this.props.channel,!1);if(t==null)return 0;this.channelKey=t.key}return this.valid||await this.read(),this.leadingBuffer==null||this.leadingBuffer.length===0?0:this.leadingBuffer.at(-1,!0)}async read(){this.valid=!0,await this.updateStreamHandler()}async updateStreamHandler(){var r;await((r=this.removeStreamHandler)==null?void 0:r.call(this));const t=s=>{var o;const i=s[this.channelKey].data;if(i.length!==0){const c=i[i.length-1];c.acquire(),(o=this.leadingBuffer)==null||o.release(),this.leadingBuffer=c}this.notify()};this.removeStreamHandler=await this.client.stream(t,[this.channelKey])}}h(pe,"TYPE","stream-channel-value");const br=async(e,n,t)=>{let r=await e.retrieveChannel(n);if(r==null)return null;if(!t||r.isIndex)return{key:r.key,dataType:r.dataType,virtual:r.virtual};if(w.nm.isCalculated(r)){const s=await w.nm.resolveCalculatedIndex(e.retrieveChannel.bind(e),r);if(s==null)throw new w.L("Cannot resolve calculated index");return r=await e.retrieveChannel(s),r==null?null:{key:r.key,dataType:g.g$1.TIMESTAMP,virtual:!1}}if(r.virtual)throw new w.L("Cannot plot data from virtual channels");return{key:r.index,dataType:g.g$1.TIMESTAMP,virtual:!1}},Ii=p.z.object({timeRange:g.U.z,channel:p.z.number().or(p.z.string()),useIndexOfChannel:p.z.boolean().optional().default(!1)});class ge extends G{constructor(t,r){super(r);h(this,"client");h(this,"data",[]);h(this,"valid",!1);h(this,"schema",Ii);this.client=t}async cleanup(){this.data.forEach(t=>t.release()),this.valid=!1}async value(){const{timeRange:t,channel:r,useIndexOfChannel:s}=this.props;if(t.isZero||r===0)return[l.G.ZERO,[]];const a=await br(this.client,r,s);if(a==null)return[l.G.ZERO,[]];this.valid||await this.readFixed(a.key);let i=l.G.max(this.data.map(o=>o.bounds));return a.dataType.equals(g.g$1.TIMESTAMP)&&(i={upper:Math.min(i.upper,Number(this.props.timeRange.end.valueOf())),lower:Math.max(i.lower,Number(this.props.timeRange.start.valueOf()))}),[i,this.data]}async readFixed(t){const s=(await this.client.read(this.props.timeRange,[t]))[t].data;s.forEach(a=>a.acquire()),this.data=s,this.valid=!0}}h(ge,"TYPE","series-source");const Ni=p.z.object({channel:p.z.number().or(p.z.string()),useIndexOfChannel:p.z.boolean().optional().default(!1),timeSpan:g.w.z,keepFor:g.w.z.optional()});class me extends G{constructor(t,r){super(r);h(this,"client");h(this,"data",[]);h(this,"stopStreaming");h(this,"valid",!1);h(this,"schema",Ni);this.client=t}async value(){const{channel:t,useIndexOfChannel:r,timeSpan:s}=this.props;if(t===0)return[l.G.ZERO,[]];const a=g.m.now(),i=await br(this.client,t,r);if(i==null)return[l.G.ZERO,[]];if(this.valid||await this.read(i),i.dataType.isVariable)return[l.G.ZERO,this.data];let o=l.G.max(this.data.filter(c=>c.timeRange.end.after(a.sub(s))).map(c=>c.bounds));return i.dataType.equals(g.g$1.TIMESTAMP)&&(o={upper:o.upper,lower:Math.max(o.lower,o.upper-Number(s.valueOf()))}),[o,this.data]}async read({key:t,virtual:r}){const s=g.m.now().spanRange(-this.props.timeSpan);if(!r){const i=(await this.client.read(s,[t]))[t].data;i.forEach(o=>o.acquire()),this.data.push(...i)}await this.updateStreamHandler(t),this.valid=!0}async updateStreamHandler(t){this.stopStreaming!=null&&await this.stopStreaming();const r=s=>{const a=s[t].data;a.forEach(i=>i.acquire()),this.data.push(...a),this.gcOutOfRangeData(),this.notify()};this.stopStreaming=await this.client.stream(r,[t])}gcOutOfRangeData(){const t=g.m.now().sub(this.props.keepFor??this.props.timeSpan),r=this.data.findIndex(s=>s.timeRange.end.before(t));r!==-1&&(this.data.splice(r,1).forEach(s=>s.release()),this.gcOutOfRangeData())}async cleanup(){var t;await((t=this.stopStreaming)==null?void 0:t.call(this)),this.stopStreaming=void 0,this.data.forEach(r=>r.release())}}h(me,"TYPE","dynamic-series-source");const Ui={[ge.TYPE]:ge,[me.TYPE]:me,[pe.TYPE]:pe};class qs{constructor(n){h(this,"type","remote");h(this,"client");this.client=n}create(n){const t=Ui[n.type];return t==null?null:new t(this.client,n.props)}}const Gs=e=>({type:ge.TYPE,props:e,variant:"source",valueType:"series"}),js=e=>({type:me.TYPE,props:e,variant:"source",valueType:"series"}),Hs=e=>({type:pe.TYPE,props:e,variant:"source",valueType:"number"});class Js{constructor(){h(this,"type","static")}create(n){switch(n.type){case an.TYPE:return new an(n.props);case ye.TYPE:return new ye(n.props);case we.TYPE:return new we(n.props);case be.TYPE:return new be(n.props);case ve.TYPE:return new ve(n.props);default:return null}}}const vr=p.z.object({data:p.z.array(g.Lt),offsets:p.z.array(p.z.number()).optional().default([])});class an extends G{constructor(t){super(t);h(this,"data");h(this,"schema",vr);this.data=this.props.data.map((r,s)=>new g.k({data:r,dataType:g.g$1.FLOAT32,timeRange:g.U.ZERO,sampleOffset:this.props.offsets[s]??0}))}async value(){return[l.G.max(this.data.map(r=>r.bounds)),this.data]}}h(an,"TYPE","static-series");const Ws=vr.extend({rate:g.$.z,yOffset:p.z.number().optional().default(0),scroll:p.z.number().optional().default(0),startPosition:p.z.number().optional().default(0),scrollBounds:p.z.boolean().optional().default(!1)});class ye extends G{constructor(t){super(t);h(this,"schema",Ws);h(this,"position");h(this,"interval");h(this,"data");this.position=this.props.startPosition,this.start(this.props.rate),this.data=this.props.data.map((r,s)=>new g.k({data:r,dataType:g.g$1.FLOAT32,timeRange:g.U.ZERO,sampleOffset:this.props.offsets[s]??0}))}async value(){const t=this.data.map(s=>s.slice(0,this.position));if(this.props.scrollBounds){const s=t[0].data[this.position-this.props.scroll<0?0:this.position-this.props.scroll],a=t[0].data[this.position-1];return[{lower:Number(s),upper:Number(a)},t]}return[l.G.max(t.map(s=>s.bounds)),t]}start(t){this.interval!=null&&clearInterval(this.interval),this.interval=setInterval(()=>{var r;(r=this.notify)==null||r.call(this),this.position++},t.period.milliseconds)}async cleanup(){clearInterval(this.interval),this.interval=void 0}}h(ye,"TYPE","iterative-series");const Vs=p.z.number();class we extends G{constructor(){super(...arguments);h(this,"schema",Vs)}async value(){return this.props}}h(we,"TYPE","static-numeric");const Xs=p.z.string();class be extends G{constructor(){super(...arguments);h(this,"schema",Xs)}async value(){return this.props}}h(be,"TYPE","static-string");const Ks=l.crudeZ;class ve extends G{constructor(){super(...arguments);h(this,"schema",Ks)}async value(){return new l.Color(this.props)}}h(ve,"TYPE","static-color");const _i=e=>({type:an.TYPE,props:e,variant:"source",valueType:"series"}),Bi=e=>({type:ye.TYPE,props:e,variant:"source",valueType:"series"}),Fi=e=>({type:we.TYPE,props:e,variant:"source",valueType:"number"}),qi=e=>({type:be.TYPE,props:e,variant:"source",valueType:"string"}),Gi=e=>({type:ve.TYPE,props:e,variant:"source",valueType:"color"});class Qs{constructor(){h(this,"type","transformer")}create(n){switch(n.type){case Yt.TYPE:return new Yt(n.props);case Ot.TYPE:return new Ot(n.props);case zt.TYPE:return new zt(n.props);case Lt.TYPE:return new Lt(n.props);case Dt.TYPE:return new Dt(n.props);case At.TYPE:return new At(n.props);case Zt.TYPE:return new Zt(n.props);case It.TYPE:return new It(n.props)}return null}}const ji=p.z.object({truthy:p.z.number().optional().default(1),falsy:p.z.number().optional().default(0)}),ta=e=>({props:e,type:Yt.TYPE,variant:"sink",valueType:"boolean"}),ne=class ne extends _s{constructor(){super(...arguments);h(this,"schema",ne.propsZ)}transform(t){return t?this.props.truthy:this.props.falsy}};h(ne,"TYPE","boolean-numeric-converter-sink"),h(ne,"propsZ",ji);let Yt=ne;const xr=p.z.object({trueBound:l.G.bounds}),ea=e=>({props:e,type:Ot.TYPE,variant:"source",valueType:"boolean"}),re=class re extends wt{constructor(){super(...arguments);h(this,"schema",re.propsZ);h(this,"curr",null)}shouldNotify(t){const r=l.G.contains(this.props.trueBound,t)!==this.curr;return this.curr=l.G.contains(this.props.trueBound,t),r}transform(t){return this.curr=l.G.contains(this.props.trueBound,t),this.curr}};h(re,"TYPE","boolean-source"),h(re,"propsZ",xr);let Ot=re;const na=p.z.object({}),se=class se extends Us{constructor(){super(...arguments);h(this,"schema",se.propsZ)}transform(t){return Object.values(t).reduce((r,s)=>r+s,0)/Object.keys(t).length}};h(se,"TYPE","mean"),h(se,"propsZ",na);let zt=se;const Hi=e=>({props:e,type:zt.TYPE,variant:"source",valueType:"boolean"}),ra=p.z.object({trueVariant:V.variantZ.optional().default("success")}),ae=class ae extends wt{constructor(){super(...arguments);h(this,"schema",ae.propsZ)}transform(t){return t.variant===this.props.trueVariant}};h(ae,"TYPE","boolean-status"),h(ae,"propsZ",ra);let Lt=ae;const Ji=e=>({props:e,type:Lt.TYPE,variant:"source",valueType:"boolean"}),Tr=p.z.object({precision:p.z.number().optional().default(2),prefix:p.z.string().optional().default(""),suffix:p.z.string().optional().default(""),notation:g.Te.notationZ.optional().default("standard")}),ie=class ie extends wt{constructor(){super(...arguments);h(this,"schema",ie.propsZ)}transform(t){const{precision:r,prefix:s,suffix:a,notation:i}=this.props;return`${s}${g.Te.stringifyNumber(t,r,i)}${a}`}};h(ie,"TYPE","stringify-number"),h(ie,"propsZ",Tr);let Dt=ie;const sa=e=>({props:e,type:Dt.TYPE,variant:"source",valueType:"string"}),Sr=p.z.object({windowSize:p.z.number().optional().default(5)});class At extends wt{constructor(){super(...arguments);h(this,"schema",Sr);h(this,"values",[])}transform(t){return this.props.windowSize<2?t:this.values.reduce((r,s)=>r+s,0)/this.values.length}shouldNotify(t){return this.props.windowSize<2?!0:(this.values.length>this.props.windowSize&&(this.values=[]),this.values.push(t),this.values.length===this.props.windowSize)}}h(At,"TYPE","rolling-average"),h(At,"propsZ",na);const aa=e=>({props:e,type:At.TYPE,variant:"source",valueType:"number"}),ia=p.z.object({gradient:l.gradientZ}),oe=class oe extends wt{constructor(){super(...arguments);h(this,"schema",oe.propsZ)}transform(t){return l.fromGradient(this.props.gradient,t)}};h(oe,"TYPE","color-gradient"),h(oe,"propsZ",ia);let Zt=oe;const oa=e=>({props:e,type:Zt.TYPE,variant:"source",valueType:"color"}),la=p.z.object({scale:l.b.transform}),le=class le extends wt{constructor(){super(...arguments);h(this,"schema",le.propsZ)}transform(t){const{offset:r,scale:s}=this.props.scale;return t*s+r}};h(le,"TYPE","scale-number"),h(le,"propsZ",la);let It=le;const ca=e=>({props:e,type:It.TYPE,variant:"source",valueType:"number"});class Cr{constructor(n){h(this,"factories");h(this,"type","compound");this.factories=n}add(n){this.factories=[...this.factories.filter(t=>t.type!==n.type),n]}create(n){for(const t of this.factories){const r=t.create(n);if(r!=null)return r}return null}}const ua=e=>{const n=[new Qs,new Js,new Ds],t=new Cr(n);return e!=null&&t.add(new qs(e)),t.add(new mr(t)),t};let ha=class da{constructor(n,t){h(this,"factory");h(this,"key");h(this,"parent");this.factory=n,this.key=g.Ct.create(),this.parent=t}child(n,t){const r=new Cr([...this.factory.factories,...$s.A(n)]);return r.add(new mr(r)),new da(r,t)}create(n){const t=this.factory.create(n);if(t==null)throw new w.Ze(`Telemetry service could not find a source for type ${n.type}`);return t}};const Er="pluto-telem-context",zn=e=>e.get(Er),fa=(e,n)=>e.set(Er,n),pa=(e,n,t)=>{var a;const r=zn(e);if(r!=null&&t!=null&&r.key===((a=t==null?void 0:t.parent)==null?void 0:a.key))return t;const s=r.child(n,r);return e.set(Er,s),s};class ga{constructor(n,t,r){h(this,"spec");h(this,"wrapped");h(this,"prevProv");this.wrapped=n,this.spec=r,this.prevProv=t}shouldUpdate(n,t){return this.prevProv.key!==n.key||!sr.I.equal(this.spec,t)}}class jr extends ga{async value(){return await this.wrapped.value()}async cleanup(){var n,t;await((t=(n=this.wrapped).cleanup)==null?void 0:t.call(n))}onChange(n){return this.wrapped.onChange(n)}}class Hr extends ga{async set(n){return await this.wrapped.set(n)}async cleanup(){var n,t;await((t=(n=this.wrapped).cleanup)==null?void 0:t.call(n))}}const H=async(e,n,t)=>{var s;const r=zn(e);if(t instanceof jr){if(!t.shouldUpdate(r,n))return t;await((s=t.cleanup)==null?void 0:s.call(t))}return new jr(r.create(n),r,n)},Ae=async(e,n,t)=>{var s;const r=zn(e);if(t instanceof Hr){if(!t.shouldUpdate(r,n))return t;await((s=t.cleanup)==null?void 0:s.call(t))}return new Hr(r.create(n),r,n)},ma=p.z.object({include:p.z.string().array().optional(),exclude:p.z.string().array().optional(),level:p.z.enum(w.g.LOG_LEVELS).optional().default("info")}),Jn="alamos-provider";var jn;let Wn=(jn=class extends w.Composite{constructor(){super(...arguments);h(this,"schema",ma)}async afterUpdate(t){if(t.getOptional(Jn)!=null)return;const s=[],{include:a,exclude:i,level:o}=this.state;(a!=null||i!=null)&&s.push(w.g.logLevelKeyFiler({include:a,exclude:i})),o!=null&&s.push(w.g.logThresholdFilter(o)),s.length===0&&s.push(()=>!1),this.internal.ins=new w.g.Instrumentation({key:"aether",logger:new w.g.Logger({filters:s})}),t.set(Jn,this.internal.ins)}},h(jn,"TYPE","alamos.Provider"),jn);const Ze=(e,n)=>{const t=e.get(Jn);if(t==null)throw new Error("No instrumentation provider");return n==null?t:t.child(n)},Wi={[Wn.TYPE]:Wn},ya=(e,n)=>e.dataType.isVariable||e.dataType.equals(g.g$1.UINT8)?e:(n==null&&e.dataType.equals(g.g$1.TIMESTAMP)&&(n=BigInt(e.data[0])),e.convert(g.g$1.FLOAT32,n)),Vi=e=>e.isVariable||e.equals(g.g$1.UINT8)?e:g.g$1.FLOAT32,wa=()=>({purgedSeries:0,purgedBytes:g.C.bytes(0)}),ba={instrumentation:w.g.NOOP,staleEntryThreshold:g.w.seconds(20)};class Xi{constructor(n){h(this,"data",[]);h(this,"props");this.props={...ba,...n}}write(n){n.length!==0&&(n.forEach(t=>this.writeOne(ya(t))),this.checkIntegrity(n))}dirtyRead(n){const t=this.data.filter(({data:i})=>i.timeRange.overlapsWith(n)).map(({data:i})=>i);if(t.length===0)return{series:[],gaps:[n]};const r=t.map((i,o)=>o===0?g.U.ZERO:new g.U(t[o-1].timeRange.end,i.timeRange.start)).filter(i=>!i.isZero&&i.isValid),s=new g.U(n.start,t[0].timeRange.start),a=new g.U(t[t.length-1].timeRange.end,n.end);return s.isValid&&!s.isZero&&r.unshift(s),a.isValid&&!a.isZero&&r.push(a),{series:t,gaps:r}}gc(){const{staleEntryThreshold:n}=this.props,t=wa(),r=this.data.filter(s=>{const a=s.data.refCount>0||g.m.since(s.addedAt).lessThan(n);return a||(t.purgedBytes=t.purgedBytes.add(s.data.byteCapacity)),a});return t.purgedSeries=this.data.length-r.length,this.data=r,t}close(){this.data=[]}writeOne(n){const{instrumentation:{L:t}}=this.props;if(n.length===0)return;const r=l.G.buildInsertionPlan(this.data.map(c=>c.data.alignmentBounds),n.alignmentBounds);if(r===null)return t.debug("Found no viable insertion plan",{inserting:n.digest,cacheContents:this.data.map(c=>c.data.digest)});const{removeBefore:s,removeAfter:a,insertInto:i,deleteInBetween:o}=r;n=n.slice(s,n.data.length-Number(a)),n.length!==0&&this.data.splice(i,o,{data:n,addedAt:g.m.now()})}checkIntegrity(n){const{instrumentation:{L:t}}=this.props,r=this.data.map(a=>a.data.alignmentBounds);if(r.some((a,i)=>r.some((o,c)=>i===c?!1:l.G.overlapsWith(a,o))))throw t.debug("Cache is in an invalid state - bounds overlap!",()=>({write:n.map(a=>a.digest),cacheContents:this.data.map(a=>a.data.digest)})),new Error("Invalid state")}}const Ki=100,Qi=1e6,to=1e4,eo=100,no=40;class ro{constructor(n){h(this,"props");h(this,"counter",0);h(this,"curr");h(this,"avgRate",0);h(this,"timeOfLastWrite");h(this,"totalWrites",0);h(this,"now",()=>g.m.now());this.props=n,this.curr=null,n.testingNow!=null&&(this.now=n.testingNow),this.timeOfLastWrite=this.now()}get length(){var n;return((n=this.curr)==null?void 0:n.length)??0}get leadingBuffer(){return this.curr}write(n){const t=n.flatMap(r=>this._write(r));return{flushed:t.flatMap(r=>r.flushed),allocated:t.flatMap(r=>r.allocated)}}allocate(n,t,r){this.counter++;const s=this.props.dataType.isVariable,a=this.props.dataType.equals(g.g$1.TIMESTAMP);return g.k.alloc({capacity:s?n*no:n,dataType:Vi(this.props.dataType),timeRange:r.range(g.m.MAX),sampleOffset:a?BigInt(r.valueOf()):0,glBufferUsage:"dynamic",alignment:t,key:`dynamic-${this.counter}`})}_write(n){const t=this.nextBufferSize(),r={flushed:[],allocated:[]};if(this.curr==null)this.curr=this.allocate(t,n.alignment,this.now()),r.allocated.push(this.curr);else if(Math.abs(Number(this.curr.alignment+BigInt(this.curr.length)-n.alignment))>1){const c=this.now();this.curr.timeRange.end=c,r.flushed.push(this.curr),this.curr=this.allocate(t,n.alignment,c),r.allocated.push(this.curr)}const s=ya(n,this.curr.sampleOffset),a=this.curr.write(s);if(a===n.length)return this.updateAvgRate(n),r;const i=this.now();this.curr.timeRange.end=i,r.flushed.push(this.curr),this.curr=this.allocate(t,n.alignment+BigInt(a),i),r.allocated.push(this.curr);const o=this._write(n.slice(a));return r.flushed.push(...o.flushed),r.allocated.push(...o.allocated),r}updateAvgRate(n){if(typeof this.props.dynamicBufferSize=="number")return;const t=n.length/this.now().span(this.timeOfLastWrite).seconds;this.totalWrites>0&&isFinite(t)&&t>0&&(this.avgRate=(this.avgRate*(this.totalWrites-1)+t)/this.totalWrites),this.totalWrites++,this.timeOfLastWrite=this.now()}nextBufferSize(){const{dynamicBufferSize:n}=this.props;if(typeof n=="number")return n;if(this.totalWrites<eo)return to;const t=g.be.roundToNearestMagnitude(this.avgRate*n.seconds);return Math.round(Math.max(Math.min(t,Qi),Ki))}close(){this.curr=null}}class so{constructor(n){h(this,"channel");h(this,"closed",!1);h(this,"ins");h(this,"static");h(this,"dynamic");this.channel=n.channel,this.ins=n.instrumentation??w.g.NOOP,this.static=new Xi(n),this.dynamic=new ro({dynamicBufferSize:n.dynamicBufferSize,dataType:this.channel.dataType})}writeDynamic(n){if(this.closed)return this.ins.L.warn(`Ignoring attempted dynamic write to a closed cache for channel ${this.channel.name}`),[];const{flushed:t,allocated:r}=this.dynamic.write(n);return t.length>0&&this.static.write(t),r}get leadingBuffer(){return this.dynamic.leadingBuffer}writeStatic(n){if(this.closed)return this.ins.L.warn(`Ignoring attempted static write to a closed cache for channel ${this.channel.name}`);this.static.write(n)}read(n){return this.closed?(this.ins.L.warn(`Ignoring attempted dirty read from a closed cache for channel ${this.channel.name}`),{series:[],gaps:[]}):this.static.dirtyRead(n)}gc(){return this.closed?(this.ins.L.warn(`Ignoring attempted garbage collection on a closed cache for channel ${this.channel.name}`),{purgedSeries:0,purgedBytes:g.C.bytes(0)}):this.static.gc()}close(){this.closed=!0,this.dynamic.close(),this.static.close()}}const ao=w.S.seconds(60);class io{constructor(n){h(this,"props");h(this,"cache",new Map);h(this,"gcInterval");this.props={dynamicBufferSize:ao,gcInterval:w.S.seconds(30),...ba,...n},this.gcInterval=setInterval(()=>this.gc(),this.props.gcInterval.milliseconds)}async populateMissing(n){const{instrumentation:t,channelRetriever:r,dynamicBufferSize:s}=this.props,a=[];for(const o of n)this.cache.has(o)||a.push(o);if(a.length===0)return;const i=await r.retrieve(a);for(const o of i){const c=new so({channel:o,dynamicBufferSize:s,instrumentation:t.child(`cache-${o.name}-${o.key}`)});this.cache.has(o.key)||this.cache.set(o.key,c)}}get(n){const t=this.cache.get(n);if(t!=null)return t;throw new w.Ze(`cache entry for ${n} not found`)}gc(){const{instrumentation:{L:n}}=this.props;n.info("starting garbage collection");const t=wa();this.cache.forEach(r=>{const s=r.gc();t.purgedSeries+=s.purgedSeries,t.purgedBytes=t.purgedBytes.add(s.purgedBytes)}),n.info("garbage collection complete",{purgedSeries:t.purgedSeries,purgedBytes:t.purgedBytes.toString()},!0)}close(){clearInterval(this.gcInterval),this.cache.forEach(n=>n.close()),this.cache.clear()}}class on{constructor(n,t){h(this,"channel");h(this,"data");this.channel=n,this.data=t}get timeRange(){if(this.data.length===0)return w.H.ZERO;const n=this.data[0].timeRange,t=this.data[this.data.length-1].timeRange;return new w.H(n.start,t.end)}get digest(){return{channel:this.channel.key,timeRange:this.timeRange.toPrettyString(),series:this.data.map(n=>n.digest)}}}const Zn=e=>e.map(n=>n.digest);class oo{constructor(n){h(this,"props");h(this,"debouncedRead");h(this,"guarded",{mu:new w.Mutex,requests:new Map});this.props={instrumentation:w.g.NOOP,batchDebounce:g.w.milliseconds(50),...n},this.debouncedRead=ks.o(()=>{this.batchRead()},this.props.batchDebounce.milliseconds)}async read(n,t){const{instrumentation:{L:r},cache:s}=this.props;r.debug("starting read",{tr:n.toPrettyString(),channels:t});const a=performance.now(),i=new Map,o={};await s.populateMissing(t);try{for(const d of t){const f=s.get(d),{series:m,gaps:b}=f.read(n);b.length===0&&(o[d]=new on(f.channel,m)),b.forEach(T=>{const E=i.get(T.toString());E==null?i.set(T.toString(),[T,new Set([d])]):i.set(T.toString(),[T,new Set([...E[1],d])])})}if(i.size===0)return r.debug("read satisfied by cache",()=>({tr:n.toPrettyString(),channels:t,responses:Zn(Object.values(o)),time:g.w.milliseconds(performance.now()-a).toString()})),o;r.debug("read cache miss",()=>({tr:n.toPrettyString(),channels:t,toFetch:Array.from(i.values()).map(([d,f])=>({timeRange:d.toPrettyString(),channels:f})),responses:Zn(Object.values(o))}));const{mu:c,requests:u}=this.guarded;for(const[,[d,f]]of i)await new Promise((m,b)=>{c.runExclusive(async()=>{u.set([d,f],{resolve:m,reject:b}),this.debouncedRead()})})}catch(c){throw r.error("read failed",{tr:n.toPrettyString(),channels:t,error:c}),c}for(const c of t){const u=s.get(c),{series:d}=u.read(n);o[c]=new on(u.channel,d)}return r.debug("read satisfied by fetch",()=>({tr:n.toPrettyString(),channels:t,responses:Zn(Object.values(o)),time:g.w.milliseconds(performance.now()-a).toString()})),o}async batchRead(){const{instrumentation:{L:n},readRemote:t,cache:r}=this.props,{mu:s,requests:a}=this.guarded;await s.runExclusive(async()=>{const i=[];try{a.forEach((o,c)=>{const[u,d]=c,f=i.find(([m])=>m.start.span(u.start).lessThan(g.w.milliseconds(5))&&m.end.span(u.end).lessThan(g.w.milliseconds(5)));f==null?i.push([u,d]):f[1]=new Set([...f[1],...d])}),n.debug("batch read",{toFetch:i.map(([o,c])=>({timeRange:o.toPrettyString(),channels:c}))});for(const[o,c]of i){const u=Array.from(c),d=await t(o,u);u.forEach(f=>{const m=r.get(f),b=d.get(f);m.writeStatic(b.series)})}a.forEach(o=>o.resolve())}catch(o){n.error("batch read failed",{error:o},!0),a.forEach(c=>c.reject(o))}finally{a.clear()}})}}class lo{constructor(n){h(this,"props");h(this,"mu",new w.Mutex);h(this,"listeners",new Map);h(this,"streamerRunLoop",null);h(this,"streamer",null);h(this,"closed",!1);this.props={instrumentation:w.g.NOOP,...n}}async stream(n,t){const{cache:r,instrumentation:{L:s}}=this.props;return await r.populateMissing(t),await this.mu.runExclusive(async()=>{s.debug("adding stream handler",{keys:t}),this.listeners.set(n,{valid:!0,keys:t});const a={};for(const i of t){const o=r.get(i),c=o.leadingBuffer!=null?[o.leadingBuffer]:[];a[i]=new on(o.channel,c)}return n(a),await this.updateStreamer(),async()=>await this.removeStreamHandler(n)})}async removeStreamHandler(n){const{instrumentation:{L:t}}=this.props;await this.mu.runExclusive(()=>{const r=this.listeners.get(n);r!=null&&(r.valid=!1)}),setTimeout(()=>{this.mu.runExclusive(async()=>{if(t.debug("removing stream handler"),this.listeners.delete(n))return await this.updateStreamer();t.warn("attempted to remove non-existent stream handler")})},5e3)}async updateStreamer(){var a,i;if(this.closed)return;const{instrumentation:{L:n},core:t}=this.props,r=new Set;if(this.listeners.forEach(o=>o.keys.forEach(c=>r.add(c))),r.size===0){n.info("no keys to stream, closing streamer"),(a=this.streamer)==null||a.close(),this.streamerRunLoop!=null&&await this.streamerRunLoop,this.streamer=null,n.info("streamer closed successfully");return}const s=Array.from(r);if(g.F.primitiveArrays(s,((i=this.streamer)==null?void 0:i.keys)??[])===g.F.EQUAL){n.debug("streamer keys unchanged",{keys:s});return}this.streamer==null&&(n.info("creating new streamer",{keys:s}),this.streamer=await t.openStreamer(s),this.streamerRunLoop=this.runStreamer(this.streamer)),n.debug("updating streamer",{prev:this.streamer.keys,next:s});try{await this.streamer.update(s)}catch(o){throw n.error("failed to update streamer",{error:o}),o}}async runStreamer(n){const{cache:t,instrumentation:{L:r}}=this.props;try{for await(const s of n){const a=[];for(const i of s.keys){const o=s.get(i),c=t.get(i),u=c.writeDynamic(o.series);a.push(new on(c.channel,u))}this.listeners.forEach((i,o)=>{if(!i.valid)return;const c=a.filter(d=>i.keys.includes(d.channel.key));if(c.length===0)return;const u=Object.fromEntries(c.map(d=>[d.channel.key,d]));o(u)})}}catch(s){throw r.error("streamer run loop failed",{error:s},!0),s}}async close(){var n;(n=this.streamer)==null||n.close(),this.streamerRunLoop!=null&&await this.streamerRunLoop,this.closed=!0}}class co{constructor(){h(this,"key",g.Ct.create())}async retrieveChannel(){return null}async read(){return{}}async stream(){return async()=>{}}async close(){}}class uo{constructor({instrumentation:n,core:t}){h(this,"key",g.Ct.create());h(this,"ins");h(this,"cache");h(this,"reader");h(this,"streamer");h(this,"channelRetriever");this.ins=n??w.g.NOOP,this.channelRetriever=t.channels.createDebouncedBatchRetriever(10),this.cache=new io({channelRetriever:this.channelRetriever,instrumentation:this.ins.child("cache")}),this.reader=new oo({cache:this.cache,readRemote:async(r,s)=>await t.read(r,s),instrumentation:this.ins.child("reader")}),this.streamer=new lo({cache:this.cache,core:t,instrumentation:this.ins.child("streamer")})}async retrieveChannel(n){const t=await this.channelRetriever.retrieve([n]);if(t.length===0)throw new w.ae(`channel ${n} not found`);return t[0]}async read(n,t){return await this.reader.read(n,t)}async stream(n,t){return await this.streamer.stream(n,t)}async close(){this.ins.L.info("closing client",{key:this.key}),await this.streamer.close(),this.cache.close()}}const Pr=p.z.object({}),ce=class ce extends w.Composite{constructor(){super(...arguments);h(this,"schema",ce.stateZ);h(this,"prevClient",null)}async afterUpdate(t){const r=Le(t),s=Ze(t,"telem");if(this.internal.instrumentation=s.child("provider"),!(r!==this.prevClient))return;this.prevClient=r;const i=r==null?new co:new uo({core:r,instrumentation:s}),o=ua(i),c=new ha(o);fa(t,c)}};h(ce,"TYPE","telem.Provider"),h(ce,"stateZ",Pr);let Nt=ce;const va={[Nt.TYPE]:Nt},ho=Object.freeze(Object.defineProperty({__proto__:null,AbstractSink:On,AbstractSource:G,Base:Yn,BaseProvider:Nt,BooleanStatus:Lt,ChannelData:ge,ColorGradient:Zt,CompoundTelemFactory:Cr,Context:ha,FixedColorSource:ve,FixedNumber:we,FixedString:be,IterativeSeries:ye,Mean:zt,MultiSourceTransformer:Us,NoopFactory:Ds,PipelineFactory:mr,REGISTRY:va,RemoteFactory:qs,RollingAverage:At,ScaleNumber:It,SetPoint:Yt,SinkPipeline:fe,SourcePipeline:de,StaticFactory:Js,StreamChannelData:me,StreamChannelValue:pe,StringifyNumber:Dt,TransformerFactory:Qs,UnarySinkTransformer:_s,UnarySourceTransformer:wt,WithinBounds:Ot,booleanSinkSpecZ:Mn,booleanSinkTransformerSpecZ:Ai,booleanSourceSpecZ:ur,booleanSourceTransformerSpecZ:Zi,booleanStatus:Ji,booleanStatusProps:ra,channelData:Gs,colorGradient:oa,colorGradientProps:ia,colorSourceSpecZ:hr,connectionZ:pr,createFactory:ua,fixedArray:_i,fixedColor:Gi,fixedColorSourcePropsZ:Ks,fixedNumber:Fi,fixedNumberPropsZ:Vs,fixedSeriesPropsZ:vr,fixedString:qi,fixedStringPropsZ:Xs,iterativeArray:Bi,iterativeSeriesPropsZ:Ws,mean:Hi,noopBooleanSinkSpec:kn,noopBooleanSourceSpec:lr,noopColorSourceSpec:Rn,noopNumericSinkSpec:Ys,noopNumericSourceSpec:Os,noopSeriesSourceSpec:Ls,noopStatusSourceSpec:cr,noopStringSourceSpec:zs,numberSinkSpecZ:Ns,numberSourceSpecZ:Is,providerStateZ:Pr,rollingAverage:aa,rollingAverageProps:Sr,scaleNumber:ca,scaleNumberProps:la,seriesSourceSpecZ:sn,setContext:fa,setpoint:ta,sinkPipeline:Fs,sinkPipelinePropsZ:yr,sinkSpecZ:$n,sinkTransformerSpecZ:Zs,sourcePipeline:Bs,sourcePipelinePropsZ:gr,sourceSpecZ:ut,sourceTransformerSpecZ:As,specZ:De,statusSourceSpecZ:dr,streamChannelData:js,streamChannelValue:Hs,streamChannelValuePropsZ:wr,stringSourceSpecZ:fr,stringifyNumber:sa,stringifyNumberProps:Tr,useChildContext:pa,useContext:zn,useSink:Ae,useSource:H,withinBounds:ea,withinBoundsProps:xr},Symbol.toStringTag,{value:"Module"})),xa=p.z.object({key:p.z.string(),size:p.z.number(),order:p.z.number(),loc:l.K.outer});p.z.record(xa);const pt=(e,n)=>Object.values(n).filter(({loc:t})=>t===e).sort((t,r)=>r.order-t.order),fo=(e,n,t)=>{const r=n[e];if(r==null)return l.J.ZERO;const s=l.K.construct(r.loc),a=pt(s,n),i=l.K.construct(l.g.swap(l.K.direction(s))),o=pt(i,n),c=a.findIndex(({key:f})=>f===e),u=a.slice(0,c).reduce((f,{size:m})=>f+m,0),d=o.reduce((f,{size:m})=>f+m,0);switch(s){case"left":return l.J.translate(l.$t.topLeft(t),[u,d]);case"right":return l.J.translate(l.$t.topRight(t),[u-r.size,d]);case"top":return l.J.translate(l.$t.topLeft(t),[d,u]);default:return l.J.translate(l.$t.bottomLeft(t),[d,-u-r.size])}},po=(e,n)=>{const t=pt("left",e),r=pt("right",e),s=pt("top",e),a=pt("bottom",e),i=t.reduce((d,{size:f})=>d+f,0),o=r.reduce((d,{size:f})=>d+f,0),c=s.reduce((d,{size:f})=>d+f,0),u=a.reduce((d,{size:f})=>d+f,0);return l.$t.construct(l.J.translate(l.$t.topLeft(n),{x:i,y:c}),l.$t.width(n)-i-o,l.$t.height(n)-c-u)};function Je(e,n){return e==null||n==null?NaN:e<n?-1:e>n?1:e>=n?0:NaN}function go(e,n){return e==null||n==null?NaN:n<e?-1:n>e?1:n>=e?0:NaN}function kr(e){let n,t,r;e.length!==2?(n=Je,t=(o,c)=>Je(e(o),c),r=(o,c)=>e(o)-c):(n=e===Je||e===go?e:mo,t=e,r=e);function s(o,c,u=0,d=o.length){if(u<d){if(n(c,c)!==0)return d;do{const f=u+d>>>1;t(o[f],c)<0?u=f+1:d=f}while(u<d)}return u}function a(o,c,u=0,d=o.length){if(u<d){if(n(c,c)!==0)return d;do{const f=u+d>>>1;t(o[f],c)<=0?u=f+1:d=f}while(u<d)}return u}function i(o,c,u=0,d=o.length){const f=s(o,c,u,d-1);return f>u&&r(o[f-1],c)>-r(o[f],c)?f-1:f}return{left:s,center:i,right:a}}function mo(){return 0}function yo(e){return e===null?NaN:+e}const wo=kr(Je),bo=wo.right;kr(yo).center;const vo=Math.sqrt(50),xo=Math.sqrt(10),To=Math.sqrt(2);function ln(e,n,t){const r=(n-e)/Math.max(0,t),s=Math.floor(Math.log10(r)),a=r/Math.pow(10,s),i=a>=vo?10:a>=xo?5:a>=To?2:1;let o,c,u;return s<0?(u=Math.pow(10,-s)/i,o=Math.round(e*u),c=Math.round(n*u),o/u<e&&++o,c/u>n&&--c,u=-u):(u=Math.pow(10,s)*i,o=Math.round(e/u),c=Math.round(n/u),o*u<e&&++o,c*u>n&&--c),c<o&&.5<=t&&t<2?ln(e,n,t*2):[o,c,u]}function So(e,n,t){if(n=+n,e=+e,t=+t,!(t>0))return[];if(e===n)return[e];const r=n<e,[s,a,i]=r?ln(n,e,t):ln(e,n,t);if(!(a>=s))return[];const o=a-s+1,c=new Array(o);if(r)if(i<0)for(let u=0;u<o;++u)c[u]=(a-u)/-i;else for(let u=0;u<o;++u)c[u]=(a-u)*i;else if(i<0)for(let u=0;u<o;++u)c[u]=(s+u)/-i;else for(let u=0;u<o;++u)c[u]=(s+u)*i;return c}function Vn(e,n,t){return n=+n,e=+e,t=+t,ln(e,n,t)[2]}function Xn(e,n,t){n=+n,e=+e,t=+t;const r=n<e,s=r?Vn(n,e,t):Vn(e,n,t);return(r?-1:1)*(s<0?1/-s:s)}function Ta(e,n){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(n).domain(e);break}return this}function Rr(e,n,t){e.prototype=n.prototype=t,t.constructor=e}function Sa(e,n){var t=Object.create(e.prototype);for(var r in n)t[r]=n[r];return t}function Ie(){}var xe=.7,cn=1/xe,Mt="\\s*([+-]?\\d+)\\s*",Te="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Q="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Co=/^#([0-9a-f]{3,8})$/,Eo=new RegExp(`^rgb\\(${Mt},${Mt},${Mt}\\)$`),Po=new RegExp(`^rgb\\(${Q},${Q},${Q}\\)$`),ko=new RegExp(`^rgba\\(${Mt},${Mt},${Mt},${Te}\\)$`),Ro=new RegExp(`^rgba\\(${Q},${Q},${Q},${Te}\\)$`),$o=new RegExp(`^hsl\\(${Te},${Q},${Q}\\)$`),Mo=new RegExp(`^hsla\\(${Te},${Q},${Q},${Te}\\)$`),Jr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Rr(Ie,Ut,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Wr,formatHex:Wr,formatHex8:Yo,formatHsl:Oo,formatRgb:Vr,toString:Vr});function Wr(){return this.rgb().formatHex()}function Yo(){return this.rgb().formatHex8()}function Oo(){return Ca(this).formatHsl()}function Vr(){return this.rgb().formatRgb()}function Ut(e){var n,t;return e=(e+"").trim().toLowerCase(),(n=Co.exec(e))?(t=n[1].length,n=parseInt(n[1],16),t===6?Xr(n):t===3?new _(n>>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):t===8?Fe(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):t===4?Fe(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=Eo.exec(e))?new _(n[1],n[2],n[3],1):(n=Po.exec(e))?new _(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=ko.exec(e))?Fe(n[1],n[2],n[3],n[4]):(n=Ro.exec(e))?Fe(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=$o.exec(e))?ts(n[1],n[2]/100,n[3]/100,1):(n=Mo.exec(e))?ts(n[1],n[2]/100,n[3]/100,n[4]):Jr.hasOwnProperty(e)?Xr(Jr[e]):e==="transparent"?new _(NaN,NaN,NaN,0):null}function Xr(e){return new _(e>>16&255,e>>8&255,e&255,1)}function Fe(e,n,t,r){return r<=0&&(e=n=t=NaN),new _(e,n,t,r)}function zo(e){return e instanceof Ie||(e=Ut(e)),e?(e=e.rgb(),new _(e.r,e.g,e.b,e.opacity)):new _}function Kn(e,n,t,r){return arguments.length===1?zo(e):new _(e,n,t,r??1)}function _(e,n,t,r){this.r=+e,this.g=+n,this.b=+t,this.opacity=+r}Rr(_,Kn,Sa(Ie,{brighter(e){return e=e==null?cn:Math.pow(cn,e),new _(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?xe:Math.pow(xe,e),new _(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new _(mt(this.r),mt(this.g),mt(this.b),un(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Kr,formatHex:Kr,formatHex8:Lo,formatRgb:Qr,toString:Qr}));function Kr(){return`#${gt(this.r)}${gt(this.g)}${gt(this.b)}`}function Lo(){return`#${gt(this.r)}${gt(this.g)}${gt(this.b)}${gt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Qr(){const e=un(this.opacity);return`${e===1?"rgb(":"rgba("}${mt(this.r)}, ${mt(this.g)}, ${mt(this.b)}${e===1?")":`, ${e})`}`}function un(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function mt(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function gt(e){return e=mt(e),(e<16?"0":"")+e.toString(16)}function ts(e,n,t,r){return r<=0?e=n=t=NaN:t<=0||t>=1?e=n=NaN:n<=0&&(e=NaN),new W(e,n,t,r)}function Ca(e){if(e instanceof W)return new W(e.h,e.s,e.l,e.opacity);if(e instanceof Ie||(e=Ut(e)),!e)return new W;if(e instanceof W)return e;e=e.rgb();var n=e.r/255,t=e.g/255,r=e.b/255,s=Math.min(n,t,r),a=Math.max(n,t,r),i=NaN,o=a-s,c=(a+s)/2;return o?(n===a?i=(t-r)/o+(t<r)*6:t===a?i=(r-n)/o+2:i=(n-t)/o+4,o/=c<.5?a+s:2-a-s,i*=60):o=c>0&&c<1?0:i,new W(i,o,c,e.opacity)}function Do(e,n,t,r){return arguments.length===1?Ca(e):new W(e,n,t,r??1)}function W(e,n,t,r){this.h=+e,this.s=+n,this.l=+t,this.opacity=+r}Rr(W,Do,Sa(Ie,{brighter(e){return e=e==null?cn:Math.pow(cn,e),new W(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?xe:Math.pow(xe,e),new W(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,n=isNaN(e)||isNaN(this.s)?0:this.s,t=this.l,r=t+(t<.5?t:1-t)*n,s=2*t-r;return new _(In(e>=240?e-240:e+120,s,r),In(e,s,r),In(e<120?e+240:e-120,s,r),this.opacity)},clamp(){return new W(es(this.h),qe(this.s),qe(this.l),un(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=un(this.opacity);return`${e===1?"hsl(":"hsla("}${es(this.h)}, ${qe(this.s)*100}%, ${qe(this.l)*100}%${e===1?")":`, ${e})`}`}}));function es(e){return e=(e||0)%360,e<0?e+360:e}function qe(e){return Math.max(0,Math.min(1,e||0))}function In(e,n,t){return(e<60?n+(t-n)*e/60:e<180?t:e<240?n+(t-n)*(240-e)/60:n)*255}const $r=e=>()=>e;function Ao(e,n){return function(t){return e+t*n}}function Zo(e,n,t){return e=Math.pow(e,t),n=Math.pow(n,t)-e,t=1/t,function(r){return Math.pow(e+r*n,t)}}function Io(e){return(e=+e)==1?Ea:function(n,t){return t-n?Zo(n,t,e):$r(isNaN(n)?t:n)}}function Ea(e,n){var t=n-e;return t?Ao(e,t):$r(isNaN(e)?n:e)}const Qn=function e(n){var t=Io(n);function r(s,a){var i=t((s=Kn(s)).r,(a=Kn(a)).r),o=t(s.g,a.g),c=t(s.b,a.b),u=Ea(s.opacity,a.opacity);return function(d){return s.r=i(d),s.g=o(d),s.b=c(d),s.opacity=u(d),s+""}}return r.gamma=e,r}(1);function No(e,n){n||(n=[]);var t=e?Math.min(n.length,e.length):0,r=n.slice(),s;return function(a){for(s=0;s<t;++s)r[s]=e[s]*(1-a)+n[s]*a;return r}}function Uo(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function _o(e,n){var t=n?n.length:0,r=e?Math.min(t,e.length):0,s=new Array(r),a=new Array(t),i;for(i=0;i<r;++i)s[i]=Mr(e[i],n[i]);for(;i<t;++i)a[i]=n[i];return function(o){for(i=0;i<r;++i)a[i]=s[i](o);return a}}function Bo(e,n){var t=new Date;return e=+e,n=+n,function(r){return t.setTime(e*(1-r)+n*r),t}}function Se(e,n){return e=+e,n=+n,function(t){return e*(1-t)+n*t}}function Fo(e,n){var t={},r={},s;(e===null||typeof e!="object")&&(e={}),(n===null||typeof n!="object")&&(n={});for(s in n)s in e?t[s]=Mr(e[s],n[s]):r[s]=n[s];return function(a){for(s in t)r[s]=t[s](a);return r}}var tr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Nn=new RegExp(tr.source,"g");function qo(e){return function(){return e}}function Go(e){return function(n){return e(n)+""}}function Pa(e,n){var t=tr.lastIndex=Nn.lastIndex=0,r,s,a,i=-1,o=[],c=[];for(e=e+"",n=n+"";(r=tr.exec(e))&&(s=Nn.exec(n));)(a=s.index)>t&&(a=n.slice(t,a),o[i]?o[i]+=a:o[++i]=a),(r=r[0])===(s=s[0])?o[i]?o[i]+=s:o[++i]=s:(o[++i]=null,c.push({i,x:Se(r,s)})),t=Nn.lastIndex;return t<n.length&&(a=n.slice(t),o[i]?o[i]+=a:o[++i]=a),o.length<2?c[0]?Go(c[0].x):qo(n):(n=c.length,function(u){for(var d=0,f;d<n;++d)o[(f=c[d]).i]=f.x(u);return o.join("")})}function Mr(e,n){var t=typeof n,r;return n==null||t==="boolean"?$r(n):(t==="number"?Se:t==="string"?(r=Ut(n))?(n=r,Qn):Pa:n instanceof Ut?Qn:n instanceof Date?Bo:Uo(n)?No:Array.isArray(n)?_o:typeof n.valueOf!="function"&&typeof n.toString!="function"||isNaN(n)?Fo:Se)(e,n)}function jo(e,n){return e=+e,n=+n,function(t){return Math.round(e*(1-t)+n*t)}}function Ho(e){return function(){return e}}function Jo(e){return+e}var ns=[0,1];function Et(e){return e}function er(e,n){return(n-=e=+e)?function(t){return(t-e)/n}:Ho(isNaN(n)?NaN:.5)}function Wo(e,n){var t;return e>n&&(t=e,e=n,n=t),function(r){return Math.max(e,Math.min(n,r))}}function Vo(e,n,t){var r=e[0],s=e[1],a=n[0],i=n[1];return s<r?(r=er(s,r),a=t(i,a)):(r=er(r,s),a=t(a,i)),function(o){return a(r(o))}}function Xo(e,n,t){var r=Math.min(e.length,n.length)-1,s=new Array(r),a=new Array(r),i=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),n=n.slice().reverse());++i<r;)s[i]=er(e[i],e[i+1]),a[i]=t(n[i],n[i+1]);return function(o){var c=bo(e,o,1,r)-1;return a[c](s[c](o))}}function ka(e,n){return n.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Ko(){var e=ns,n=ns,t=Mr,r,s,a,i=Et,o,c,u;function d(){var m=Math.min(e.length,n.length);return i!==Et&&(i=Wo(e[0],e[m-1])),o=m>2?Xo:Vo,c=u=null,f}function f(m){return m==null||isNaN(m=+m)?a:(c||(c=o(e.map(r),n,t)))(r(i(m)))}return f.invert=function(m){return i(s((u||(u=o(n,e.map(r),Se)))(m)))},f.domain=function(m){return arguments.length?(e=Array.from(m,Jo),d()):e.slice()},f.range=function(m){return arguments.length?(n=Array.from(m),d()):n.slice()},f.rangeRound=function(m){return n=Array.from(m),t=jo,d()},f.clamp=function(m){return arguments.length?(i=m?!0:Et,d()):i!==Et},f.interpolate=function(m){return arguments.length?(t=m,d()):t},f.unknown=function(m){return arguments.length?(a=m,f):a},function(m,b){return r=m,s=b,d()}}function Ra(){return Ko()(Et,Et)}function Qo(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function hn(e,n){if((t=(e=n?e.toExponential(n-1):e.toExponential()).indexOf("e"))<0)return null;var t,r=e.slice(0,t);return[r.length>1?r[0]+r.slice(2):r,+e.slice(t+1)]}function _t(e){return e=hn(Math.abs(e)),e?e[1]:NaN}function tl(e,n){return function(t,r){for(var s=t.length,a=[],i=0,o=e[0],c=0;s>0&&o>0&&(c+o+1>r&&(o=Math.max(1,r-c)),a.push(t.substring(s-=o,s+o)),!((c+=o+1)>r));)o=e[i=(i+1)%e.length];return a.reverse().join(n)}}function el(e){return function(n){return n.replace(/[0-9]/g,function(t){return e[+t]})}}var nl=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function dn(e){if(!(n=nl.exec(e)))throw new Error("invalid format: "+e);var n;return new Yr({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}dn.prototype=Yr.prototype;function Yr(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Yr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function rl(e){t:for(var n=e.length,t=1,r=-1,s;t<n;++t)switch(e[t]){case".":r=s=t;break;case"0":r===0&&(r=t),s=t;break;default:if(!+e[t])break t;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(s+1):e}var $a;function sl(e,n){var t=hn(e,n);if(!t)return e+"";var r=t[0],s=t[1],a=s-($a=Math.max(-8,Math.min(8,Math.floor(s/3)))*3)+1,i=r.length;return a===i?r:a>i?r+new Array(a-i+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+hn(e,Math.max(0,n+a-1))[0]}function rs(e,n){var t=hn(e,n);if(!t)return e+"";var r=t[0],s=t[1];return s<0?"0."+new Array(-s).join("0")+r:r.length>s+1?r.slice(0,s+1)+"."+r.slice(s+1):r+new Array(s-r.length+2).join("0")}const ss={"%":(e,n)=>(e*100).toFixed(n),b:e=>Math.round(e).toString(2),c:e=>e+"",d:Qo,e:(e,n)=>e.toExponential(n),f:(e,n)=>e.toFixed(n),g:(e,n)=>e.toPrecision(n),o:e=>Math.round(e).toString(8),p:(e,n)=>rs(e*100,n),r:rs,s:sl,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function as(e){return e}var is=Array.prototype.map,os=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function al(e){var n=e.grouping===void 0||e.thousands===void 0?as:tl(is.call(e.grouping,Number),e.thousands+""),t=e.currency===void 0?"":e.currency[0]+"",r=e.currency===void 0?"":e.currency[1]+"",s=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?as:el(is.call(e.numerals,String)),i=e.percent===void 0?"%":e.percent+"",o=e.minus===void 0?"−":e.minus+"",c=e.nan===void 0?"NaN":e.nan+"";function u(f){f=dn(f);var m=f.fill,b=f.align,T=f.sign,E=f.symbol,x=f.zero,S=f.width,Y=f.comma,P=f.precision,O=f.trim,L=f.type;L==="n"?(Y=!0,L="g"):ss[L]||(P===void 0&&(P=12),O=!0,L="g"),(x||m==="0"&&b==="=")&&(x=!0,m="0",b="=");var C=E==="$"?t:E==="#"&&/[boxX]/.test(L)?"0"+L.toLowerCase():"",Z=E==="$"?r:/[%p]/.test(L)?i:"",ht=ss[L],Dn=/[defgprs%]/.test(L);P=P===void 0?6:/[gprs]/.test(L)?Math.max(1,Math.min(21,P)):Math.max(0,Math.min(20,P));function _e(R){var et=C,N=Z,ot,Be,xt;if(L==="c")N=ht(R)+N,R="";else{R=+R;var Tt=R<0||1/R<0;if(R=isNaN(R)?c:ht(Math.abs(R),P),O&&(R=rl(R)),Tt&&+R==0&&T!=="+"&&(Tt=!1),et=(Tt?T==="("?T:o:T==="-"||T==="("?"":T)+et,N=(L==="s"?os[8+$a/3]:"")+N+(Tt&&T==="("?")":""),Dn){for(ot=-1,Be=R.length;++ot<Be;)if(xt=R.charCodeAt(ot),48>xt||xt>57){N=(xt===46?s+R.slice(ot+1):R.slice(ot))+N,R=R.slice(0,ot);break}}}Y&&!x&&(R=n(R,1/0));var St=et.length+R.length+N.length,J=St<S?new Array(S-St+1).join(m):"";switch(Y&&x&&(R=n(J+R,J.length?S-N.length:1/0),J=""),b){case"<":R=et+R+N+J;break;case"=":R=et+J+R+N;break;case"^":R=J.slice(0,St=J.length>>1)+et+R+N+J.slice(St);break;default:R=J+et+R+N;break}return a(R)}return _e.toString=function(){return f+""},_e}function d(f,m){var b=u((f=dn(f),f.type="f",f)),T=Math.max(-8,Math.min(8,Math.floor(_t(m)/3)))*3,E=Math.pow(10,-T),x=os[8+T/3];return function(S){return b(E*S)+x}}return{format:u,formatPrefix:d}}var Ge,Ma,Ya;il({thousands:",",grouping:[3],currency:["$",""]});function il(e){return Ge=al(e),Ma=Ge.format,Ya=Ge.formatPrefix,Ge}function ol(e){return Math.max(0,-_t(Math.abs(e)))}function ll(e,n){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(_t(n)/3)))*3-_t(Math.abs(e)))}function cl(e,n){return e=Math.abs(e),n=Math.abs(n)-e,Math.max(0,_t(n)-_t(e))+1}function ul(e,n,t,r){var s=Xn(e,n,t),a;switch(r=dn(r??",f"),r.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(n));return r.precision==null&&!isNaN(a=ll(s,i))&&(r.precision=a),Ya(r,i)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(a=cl(s,Math.max(Math.abs(e),Math.abs(n))))&&(r.precision=a-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(a=ol(s))&&(r.precision=a-(r.type==="%")*2);break}}return Ma(r)}function hl(e){var n=e.domain;return e.ticks=function(t){var r=n();return So(r[0],r[r.length-1],t??10)},e.tickFormat=function(t,r){var s=n();return ul(s[0],s[s.length-1],t??10,r)},e.nice=function(t){t==null&&(t=10);var r=n(),s=0,a=r.length-1,i=r[s],o=r[a],c,u,d=10;for(o<i&&(u=i,i=o,o=u,u=s,s=a,a=u);d-- >0;){if(u=Vn(i,o,t),u===c)return r[s]=i,r[a]=o,n(r);if(u>0)i=Math.floor(i/u)*u,o=Math.ceil(o/u)*u;else if(u<0)i=Math.ceil(i*u)/u,o=Math.floor(o*u)/u;else break;c=u}return e},e}function Oa(){var e=Ra();return e.copy=function(){return ka(e,Oa())},Ta.apply(e,arguments),hl(e)}function dl(e,n){e=e.slice();var t=0,r=e.length-1,s=e[t],a=e[r],i;return a<s&&(i=t,t=r,r=i,i=s,s=a,a=i),e[t]=n.floor(s),e[r]=n.ceil(a),e}const Un=new Date,_n=new Date;function D(e,n,t,r){function s(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return s.floor=a=>(e(a=new Date(+a)),a),s.ceil=a=>(e(a=new Date(a-1)),n(a,1),e(a),a),s.round=a=>{const i=s(a),o=s.ceil(a);return a-i<o-a?i:o},s.offset=(a,i)=>(n(a=new Date(+a),i==null?1:Math.floor(i)),a),s.range=(a,i,o)=>{const c=[];if(a=s.ceil(a),o=o==null?1:Math.floor(o),!(a<i)||!(o>0))return c;let u;do c.push(u=new Date(+a)),n(a,o),e(a);while(u<a&&a<i);return c},s.filter=a=>D(i=>{if(i>=i)for(;e(i),!a(i);)i.setTime(i-1)},(i,o)=>{if(i>=i)if(o<0)for(;++o<=0;)for(;n(i,-1),!a(i););else for(;--o>=0;)for(;n(i,1),!a(i););}),t&&(s.count=(a,i)=>(Un.setTime(+a),_n.setTime(+i),e(Un),e(_n),Math.floor(t(Un,_n))),s.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?s.filter(r?i=>r(i)%a===0:i=>s.count(0,i)%a===0):s)),s}const fn=D(()=>{},(e,n)=>{e.setTime(+e+n)},(e,n)=>n-e);fn.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?D(n=>{n.setTime(Math.floor(n/e)*e)},(n,t)=>{n.setTime(+n+t*e)},(n,t)=>(t-n)/e):fn);fn.range;const nt=1e3,j=nt*60,rt=j*60,at=rt*24,Or=at*7,ls=at*30,Bn=at*365,Pt=D(e=>{e.setTime(e-e.getMilliseconds())},(e,n)=>{e.setTime(+e+n*nt)},(e,n)=>(n-e)/nt,e=>e.getUTCSeconds());Pt.range;const zr=D(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*nt)},(e,n)=>{e.setTime(+e+n*j)},(e,n)=>(n-e)/j,e=>e.getMinutes());zr.range;const fl=D(e=>{e.setUTCSeconds(0,0)},(e,n)=>{e.setTime(+e+n*j)},(e,n)=>(n-e)/j,e=>e.getUTCMinutes());fl.range;const Lr=D(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*nt-e.getMinutes()*j)},(e,n)=>{e.setTime(+e+n*rt)},(e,n)=>(n-e)/rt,e=>e.getHours());Lr.range;const pl=D(e=>{e.setUTCMinutes(0,0,0)},(e,n)=>{e.setTime(+e+n*rt)},(e,n)=>(n-e)/rt,e=>e.getUTCHours());pl.range;const Ne=D(e=>e.setHours(0,0,0,0),(e,n)=>e.setDate(e.getDate()+n),(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*j)/at,e=>e.getDate()-1);Ne.range;const Dr=D(e=>{e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n)},(e,n)=>(n-e)/at,e=>e.getUTCDate()-1);Dr.range;const gl=D(e=>{e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n)},(e,n)=>(n-e)/at,e=>Math.floor(e/at));gl.range;function bt(e){return D(n=>{n.setDate(n.getDate()-(n.getDay()+7-e)%7),n.setHours(0,0,0,0)},(n,t)=>{n.setDate(n.getDate()+t*7)},(n,t)=>(t-n-(t.getTimezoneOffset()-n.getTimezoneOffset())*j)/Or)}const Ln=bt(0),pn=bt(1),ml=bt(2),yl=bt(3),Bt=bt(4),wl=bt(5),bl=bt(6);Ln.range;pn.range;ml.range;yl.range;Bt.range;wl.range;bl.range;function vt(e){return D(n=>{n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-e)%7),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t*7)},(n,t)=>(t-n)/Or)}const za=vt(0),gn=vt(1),vl=vt(2),xl=vt(3),Ft=vt(4),Tl=vt(5),Sl=vt(6);za.range;gn.range;vl.range;xl.range;Ft.range;Tl.range;Sl.range;const Ar=D(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,n)=>{e.setMonth(e.getMonth()+n)},(e,n)=>n.getMonth()-e.getMonth()+(n.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Ar.range;const Cl=D(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCMonth(e.getUTCMonth()+n)},(e,n)=>n.getUTCMonth()-e.getUTCMonth()+(n.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Cl.range;const it=D(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n)},(e,n)=>n.getFullYear()-e.getFullYear(),e=>e.getFullYear());it.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:D(n=>{n.setFullYear(Math.floor(n.getFullYear()/e)*e),n.setMonth(0,1),n.setHours(0,0,0,0)},(n,t)=>{n.setFullYear(n.getFullYear()+t*e)});it.range;const yt=D(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n)},(e,n)=>n.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());yt.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:D(n=>{n.setUTCFullYear(Math.floor(n.getUTCFullYear()/e)*e),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCFullYear(n.getUTCFullYear()+t*e)});yt.range;function El(e,n,t,r,s,a){const i=[[Pt,1,nt],[Pt,5,5*nt],[Pt,15,15*nt],[Pt,30,30*nt],[a,1,j],[a,5,5*j],[a,15,15*j],[a,30,30*j],[s,1,rt],[s,3,3*rt],[s,6,6*rt],[s,12,12*rt],[r,1,at],[r,2,2*at],[t,1,Or],[n,1,ls],[n,3,3*ls],[e,1,Bn]];function o(u,d,f){const m=d<u;m&&([u,d]=[d,u]);const b=f&&typeof f.range=="function"?f:c(u,d,f),T=b?b.range(u,+d+1):[];return m?T.reverse():T}function c(u,d,f){const m=Math.abs(d-u)/f,b=kr(([,,x])=>x).right(i,m);if(b===i.length)return e.every(Xn(u/Bn,d/Bn,f));if(b===0)return fn.every(Math.max(Xn(u,d,f),1));const[T,E]=i[m/i[b-1][2]<i[b][2]/m?b-1:b];return T.every(E)}return[o,c]}const[Pl,kl]=El(it,Ar,Ln,Ne,Lr,zr);function Fn(e){if(0<=e.y&&e.y<100){var n=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return n.setFullYear(e.y),n}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function qn(e){if(0<=e.y&&e.y<100){var n=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return n.setUTCFullYear(e.y),n}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Xt(e,n,t){return{y:e,m:n,d:t,H:0,M:0,S:0,L:0}}function Rl(e){var n=e.dateTime,t=e.date,r=e.time,s=e.periods,a=e.days,i=e.shortDays,o=e.months,c=e.shortMonths,u=Kt(s),d=Qt(s),f=Kt(a),m=Qt(a),b=Kt(i),T=Qt(i),E=Kt(o),x=Qt(o),S=Kt(c),Y=Qt(c),P={a:Tt,A:St,b:J,B:yi,c:null,d:ps,e:ps,f:Xl,g:oc,G:cc,H:Jl,I:Wl,j:Vl,L:La,m:Kl,M:Ql,p:wi,q:bi,Q:ys,s:ws,S:tc,u:ec,U:nc,V:rc,w:sc,W:ac,x:null,X:null,y:ic,Y:lc,Z:uc,"%":ms},O={a:vi,A:xi,b:Ti,B:Si,c:null,d:gs,e:gs,f:pc,g:Cc,G:Pc,H:hc,I:dc,j:fc,L:Aa,m:gc,M:mc,p:Ci,q:Ei,Q:ys,s:ws,S:yc,u:wc,U:bc,V:vc,w:xc,W:Tc,x:null,X:null,y:Sc,Y:Ec,Z:kc,"%":ms},L={a:_e,A:R,b:et,B:N,c:ot,d:ds,e:ds,f:ql,g:hs,G:us,H:fs,I:fs,j:Ul,L:Fl,m:Nl,M:_l,p:Dn,q:Il,Q:jl,s:Hl,S:Bl,u:zl,U:Ll,V:Dl,w:Ol,W:Al,x:Be,X:xt,y:hs,Y:us,Z:Zl,"%":Gl};P.x=C(t,P),P.X=C(r,P),P.c=C(n,P),O.x=C(t,O),O.X=C(r,O),O.c=C(n,O);function C(v,k){return function($){var y=[],U=-1,z=0,F=v.length,q,dt,Gr;for($ instanceof Date||($=new Date(+$));++U<F;)v.charCodeAt(U)===37&&(y.push(v.slice(z,U)),(dt=cs[q=v.charAt(++U)])!=null?q=v.charAt(++U):dt=q==="e"?" ":"0",(Gr=k[q])&&(q=Gr($,dt)),y.push(q),z=U+1);return y.push(v.slice(z,U)),y.join("")}}function Z(v,k){return function($){var y=Xt(1900,void 0,1),U=ht(y,v,$+="",0),z,F;if(U!=$.length)return null;if("Q"in y)return new Date(y.Q);if("s"in y)return new Date(y.s*1e3+("L"in y?y.L:0));if(k&&!("Z"in y)&&(y.Z=0),"p"in y&&(y.H=y.H%12+y.p*12),y.m===void 0&&(y.m="q"in y?y.q:0),"V"in y){if(y.V<1||y.V>53)return null;"w"in y||(y.w=1),"Z"in y?(z=qn(Xt(y.y,0,1)),F=z.getUTCDay(),z=F>4||F===0?gn.ceil(z):gn(z),z=Dr.offset(z,(y.V-1)*7),y.y=z.getUTCFullYear(),y.m=z.getUTCMonth(),y.d=z.getUTCDate()+(y.w+6)%7):(z=Fn(Xt(y.y,0,1)),F=z.getDay(),z=F>4||F===0?pn.ceil(z):pn(z),z=Ne.offset(z,(y.V-1)*7),y.y=z.getFullYear(),y.m=z.getMonth(),y.d=z.getDate()+(y.w+6)%7)}else("W"in y||"U"in y)&&("w"in y||(y.w="u"in y?y.u%7:"W"in y?1:0),F="Z"in y?qn(Xt(y.y,0,1)).getUTCDay():Fn(Xt(y.y,0,1)).getDay(),y.m=0,y.d="W"in y?(y.w+6)%7+y.W*7-(F+5)%7:y.w+y.U*7-(F+6)%7);return"Z"in y?(y.H+=y.Z/100|0,y.M+=y.Z%100,qn(y)):Fn(y)}}function ht(v,k,$,y){for(var U=0,z=k.length,F=$.length,q,dt;U<z;){if(y>=F)return-1;if(q=k.charCodeAt(U++),q===37){if(q=k.charAt(U++),dt=L[q in cs?k.charAt(U++):q],!dt||(y=dt(v,$,y))<0)return-1}else if(q!=$.charCodeAt(y++))return-1}return y}function Dn(v,k,$){var y=u.exec(k.slice($));return y?(v.p=d.get(y[0].toLowerCase()),$+y[0].length):-1}function _e(v,k,$){var y=b.exec(k.slice($));return y?(v.w=T.get(y[0].toLowerCase()),$+y[0].length):-1}function R(v,k,$){var y=f.exec(k.slice($));return y?(v.w=m.get(y[0].toLowerCase()),$+y[0].length):-1}function et(v,k,$){var y=S.exec(k.slice($));return y?(v.m=Y.get(y[0].toLowerCase()),$+y[0].length):-1}function N(v,k,$){var y=E.exec(k.slice($));return y?(v.m=x.get(y[0].toLowerCase()),$+y[0].length):-1}function ot(v,k,$){return ht(v,n,k,$)}function Be(v,k,$){return ht(v,t,k,$)}function xt(v,k,$){return ht(v,r,k,$)}function Tt(v){return i[v.getDay()]}function St(v){return a[v.getDay()]}function J(v){return c[v.getMonth()]}function yi(v){return o[v.getMonth()]}function wi(v){return s[+(v.getHours()>=12)]}function bi(v){return 1+~~(v.getMonth()/3)}function vi(v){return i[v.getUTCDay()]}function xi(v){return a[v.getUTCDay()]}function Ti(v){return c[v.getUTCMonth()]}function Si(v){return o[v.getUTCMonth()]}function Ci(v){return s[+(v.getUTCHours()>=12)]}function Ei(v){return 1+~~(v.getUTCMonth()/3)}return{format:function(v){var k=C(v+="",P);return k.toString=function(){return v},k},parse:function(v){var k=Z(v+="",!1);return k.toString=function(){return v},k},utcFormat:function(v){var k=C(v+="",O);return k.toString=function(){return v},k},utcParse:function(v){var k=Z(v+="",!0);return k.toString=function(){return v},k}}}var cs={"-":"",_:" ",0:"0"},A=/^\s*\d+/,$l=/^%/,Ml=/[\\^$*+?|[\]().{}]/g;function M(e,n,t){var r=e<0?"-":"",s=(r?-e:e)+"",a=s.length;return r+(a<t?new Array(t-a+1).join(n)+s:s)}function Yl(e){return e.replace(Ml,"\\$&")}function Kt(e){return new RegExp("^(?:"+e.map(Yl).join("|")+")","i")}function Qt(e){return new Map(e.map((n,t)=>[n.toLowerCase(),t]))}function Ol(e,n,t){var r=A.exec(n.slice(t,t+1));return r?(e.w=+r[0],t+r[0].length):-1}function zl(e,n,t){var r=A.exec(n.slice(t,t+1));return r?(e.u=+r[0],t+r[0].length):-1}function Ll(e,n,t){var r=A.exec(n.slice(t,t+2));return r?(e.U=+r[0],t+r[0].length):-1}function Dl(e,n,t){var r=A.exec(n.slice(t,t+2));return r?(e.V=+r[0],t+r[0].length):-1}function Al(e,n,t){var r=A.exec(n.slice(t,t+2));return r?(e.W=+r[0],t+r[0].length):-1}function us(e,n,t){var r=A.exec(n.slice(t,t+4));return r?(e.y=+r[0],t+r[0].length):-1}function hs(e,n,t){var r=A.exec(n.slice(t,t+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),t+r[0].length):-1}function Zl(e,n,t){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(t,t+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),t+r[0].length):-1}function Il(e,n,t){var r=A.exec(n.slice(t,t+1));return r?(e.q=r[0]*3-3,t+r[0].length):-1}function Nl(e,n,t){var r=A.exec(n.slice(t,t+2));return r?(e.m=r[0]-1,t+r[0].length):-1}function ds(e,n,t){var r=A.exec(n.slice(t,t+2));return r?(e.d=+r[0],t+r[0].length):-1}function Ul(e,n,t){var r=A.exec(n.slice(t,t+3));return r?(e.m=0,e.d=+r[0],t+r[0].length):-1}function fs(e,n,t){var r=A.exec(n.slice(t,t+2));return r?(e.H=+r[0],t+r[0].length):-1}function _l(e,n,t){var r=A.exec(n.slice(t,t+2));return r?(e.M=+r[0],t+r[0].length):-1}function Bl(e,n,t){var r=A.exec(n.slice(t,t+2));return r?(e.S=+r[0],t+r[0].length):-1}function Fl(e,n,t){var r=A.exec(n.slice(t,t+3));return r?(e.L=+r[0],t+r[0].length):-1}function ql(e,n,t){var r=A.exec(n.slice(t,t+6));return r?(e.L=Math.floor(r[0]/1e3),t+r[0].length):-1}function Gl(e,n,t){var r=$l.exec(n.slice(t,t+1));return r?t+r[0].length:-1}function jl(e,n,t){var r=A.exec(n.slice(t));return r?(e.Q=+r[0],t+r[0].length):-1}function Hl(e,n,t){var r=A.exec(n.slice(t));return r?(e.s=+r[0],t+r[0].length):-1}function ps(e,n){return M(e.getDate(),n,2)}function Jl(e,n){return M(e.getHours(),n,2)}function Wl(e,n){return M(e.getHours()%12||12,n,2)}function Vl(e,n){return M(1+Ne.count(it(e),e),n,3)}function La(e,n){return M(e.getMilliseconds(),n,3)}function Xl(e,n){return La(e,n)+"000"}function Kl(e,n){return M(e.getMonth()+1,n,2)}function Ql(e,n){return M(e.getMinutes(),n,2)}function tc(e,n){return M(e.getSeconds(),n,2)}function ec(e){var n=e.getDay();return n===0?7:n}function nc(e,n){return M(Ln.count(it(e)-1,e),n,2)}function Da(e){var n=e.getDay();return n>=4||n===0?Bt(e):Bt.ceil(e)}function rc(e,n){return e=Da(e),M(Bt.count(it(e),e)+(it(e).getDay()===4),n,2)}function sc(e){return e.getDay()}function ac(e,n){return M(pn.count(it(e)-1,e),n,2)}function ic(e,n){return M(e.getFullYear()%100,n,2)}function oc(e,n){return e=Da(e),M(e.getFullYear()%100,n,2)}function lc(e,n){return M(e.getFullYear()%1e4,n,4)}function cc(e,n){var t=e.getDay();return e=t>=4||t===0?Bt(e):Bt.ceil(e),M(e.getFullYear()%1e4,n,4)}function uc(e){var n=e.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+M(n/60|0,"0",2)+M(n%60,"0",2)}function gs(e,n){return M(e.getUTCDate(),n,2)}function hc(e,n){return M(e.getUTCHours(),n,2)}function dc(e,n){return M(e.getUTCHours()%12||12,n,2)}function fc(e,n){return M(1+Dr.count(yt(e),e),n,3)}function Aa(e,n){return M(e.getUTCMilliseconds(),n,3)}function pc(e,n){return Aa(e,n)+"000"}function gc(e,n){return M(e.getUTCMonth()+1,n,2)}function mc(e,n){return M(e.getUTCMinutes(),n,2)}function yc(e,n){return M(e.getUTCSeconds(),n,2)}function wc(e){var n=e.getUTCDay();return n===0?7:n}function bc(e,n){return M(za.count(yt(e)-1,e),n,2)}function Za(e){var n=e.getUTCDay();return n>=4||n===0?Ft(e):Ft.ceil(e)}function vc(e,n){return e=Za(e),M(Ft.count(yt(e),e)+(yt(e).getUTCDay()===4),n,2)}function xc(e){return e.getUTCDay()}function Tc(e,n){return M(gn.count(yt(e)-1,e),n,2)}function Sc(e,n){return M(e.getUTCFullYear()%100,n,2)}function Cc(e,n){return e=Za(e),M(e.getUTCFullYear()%100,n,2)}function Ec(e,n){return M(e.getUTCFullYear()%1e4,n,4)}function Pc(e,n){var t=e.getUTCDay();return e=t>=4||t===0?Ft(e):Ft.ceil(e),M(e.getUTCFullYear()%1e4,n,4)}function kc(){return"+0000"}function ms(){return"%"}function ys(e){return+e}function ws(e){return Math.floor(+e/1e3)}var Ct,Ia;Rc({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function Rc(e){return Ct=Rl(e),Ia=Ct.format,Ct.parse,Ct.utcFormat,Ct.utcParse,Ct}function $c(e){return new Date(e)}function Mc(e){return e instanceof Date?+e:+new Date(+e)}function Na(e,n,t,r,s,a,i,o,c,u){var d=Ra(),f=d.invert,m=d.domain,b=u(".%L"),T=u(":%S"),E=u("%I:%M"),x=u("%I %p"),S=u("%a %d"),Y=u("%b %d"),P=u("%B"),O=u("%Y");function L(C){return(c(C)<C?b:o(C)<C?T:i(C)<C?E:a(C)<C?x:r(C)<C?s(C)<C?S:Y:t(C)<C?P:O)(C)}return d.invert=function(C){return new Date(f(C))},d.domain=function(C){return arguments.length?m(Array.from(C,Mc)):m().map($c)},d.ticks=function(C){var Z=m();return e(Z[0],Z[Z.length-1],C??10)},d.tickFormat=function(C,Z){return Z==null?L:u(Z)},d.nice=function(C){var Z=m();return(!C||typeof C.range!="function")&&(C=n(Z[0],Z[Z.length-1],C??10)),C?m(dl(Z,C)):d},d.copy=function(){return ka(d,Na(e,n,t,r,s,a,i,o,c,u))},d}function Yc(){return Ta.apply(Na(Pl,kl,it,Ar,Ln,Ne,Lr,zr,Pt,Ia).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}const bs=[g.w.NANOSECOND,g.w.nanoseconds(2),g.w.nanoseconds(5),g.w.nanoseconds(10),g.w.nanoseconds(20),g.w.nanoseconds(50),g.w.nanoseconds(100),g.w.nanoseconds(200),g.w.nanoseconds(500),g.w.MICROSECOND,g.w.microseconds(2),g.w.microseconds(5),g.w.microseconds(10),g.w.microseconds(20),g.w.microseconds(50),g.w.microseconds(100),g.w.microseconds(200),g.w.microseconds(500),g.w.MILLISECOND,g.w.milliseconds(2),g.w.milliseconds(5),g.w.milliseconds(10),g.w.milliseconds(20),g.w.milliseconds(50),g.w.milliseconds(100),g.w.milliseconds(200),g.w.milliseconds(500),g.w.SECOND];class Oc{constructor(){h(this,"_domain");h(this,"_range");h(this,"_span");this._domain=[new g.m(0n),new g.m(1n)],this._range=[0,1],this._span=this._domain[1].span(this._domain[0])}domain(n){return n===void 0?this._domain:(this._domain=[new g.m(n[0]),new g.m(n[1])],this._span=this._domain[1].span(this._domain[0]),this)}range(n){return n===void 0?this._range:(this._range=n,this)}scale(n){const r=new g.m(n).valueOf(),s=this._domain[0].valueOf(),a=this._domain[1].valueOf()-s,i=this._range[1]-this._range[0];return Number(r-s)/Number(a)*i+this._range[0]}ticks(n){const t=this.calculateOptimalStep(n).valueOf(),r=this._domain[0].valueOf(),s=this._domain[1].valueOf(),a=(r+t-1n)/t*t,i=Number((s-a)/t);return Array.from({length:i+1},(o,c)=>{const u=a+BigInt(c)*t;return new g.m(u)}).filter(o=>o.afterEq(this._domain[0])&&o.beforeEq(this._domain[1]))}calculateOptimalStep(n){const t=this._span.valueOf()/BigInt(Math.ceil(n));let r=bs[0];for(const s of bs){if(s.valueOf()>t)break;r=s}return r}formatTick(n){return this._span.lessThan(g.w.microseconds(50))?`${n.remainder(g.w.MILLISECOND).microseconds.toString()}µs`:`${n.remainder(g.w.SECOND).milliseconds.toString()}ms`}}const zc=()=>new Oc,Zr=p.z.enum(["linear","time"]),Ir=p.z.object({tickSpacing:p.z.number().default(75),type:Zr.optional().default("linear")}),nr=e=>{const n=Ir.parse(e);return Ac[n.type](n)};class Lc{constructor(n){h(this,"props");this.props=n}create({decimalToDataScale:n,size:t}){const r=[0,t],s=new g.m(n.pos(0)),a=new g.m(n.pos(1));if(new g.w(a.sub(s)).milliseconds<5){const d=[s,a],f=zc().domain(d).range(r),m=rr(t,this.props.tickSpacing)/2;return f.ticks(m).map(T=>({label:f.formatTick(T),position:f.scale(T)}))}const o=[s.date(),a.date()],c=Yc().domain(o).range(r);return c.ticks(rr(t,this.props.tickSpacing)).map(d=>({label:this.tickLabel(d),position:c(d)}))}tickLabel(n){const t=new g.m(n).date();let r=`:${t.getSeconds()}`;if(t.getMilliseconds()!==0){const a=Math.round(t.getMilliseconds()).toString().padStart(3,"0").replace(/0+$/,"");r+=`.${a}`}return t.getSeconds()===0&&t.getMilliseconds()===0&&(r=`${t.getHours()}:${t.getMinutes().toString().padStart(2,"0")}`),r}}class Dc{constructor(n){h(this,"props");this.props=n}create({decimalToDataScale:n,size:t}){const r=[0,t],s=[n.pos(0),n.pos(1)],a=Oa().domain(s).range(r),i=rr(t,this.props.tickSpacing);return a.ticks(i).map(c=>({label:this.tickLabel(c),position:a(c)}))}tickLabel(n){return n.toString()}}const rr=(e,n)=>{const t=Math.floor(e/n);return t>0?t:1},Ac={linear:e=>new Dc(e),time:e=>new Lc(e)},Nr=Ir.extend({color:l.Color.z,type:Zr.optional().default("linear"),font:p.z.string(),showGrid:p.z.boolean().optional().default(!0),location:l.K.outer,gridColor:l.Color.z}),X=5;class vs{constructor(n,t){h(this,"numberDims");h(this,"negativeWidth");h(this,"periodWidth");h(this,"colonWidth");this.numberDims=ft.dimensions("0",t,n),this.negativeWidth=ft.dimensions("-",t,n).width,this.periodWidth=ft.dimensions(".",t,n).width,this.colonWidth=ft.dimensions(":",t,n).width}get(n){const t={width:0,height:this.numberDims.height};let r=n.length;return n.includes(".")&&(t.width+=this.periodWidth,r-=1),n.startsWith("-")&&(t.width+=this.negativeWidth,r-=1),n.includes(":")&&(t.width+=this.colonWidth,r-=1),t.width+=r*this.numberDims.width,t}}let Ua=class{constructor(n,t){h(this,"renderCtx");h(this,"state");h(this,"tickFactory");h(this,"dimensions");this.renderCtx=n,this.state=t,this.tickFactory=nr(this.state),this.dimensions=new vs(n.lower2d,t.font)}setState(n){this.state=w.prettyParse(Nr,n),this.tickFactory=nr(n),this.dimensions=new vs(this.renderCtx.lower2d,this.state.font)}render(n){const{lower2d:t}=this.renderCtx;switch(t.font=this.state.font,t.fillStyle=this.state.color.hex,t.lineWidth=1,this.state.location){case"left":return this.drawLeft(n);case"right":return this.drawRight(n);case"top":return this.drawTop(n);default:return this.drawBottom(n)}}drawBottom(n){const{lower2d:t}=this.renderCtx,{plot:r}=n,s=l.$t.width(r),a=l.$t.height(r),i=n.position,o=this.tickFactory.create({...n,size:s});return this.maybeDrawGrid(s,o,u=>[l.J.translate(i,"x",u.position),l.J.translate(i,{x:u.position,y:-a})]),t.strokeStyle=this.state.color.hex,this.drawLine(i,l.J.translate(i,"x",s)),{size:this.drawTicks(o,(u,d)=>{t.moveTo(i.x+d.position,i.y),t.lineTo(i.x+d.position,i.y+X),t.stroke(),t.fillText(d.label,i.x+d.position-u.width/2,i.y+10+u.height)}).height+X+6}}drawTop(n){const{lower2d:t}=this.renderCtx,{plot:r}=n,s=l.$t.width(r),a=l.$t.height(r),i=l.J.translate(n.position,"y",n.size),o=this.tickFactory.create({...n,size:s});return this.maybeDrawGrid(s,o,u=>[l.J.translate(i,"x",u.position),l.J.translate(i,{x:u.position,y:a})]),t.strokeStyle=this.state.color.hex,this.drawLine(i,l.J.translate(i,"x",s)),{size:this.drawTicks(o,(u,d)=>{t.moveTo(i.x+d.position,i.y),t.lineTo(i.x+d.position,i.y-X),t.stroke(),t.fillText(d.label,i.x+d.position-u.width/2,i.y-5-u.height)}).height+X}}drawLeft(n){const{lower2d:t}=this.renderCtx,{plot:r}=n,s=l.$t.height(r),a=l.$t.width(r),i=l.J.translate(n.position,"x",n.size),o=this.tickFactory.create({...n,size:s});return this.maybeDrawGrid(s,o,u=>[l.J.translate(i,"y",u.position),l.J.translate(i,{x:a,y:u.position})]),t.strokeStyle=this.state.color.hex,this.drawLine(i,l.J.translate(i,"y",s)),{size:this.drawTicks(o,(u,d)=>{t.moveTo(i.x,i.y+d.position),t.lineTo(i.x-X,i.y+d.position),t.stroke(),t.fillText(d.label,i.x-u.width-X*2,i.y+d.position+u.height/3)}).width+X*2}}drawRight(n){const{lower2d:t}=this.renderCtx,{plot:r}=n,s=l.$t.height(r),a=l.$t.width(r),i=n.position,o=this.tickFactory.create({...n,size:s});return this.maybeDrawGrid(s,o,u=>[l.J.translate(i,"y",u.position),l.J.translate(i,{x:-a,y:u.position})]),t.strokeStyle=this.state.color.hex,this.drawLine(i,l.J.translate(i,"y",s)),{size:this.drawTicks(o,(u,d)=>{t.moveTo(i.x,i.y+d.position),t.lineTo(i.x+X,i.y+d.position),t.stroke(),t.fillText(d.label,i.x+X+2,i.y+d.position+u.height/3)}).width+X*2}}drawLine(n,t){const{lower2d:r}=this.renderCtx;r.beginPath(),r.moveTo(...l.J.couple(n)),r.lineTo(...l.J.couple(t)),r.stroke()}drawTicks(n,t){let r=l._.ZERO;return n.forEach(s=>{const a=this.dimensions.get(s.label);r=l._.max([r,a]),t(a,s)}),r}maybeDrawGrid(n,t,r){const{showGrid:s,gridColor:a}=this.state;if(s){const i=l.G.construct(-1,1),o=l.G.construct(n-1,n+1);this.renderCtx.lower2d.strokeStyle=a.hex,t.filter(({position:c})=>!l.G.contains(i,c)&&!l.G.contains(o,c)).forEach(c=>this.drawLine(...r(c)))}}};const Ue=Nr.extend({bounds:l.G.bounds.optional(),autoBounds:p.z.object({lower:p.z.boolean().optional().default(!0),upper:p.z.boolean().optional().default(!0)}).or(p.z.boolean().optional().default(!0)),autoBoundPadding:p.z.number().optional(),autoBoundUpdateInterval:g.w.z.optional().default(g.w.seconds(10)),size:p.z.number().optional().default(0),label:p.z.string().optional().default(""),labelSize:p.z.number().optional().default(0)}).partial({color:!0,font:!0,gridColor:!0}),Zc=2,Ic=7,_a=(e,n)=>l.G.contains({lower:e-Ic,upper:e+Zc},n),Nc=l.G.DECIMAL,xs=g.m.now(),Uc={lower:Number(xs.valueOf()),upper:Number(xs.add(g.w.HOUR).valueOf())},Ba=e=>e==="linear"?Nc:Uc,_c=(e,n=.1,t)=>{const r=l.G.max(e.filter(l.G.isFinite));if(!l.G.isFinite(r))return Ba(t);const{lower:s,upper:a}=r;if(a===s)return{lower:s-1,upper:a+1};const i=(a-s)*n;return{lower:s-i,upper:a+i}},Bc=.01,Fc=.1;class Fa extends w.Composite{async afterUpdate(n){var r,s;this.internal.render=B.Context.use(n);const t=w.use(n);(r=this.state).autoBoundPadding??(r.autoBoundPadding=l.g.construct(this.state.location)==="x"?Fc:Bc),this.internal.core=new Ua(this.internal.render,{color:t.colors.gray.l10,font:ee.fontString(t,{level:"small",code:!0}),gridColor:t.colors.gray.l1,...this.state}),I.requestRender(n,tt),(s=this.internal).updateBounds??(s.updateBounds=ks.r(a=>this.setState(i=>({...i,bounds:a})),this.state.autoBoundUpdateInterval.milliseconds))}async afterDelete(n){I.requestRender(n,tt)}renderAxis(n,t){if(!n.canvases.includes("lower2d"))return;const{core:r}=this.internal,{grid:s,container:a}=n,i=fo(`${this.type}-${this.key}`,s,a),o={...n,position:i,decimalToDataScale:t,size:this.state.size+this.state.labelSize},{size:c}=r.render(o);_a(this.state.size,c)||this.setState(u=>({...u,size:c}))}async bounds(n,t){var u,d;if(n&&this.internal.boundSnapshot!=null)return[this.internal.boundSnapshot,null];const{lower:r,upper:s}=qa(this.state.autoBounds);if(!r&&!s&&this.state.bounds!=null)return this.internal.boundSnapshot=this.state.bounds,[this.state.bounds,null];const a=f=>({upper:s||this.state.bounds==null?f.upper:this.state.bounds.upper,lower:r||this.state.bounds==null?f.lower:this.state.bounds.lower});let i,o=null;try{const f=await t();i=_c(f,this.state.autoBoundPadding,this.state.type)}catch(f){i=Ba(this.state.type),o=f}const c=a(i);return this.internal.boundSnapshot=c,(this.state.bounds==null||r&&this.state.bounds.lower!==c.lower||s&&this.state.bounds.upper!==c.upper)&&((d=(u=this.internal).updateBounds)==null||d.call(u,c)),[c,o]}async dataToDecimalScale(n,t,r){const[s,a]=await this.bounds(n,t),i=l.g.swap(l.g.construct(this.state.location));return[l.b.Scale.scale(s).scale(1).translate(-l.$t.root(r)[i]).magnify(1/l.$t.dim(r,i)),a]}}const qa=e=>typeof e=="boolean"?{lower:e,upper:e}:{lower:(e==null?void 0:e.lower)??!0,upper:(e==null?void 0:e.upper)??!0},Ts=`#version 300 es
7
- precision lowp float;
8
-
9
- uniform lowp vec4 u_color;
10
- out vec4 fragColor;
11
-
12
- void main(void) {
13
- fragColor = u_color;
14
- }
15
- `,qc=`#version 300 es
16
-
17
- // Copyright 2025 Synnax Labs, Inc.
18
- //
19
- // Use of this software is governed by the Business Source License included in the file
20
- // licenses/BSL.txt.
21
- //
22
- // As of the Change Date specified in that file, in accordance with the Business Source
23
- // License, use of this software will be governed by the Apache License, Version 2.0,
24
- // included in the file licenses/APL.txt.
25
-
26
- in mediump float a_x;
27
- in mediump float a_y;
28
- in mediump vec2 a_translate;
29
-
30
- uniform mediump vec2 u_scale_aggregate;
31
- uniform mediump vec2 u_offset_aggregate;
32
-
33
- void main(void) {
34
- gl_Position = vec4((u_scale_aggregate * vec2(a_x, a_y) + u_offset_aggregate) + a_translate, 0.0, 1.0);
35
- }
36
- `,Gc=`#version 300 es
37
-
38
- // Copyright 2025 Synnax Labs, Inc.
39
- //
40
- // Use of this software is governed by the Business Source License included in the file
41
- // licenses/BSL.txt.
42
- //
43
- // As of the Change Date specified in that file, in accordance with the Business Source
44
- // License, use of this software will be governed by the Apache License, Version 2.0,
45
- // included in the file licenses/APL.txt.
46
-
47
- in mediump float a_x;
48
- in mediump uint a_y;
49
- in mediump vec2 a_translate;
50
-
51
- uniform mediump vec2 u_scale_aggregate;
52
- uniform mediump vec2 u_offset_aggregate;
53
-
54
- void main(void) {
55
- gl_Position = vec4((u_scale_aggregate * vec2(a_x, float(a_y)) + u_offset_aggregate) + a_translate, 0.0, 1.0);
56
- }
57
- `,Ga=p.z.object({x:sn,y:sn,label:p.z.string().optional(),color:l.Color.z,strokeWidth:p.z.number().default(1),downsample:p.z.number().min(1).max(50).optional().default(1),visible:p.z.boolean().optional().default(!0)}),jc=(e,n,t)=>e===-1||n===-1||e>=t.length?NaN:Number(t[e].at(n)),Hc=g.w.milliseconds(2);l.J.NAN,l.J.NAN,l.G.ZERO;const Jc=(e,n)=>n.equals(g.g$1.UINT8)?e.UNSIGNED_BYTE:e.FLOAT;class Ss extends B.GLProgram{constructor(t,r,s){super(t,r,s);h(this,"translationBufferCache",new Map);this.translationBufferCache=new Map}bindState({strokeWidth:t,color:r}){return this.uniformColor("u_color",r),this.attrStrokeWidth(t)}bindScale(t,r){const s=l.J.scale(t.scale,r.scale),a=l.J.translate(l.J.scale(r.scale,t.offset),r.offset);this.uniformXY("u_scale_aggregate",s),this.uniformXY("u_offset_aggregate",a)}draw({x:t,y:r,count:s,downsample:a,xOffset:i,yOffset:o},c,u,d){const{gl:f}=this.renderCtx;this.bindAttrBuffer("x",t.glBuffer,a,i,u),this.bindAttrBuffer("y",r.glBuffer,a,o,d),f.drawArraysInstanced(f.LINE_STRIP,0,s/a,c)}bindAttrBuffer(t,r,s,a=0,i){const{gl:o}=this.renderCtx;o.bindBuffer(o.ARRAY_BUFFER,r);const c=o.getAttribLocation(this.prog,`a_${t}`),u=Jc(o,i),d=i.density.valueOf();i.equals(g.g$1.UINT8)?o.vertexAttribIPointer(c,1,u,d*s,d*a):o.vertexAttribPointer(c,1,u,!1,d*s,d*a),o.enableVertexAttribArray(c)}getAndBindTranslationBuffer(t){const{gl:r}=this.renderCtx,s=`${this.renderCtx.aspect}:${t}`,a=this.translationBufferCache.get(s);if(a!=null)return r.bindBuffer(r.ARRAY_BUFFER,a.glBuffer),a;const i=r.createBuffer();if(i==null)throw new w.Ze("Failed to create buffer from WebGL context");const o=Vc(this.renderCtx.aspect,t);r.bindBuffer(r.ARRAY_BUFFER,i),r.bufferData(r.ARRAY_BUFFER,o,r.DYNAMIC_DRAW);const c={glBuffer:i,jsBuffer:o};return this.translationBufferCache.set(s,c),c}attrStrokeWidth(t){const{gl:r}=this.renderCtx,{jsBuffer:s}=this.getAndBindTranslationBuffer(t),a=r.getAttribLocation(this.prog,"a_translate");return r.vertexAttribPointer(a,2,r.FLOAT,!1,0,0),r.enableVertexAttribArray(a),r.vertexAttribDivisor(a,1),s.length/2}}const kt=class kt{constructor(n){h(this,"uint8HybridProgram");h(this,"float32Program");this.uint8HybridProgram=new Ss(n,Gc,Ts),this.float32Program=new Ss(n,qc,Ts)}get gl(){return this.uint8HybridProgram.renderCtx.gl}getProgram(n){return n.equals(g.g$1.UINT8)?this.uint8HybridProgram:this.float32Program}static create(n,t){const r=new kt(t);return n.set(kt.CONTEXT_KEY,r),r}static use(n){const t=n.get(kt.CONTEXT_KEY);if(t==null)throw new w.Ze("GLProgram not found");return t}};h(kt,"CONTEXT_KEY","pluto-line-gl-program");let mn=kt;class Ce extends w.Leaf{constructor(){super(...arguments);h(this,"schema",Ga)}async afterUpdate(t){var s,a;if(this.deleted)return;const{internal:r}=this;r.xTelem=await H(t,this.state.x,r.xTelem),r.yTelem=await H(t,this.state.y,r.yTelem),r.instrumentation=Ze(t,"line"),r.ctx=mn.use(t),r.requestRender=I.useRequest(t),(s=r.stopListeningXTelem)==null||s.call(r),(a=r.stopListeningYTelem)==null||a.call(r),r.stopListeningXTelem=r.xTelem.onChange(()=>r.requestRender(Hn)),r.stopListeningYTelem=r.yTelem.onChange(()=>r.requestRender(Hn)),r.requestRender(tt)}async afterDelete(){var r,s,a,i;const{internal:t}=this;await((s=(r=t.xTelem).cleanup)==null?void 0:s.call(r)),await((i=(a=t.yTelem).cleanup)==null?void 0:i.call(a)),t.requestRender(tt)}async xBounds(){return(await this.internal.xTelem.value())[0]}async yBounds(){return(await this.internal.yTelem.value())[0]}async findByXValue(t,r){const{xTelem:s,yTelem:a}=this.internal,[,i]=await s.value();let[o,c]=[-1,-1];i.find((S,Y)=>{const P=S.binarySearch(r),O=P>=0&&P<S.length;return O&&([o,c]=[P,Y]),O});const{key:u}=this,{color:d,label:f}=this.state,m={key:u,color:d,label:f,position:{x:0,y:0},value:{x:NaN,y:NaN},bounds:{lower:0,upper:0}};if(o===-1||c===-1||!this.state.visible)return m;const b=i[c];m.value.x=jc(c,o,i);const[,T]=await a.value(),E=T.find(S=>l.G.contains(S.alignmentBounds,b.alignment+BigInt(o)));if(E==null)return m;const x=Number(E.alignment-b.alignment);return m.value.y=Number(E.at(o-x)),m.bounds={...E.bounds},m.position={x:t.dataToDecimalScale.x.pos(m.value.x),y:t.dataToDecimalScale.y.pos(m.value.y)},m}async render(t){if(this.deleted||!this.state.visible)return;const{downsample:r}=this.state,{xTelem:s,yTelem:a,ctx:i}=this.internal,{dataToDecimalScale:o,exposure:c}=t,[[,u],[,d]]=await Promise.all([s.value(),a.value()]);if(u.forEach(x=>x.updateGLBuffer(i.gl)),d.forEach(x=>x.updateGLBuffer(i.gl)),u.length===0||d.length===0)return;const f=i.getProgram(d[0].dataType),m=nu(u,d,c,r,Hc);this.internal.instrumentation.L.debug("render",()=>({key:this.key,downsample:r,scale:o.transform,props:t.region,ops:ru(m)}));const b=f.setAsActive(),T=f.bindState(this.state),E=f.renderCtx.scaleRegion(t.region).transform;m.forEach(x=>{const S=tu(o,x).transform;f.bindScale(S,E),f.draw(x,T,u[0].dataType,d[0].dataType)}),b()}}h(Ce,"TYPE","line");const Wc=5e3,Vc=(e,n)=>Qc(Kc(e),n).map((t,r)=>Math.floor(r/Xc)*(1/(Wc*e))*t),Xc=5,Kc=e=>new Float32Array([0,0,0,e,0,-e,1,0,-1,0]),Qc=(e,n)=>{const t=new Float32Array(e.length*n);for(let r=0;r<n;r++)t.set(e,r*e.length);return t},tu=(e,n)=>e.translate(e.x.dim(Number(n.x.sampleOffset)),e.y.dim(Number(n.y.sampleOffset))),eu={[Ce.TYPE]:Ce},nu=(e,n,t,r,s)=>{if(e.length===0||n.length===0)return[];const a=[];return e.forEach(i=>n.forEach(o=>{if(!su(i,o,s))return;let c=0,u=0;i.alignment<o.alignment?c=Number(o.alignment-i.alignment):o.alignment<i.alignment&&(u=Number(i.alignment-o.alignment));const d=Math.min(i.length-c,o.length-u);if(d===0)return;const f=l.Y(Math.round(t*4*d),r,51);a.push({x:i,y:o,xOffset:c,yOffset:u,count:d,downsample:f})})),a},ru=e=>e.map(n=>({...n,x:n.x.digest,y:n.y.digest})),su=(e,n,t)=>{if(!(e._timeRange!=null&&n._timeRange!=null))throw new w.Ze(`Encountered series without time range in buildDrawOperations. X series present: ${e._timeRange!=null}, Y series present: ${n._timeRange!=null}`);const s=e.timeRange.overlapsWith(n.timeRange,t),a=l.G.overlapsWith(e.alignmentBounds,n.alignmentBounds);return s&&a};class Vt{constructor(n,t){h(this,"canvas");h(this,"theme");this.canvas=n,this.theme=t}rule({direction:n,region:t,position:r,...s}){return n==="x"?this.line({start:l.J.construct(l.$t.left(t),r),end:l.J.construct(l.$t.right(t),r),...s}):this.line({start:l.J.construct(r,l.$t.top(t)),end:l.J.construct(r,l.$t.bottom(t)),...s})}line({stroke:n,lineWidth:t,lineDash:r,start:s,end:a}){const i=this.canvas;i.strokeStyle=n.hex,i.lineWidth=t,i.setLineDash([r]),i.beginPath(),i.moveTo(...l.J.couple(s)),i.lineTo(...l.J.couple(a)),i.stroke()}circle({fill:n,radius:t,position:r}){const s=this.canvas;s.fillStyle=n.hex,s.beginPath(),s.arc(...l.J.couple(r),t,0,2*Math.PI),s.fill()}resolveColor(n,t){return n==null?this.resolveColor(t):typeof n=="function"?n(this.theme):new l.Color(n)}border({region:n,color:t,width:r,radius:s,location:a}){const i=this.canvas;i.strokeStyle=this.resolveColor(t,this.theme.colors.border).hex,i.lineWidth=r??this.theme.sizes.border.width,s??(s=this.theme.sizes.border.radius),a==null||a===!0?s>0?(i.roundRect(...l.J.couple(l.$t.topLeft(n)),...l.J.couple(l.$t.dims(n)),s),i.stroke()):(i.rect(...l.J.couple(l.$t.topLeft(n)),...l.J.couple(l.$t.dims(n))),i.stroke()):$s.A(a).forEach(o=>{const[c,u]=l.$t.edgePoints(n,o);i.beginPath(),i.moveTo(...l.J.couple(c)),i.lineTo(...l.J.couple(u)),i.stroke()})}container({region:n,bordered:t=!0,rounded:r=!0,borderColor:s,borderRadius:a,borderWidth:i,backgroundColor:o}){a??(a=this.theme.sizes.border.radius),i??(i=1);const c=this.canvas;c.fillStyle=this.resolveColor(o,this.theme.colors.gray.l1).hex,c.strokeStyle=this.resolveColor(s,this.theme.colors.border).hex,c.setLineDash([]),c.lineWidth=1,c.beginPath(),r?c.roundRect(...l.J.couple(l.$t.topLeft(n)),...l.J.couple(l.$t.dims(n)),a):c.rect(...l.J.couple(l.$t.topLeft(n)),...l.J.couple(l.$t.dims(n))),c.fill(),t&&this.border({region:n,color:s,radius:a,width:i,location:t})}textContainer(n){const[t,r]=this.spacedTextDrawF(n);t.width+=12,t.height+=12;const{root:s=l.K.TOP_LEFT,offset:a=l.J.ZERO}=n,i={...n.position};s.x==="right"?i.x-=t.width+a.x:i.x+=a.x,s.y==="bottom"?i.y-=t.height+a.y:i.y+=a.y,this.container({region:l.$t.construct(i,t.width,t.height),...n}),this.canvas.filter="none",r(l.J.translate(i,[6,6]))}spacedTextDrawF({text:n,direction:t,spacing:r=1,level:s="p"}){const a=ee.fontString(this.theme,{level:s}),i=n.map(u=>ft.dimensions(u,a,this.canvas)),o=this.theme.sizes.base*r,c=Math.max(...i.map(u=>u[l.g.dimension(t)]))+o;return[{[l.g.dimension(l.g.swap(t))]:Math.max(...i.map(u=>u[l.g.dimension(l.g.swap(t))])),[l.g.dimension(t)]:c*n.length-o},u=>{const d=ee.fontString(this.theme,{level:s});this.canvas.font=d,this.canvas.fillStyle=this.theme.colors.text.hex,this.canvas.textBaseline="top",n.forEach((f,m)=>{this.canvas.fillText(f,u.x,u.y+c*m)})}]}list({length:n,itemHeight:t,width:r,spacing:s=0,position:a,draw:i,root:o=l.K.TOP_LEFT,offset:c=l.J.ZERO,padding:u=l.J.ZERO}){const d=n*t+u.y*2+s*(n-1),f=r+u.x*2,m={...a};o.x==="right"?m.x-=r+c.x*2:m.x+=c.x,o.y==="top"?m.y-=d+c.y*2:m.y+=c.y,this.container({region:l.$t.construct(m,{width:f,height:d}),backgroundColor:b=>b.colors.gray.l1});for(let b=0;b<n;b++){const T=l.$t.construct(l.J.construct(m.x+u.x,m.y+b*t+u.y+s*b),r,t);i(b,T)}}drawTextInCenter({box:n,text:t,level:r}){const s=ft.dimensions(t,this.canvas.font,this.canvas),a=l.$t.positionInCenter(l.$t.construct(l.J.ZERO,s),n);return this.text({text:t,position:l.$t.topLeft(a),level:r})}text({text:n,position:t,level:r="p",weight:s,shade:a,maxWidth:i,code:o,justify:c="left",align:u="top",color:d}){this.canvas.font=ee.fontString(this.theme,{level:r,weight:s,code:o}),d!=null?this.canvas.fillStyle=this.resolveColor(d).hex:a==null?this.canvas.fillStyle=this.theme.colors.text.hex:this.canvas.fillStyle=this.theme.colors.gray[`l${a}`].hex,this.canvas.textAlign=c,this.canvas.textBaseline=u;let f;i!=null&&(f=this.canvas.scissor(l.$t.construct(t,i,1e3))),this.canvas.fillText(n,t.x,t.y),f==null||f()}}const Ur=p.z.object({position:p.z.number().optional(),pixelPosition:p.z.number().optional(),dragging:p.z.boolean(),lineWidth:p.z.number().optional().default(1),lineDash:p.z.number().optional().default(20),color:l.Color.z}),au=3;class qt extends w.Leaf{constructor(){super(...arguments);h(this,"schema",Ur);h(this,"lastUpdateRef",null)}async afterUpdate(t){this.internal.renderCtx=B.Context.use(t);const r=w.use(t);this.internal.draw=new Vt(this.internal.renderCtx.upper2d,r),I.requestRender(t,st)}async afterDelete(t){I.requestRender(t,st)}updatePositions({decimalToDataScale:t,plot:r}){const s=this.state.dragging,a=this.prevState.dragging&&!s;if((s||a)&&this.state.pixelPosition!=null){if(this.lastUpdateRef??(this.lastUpdateRef=this.state.pixelPosition),Math.abs(this.state.pixelPosition-this.lastUpdateRef)<au&&!a)return this.state.pixelPosition;this.lastUpdateRef=this.state.pixelPosition;const c=t.pos(this.state.pixelPosition/l.$t.height(r));return this.setState(u=>({...u,position:c})),this.state.pixelPosition}if(this.state.position==null){const o=t.pos(.5);this.setState(c=>({...c,position:o}))}const i=t.reverse().pos(this.state.position)*l.$t.height(r);if(!isNaN(i)){if(this.state.pixelPosition!=null&&Math.abs(i-this.state.pixelPosition)<1)return this.state.pixelPosition;this.setState(o=>({...o,pixelPosition:i}))}return i}async render(t){if(this.deleted)return;const{renderCtx:r}=this.internal,{location:s,plot:a}=t,i=l.K.direction(s),{upper2d:o}=r,c=this.internal.draw,u=this.updatePositions(t)+l.$t.top(t.plot);c.rule({stroke:this.state.color,lineWidth:this.state.lineWidth,lineDash:this.state.lineDash,direction:i,region:a,position:u}),o.fillStyle=this.state.color.hex,o.lineJoin="round",o.lineWidth=3.5,o.lineCap="round",o.beginPath();const d=4;if(s==="left"){const f=l.$t.left(a)-1;o.moveTo(f,u),o.lineTo(f-d,u-d),o.lineTo(f-d,u+d)}else s==="right"&&(o.moveTo(l.$t.right(a),u),o.lineTo(l.$t.right(a)+d,u-d),o.lineTo(l.$t.right(a)+d,u+d));o.closePath(),o.stroke()}}h(qt,"TYPE","Rule");const ja={[qt.TYPE]:qt},iu=Object.freeze(Object.defineProperty({__proto__:null,REGISTRY:ja,Rule:qt,ruleStateZ:Ur},Symbol.toStringTag,{value:"Module"})),ou=Ue.extend({location:l.K.x.optional().default("left")}),Cs=2,lu=e=>l.$t.signedWidth(e)<Cs||l.$t.signedHeight(e)<Cs;class Ee extends Fa{constructor(){super(...arguments);h(this,"schema",Ue)}async xBounds(){return l.G.max((await Promise.all(this.lines.map(async t=>await t.xBounds()))).filter(t=>l.G.isFinite(t)))}async render(t){if(this.deleted)return;const[r,s]=await this.dataToDecimalScale(t.hold,this.dataBounds.bind(this),t.viewport),a=r.invert().reverse();if(this.renderAxis(t,a),await this.renderLines(t,r),await this.renderRules(t,a),s!=null)throw s}async renderLines({xDataToDecimalScale:t,plot:r,canvases:s,exposure:a},i){if(!s.includes("gl")||lu(r))return;const o={region:r,dataToDecimalScale:new l.b.XY(t,i),exposure:a};await Promise.all(this.lines.map(async c=>await c.render(o)))}async renderRules({container:t,plot:r,canvases:s},a){if(!s.includes("upper2d"))return;const{location:i}=this.state,{render:o}=this.internal,c=l.$t.construct(l.$t.left(t),l.$t.top(r),l.$t.width(t),l.$t.height(r)),u=o.scissor(c,l.J.ZERO,["upper2d"]),d={container:t,plot:r,decimalToDataScale:a,location:i};await Promise.all(this.rules.map(async f=>await f.render(d))),u()}async findByXValue({xDataToDecimalScale:t,plot:r,viewport:s,hold:a,exposure:i},o){const[c,u]=await this.dataToDecimalScale(a,this.dataBounds.bind(this),s);if(u!=null)throw u;const d=new l.b.XY(t,c),f={region:r,dataToDecimalScale:d,exposure:i};return(await Promise.all(this.lines.map(async m=>await m.findByXValue(f,o)))).map(m=>({...m,units:this.state.label}))}async dataBounds(){return await Promise.all(this.lines.map(async t=>await t.yBounds()))}get lines(){return this.childrenOfType(Ce.TYPE)}get rules(){return this.childrenOfType(qt.TYPE)}}h(Ee,"TYPE","YAxis");const Ha=p.z.object({start:g.m.z,end:g.m.z});class yn extends w.Leaf{constructor(){super(...arguments);h(this,"schema",Ha)}async afterUpdate(t){this.internal.render=B.Context.use(t),this.internal.draw=new Vt(this.internal.render.upper2d,w.use(t))}async render(){}}h(yn,"TYPE","range-annotation");const cu=w.$m.payloadZ.extend({viewport:l.G.bounds}),Es=e=>l.Color.z.safeParse(e).success,Ja=p.z.object({cursor:l.J.xy.or(p.z.null()),hovered:cu.or(p.z.null()),count:p.z.number()});class Pe extends w.Leaf{constructor(){super(...arguments);h(this,"schema",Ja);h(this,"fetchedInitial",g.U.ZERO)}async afterUpdate(t){const{internal:r}=this;r.render=B.Context.use(t),r.draw=new Vt(r.render.upper2d,w.use(t)),r.ranges??(r.ranges=new Map);const s=Le(t);s!=null&&(r.client=s,r.tracker==null&&(r.tracker=await r.client.ranges.openTracker(),r.tracker.onChange(a=>{a.forEach(i=>{i.variant==="delete"?r.ranges.delete(i.key):Es(i.value.color)&&r.ranges.set(i.key,i.value)}),I.requestRender(t,st),this.setState(i=>({...i,count:r.ranges.size}))}),I.requestRender(t,st)))}async fetchInitial(t){const{internal:r}=this;if(r.client==null||this.fetchedInitial.roughlyEquals(t,g.w.minutes(1)))return;this.fetchedInitial=t,(await r.client.ranges.retrieve(t)).forEach(a=>{Es(a.color)&&r.ranges.set(a.key,a)}),this.setState(a=>({...a,count:r.ranges.size}))}async render(t){const{dataToDecimalScale:r,region:s,viewport:a,timeRange:i}=t;await this.fetchInitial(i);const{draw:o,ranges:c}=this.internal,u=r.scale(l.$t.xBounds(s)),d=this.state.cursor==null?null:this.state.cursor.x;let f=null;const m=o.canvas.scissor(l.$t.construct({x:l.$t.left(s),y:l.$t.top(s)-35},{x:l.$t.right(s),y:l.$t.bottom(s)}));c.forEach(b=>{const T=l.Color.z.safeParse(b.color);if(!T.success)return;const E=T.data;let x=u.pos(Number(b.timeRange.start.valueOf()));const S=u.pos(Number(b.timeRange.end.valueOf()));if(S<l.$t.left(s)||x>l.$t.right(s))return;x=l.Y(x,l.$t.left(s)-2,l.$t.right(s)-1);let Y=!1;d!=null&&(Y=l.G.contains({lower:x,upper:S},d)),Y&&(f={key:b.key,name:b.name,color:b.color,timeRange:b.timeRange,viewport:{lower:r.scale(l.$t.xBounds(a)).pos(Number(b.timeRange.start.valueOf())),upper:r.scale(l.$t.xBounds(a)).pos(Number(b.timeRange.end.valueOf()))}}),o.container({region:l.$t.construct({x,y:l.$t.top(s)-1},{x:S,y:l.$t.bottom(s)-1}),backgroundColor:E.setAlpha(.2),bordered:!1});const P=l.$t.construct({x:x+1,y:l.$t.top(s)-34},{x:S-1,y:l.$t.top(s)-12});o.container({region:P,backgroundColor:l.$t.width(P)<20?E.setAlpha(.4):O=>Y?O.colors.gray.l2:O.colors.gray.l0,bordered:!0,borderWidth:1,borderRadius:2,borderColor:E.setAlpha(.8)}),o.text({text:b.name,position:{x:x+8,y:l.$t.top(s)-30},level:"small",shade:8,weight:500,maxWidth:S-x-16})}),m(),f!=null?this.setState(b=>({...b,hovered:f})):this.state.hovered&&this.setState(b=>({...b,hovered:null}))}}h(Pe,"TYPE","range-provider");const uu={[yn.TYPE]:yn,[Pe.TYPE]:Pe},hu=Ue;class ke extends Fa{constructor(){super(...arguments);h(this,"schema",Ue)}async render(t){if(this.deleted)return;const[r,s]=await this.dataToDecimalScale(t.hold,this.dataBounds.bind(this),t.viewport);if(this.renderAxis(t,r.reverse()),await this.renderYAxes(t,r),await this.renderRangeAnnotations(t,r),s!=null)throw s}async findByXDecimal(t,r){const[s,a]=await this.dataToDecimalScale(t.hold,this.dataBounds.bind(this),t.viewport);if(a!=null)throw a;return await this.findByXValue(t,s.reverse().pos(r))}async findByXValue(t,r){const[s,a]=await this.dataToDecimalScale(t.hold,this.dataBounds.bind(this),t.viewport);if(a!=null)throw a;const i={...t,xDataToDecimalScale:s},o=this.yAxes.map(async c=>await c.findByXValue(i,r));return(await Promise.all(o)).flat()}async renderYAxes(t,r){const s={...t,xDataToDecimalScale:r};await Promise.all(this.yAxes.map(async a=>await a.render(s)))}get yAxes(){return this.childrenOfType(Ee.TYPE)}get rangeAnnotations(){return this.childrenOfType(Pe.TYPE)}async renderRangeAnnotations(t,r){const[s,a]=await this.bounds(t.hold,this.dataBounds.bind(this));if(a!=null)throw a;await Promise.all(this.rangeAnnotations.map(async i=>await i.render({dataToDecimalScale:r,region:t.plot,viewport:t.viewport,timeRange:new g.U(s.lower,s.upper)})))}async dataBounds(){return await Promise.all(this.yAxes.map(async t=>await t.xBounds()))}}h(ke,"TYPE","XAxis");const du=l.J.construct(12),fu=3,pu=14,gu=l.J.construct(6),_r=p.z.object({position:l.J.xy.or(p.z.null()),textColor:l.Color.z.optional().default(l.ZERO),backgroundColor:l.Color.z.optional().default(l.ZERO),borderColor:l.Color.z.optional().default(l.ZERO),ruleColor:l.Color.z.optional().default(l.ZERO),ruleStrokeWidth:p.z.number().optional().default(1),ruleStrokeDash:p.z.number().default(0)});class Gt extends w.Leaf{constructor(){super(...arguments);h(this,"schema",_r)}async afterUpdate(t){const r=w.use(t);this.state.textColor.isZero&&(this.state.textColor=r.colors.text),this.state.backgroundColor.isZero&&(this.state.backgroundColor=r.colors.gray.l1),this.state.borderColor.isZero&&(this.state.borderColor=r.colors.border),this.state.ruleColor.isZero&&(this.state.ruleColor=r.colors.gray.l7),this.internal.dotColor=r.colors.text,this.internal.dotColorContrast=r.colors.textInverted,this.internal.render=B.Context.use(t),this.internal.draw=new Vt(this.internal.render.upper2d,r),I.requestRender(t,st)}async afterDelete(t){I.requestRender(t,st)}async render(t){if(this.deleted||this.state.position==null)return;const{region:r}=t,s=l.b.XY.scale(l.$t.DECIMAL).scale(r),a=l.b.XY.scale(r).scale(l.$t.DECIMAL),i=await t.findByXDecimal(a.x.pos(this.state.position.x)),o=i.filter(x=>l.J.isFinite(x.value)),{draw:c}=this.internal,u=o.reduce((x,S)=>x+S.position.x,0)/o.length,d=new g.m(o.reduce((x,S)=>x+S.value.x,0)/o.length),f=s.x.pos(u);if(!l.G.contains(l.$t.xBounds(r),f))return;c.rule({stroke:this.state.ruleColor,lineWidth:this.state.ruleStrokeWidth,lineDash:this.state.ruleStrokeDash,direction:"y",region:r,position:f}),o.forEach(x=>{const S=s.pos(x.position);c.circle({fill:x.color.setAlpha(.5),radius:8,position:S}),c.circle({fill:x.color.setAlpha(.8),radius:5,position:S}),c.circle({fill:x.color.pickByContrast(this.internal.dotColor,this.internal.dotColorContrast),radius:2,position:S})});const m=a.pos(this.state.position),b={...l.K.TOP_LEFT};m.x>.6&&(b.x="right"),m.y>.6&&(b.y="bottom");let T=i.reduce((x,S)=>{var Y;return Math.max(x,((Y=S.label)==null?void 0:Y.length)??0)},0);const E=d.fString("preciseDate","local").length;E>T&&(T=E),c.list({root:b,offset:du,length:o.length+1,padding:gu,itemHeight:pu,spacing:fu,width:T*7+48,position:this.state.position,draw:(x,S)=>{let Y="",P="",O=this.state.textColor;if(x===0)Y="Time",P=d.fString("preciseDate","local");else{const L=o[x-1];Y=L.label??"",P=g.be.roundBySpan(L.value.y,L.bounds).toString(),O=L.color}c.text({position:l.$t.topLeft(S),text:Y,level:"small",weight:500,color:O}),c.text({position:l.J.translateY(l.$t.topRight(S),-1),text:P,level:"small",justify:"right",code:!0,shade:10})}})}}h(Gt,"TYPE","tooltip");const Wa={[Gt.TYPE]:Gt},mu=Object.freeze(Object.defineProperty({__proto__:null,REGISTRY:Wa,Tooltip:Gt,tooltipStateZ:_r},Symbol.toStringTag,{value:"Module"})),Br=p.z.object({one:l.J.xy.nullable(),two:l.J.xy.nullable(),hover:l.J.xy.nullable(),color:p.z.union([l.Color.z,p.z.object({verticalLine:l.Color.z.optional().default(l.ZERO),horizontalLine:l.Color.z.optional().default(l.ZERO),obliqueLine:l.Color.z.optional().default(l.ZERO)})]).optional().default(l.ZERO),strokeWidth:p.z.number().optional().default(1),strokeDash:p.z.number().optional().default(2)});class jt extends w.Leaf{constructor(){super(...arguments);h(this,"schema",Br)}async afterUpdate(t){const r=B.Context.use(t);this.internal.theme=w.use(t),this.internal.renderCtx=r,this.internal.draw=new Vt(r.upper2d,this.internal.theme),I.requestRender(t,st)}async afterDelete(t){I.requestRender(t,tt)}get verticalLineColor(){return this.state.color instanceof l.Color?this.state.color.isZero?this.internal.theme.colors.gray.l8:this.state.color:this.state.color.verticalLine.isZero?this.internal.theme.colors.gray.l8:this.state.color.verticalLine}get horizontalLineColor(){return this.state.color instanceof l.Color?this.state.color.isZero?this.internal.theme.colors.gray.l8:this.state.color:this.state.color.horizontalLine.isZero?this.internal.theme.colors.gray.l8:this.state.color.horizontalLine}get obliqueLineColor(){return this.state.color instanceof l.Color?this.state.color.isZero?this.internal.theme.colors.gray.l8:this.state.color:this.state.color.obliqueLine.isZero?this.internal.theme.colors.gray.l8:this.state.color.obliqueLine}async find(t){const{one:r,two:s}=this.state;if(r==null||s==null)return null;const{one:a,two:i}=this.prevState,{dataOne:o,dataTwo:c}=this.internal;if(a!=null&&l.J.equals(r,a)&&i!=null&&l.J.equals(s,i)&&o!=null&&c!=null){const[x,S]=[await t.findByXValue(o.x),await t.findByXValue(c.x)];return x.length===0||S.length===0?null:[x.sort((Y,P)=>l.J.distance(o,Y.value)-l.J.distance(o,P.value))[0],S.sort((Y,P)=>l.J.distance(c,Y.value)-l.J.distance(c,P.value))[0]]}const u=l.b.XY.scale(t.region).scale(l.$t.DECIMAL),[d,f]=[u.pos(r),u.pos(s)],[m,b]=[await t.findByXDecimal(d.x),await t.findByXDecimal(f.x)];if(m.length===0||b.length===0)return null;const[T,E]=[m.sort((x,S)=>l.J.distance(d,x.position)-l.J.distance(d,S.position))[0],b.sort((x,S)=>l.J.distance(f,x.position)-l.J.distance(f,S.position))[0]];return this.internal.dataOne=T.value,this.internal.dataTwo=E.value,[T,E]}async renderHover(t){if(this.state.hover==null)return;const r=this.state.hover,s=l.b.XY.scale(t.region).scale(l.$t.DECIMAL),a=s.pos(r),i=await t.findByXDecimal(s.pos(r).x);if(i.length===0)return;const o=i.sort((u,d)=>l.J.distance(a,u.position)-l.J.distance(a,d.position))[0],{draw:c}=this.internal;c.circle({fill:o.color.setAlpha(.5),radius:9,position:s.reverse().pos(o.position)})}async render(t){if(this.deleted)return;await this.renderHover(t);const r=await this.find(t);if(r==null)return;const[s,a]=r,{draw:i}=this.internal,{strokeDash:o,strokeWidth:c}=this.state,u=l.b.XY.scale(l.$t.DECIMAL).scale(t.region),d=u.pos(s.position),f=u.pos(a.position),m=new g.w(Math.abs(s.value.x-a.value.x)),b=Math.abs(s.value.y-a.value.y),T=b/m.seconds;i.line({start:l.J.construct(d.x,d.y),end:l.J.construct(d.x,f.y),stroke:this.verticalLineColor,lineDash:o,lineWidth:c}),i.textContainer({text:[`${b.toFixed(2)} ${s.units??""}`],direction:"x",position:l.J.construct(d.x,(d.y+f.y)/2),level:"small"}),i.line({start:l.J.construct(d.x,f.y),end:l.J.construct(f.x,f.y),stroke:this.horizontalLineColor,lineDash:o,lineWidth:c}),i.textContainer({text:[m.truncate(g.w.MILLISECOND).toString()],direction:"x",position:l.J.construct((d.x+f.x)/2,f.y),level:"small"}),i.line({start:l.J.construct(d.x,d.y),end:l.J.construct(f.x,f.y),stroke:this.obliqueLineColor,lineDash:o,lineWidth:c}),i.textContainer({text:[`${T.toFixed(2)} ${s.units??""} / S`],direction:"x",position:l.J.construct((d.x+f.x)/2,(d.y+f.y)/2),level:"small"}),i.circle({fill:s.color.setAlpha(.5),radius:8,position:d}),i.circle({fill:s.color.setAlpha(.8),radius:5,position:d}),i.circle({fill:new l.Color("#ffffff"),radius:2,position:d}),i.circle({fill:a.color.setAlpha(.5),radius:8,position:f}),i.circle({fill:a.color.setAlpha(.8),radius:5,position:f}),i.circle({fill:new l.Color("#ffffff"),radius:2,position:f})}}h(jt,"TYPE","measure");const Va={[jt.TYPE]:jt},yu=Object.freeze(Object.defineProperty({__proto__:null,Measure:jt,REGISTRY:Va,measureStateZ:Br},Symbol.toStringTag,{value:"Module"})),Xa=p.z.object({container:l.$t.box,viewport:l.$t.box,hold:p.z.boolean().optional().default(!1),grid:p.z.record(xa),visible:p.z.boolean().optional().default(!0),clearOverScan:l.J.crudeZ.optional().default(l.J.ZERO)}),wu=(e,n)=>{const t=l.$t.width(e)*Math.sqrt(l.$t.height(e)),r=l.$t.width(n)*Math.sqrt(l.$t.height(n));return t/r};class wn extends w.Composite{constructor(){super(...arguments);h(this,"schema",Xa)}async afterUpdate(t){this.internal.instrumentation=Ze(t,"lineplot"),this.internal.aggregate=V.useAdder(t),this.internal.renderCtx=B.Context.use(t),I.control(t,r=>this.requestRender("low",r)),this.requestRender("high",tt)}async afterDelete(t){this.internal.renderCtx=B.Context.use(t),this.requestRender("high",tt)}async findByXDecimal(t){const r={...this.state,plot:this.calculatePlot(),exposure:this.exposure},s=this.axes.flatMap(async a=>await a.findByXDecimal(r,t));return(await Promise.all(s)).flat()}async findByXValue(t){const r={...this.state,plot:this.calculatePlot(),exposure:this.exposure},s=this.axes.flatMap(async a=>await a.findByXValue(r,t));return(await Promise.all(s)).flat()}get axes(){return this.childrenOfType(ke.TYPE)}get tooltips(){return this.childrenOfType(Gt.TYPE)}get measures(){return this.childrenOfType(jt.TYPE)}get exposure(){return wu(this.state.viewport,this.state.container)}async renderAxes(t,r){const s={...this.state,plot:t,canvases:r,exposure:this.exposure};await Promise.all(this.axes.map(async a=>await a.render(s)))}async renderTooltips(t,r){const s={findByXDecimal:this.findByXDecimal.bind(this),region:t,canvases:r};await Promise.all(this.tooltips.map(async a=>await a.render(s)))}async renderMeasures(t){const r={findByXDecimal:this.findByXDecimal.bind(this),findByXValue:this.findByXValue.bind(this),region:t};await Promise.all(this.measures.map(async s=>await s.render(r)))}calculatePlot(){return po(this.state.grid,this.state.container)}async render(t){const{renderCtx:r}=this.internal,{instrumentation:s}=this.internal;if(this.deleted){s.L.debug("deleted, skipping render",{key:this.key});return}if(!this.state.visible)return s.L.debug("not visible, skipping render",{key:this.key}),async({canvases:d})=>r.erase(this.state.container,this.state.clearOverScan,...d);const a=this.calculatePlot();s.L.debug("rendering",{key:this.key,viewport:this.state.viewport,container:this.state.container,grid:this.state.grid,plot:a,canvases:t});const i=l.J.construct(this.state.clearOverScan),o=r.scissor(this.state.container,i,t.filter(d=>d!=="gl")),c=r.scissor(a,l.J.ZERO,t.filter(d=>d==="gl"));try{await this.renderAxes(a,t),await this.renderTooltips(a,t),await this.renderMeasures(a),r.gl.finish(),r.gl.flush(),r.gl.finish()}catch(d){if(d.message.toLowerCase().includes("bigint"))return;this.internal.aggregate({key:`${this.type}-${this.key}`,variant:"error",message:d.message})}finally{o(),c()}s.L.debug("rendered",{key:this.key});const u=l.$t.copy(this.state.container);return async({canvases:d})=>r.erase(u,this.state.clearOverScan,...d)}requestRender(t,r){const{renderCtx:s}=this.internal;let a=["upper2d","lower2d","gl"];r===st&&(a=["upper2d"]),s.loop.set({key:`${this.type}-${this.key}`,render:async()=>await this.render(a),priority:t,canvases:a})}}h(wn,"TYPE","LinePlot");const bu={[wn.TYPE]:wn,[ke.TYPE]:ke,[Ee.TYPE]:Ee},Fr=p.z.object({dpr:p.z.number(),region:l.$t.box,bootstrap:p.z.boolean().optional().default(!1),bootstrapped:p.z.boolean().optional().default(!1),glCanvas:p.z.any().optional(),upper2dCanvas:p.z.any().optional(),lower2dCanvas:p.z.any().optional(),os:g.S.osZ});class Re extends w.Composite{constructor(){super(...arguments);h(this,"schema",Fr);h(this,"renderCtx",null)}async afterUpdate(t){if(this.renderCtx==null){if(!this.state.bootstrap)return;const{glCanvas:r,lower2dCanvas:s,upper2dCanvas:a,os:i}=this.state;if(r==null||s==null||a==null)throw new w.Ze("[vis.worker.Canvas] - expected render context bootstrap to include all canvases");this.renderCtx=B.Context.create(t,r,s,a,i),mn.create(t,this.renderCtx),this.setState(o=>({...o,bootstrap:!1,bootstrapped:!0,glCanvas:void 0,lower2dCanvas:void 0,upper2dCanvas:void 0}))}else this.renderCtx.update(t);this.renderCtx.resize(this.state.region,this.state.dpr)}}h(Re,"TYPE","Canvas");const Ka={[Re.TYPE]:Re},vu=Object.freeze(Object.defineProperty({__proto__:null,Canvas:Re,REGISTRY:Ka,canvasStateZ:Fr},Symbol.toStringTag,{value:"Module"})),Qa=p.z.object({triggered:p.z.boolean(),status:V.specZ,sink:Mn.optional().default(kn),source:dr.optional().default(cr)});class bn extends w.Leaf{constructor(){super(...arguments);h(this,"schema",Qa)}async afterUpdate(t){var a,i,o;const{sink:r,source:s}=this.state;this.internal.source=await H(t,s,this.internal.source),this.internal.sink=await Ae(t,r,this.internal.sink),this.state.triggered&&!this.prevState.triggered&&await this.internal.sink.set(((a=this.state.status.data)==null?void 0:a.authority)!==w.Bm.ABSOLUTE),await this.updateEnabledState(),(o=(i=this.internal).stopListening)==null||o.call(i),this.internal.stopListening=this.internal.source.onChange(()=>{this.updateEnabledState()})}async updateEnabledState(){const t=await this.internal.source.value();sr.I.equal(t,this.state.status)||this.setState(r=>({...r,status:t,triggered:!1}))}async afterDelete(){var t,r,s,a;this.internal.stopListening(),await((r=(t=this.internal.source).cleanup)==null?void 0:r.call(t)),await((a=(s=this.internal.sink).cleanup)==null?void 0:a.call(s))}render(){}}h(bn,"TYPE","Chip");const ti=p.z.object({}),Ps="control-state-provider",ei=w.fm.stateZ.extend({subjectColor:l.Color.z});class Ht extends w.Composite{constructor(){super(...arguments);h(this,"schema",ti);h(this,"colors",new Map);h(this,"tracker");h(this,"disconnectTrackerChange");h(this,"obs",new ar.Observer)}static use(t){return t.get(Ps)}async afterUpdate(t){const{internal:r}=this;r.instrumentation=Ze(t,"control-state");const s=w.use(t);r.palette=s.colors.visualization.palettes.default,r.defaultColor=s.colors.gray.l8;const a=Le(t);r.client!=null&&a===r.client||(r.client=a,t.set(Ps,this),await this.maybeCloseTracker(),r.client!=null&&(this.internal.instrumentation.L.debug("starting state tracker"),await this.openTracker(r.client)))}async maybeCloseTracker(){var t;this.tracker!=null&&(this.internal.instrumentation.L.debug("stopping state tracker"),(t=this.disconnectTrackerChange)==null||t.call(this),await this.tracker.close(),this.tracker=void 0)}async afterDelete(){await this.maybeCloseTracker()}onChange(t){return this.obs.onChange(t)}get(t){return Array.isArray(t)?g.c$1.unique(t).map(r=>this.getOne(r)).filter(r=>r!=null):this.getOne(t)}getOne(t){if(this.tracker==null)return;const r=this.tracker.states.get(t);if(r!=null)return{...r,subjectColor:this.colors.get(r.subject.key)??this.internal.defaultColor}}async openTracker(t){var a;const{internal:r}=this,{instrumentation:s}=r;try{this.tracker=await t.control.openStateTracker()}catch{s.L.error("failed to open state tracker");return}(a=this.disconnectTrackerChange)==null||a.call(this),this.disconnectTrackerChange=this.tracker.onChange(i=>{if(s.L.debug("transfer",{transfers:i.map(o=>w.fm.transferString(o))}),this.tracker==null)throw new w.Ze("tracker is null inside it's own onChange callback!");this.updateColors(this.tracker),this.obs.notify(i)})}updateColors(t){const r=t.subjects(),s=r.map(o=>o.key),a=Array.from(this.colors.values());this.colors.forEach((o,c)=>!s.includes(c)&&this.colors.delete(c));const{palette:i}=this.internal;r.forEach(o=>{if(this.colors.has(o.key))return;const c=i.find(u=>!a.includes(u))??i[0];this.colors.set(o.key,c),a.push(c)})}}h(Ht,"TYPE","StateProvider");const ni=["acquired","released","overridden","failed"],ri=p.z.enum(ni),si=p.z.object({name:p.z.string(),authority:p.z.number().default(0),acquireTrigger:p.z.number(),status:ri.optional(),needsControlOf:w.nm.keyZ.array().optional().default([])});class vn extends w.Composite{constructor(){super(...arguments);h(this,"schema",si);h(this,"registry",new Map);h(this,"writer")}async afterUpdate(t){const{internal:r}=this;r.instrumentation=Ze(t),(r.prevTrigger==null||Math.abs(this.state.acquireTrigger-r.prevTrigger)>1)&&(r.prevTrigger=this.state.acquireTrigger);const s=Le(t),a=Ht.use(t);r.client=s,r.client==null&&await this.release(),r.stateProv=a,r.telemCtx=pa(t,this,r.telemCtx),r.addStatus=V.useAdder(t),this.state.acquireTrigger>r.prevTrigger?await this.acquire():this.state.acquireTrigger<r.prevTrigger&&await this.release()}async afterDelete(){await this.release()}async updateNeedsControlOf(){const{client:t}=this.internal;if(t==null)return;const r=new Set([]);for(const a of this.registry.keys())(await a.needsControlOf(t)).forEach(o=>o!==0&&r.add(o));const s=Array.from(r);g.F.unorderedPrimitiveArrays(this.state.needsControlOf,s)!==g.F.EQUAL&&this.setState(a=>({...a,needsControlOf:s}))}async acquire(){this.internal.prevTrigger=this.state.acquireTrigger;const{client:t,addStatus:r}=this.internal;if(t==null)return r({message:`Cannot acquire control on ${this.state.name} because no cluster has been connected.`,variant:"warning"});try{await this.updateNeedsControlOf();const s=this.state.needsControlOf;if(s.length===0)return r({message:`Cannot acquire control on ${this.state.name} because there are no channels to control.`,variant:"warning"});const a=w.$.now().sub(g.w.milliseconds(1));this.writer=await t.openWriter({start:a,channels:s,controlSubject:{key:this.key,name:this.state.name},authorities:this.state.authority,enableAutoCommit:!0}),this.setState(i=>({...i,status:"acquired"}))}catch(s){if(this.setState(a=>({...a,status:"failed"})),!(s instanceof Error))throw s;r({variant:"error",message:`${this.state.name} failed to acquire control`,description:s.message})}}async release(){var t;this.internal.prevTrigger=this.state.acquireTrigger;try{await((t=this.writer)==null?void 0:t.close())}catch(r){this.internal.addStatus({message:`${this.state.name} failed to release control: ${r.message}`,variant:"error"})}finally{this.setState(r=>({...r,status:"released"})),this.writer=void 0}}async set(t){var r;this.writer==null&&await this.acquire(),await((r=this.writer)==null?void 0:r.write(t))}async setAuthority(t,r){var s;this.writer==null&&await this.acquire(),await((s=this.writer)==null?void 0:s.setAuthority(Object.fromEntries(t.map(a=>[a,r]))))}async releaseAuthority(t){var r;this.writer==null&&await this.acquire(),await((r=this.writer)==null?void 0:r.setAuthority(Object.fromEntries(t.map(s=>[s,this.state.authority]))))}deleteTelem(t){this.registry.delete(t),this.updateNeedsControlOf()}create(t){const s=(()=>{switch(t.type){case $e.TYPE:{const a=new $e(this,t.props);return this.registry.set(a,null),a}case Ye.TYPE:{const a=new Ye(this,this.internal.stateProv,t.props);return this.registry.set(a,null),a}case Me.TYPE:return new Me(this,t.props);default:return null}})();return s!=null&&this.updateNeedsControlOf(),s}}h(vn,"TYPE","Controller");const ai=p.z.object({channel:p.z.number()});class $e extends On{constructor(t,r){super(r);h(this,"controller");h(this,"schema",ai);this.controller=t}invalidate(){}async cleanup(){this.controller.deleteTelem(this)}async needsControlOf(t){if(this.props.channel===0)return[];const r=await t.channels.retrieve(this.props.channel),s=[r.key];return r.index!==0&&s.push(r.index),s}async set(t){const{client:r}=this.controller.internal;if(r==null)return;const s=await r.channels.retrieve(this.props.channel),a={[s.key]:t};if(s.index!==0){const i=await r.channels.retrieve(s.index);a[i.key]=w.$.now()}await this.controller.set(a)}}h($e,"TYPE","controlled-numeric-telem-sink");const xu=e=>({type:$e.TYPE,props:e,variant:"sink",valueType:"number"}),ii=p.z.object({authority:p.z.number().default(w.fm.Authority.ABSOLUTE),channel:p.z.number()});class Me extends On{constructor(t,r){super(r);h(this,"controller");h(this,"schema",ii);this.controller=t}async cleanup(){this.controller.deleteTelem(this)}async needsControlOf(t){const r=await t.channels.retrieve(this.props.channel),s=[r.key];return r.index!==0&&s.push(r.index),s}async set(t){const{controller:r}=this,{client:s}=r.internal;if(s==null)return;const a=await s.channels.retrieve(this.props.channel),i=[a.key];a.index!==0&&i.push(a.index),t?await this.controller.setAuthority(i,this.props.authority):await this.controller.releaseAuthority(i)}}h(Me,"TYPE","acquire-channel-control");const Tu=e=>({type:Me.TYPE,props:e,variant:"sink",valueType:"boolean"}),oi=p.z.object({channel:p.z.number()});class Ye extends G{constructor(t,r,s){super(s);h(this,"prov");h(this,"valid",!1);h(this,"stopListening");h(this,"controller");h(this,"schema",oi);this.prov=r,this.controller=t}async needsControlOf(){return[]}maybeRevalidate(){var s;if(this.valid)return;const{channel:t}=this.props;(s=this.stopListening)==null||s.call(this);const r=g.xe.filterTransfersByChannelKey(t);this.stopListening=this.prov.onChange(a=>{var i;r(a).length!==0&&((i=this.notify)==null||i.call(this))}),this.valid=!0}async value(){this.maybeRevalidate();const t=w.$.now();if(this.props.channel===0)return{key:this.controller.key,variant:"disabled",message:"No Channel",time:t,data:{valid:!1,authority:0}};const r=this.prov.get(this.props.channel);return r==null?{key:this.controller.key,variant:"disabled",message:"Uncontrolled",time:t,data:{valid:!0,color:void 0,authority:0}}:{key:r.subject.key,variant:r.subject.key===this.controller.key?"success":"error",message:`Controlled by ${r.subject.name}`,time:t,data:{valid:!0,color:r.subjectColor,authority:r.authority}}}async cleanup(){var t;this.controller.deleteTelem(this),(t=this.stopListening)==null||t.call(this)}}h(Ye,"TYPE","controlled-status-source");const Su=e=>({type:Ye.TYPE,props:e,variant:"source",valueType:"status"}),li=p.z.object({statusSource:dr.optional().default(cr),colorSource:hr.optional().default(Rn),status:V.specZ,color:l.Color.z.optional()});class xn extends w.Leaf{constructor(){super(...arguments);h(this,"schema",li);h(this,"stopListeningStatus");h(this,"stopListeningColor")}async afterUpdate(t){var i,o;const{internal:r}=this,{statusSource:s,colorSource:a}=this.state;r.statusSource=await H(t,s,r.statusSource),r.colorSource=await H(t,a,r.colorSource),await this.updateState(),(i=this.stopListeningStatus)==null||i.call(this),this.stopListeningStatus=r.statusSource.onChange(()=>{this.updateState()}),(o=this.stopListeningColor)==null||o.call(this),this.stopListeningColor=r.colorSource.onChange(()=>{this.updateState()})}async afterDelete(){var t,r,s,a;await((r=(t=this.internal.statusSource).cleanup)==null?void 0:r.call(t)),await((a=(s=this.internal.colorSource).cleanup)==null?void 0:a.call(s))}async render(){}async updateState(){const t=await this.internal.colorSource.value(),r=await this.internal.statusSource.value();t.equals(this.state.color)&&r.message===this.state.status.message||this.setState(s=>({...s,color:t,status:r}))}}h(xn,"TYPE","Indicator");const ci=p.z.object({needsControlOf:w.nm.keyZ.array(),states:ei.array()});class Tn extends w.Leaf{constructor(){super(...arguments);h(this,"schema",ci)}async afterUpdate(t){var o;const{internal:r}=this;r.stateProv=Ht.use(t);const s=this.state.needsControlOf;(o=r.disconnectStateProv)==null||o.call(r);const a=g.xe.filterTransfersByChannelKey(...s),i=r.stateProv.get(s);this.setState(c=>({...c,states:i})),r.disconnectStateProv=r.stateProv.onChange(c=>{if(a(c).length===0)return;const u=r.stateProv.get(s);this.setState(d=>({...d,states:u}))})}async afterDelete(){var r;const{internal:t}=this;(r=t.disconnectStateProv)==null||r.call(t)}async render(){}}h(Tn,"TYPE","Legend");const Cu={[vn.TYPE]:vn,[Ht.TYPE]:Ht,[xn.TYPE]:xn,[bn.TYPE]:bn,[Tn.TYPE]:Tn},Eu=p.z.object({region:l.$t.box,clearOverScan:l.J.crudeZ.optional().default(0),visible:p.z.boolean().optional().default(!0)}),Gn=["upper2d","lower2d"],Rt=class Rt extends w.Composite{constructor(){super(...arguments);h(this,"schema",Rt.stateZ)}async afterUpdate(t){const{internal:r}=this;r.renderCtx=B.Context.use(t),r.handleError=V.useErrorHandler(t),I.control(t,()=>this.requestRender("low")),this.requestRender("high")}async afterDelete(){this.requestRender("high")}async render(){if(this.deleted)return;const t=l.$t.copy(this.state.region);if(!this.state.visible)return async()=>this.internal.renderCtx.erase(this.state.region,this.state.clearOverScan,...Gn);const{renderCtx:r,handleError:s}=this.internal,a=l.b.XY.translate(l.$t.topLeft(this.state.region)),i=r.scissor(this.state.region,l.J.construct(this.state.clearOverScan),Gn);try{for(const o of this.children)await o.render({viewportScale:a})}catch(o){s(o,"Failed to render table")}finally{i()}return async()=>{this.internal.renderCtx.erase(t,this.state.clearOverScan)}}requestRender(t){const{renderCtx:r}=this.internal;r.loop.set({key:`${Rt.TYPE}-${this.key}`,render:this.render.bind(this),priority:t,canvases:Gn})}};h(Rt,"TYPE","Table"),h(Rt,"stateZ",Eu);let Oe=Rt;const Pu={[Oe.TYPE]:Oe},ui=p.z.object({trigger:p.z.number(),sink:Mn.optional().default(kn)});class Sn extends w.Leaf{constructor(){super(...arguments);h(this,"schema",ui)}async afterUpdate(t){var a;const{sink:r}=this.state;(a=this.internal).prevTrigger??(a.prevTrigger=this.state.trigger),this.internal.sink=await Ae(t,r,this.internal.sink);const s=this.internal.prevTrigger;this.internal.prevTrigger=this.state.trigger,!(this.state.trigger<=s)&&await this.internal.sink.set(!0)}render(){}async afterDelete(){await this.internalAfterDelete()}async internalAfterDelete(){var r,s;const{internal:t}=this;await((s=(r=t.sink).cleanup)==null?void 0:s.call(r))}}h(Sn,"TYPE","Button");const ku={[Sn.TYPE]:Sn},qr=p.z.object({position:l.J.xy,zoom:p.z.number(),region:l.$t.box,clearOverScan:l.J.crudeZ.optional().default(10),visible:p.z.boolean().optional().default(!0)}),je=["upper2d","lower2d"],$t=class $t extends w.Composite{constructor(){super(...arguments);h(this,"schema",$t.stateZ)}async afterUpdate(t){this.internal.renderCtx=B.Context.use(t),this.internal.addStatus=V.useAdder(t),I.control(t,()=>this.requestRender("low")),this.requestRender("high")}async afterDelete(){this.requestRender("high")}async render(){if(this.deleted)return;const{renderCtx:t,addStatus:r}=this.internal,{zoom:s,position:a}=this.state,i=l.$t.construct(this.state.region);if(!this.state.visible)return async()=>t.erase(i,this.state.clearOverScan,...je);const o=t.scissor(i,l.J.ZERO,je),c=l.b.XY.magnify(l.J.construct(s)).translate(l.$t.topLeft(i)).translate(a);try{await Promise.all(this.children.map(async d=>await d.render({viewportScale:c})))}catch(d){if(!(d instanceof Error))throw d;r({variant:"error",message:"Failed to render diagram",description:d.message})}finally{o()}const u=l.$t.copy(this.state.region);return async()=>{this.internal.renderCtx.erase(u,this.state.clearOverScan,...je)}}requestRender(t){const{renderCtx:r}=this.internal;r.loop.set({key:`${$t.TYPE}-${this.key}`,render:this.render.bind(this),priority:t,canvases:je})}};h($t,"TYPE","Diagram"),h($t,"stateZ",qr);let Jt=$t;const hi={[Jt.TYPE]:Jt},Ru=Object.freeze(Object.defineProperty({__proto__:null,Diagram:Jt,REGISTRY:hi,diagramStateZ:qr},Symbol.toStringTag,{value:"Module"})),di=p.z.object({enabled:p.z.boolean(),source:ur.optional().default(lr)});class Cn extends w.Leaf{constructor(){super(...arguments);h(this,"schema",di)}async afterUpdate(t){var a;this.internal.addStatus=V.useOptionalAdder(t);const{source:r}=this.state,{internal:s}=this;this.internal.source=await H(t,r,this.internal.source),await this.updateEnabledState(),(a=s.stopListening)==null||a.call(s),s.stopListening=s.source.onChange(()=>{this.updateEnabledState().catch(this.reportError.bind(this))})}reportError(t){this.internal.addStatus({key:this.key,variant:"error",message:`Failed to update Light: ${t.message}`})}async updateEnabledState(){const t=await this.internal.source.value();t!==this.state.enabled&&this.setState(r=>({...r,enabled:t}))}async afterDelete(){await this.internalAfterDelete()}async internalAfterDelete(){var t,r;this.internal.stopListening(),await((r=(t=this.internal.source).cleanup)==null?void 0:r.call(t))}async render(){}}h(Cn,"TYPE","Light");const $u={[Cn.TYPE]:Cn},fi=p.z.object({region:l.$t.box,wheelPos:p.z.number(),scrolling:p.z.boolean(),empty:p.z.boolean(),visible:p.z.boolean(),telem:sn.optional().default(Ls),font:Rs.levelZ.optional().default("p"),color:l.Color.z.optional().default(l.ZERO),overshoot:l.J.xy.optional().default({x:0,y:0})}),Mu=.98,te="lower2d",Yu={offset:0n,offsetRef:0n,scrollRef:0},ue=class ue extends w.Leaf{constructor(){super(...arguments);h(this,"schema",ue.z);h(this,"values",new g.Dt([]));h(this,"scrollState",Yu)}async afterUpdate(t){var d;const{internal:r}=this;r.render=B.Context.use(t),r.theme=w.use(t),this.state.color.isZero?this.internal.textColor=r.theme.colors.gray.l11:r.textColor=this.state.color,r.telem=await H(t,this.state.telem,r.telem);const s=V.useErrorHandler(t),{scrolling:a,wheelPos:i}=this.state;if(this.state.scrolling&&!this.prevState.scrolling){const f=this.values.alignmentBounds.upper-1n;this.scrollState={offset:f,offsetRef:f,scrollRef:this.state.wheelPos}}else if(a){const{scrollState:f,values:m}=this,b=Math.ceil((i-this.scrollState.scrollRef)/this.lineHeight);f.offset=this.values.traverseAlignment(f.offsetRef,-BigInt(b)),f.offset<m.alignmentBounds.lower+BigInt(this.visibleLineCount)&&(f.offset=m.alignmentBounds.lower,this.setState(T=>({...T,wheelPos:this.prevState.wheelPos}))),f.offset>=m.alignmentBounds.upper&&this.setState(T=>({...T,scrolling:!1}))}const[c,u]=await this.internal.telem.value();this.values=new g.Dt(u),this.checkEmpty(),(d=r.stopListeningTelem)==null||d.call(r),r.stopListeningTelem=r.telem.onChange(()=>{this.internal.telem.value().then(([f,m])=>{this.checkEmpty(),this.values=new g.Dt(m),this.requestRender()}).catch(f=>s(f,"Failed to update log"))}),this.requestRender()}checkEmpty(){const t=this.values.length===0;t!==this.state.empty&&this.setState(r=>({...r,empty:t}))}async afterDelete(){var s;const{telem:t,render:r}=this.internal;await((s=t.cleanup)==null?void 0:s.call(t)),r.erase(l.$t.construct(this.state.region),l.J.ZERO,te)}async requestRender(){const{render:t}=this.internal;await t.loop.set({key:`${this.type}-${this.key}`,render:async()=>await this.render(),priority:"high",canvases:[te]})}get lineHeight(){return this.internal.theme.typography[this.state.font].size*this.internal.theme.sizes.base}get totalHeight(){return Math.ceil(this.values.length*this.lineHeight)}get visibleLineCount(){return Math.min(Math.floor((l.$t.height(this.state.region)-12)/this.lineHeight),this.values.length)}async render(){const{render:t}=this.internal,r=this.state.region;if(l.$t.areaIsZero(r))return;if(!this.state.visible)return async()=>t.erase(r,l.J.ZERO,te);let s;if(!this.state.scrolling)s=this.values.subIterator(this.values.length-this.visibleLineCount,this.values.length);else{const d=this.values.traverseAlignment(this.scrollState.offset,-BigInt(this.visibleLineCount));s=this.values.subAlignmentSpanIterator(d,this.visibleLineCount)}const a=this.state.region,i=t[te],o=new Vt(i,this.internal.theme),c=t.scissor(a,l.J.ZERO,[te]);this.renderElements(o,s),this.renderScrollbar(o),c();const u=l.$t.copy(this.state.region);return async({canvases:d})=>t.erase(u,this.state.overshoot,...d)}renderScrollbar(t){const r=this.state.region,s=l.$t.height(r)/this.totalHeight*l.$t.height(r);if(s>=l.$t.height(r)*Mu)return;let a=l.$t.bottom(r)-s;this.state.scrolling&&(a-=Number(this.values.distance(this.values.alignmentBounds.upper,this.scrollState.offset))/this.values.length*l.$t.height(r)),a<0&&(a=l.$t.top(r)),t.container({region:l.$t.construct({x:l.$t.right(r)-6,y:a},{width:6,height:s}),bordered:!1,backgroundColor:i=>i.colors.gray.l6})}renderElements(t,r){const s=this.state.region;let a=0;for(const i of r){const o=this.values.dataType.equals(g.g$1.JSON)?JSON.stringify(i):i.toString();t.text({text:o,level:this.state.font,shade:11,position:l.J.translate(l.$t.topLeft(s),{x:6,y:a*this.lineHeight+6}),code:!0}),a++}}};h(ue,"TYPE","log"),h(ue,"z",fi);let ze=ue;const Ou={[ze.TYPE]:ze},pi=p.z.object({trigger:p.z.number(),command:p.z.number().optional(),value:p.z.number(),sink:Ns.optional().default(Ys),source:Is.optional().default(Os)});class En extends w.Leaf{constructor(){super(...arguments);h(this,"schema",pi)}async afterUpdate(t){this.internal.handleError=V.useAsyncErrorHandler(t);const{sink:r,source:s,trigger:a,command:i}=this.state,{internal:o}=this;o.prevTrigger??(o.prevTrigger=a),await o.handleError(async()=>{var u;this.internal.source=await H(t,s,this.internal.source),o.sink=await Ae(t,r,o.sink);const c=o.prevTrigger;o.prevTrigger=a,a>c&&i!=null&&await this.internal.sink.set(i),await this.updateValue(),(u=o.stopListening)==null||u.call(o),o.stopListening=o.source.onChange(()=>void o.handleError(async()=>await this.updateValue()))},"Failed to update Setpoint")}async updateValue(){const t=await this.internal.source.value();t!==this.state.value&&this.setState(r=>({...r,value:t,triggered:!1}))}async afterDelete(){var r,s,a,i;const{internal:t}=this;t.stopListening(),await((s=(r=t.source).cleanup)==null?void 0:s.call(r)),await((i=(a=t.sink).cleanup)==null?void 0:i.call(a))}async render(){}}h(En,"TYPE","Setpoint");const zu={[En.TYPE]:En},gi=p.z.object({triggered:p.z.boolean(),enabled:p.z.boolean(),sink:Mn.optional().default(kn),source:ur.optional().default(lr)});class Pn extends w.Leaf{constructor(){super(...arguments);h(this,"schema",gi)}async afterUpdate(t){var u;this.internal.addStatus=V.useOptionalAdder(t);const{sink:r,source:s,triggered:a,enabled:i}=this.state,{triggered:o}=this.prevState,{internal:c}=this;c.source=await H(t,s,c.source),c.sink=await Ae(t,r,c.sink),a&&!o&&await c.sink.set(!i),await this.updateEnabledState(),(u=c.stopListening)==null||u.call(c),c.stopListening=c.source.onChange(()=>{this.updateEnabledState().catch(this.reportError.bind(this))})}reportError(t){this.internal.addStatus({key:this.key,variant:"error",message:`Failed to update Toggle: ${t.message}`})}async updateEnabledState(){const t=await this.internal.source.value();t!==this.state.enabled&&this.setState(r=>({...r,enabled:t,triggered:!1}))}async afterDelete(){await this.internalAfterDelete()}async internalAfterDelete(){var t,r,s,a;this.internal.stopListening(),await((r=(t=this.internal.source).cleanup)==null?void 0:r.call(t)),await((a=(s=this.internal.sink).cleanup)==null?void 0:a.call(s))}async render(){}}h(Pn,"TYPE","Toggle");const Lu={[Pn.TYPE]:Pn},Du=p.z.object({box:l.$t.box,telem:fr.optional().default(zs),backgroundTelem:hr.optional().default(Rn),level:Rs.levelZ.optional().default("p"),color:l.Color.z.optional().default(l.ZERO),precision:p.z.number().optional().default(2),minWidth:p.z.number().optional().default(60),width:p.z.number().optional(),notation:g.Te.notationZ.optional().default("standard"),location:l.K.xy.optional().default({x:"left",y:"center"})}),Au=["upper2d","lower2d"],he=class he extends w.Leaf{constructor(){super(...arguments);h(this,"schema",he.z)}async afterUpdate(t){var s,a;const{internal:r}=this;r.renderCtx=B.Context.use(t),r.theme=w.use(t),this.state.color.isZero?this.internal.textColor=r.theme.colors.gray.l10:r.textColor=this.state.color,r.telem=await H(t,this.state.telem,r.telem),(s=r.stopListening)==null||s.call(r),r.stopListening=this.internal.telem.onChange(()=>this.requestRender()),r.backgroundTelem=await H(t,this.state.backgroundTelem,r.backgroundTelem),(a=r.stopListeningBackground)==null||a.call(r),r.stopListeningBackground=this.internal.backgroundTelem.onChange(()=>this.requestRender()),this.internal.requestRender=I.useOptionalRequest(t),this.requestRender()}async afterDelete(){var r,s,a,i,o,c;const{internal:t}=this;(r=t.stopListening)==null||r.call(t),(s=t.stopListeningBackground)==null||s.call(t),await((i=(a=t.telem).cleanup)==null?void 0:i.call(a)),await((c=(o=t.backgroundTelem).cleanup)==null?void 0:c.call(o)),t.requestRender==null?t.renderCtx.erase(l.$t.construct(this.state.box),l.J.ZERO,...Au):t.requestRender(tt)}requestRender(){const{requestRender:t}=this.internal;t!=null?t(tt):this.render({})}get fontHeight(){const{theme:t}=this.internal;return t.typography[this.state.level].size*t.sizes.base}maybeUpdateWidth(t){const{theme:r}=this.internal,s=t+r.sizes.base+this.fontHeight;this.state.width==null||this.state.width+this.fontHeight*.5<s||this.state.minWidth>s&&this.state.width!==this.state.minWidth?this.setState(a=>({...a,width:Math.max(s,a.minWidth)})):this.state.width-this.fontHeight>s&&this.setState(a=>({...a,width:Math.max(s,a.minWidth)}))}async render({viewportScale:t=l.b.XY.IDENTITY}){const{renderCtx:r,telem:s,backgroundTelem:a}=this.internal,i=l.$t.construct(this.state.box);if(l.$t.areaIsZero(i))return;const{location:o}=this.state,c=r.lower2d.applyScale(t);let u=await s.value();const d=ee.fontString(this.internal.theme,{level:this.state.level,code:!0});c.font=d;const f=this.fontHeight,m=u[0]=="-";m&&(u=u.slice(1));const{theme:b}=this.internal,T=ft.dimensions(u,d,c).width+b.sizes.base;this.internal.requestRender==null&&r.erase(l.$t.construct(this.prevState.box)),this.maybeUpdateWidth(T);const E={...l.J.ZERO};o.x==="left"&&(E.x=6+f*.75),o.x==="center"&&(E.x=l.$t.width(i)/2-T/2),o.y==="center"&&(E.y=l.$t.height(i)/2);const x=l.J.translate(l.$t.topLeft(i),E),S=c.scissor(i,void 0);let Y=!0;if(this.state.backgroundTelem.type!=Rn.type){const P=r.lower2d.applyScale(t),O=await a.value();Y=O.isZero,O.isZero||(P.fillStyle=O.hex,P.rect(...l.J.couple(l.$t.topLeft(i)),l.$t.width(i),l.$t.height(i)),P.fill(),c.fillStyle=O.pickByContrast(b.colors.gray.l0,b.colors.gray.l11).hex)}Y&&(c.fillStyle=this.internal.textColor.hex),c.textBaseline="middle",m&&c.fillText("-",...l.J.couple(l.J.translateX(x,-f*.6))),c.fillText(u,...l.J.couple(x)),S()}};h(he,"TYPE","value"),h(he,"z",Du);let Wt=he;const mi={[Wt.TYPE]:Wt},Zu=Object.freeze(Object.defineProperty({__proto__:null,REGISTRY:mi,Value:Wt},Symbol.toStringTag,{value:"Module"}));exports.AcquireChannelControl=Me;exports.Annotation=yn;exports.AuthoritySource=Ye;exports.BaseProvider=Nt;exports.Button=Sn;exports.Canvas=Ua;exports.Canvas$1=Re;exports.Chip=bn;exports.Controller=I;exports.Controller$1=vn;exports.Diagram=Ru;exports.Diagram$1=Jt;exports.Indicator=xn;exports.Legend=Tn;exports.Light=Cn;exports.Line=Ce;exports.LinePlot=wn;exports.Log=ze;exports.Measure=jt;exports.Provider=We;exports.Provider$1=Pe;exports.Provider$2=Wn;exports.REASON_DATA=Hn;exports.REASON_LAYOUT=tt;exports.REASON_TOOL=st;exports.REGISTRY=bu;exports.REGISTRY$1=Pu;exports.REGISTRY$10=uu;exports.REGISTRY$11=Va;exports.REGISTRY$12=eu;exports.REGISTRY$13=$u;exports.REGISTRY$14=hi;exports.REGISTRY$15=Cu;exports.REGISTRY$16=Ka;exports.REGISTRY$17=ku;exports.REGISTRY$18=Wi;exports.REGISTRY$2=Ou;exports.REGISTRY$3=mi;exports.REGISTRY$4=Wa;exports.REGISTRY$5=Lu;exports.REGISTRY$6=va;exports.REGISTRY$7=Ms;exports.REGISTRY$8=zu;exports.REGISTRY$9=ja;exports.Rule=qt;exports.STATUSES=ni;exports.SetChannelValue=$e;exports.Setpoint=En;exports.StateProvider=Ht;exports.Table=Oe;exports.Toggle=Pn;exports.Tooltip=Gt;exports.Value=Wt;exports.XAxis=ke;exports.YAxis=Ee;exports.ZERO_CONTEXT_VALUE=ir;exports.acquireChannelControl=Tu;exports.acquireChannelControlPropsZ=ii;exports.aether=iu;exports.annotationStateZ=Ha;exports.authoritySource=Su;exports.authoritySourceProps=oi;exports.axisStateZ=Nr;exports.buttonStateZ=ui;exports.canvas=vu;exports.canvasStateZ=Fr;exports.channelData=Gs;exports.chipStateZ=Qa;exports.color=Ut;exports.colorGradient=oa;exports.controllerStateZ=si;exports.coreAxisStateZ=Ue;exports.diagramStateZ=qr;exports.external=ho;exports.indicatorStateZ=li;exports.interpolateNumber=Se;exports.interpolateRgb=Qn;exports.interpolateString=Pa;exports.legendStateZ=ci;exports.lightStateZ=di;exports.linePlotStateZ=Xa;exports.logState=fi;exports.measure=yu;exports.measureStateZ=Br;exports.newTickFactory=nr;exports.parseAutoBounds=qa;exports.provider=zi;exports.providerStateZ=Ja;exports.providerStateZ$1=ma;exports.providerStateZ$2=Pr;exports.regions=pt;exports.rollingAverage=aa;exports.rollingAverageProps=Sr;exports.ruleStateZ=Ur;exports.scaleNumber=ca;exports.setChannelValue=xu;exports.setChannelValuePropsZ=ai;exports.setpoint=ta;exports.setpointStateZ=pi;exports.sinkPipeline=Fs;exports.sinkPipelinePropsZ=yr;exports.sourcePipeline=Bs;exports.sourcePipelinePropsZ=gr;exports.stateProviderStateZ=ti;exports.stateZ=Ga;exports.statusZ=ri;exports.streamChannelData=js;exports.streamChannelValue=Hs;exports.streamChannelValuePropsZ=wr;exports.stringSourceSpecZ=fr;exports.stringifyNumber=sa;exports.stringifyNumberProps=Tr;exports.sugaredStateZ=ei;exports.tickFactoryProps=Ir;exports.tickType=Zr;exports.toggleStateZ=gi;exports.tooltip=mu;exports.tooltipStateZ=_r;exports.value=Zu;exports.withinBounds=ea;exports.withinBoundsProps=xr;exports.withinSizeThreshold=_a;exports.xAxisStateZ=hu;exports.yAxisStateZ=ou;