@synnaxlabs/pluto 0.34.1 → 0.35.1

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 (241) hide show
  1. package/dist/{Animated-CnvOerW9.js → Animated-C7JTBH0T.js} +6 -6
  2. package/dist/{Animated-Ck87AGOu.cjs → Animated-D4IT49PS.cjs} +1 -1
  3. package/dist/{Item--wCat2DH.js → Item-4yG7GmwK.js} +23 -23
  4. package/dist/{Item-DuNQFmgk.cjs → Item-DuYEON-n.cjs} +1 -1
  5. package/dist/{Keyboard-DPs95Etp.cjs → Keyboard-BPoxRive.cjs} +1 -1
  6. package/dist/{Keyboard-Dh_Fhwg4.js → Keyboard-Csje8Cyn.js} +2 -2
  7. package/dist/LinePlot-DbXPZbQH.cjs +34 -0
  8. package/dist/{LinePlot-DN8KOMtR.js → LinePlot-DqoSTxNs.js} +2630 -2365
  9. package/dist/{Link-BHtl4aby.cjs → Link-BRv9hhIc.cjs} +1 -1
  10. package/dist/{Link-CDG2-g6A.js → Link-Crud0q_J.js} +1 -1
  11. package/dist/{List-BjimX8fM.js → List-Cuz80sgI.js} +6 -6
  12. package/dist/{List-C8vXIE2j.cjs → List-Pyj0u9YT.cjs} +1 -1
  13. package/dist/{Pack-D6eMgf33.js → Pack-BzCJQZ58.js} +1 -1
  14. package/dist/{Pack-DijAGcm_.cjs → Pack-Dvf8sQVK.cjs} +1 -1
  15. package/dist/Text-BJ2Pml4B.cjs +1 -0
  16. package/dist/{Text-CzgVM_22.js → Text-DMMYBs-R.js} +12 -12
  17. package/dist/{Toggle-Cdu7WaiC.js → Toggle-CLkPIiQK.js} +10438 -10080
  18. package/dist/Toggle-DnW_7Wr_.cjs +143 -0
  19. package/dist/{Video-DYSz9XOF.js → Video-BGyV37o3.js} +1 -1
  20. package/dist/{Video-BgDjKMJx.cjs → Video-CGe5Hscl.cjs} +1 -1
  21. package/dist/{aggregator-DzdAnRwI.js → aggregator-23mu0FOF.js} +2322 -2177
  22. package/dist/aggregator-y-jNJhKX.cjs +67 -0
  23. package/dist/align.cjs +1 -1
  24. package/dist/align.js +1 -1
  25. package/dist/button.cjs +1 -1
  26. package/dist/button.js +1 -1
  27. package/dist/color.cjs +1 -1
  28. package/dist/color.js +1 -1
  29. package/dist/css-BghghSL0.cjs +1 -0
  30. package/dist/css-DJCM-h5_.js +1178 -0
  31. package/dist/css.cjs +1 -1
  32. package/dist/css.js +2 -2
  33. package/dist/dropdown.cjs +1 -1
  34. package/dist/dropdown.js +1 -1
  35. package/dist/ether.cjs +1 -1
  36. package/dist/ether.js +75 -62
  37. package/dist/{external-k3Jbrj0m.js → external-0a9KHHwz.js} +13 -13
  38. package/dist/external-3DAfrFCZ.cjs +1 -0
  39. package/dist/{external-eI1p10Vf.cjs → external-B7Vpq1ol.cjs} +1 -1
  40. package/dist/{external-DRHWURjA.cjs → external-BV_9eXZJ.cjs} +1 -1
  41. package/dist/{external-lgZ2Gmbx.js → external-BZwFy-XX.js} +16 -16
  42. package/dist/{external-CoQwrjWl.js → external-CIH3tMhP.js} +29 -29
  43. package/dist/{external-BOIjtEGO.js → external-Cf5a9Ia8.js} +2 -2
  44. package/dist/{external-FVIwMFDr.js → external-CgpiH-10.js} +102 -102
  45. package/dist/{external-B_-ZrYaG.js → external-Cgq0p0a8.js} +42 -42
  46. package/dist/{external-D9Q5Xjko.js → external-Ci-UP3Vu.js} +2 -2
  47. package/dist/external-CqLAQBcO.cjs +1 -0
  48. package/dist/{external-Cc9o20Al.cjs → external-Ctvxtwfh.cjs} +1 -1
  49. package/dist/{external-CAIE4G3V.cjs → external-D-PsJ1E5.cjs} +1 -1
  50. package/dist/external-D7FmaiqY.js +248 -0
  51. package/dist/{external-DvRQ7lJU.js → external-DAbicix6.js} +2 -2
  52. package/dist/external-DVF3ZJ4z.js +32 -0
  53. package/dist/external-De9tKPlO.js +76 -0
  54. package/dist/{external-CYsmC4uZ.cjs → external-Dk1cXh1i.cjs} +1 -1
  55. package/dist/{external-mtlL4Z3a.cjs → external-DtnrBHvV.cjs} +1 -1
  56. package/dist/{external-DVlGiTKE.cjs → external-ZxIaRZdb.cjs} +1 -1
  57. package/dist/{external-BbS4QDTb.cjs → external-iiNZw96o.cjs} +1 -1
  58. package/dist/{external-DsKRFJxV.cjs → external-t43feeRt.cjs} +1 -1
  59. package/dist/{external-mE-a2ecU.js → external-xhGCeglf.js} +1 -1
  60. package/dist/{external-CjmMj11F.cjs → external-xtDHiIUX.cjs} +1 -1
  61. package/dist/header.cjs +1 -1
  62. package/dist/header.js +1 -1
  63. package/dist/index.cjs +7 -7
  64. package/dist/index.js +7487 -7082
  65. package/dist/input.cjs +1 -1
  66. package/dist/input.js +1 -1
  67. package/dist/list.cjs +1 -1
  68. package/dist/list.js +1 -1
  69. package/dist/menu.cjs +1 -1
  70. package/dist/menu.js +1 -1
  71. package/dist/src/breadcrumb/Breadcrumb.d.ts +10 -2
  72. package/dist/src/breadcrumb/Breadcrumb.d.ts.map +1 -1
  73. package/dist/src/button/Button.d.ts +2 -0
  74. package/dist/src/button/Button.d.ts.map +1 -1
  75. package/dist/src/button/Icon.d.ts +2 -0
  76. package/dist/src/button/Icon.d.ts.map +1 -1
  77. package/dist/src/color/GradientPicker.d.ts +10 -0
  78. package/dist/src/color/GradientPicker.d.ts.map +1 -0
  79. package/dist/src/color/Picker.d.ts +9 -0
  80. package/dist/src/color/Picker.d.ts.map +1 -0
  81. package/dist/src/color/Provider.d.ts +139 -0
  82. package/dist/src/color/Provider.d.ts.map +1 -0
  83. package/dist/src/color/Swatch.d.ts +13 -0
  84. package/dist/src/color/Swatch.d.ts.map +1 -0
  85. package/dist/src/color/core/external.d.ts +4 -0
  86. package/dist/src/color/core/external.d.ts.map +1 -0
  87. package/dist/src/color/core/gradient.d.ts +58 -0
  88. package/dist/src/color/core/gradient.d.ts.map +1 -0
  89. package/dist/src/color/core/index.d.ts +1 -2
  90. package/dist/src/color/core/index.d.ts.map +1 -1
  91. package/dist/src/color/core/palette.d.ts +74 -0
  92. package/dist/src/color/core/palette.d.ts.map +1 -0
  93. package/dist/src/color/external.d.ts +4 -1
  94. package/dist/src/color/external.d.ts.map +1 -1
  95. package/dist/src/haul/Haul.d.ts +0 -1
  96. package/dist/src/haul/Haul.d.ts.map +1 -1
  97. package/dist/src/hooks/index.d.ts +1 -0
  98. package/dist/src/hooks/index.d.ts.map +1 -1
  99. package/dist/src/hooks/useDelayedState.d.ts +11 -0
  100. package/dist/src/hooks/useDelayedState.d.ts.map +1 -0
  101. package/dist/src/index.d.ts +2 -0
  102. package/dist/src/index.d.ts.map +1 -1
  103. package/dist/src/input/Text.d.ts.map +1 -1
  104. package/dist/src/nav/Drawer.d.ts.map +1 -1
  105. package/dist/src/notation/Select.d.ts +8 -0
  106. package/dist/src/notation/Select.d.ts.map +1 -0
  107. package/dist/src/notation/external.d.ts +3 -0
  108. package/dist/src/notation/external.d.ts.map +1 -0
  109. package/dist/src/notation/index.d.ts +2 -0
  110. package/dist/src/notation/index.d.ts.map +1 -0
  111. package/dist/src/notation/notation.d.ts.map +1 -1
  112. package/dist/src/pluto/Pluto.d.ts +3 -1
  113. package/dist/src/pluto/Pluto.d.ts.map +1 -1
  114. package/dist/src/pluto/aether/pluto.d.ts.map +1 -1
  115. package/dist/src/select/Button.d.ts +5 -3
  116. package/dist/src/select/Button.d.ts.map +1 -1
  117. package/dist/src/select/Direction.d.ts +2 -1
  118. package/dist/src/select/Direction.d.ts.map +1 -1
  119. package/dist/src/select/Single.d.ts +1 -1
  120. package/dist/src/select/Single.d.ts.map +1 -1
  121. package/dist/src/status/Circle.d.ts +1 -1
  122. package/dist/src/status/Circle.d.ts.map +1 -1
  123. package/dist/src/table/Table.d.ts +30 -0
  124. package/dist/src/table/Table.d.ts.map +1 -0
  125. package/dist/src/table/aether/Table.d.ts +493 -0
  126. package/dist/src/table/aether/Table.d.ts.map +1 -0
  127. package/dist/src/table/aether/index.d.ts +2 -0
  128. package/dist/src/table/aether/index.d.ts.map +1 -0
  129. package/dist/src/table/cells/Cells.d.ts +191 -0
  130. package/dist/src/table/cells/Cells.d.ts.map +1 -0
  131. package/dist/src/table/cells/Forms.d.ts +7 -0
  132. package/dist/src/table/cells/Forms.d.ts.map +1 -0
  133. package/dist/src/table/cells/index.d.ts +2 -0
  134. package/dist/src/table/cells/index.d.ts.map +1 -0
  135. package/dist/src/table/cells/registry.d.ts +17 -0
  136. package/dist/src/table/cells/registry.d.ts.map +1 -0
  137. package/dist/src/table/external.d.ts +2 -0
  138. package/dist/src/table/external.d.ts.map +1 -0
  139. package/dist/src/table/index.d.ts +2 -0
  140. package/dist/src/table/index.d.ts.map +1 -0
  141. package/dist/src/telem/aether/pipeline.d.ts +35 -24
  142. package/dist/src/telem/aether/pipeline.d.ts.map +1 -1
  143. package/dist/src/telem/aether/provider.d.ts +7 -6
  144. package/dist/src/telem/aether/provider.d.ts.map +1 -1
  145. package/dist/src/telem/aether/static.d.ts +22 -1
  146. package/dist/src/telem/aether/static.d.ts.map +1 -1
  147. package/dist/src/telem/aether/transformers.d.ts +217 -2
  148. package/dist/src/telem/aether/transformers.d.ts.map +1 -1
  149. package/dist/src/telem/control/aether/controller.d.ts.map +1 -1
  150. package/dist/src/text/Editable.d.ts +2 -1
  151. package/dist/src/text/Editable.d.ts.map +1 -1
  152. package/dist/src/text/Select.d.ts +19 -0
  153. package/dist/src/text/Select.d.ts.map +1 -0
  154. package/dist/src/text/core/types.d.ts +2 -1
  155. package/dist/src/text/core/types.d.ts.map +1 -1
  156. package/dist/src/text/external.d.ts +1 -1
  157. package/dist/src/text/external.d.ts.map +1 -1
  158. package/dist/src/theming/Provider.d.ts.map +1 -1
  159. package/dist/src/theming/aether/provider.d.ts +375 -0
  160. package/dist/src/theming/aether/provider.d.ts.map +1 -1
  161. package/dist/src/theming/core/theme.d.ts +127 -0
  162. package/dist/src/theming/core/theme.d.ts.map +1 -1
  163. package/dist/src/vis/axis/canvas.d.ts +11 -0
  164. package/dist/src/vis/axis/canvas.d.ts.map +1 -1
  165. package/dist/src/vis/canvas/Canvas.d.ts.map +1 -1
  166. package/dist/src/vis/diagram/Diagram.d.ts +2 -1
  167. package/dist/src/vis/diagram/Diagram.d.ts.map +1 -1
  168. package/dist/src/vis/diagram/aether/types.d.ts +17 -0
  169. package/dist/src/vis/diagram/aether/types.d.ts.map +1 -1
  170. package/dist/src/vis/diagram/edge/Edge.d.ts +3 -2
  171. package/dist/src/vis/diagram/edge/Edge.d.ts.map +1 -1
  172. package/dist/src/vis/diagram/edge/paths.d.ts +20 -0
  173. package/dist/src/vis/diagram/edge/paths.d.ts.map +1 -0
  174. package/dist/src/vis/diagram/external.d.ts +1 -0
  175. package/dist/src/vis/diagram/external.d.ts.map +1 -1
  176. package/dist/src/vis/draw2d/canvas.d.ts +19 -0
  177. package/dist/src/vis/draw2d/canvas.d.ts.map +1 -1
  178. package/dist/src/vis/legend/Container.d.ts.map +1 -1
  179. package/dist/src/vis/line/aether/line.d.ts.map +1 -1
  180. package/dist/src/vis/render/context.d.ts.map +1 -1
  181. package/dist/src/vis/schematic/Forms.d.ts +1 -0
  182. package/dist/src/vis/schematic/Forms.d.ts.map +1 -1
  183. package/dist/src/vis/schematic/Grid.d.ts +16 -0
  184. package/dist/src/vis/schematic/Grid.d.ts.map +1 -0
  185. package/dist/src/vis/schematic/Symbols.d.ts +255 -415
  186. package/dist/src/vis/schematic/Symbols.d.ts.map +1 -1
  187. package/dist/src/vis/schematic/primitives/Primitives.d.ts +16 -12
  188. package/dist/src/vis/schematic/primitives/Primitives.d.ts.map +1 -1
  189. package/dist/src/vis/schematic/registry.d.ts +2 -2
  190. package/dist/src/vis/schematic/registry.d.ts.map +1 -1
  191. package/dist/src/vis/value/Form.d.ts +9 -0
  192. package/dist/src/vis/value/Form.d.ts.map +1 -0
  193. package/dist/src/vis/value/aether/value.d.ts +167 -0
  194. package/dist/src/vis/value/aether/value.d.ts.map +1 -1
  195. package/dist/src/vis/value/external.d.ts +1 -0
  196. package/dist/src/vis/value/external.d.ts.map +1 -1
  197. package/dist/src/vis/value/use.d.ts +56 -1
  198. package/dist/src/vis/value/use.d.ts.map +1 -1
  199. package/dist/src/workMain.d.ts +2 -0
  200. package/dist/src/workMain.d.ts.map +1 -0
  201. package/dist/style.css +1 -1
  202. package/dist/tabs.cjs +1 -1
  203. package/dist/tabs.js +1 -1
  204. package/dist/text.cjs +1 -1
  205. package/dist/text.js +2 -2
  206. package/dist/theming.cjs +1 -1
  207. package/dist/theming.js +2 -2
  208. package/dist/tree.cjs +1 -1
  209. package/dist/tree.js +1 -1
  210. package/dist/triggers.cjs +1 -1
  211. package/dist/triggers.js +1 -1
  212. package/dist/{units-CR-P9eLW.cjs → units-9h1yAbxY.cjs} +1 -1
  213. package/dist/{units-rb5QAWjs.js → units-D19WggGS.js} +1 -1
  214. package/dist/video.cjs +1 -1
  215. package/dist/video.js +1 -1
  216. package/package.json +8 -7
  217. package/dist/LinePlot-44K5K51b.cjs +0 -34
  218. package/dist/Text-Cg0q7seY.cjs +0 -1
  219. package/dist/Toggle-CP9KtybX.cjs +0 -143
  220. package/dist/aggregator-C0Ab25_o.cjs +0 -67
  221. package/dist/css-B4FcyECk.js +0 -1112
  222. package/dist/css-Dh7n0EGs.cjs +0 -1
  223. package/dist/external-B72rRj4o.js +0 -76
  224. package/dist/external-CsqyDUsJ.js +0 -96
  225. package/dist/external-Dm2-owlq.cjs +0 -1
  226. package/dist/external-Yf8Lv9AU.js +0 -248
  227. package/dist/external-gz4sf3pG.cjs +0 -1
  228. package/dist/src/color/Picker/Picker.d.ts +0 -7
  229. package/dist/src/color/Picker/Picker.d.ts.map +0 -1
  230. package/dist/src/color/Picker/index.d.ts +0 -2
  231. package/dist/src/color/Picker/index.d.ts.map +0 -1
  232. package/dist/src/color/Swatch/Swatch.d.ts +0 -10
  233. package/dist/src/color/Swatch/Swatch.d.ts.map +0 -1
  234. package/dist/src/color/Swatch/index.d.ts +0 -2
  235. package/dist/src/color/Swatch/index.d.ts.map +0 -1
  236. package/dist/src/notation/SelectNotation.d.ts +0 -12
  237. package/dist/src/notation/SelectNotation.d.ts.map +0 -1
  238. package/dist/src/text/SelectLevel.d.ts +0 -12
  239. package/dist/src/text/SelectLevel.d.ts.map +0 -1
  240. package/dist/src/vis/schematic/Labeled.d.ts +0 -17
  241. package/dist/src/vis/schematic/Labeled.d.ts.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import { j as r } from "./jsx-runtime-B6kdoens.js";
2
- import { Q as m } from "./Toggle-Cdu7WaiC.js";
3
- import { C as t } from "./css-B4FcyECk.js";
4
- const s = ({ enabledLoc: e, disabledLoc: o, enabled: a }) => /* @__PURE__ */ r.jsx(
2
+ import { h as m } from "./Toggle-CLkPIiQK.js";
3
+ import { C as e } from "./css-DJCM-h5_.js";
4
+ const s = ({ enabledLoc: t, disabledLoc: o, enabled: a }) => /* @__PURE__ */ r.jsx(
5
5
  m.Caret.Up,
6
6
  {
7
- className: t(
8
- t.B("caret-animated"),
9
- t.loc(a ? e : o)
7
+ className: e(
8
+ e.B("caret-animated"),
9
+ e.loc(a ? t : o)
10
10
  )
11
11
  }
12
12
  ), c = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
@@ -1 +1 @@
1
- "use strict";const o=require("./jsx-runtime-Cek9Ww4S.cjs"),i=require("./Toggle-CP9KtybX.cjs"),e=require("./css-Dh7n0EGs.cjs"),t=({enabledLoc:n,disabledLoc:r,enabled:s})=>o.jsxRuntimeExports.jsx(i.Qt.Caret.Up,{className:e.CSS(e.CSS.B("caret-animated"),e.CSS.loc(s?n:r))}),a=Object.freeze(Object.defineProperty({__proto__:null,Animated:t},Symbol.toStringTag,{value:"Module"}));exports.Animated=t;exports.Animated$1=a;
1
+ "use strict";const o=require("./jsx-runtime-Cek9Ww4S.cjs"),i=require("./Toggle-DnW_7Wr_.cjs"),e=require("./css-BghghSL0.cjs"),t=({enabledLoc:n,disabledLoc:r,enabled:s})=>o.jsxRuntimeExports.jsx(i.e4.Caret.Up,{className:e.CSS(e.CSS.B("caret-animated"),e.CSS.loc(s?n:r))}),a=Object.freeze(Object.defineProperty({__proto__:null,Animated:t},Symbol.toStringTag,{value:"Module"}));exports.Animated=t;exports.Animated$1=a;
@@ -1,10 +1,10 @@
1
1
  import { j as i } from "./jsx-runtime-B6kdoens.js";
2
- import { S as f } from "./Pack-D6eMgf33.js";
3
- import { m as z, B as N, I as g } from "./Toggle-Cdu7WaiC.js";
4
- import { L as B } from "./Link-CDG2-g6A.js";
5
- import { C as s } from "./css-B4FcyECk.js";
6
- import { createContext as S, useContext as M, useCallback as L, useMemo as D } from "react";
7
- import { T as j } from "./Text-CzgVM_22.js";
2
+ import { S as f } from "./Pack-BzCJQZ58.js";
3
+ import { E as z, B as N, I as g } from "./Toggle-CLkPIiQK.js";
4
+ import { L as B } from "./Link-Crud0q_J.js";
5
+ import { C as s } from "./css-DJCM-h5_.js";
6
+ import { createContext as S, useContext as M, useCallback as E, useMemo as L } from "react";
7
+ import { T as j } from "./Text-DMMYBs-R.js";
8
8
  const I = S({
9
9
  onClick: () => {
10
10
  },
@@ -16,12 +16,12 @@ const I = S({
16
16
  iconSpacing: o,
17
17
  value: t = ""
18
18
  }) => {
19
- const r = L(
19
+ const r = E(
20
20
  (c) => {
21
21
  typeof e == "function" ? e(c) : e && c in e && e[c](c);
22
22
  },
23
23
  [e]
24
- ), m = D(
24
+ ), l = L(
25
25
  () => ({
26
26
  onClick: r,
27
27
  selected: t,
@@ -30,16 +30,16 @@ const I = S({
30
30
  }),
31
31
  [t, r, n, o]
32
32
  );
33
- return /* @__PURE__ */ i.jsx(I.Provider, { value: m, children: a });
34
- }, $ = () => /* @__PURE__ */ i.jsx(z, { direction: "x", padded: !0 }), E = (a) => {
35
- const { itemKey: e, trigger: n, className: o, onClick: t, size: r, ...m } = a, { onClick: c, selected: x, level: l = "p", iconSpacing: u } = k(), d = (C) => {
33
+ return /* @__PURE__ */ i.jsx(I.Provider, { value: l, children: a });
34
+ }, $ = () => /* @__PURE__ */ i.jsx(z, { direction: "x", padded: !0 }), D = (a) => {
35
+ const { itemKey: e, trigger: n, className: o, onClick: t, size: r, ...l } = a, { onClick: c, selected: x, level: m = "p", iconSpacing: u } = k(), d = (C) => {
36
36
  c(e), t == null || t(C);
37
37
  }, p = x === e;
38
38
  return /* @__PURE__ */ i.jsx(
39
39
  N,
40
40
  {
41
- level: l,
42
- ...m,
41
+ level: m,
42
+ ...l,
43
43
  noWrap: !0,
44
44
  onClick: d,
45
45
  variant: "text",
@@ -51,34 +51,34 @@ const I = S({
51
51
  className: s(s.BE("menu-item", "trigger")),
52
52
  direction: "x",
53
53
  size: 0.5,
54
- children: /* @__PURE__ */ i.jsx(j, { level: l, trigger: n })
54
+ children: /* @__PURE__ */ i.jsx(j, { level: m, trigger: n })
55
55
  }
56
56
  )
57
57
  }
58
58
  );
59
59
  }, K = (a) => {
60
- const { itemKey: e, trigger: n, className: o, onClick: t, size: r, ...m } = a, { onClick: c, selected: x, iconSpacing: l } = k(), u = (p) => {
60
+ const { itemKey: e, trigger: n, className: o, onClick: t, size: r, ...l } = a, { onClick: c, selected: x, iconSpacing: m } = k(), u = (p) => {
61
61
  c(e), t == null || t(p);
62
62
  }, d = x === e;
63
63
  return /* @__PURE__ */ i.jsx(
64
64
  g,
65
65
  {
66
- ...m,
66
+ ...l,
67
67
  onClick: u,
68
68
  variant: "text",
69
69
  className: s(s.B("menu-item"), s.selected(d), o),
70
- size: r ?? l
70
+ size: r ?? m
71
71
  }
72
72
  );
73
73
  }, O = (a) => {
74
- const { itemKey: e, trigger: n, className: o, onClick: t, size: r, ...m } = a, { onClick: c, selected: x, level: l = "p", iconSpacing: u } = k(), d = (C) => {
74
+ const { itemKey: e, trigger: n, className: o, onClick: t, size: r, ...l } = a, { onClick: c, selected: x, level: m = "p", iconSpacing: u } = k(), d = (C) => {
75
75
  c(e), t == null || t(C);
76
76
  }, p = x === e;
77
77
  return /* @__PURE__ */ i.jsx(
78
78
  B,
79
79
  {
80
- level: l,
81
- ...m,
80
+ level: m,
81
+ ...l,
82
82
  noWrap: !0,
83
83
  onClick: d,
84
84
  variant: "text",
@@ -90,16 +90,16 @@ const I = S({
90
90
  className: s(s.BE("menu-item", "trigger")),
91
91
  direction: "x",
92
92
  size: 0.5,
93
- children: /* @__PURE__ */ i.jsx(j, { level: l, trigger: n })
93
+ children: /* @__PURE__ */ i.jsx(j, { level: m, trigger: n })
94
94
  }
95
95
  )
96
96
  }
97
97
  );
98
- }, v = E;
98
+ }, v = D;
99
99
  v.Icon = K;
100
100
  v.Link = O;
101
101
  export {
102
- E as C,
102
+ D as C,
103
103
  $ as D,
104
104
  v as I,
105
105
  V as M,
@@ -1 +1 @@
1
- "use strict";const i=require("./jsx-runtime-Cek9Ww4S.cjs"),R=require("./Pack-DijAGcm_.cjs"),k=require("./Toggle-CP9KtybX.cjs"),q=require("./Link-BHtl4aby.cjs"),s=require("./css-Dh7n0EGs.cjs"),d=require("react"),v=require("./Text-Cg0q7seY.cjs"),I=d.createContext({onClick:()=>{},selected:""}),j=()=>d.useContext(I),M=({children:x,onChange:e,level:c,iconSpacing:r,value:t=""})=>{const o=d.useCallback(n=>{typeof e=="function"?e(n):e&&n in e&&e[n](n)},[e]),u=d.useMemo(()=>({onClick:o,selected:t,level:c,iconSpacing:r}),[t,o,c,r]);return i.jsxRuntimeExports.jsx(I.Provider,{value:u,children:x})},B=()=>i.jsxRuntimeExports.jsx(k.Divider,{direction:"x",padded:!0}),g=x=>{const{itemKey:e,trigger:c,className:r,onClick:t,size:o,...u}=x,{onClick:n,selected:m,level:l="p",iconSpacing:a}=j(),S=p=>{n(e),t==null||t(p)},C=m===e;return i.jsxRuntimeExports.jsx(k.Button,{level:l,...u,noWrap:!0,onClick:S,variant:"text",className:s.CSS(s.CSS.B("menu-item"),s.CSS.selected(C),r),size:o??a,endIcon:c&&i.jsxRuntimeExports.jsx(R.Space,{className:s.CSS(s.CSS.BE("menu-item","trigger")),direction:"x",size:.5,children:i.jsxRuntimeExports.jsx(v.Text,{level:l,trigger:c})})})},z=x=>{const{itemKey:e,trigger:c,className:r,onClick:t,size:o,...u}=x,{onClick:n,selected:m,iconSpacing:l}=j(),a=C=>{n(e),t==null||t(C)},S=m===e;return i.jsxRuntimeExports.jsx(k.Icon,{...u,onClick:a,variant:"text",className:s.CSS(s.CSS.B("menu-item"),s.CSS.selected(S),r),size:o??l})},N=x=>{const{itemKey:e,trigger:c,className:r,onClick:t,size:o,...u}=x,{onClick:n,selected:m,level:l="p",iconSpacing:a}=j(),S=p=>{n(e),t==null||t(p)},C=m===e;return i.jsxRuntimeExports.jsx(q.Link,{level:l,...u,noWrap:!0,onClick:S,variant:"text",className:s.CSS(s.CSS.B("menu-item"),s.CSS.selected(C),r),size:o??a,endIcon:c&&i.jsxRuntimeExports.jsx(R.Space,{className:s.CSS(s.CSS.BE("menu-item","trigger")),direction:"x",size:.5,children:i.jsxRuntimeExports.jsx(v.Text,{level:l,trigger:c})})})},E=g;E.Icon=z;E.Link=N;exports.CoreItem=g;exports.Divider=B;exports.Item=E;exports.ItemIcon=z;exports.ItemLink=N;exports.Menu=M;exports.MenuContext=I;exports.useMenuContext=j;
1
+ "use strict";const i=require("./jsx-runtime-Cek9Ww4S.cjs"),R=require("./Pack-Dvf8sQVK.cjs"),k=require("./Toggle-DnW_7Wr_.cjs"),q=require("./Link-BRv9hhIc.cjs"),s=require("./css-BghghSL0.cjs"),d=require("react"),v=require("./Text-BJ2Pml4B.cjs"),I=d.createContext({onClick:()=>{},selected:""}),j=()=>d.useContext(I),M=({children:x,onChange:e,level:c,iconSpacing:r,value:t=""})=>{const o=d.useCallback(n=>{typeof e=="function"?e(n):e&&n in e&&e[n](n)},[e]),u=d.useMemo(()=>({onClick:o,selected:t,level:c,iconSpacing:r}),[t,o,c,r]);return i.jsxRuntimeExports.jsx(I.Provider,{value:u,children:x})},B=()=>i.jsxRuntimeExports.jsx(k.Divider,{direction:"x",padded:!0}),g=x=>{const{itemKey:e,trigger:c,className:r,onClick:t,size:o,...u}=x,{onClick:n,selected:m,level:l="p",iconSpacing:a}=j(),S=p=>{n(e),t==null||t(p)},C=m===e;return i.jsxRuntimeExports.jsx(k.Button,{level:l,...u,noWrap:!0,onClick:S,variant:"text",className:s.CSS(s.CSS.B("menu-item"),s.CSS.selected(C),r),size:o??a,endIcon:c&&i.jsxRuntimeExports.jsx(R.Space,{className:s.CSS(s.CSS.BE("menu-item","trigger")),direction:"x",size:.5,children:i.jsxRuntimeExports.jsx(v.Text,{level:l,trigger:c})})})},z=x=>{const{itemKey:e,trigger:c,className:r,onClick:t,size:o,...u}=x,{onClick:n,selected:m,iconSpacing:l}=j(),a=C=>{n(e),t==null||t(C)},S=m===e;return i.jsxRuntimeExports.jsx(k.Icon,{...u,onClick:a,variant:"text",className:s.CSS(s.CSS.B("menu-item"),s.CSS.selected(S),r),size:o??l})},N=x=>{const{itemKey:e,trigger:c,className:r,onClick:t,size:o,...u}=x,{onClick:n,selected:m,level:l="p",iconSpacing:a}=j(),S=p=>{n(e),t==null||t(p)},C=m===e;return i.jsxRuntimeExports.jsx(q.Link,{level:l,...u,noWrap:!0,onClick:S,variant:"text",className:s.CSS(s.CSS.B("menu-item"),s.CSS.selected(C),r),size:o??a,endIcon:c&&i.jsxRuntimeExports.jsx(R.Space,{className:s.CSS(s.CSS.BE("menu-item","trigger")),direction:"x",size:.5,children:i.jsxRuntimeExports.jsx(v.Text,{level:l,trigger:c})})})},E=g;E.Icon=z;E.Link=N;exports.CoreItem=g;exports.Divider=B;exports.Item=E;exports.ItemIcon=z;exports.ItemLink=N;exports.Menu=M;exports.MenuContext=I;exports.useMenuContext=j;
@@ -1 +1 @@
1
- "use strict";const c=require("./jsx-runtime-Cek9Ww4S.cjs"),o=require("./Toggle-CP9KtybX.cjs"),t=require("./css-Dh7n0EGs.cjs"),i=({className:e,level:s,...r})=>c.jsxRuntimeExports.jsx(o.Text,{className:t.CSS(e,t.CSS.BM("text","keyboard")),level:s,style:{width:`calc(var(--pluto-${s}-size) * 1.7)`,height:`calc(var(--pluto-${s}-size) * 1.7)`},...r});exports.Keyboard=i;
1
+ "use strict";const c=require("./jsx-runtime-Cek9Ww4S.cjs"),o=require("./Toggle-DnW_7Wr_.cjs"),t=require("./css-BghghSL0.cjs"),i=({className:e,level:s,...r})=>c.jsxRuntimeExports.jsx(o.Text,{className:t.CSS(e,t.CSS.BM("text","keyboard")),level:s,style:{width:`calc(var(--pluto-${s}-size) * 1.7)`,height:`calc(var(--pluto-${s}-size) * 1.7)`},...r});exports.Keyboard=i;
@@ -1,6 +1,6 @@
1
1
  import { j as r } from "./jsx-runtime-B6kdoens.js";
2
- import { i } from "./Toggle-Cdu7WaiC.js";
3
- import { C as o } from "./css-B4FcyECk.js";
2
+ import { j as i } from "./Toggle-CLkPIiQK.js";
3
+ import { C as o } from "./css-DJCM-h5_.js";
4
4
  const c = ({
5
5
  className: s,
6
6
  level: t,
@@ -0,0 +1,34 @@
1
+ "use strict";var ka=Object.defineProperty;var Oa=(n,e,t)=>e in n?ka(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var u=(n,e,t)=>Oa(n,typeof e!="symbol"?e+"":e,t);const d=require("./aggregator-y-jNJhKX.cjs"),p=require("zod"),o=require("./css-BghghSL0.cjs");var Ya=Object.defineProperty,za=(n,e,t)=>e in n?Ya(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Fe=(n,e,t)=>za(n,typeof e!="symbol"?e+"":e,t);class Da{constructor(e,t){Fe(this,"handlers"),Fe(this,"transform"),Fe(this,"closer"),this.transform=e,this.handlers=t??new Map}onChange(e){return this.handlers.set(e,null),()=>this.handlers.delete(e)}notify(e){let t=e;if(this.transform!=null){const[s,r]=this.transform(e);if(!r)return;t=s}this.handlers.forEach((s,r)=>r(t))}setCloser(e){this.closer=e}async close(){var e;return await((e=this.closer)==null?void 0:e.call(this))}}class Ma{constructor(e){Fe(this,"handlers"),this.handlers=e??new Map}onChange(e){return this.handlers.set(e,null),()=>this.handlers.delete(e)}notify(e){this.handlers.forEach((t,s)=>s(e))}}const rs=Object.freeze(Object.defineProperty({__proto__:null,BaseObserver:Ma,Observer:Da},Symbol.toStringTag,{value:"Module"})),Aa=p.z.object({props:d.lg.nullable(),state:d.ug.connectivity.connectionStateZ.nullable()}),is={synnax:null,state:d.ug.connectivity.DEFAULT};var ot;let He=(ot=class extends d.Composite{constructor(){super(...arguments);u(this,"schema",ot.stateZ)}async afterUpdate(){var t;if(this.ctx.has(as)||_n(this.ctx,is),this.state.props==null){this.internal.synnax!=null&&(this.setState(s=>({...s,state:d.ug.connectivity.DEFAULT})),(t=this.internal.synnax)==null||t.close(),this.internal.synnax=null),_n(this.ctx,this.internal);return}this.prevState.props!=null&&d._.equal(this.state.props,this.prevState.props)&&this.internal.synnax!=null||(this.internal.synnax=new d.ug(this.state.props),this.internal.synnax.connectivity.onChange(s=>this.setState(r=>({...r,state:s}))),_n(this.ctx,this.internal))}},u(ot,"TYPE","SynnaxProvider"),u(ot,"stateZ",Aa),ot);const as="pluto-client-context",_n=(n,e)=>n.set(as,e),ze=n=>n.get(as).synnax,Pr={[He.TYPE]:He},La=Object.freeze(Object.defineProperty({__proto__:null,Provider:He,REGISTRY:Pr,ZERO_CONTEXT_VALUE:is,use:ze},Symbol.toStringTag,{value:"Module"})),kr="pluto-telem-context",Pn=n=>n.get(kr),Or=(n,e)=>n.set(kr,e),Yr=(n,e)=>Pn(n).registerFactory(e);class Us{constructor(e,t,s){u(this,"spec");u(this,"wrapped");u(this,"prevKey");this.wrapped=e,this.spec=s,this.prevKey=t.clusterKey}async value(){return await this.wrapped.value()}async cleanup(){var e,t;await((t=(e=this.wrapped).cleanup)==null?void 0:t.call(e))}onChange(e){return this.wrapped.onChange(e)}shouldUpdate(e,t){return this.prevKey!==e.clusterKey||!d._.equal(this.spec,t)}}class Fs{constructor(e,t,s){u(this,"spec");u(this,"prov");u(this,"prevKey");u(this,"wrapped");this.wrapped=e,this.spec=s,this.prov=t,this.prevKey=t.clusterKey}async set(e){return await this.wrapped.set(e)}async cleanup(){var e,t;await((t=(e=this.wrapped).cleanup)==null?void 0:t.call(e))}shouldUpdate(e,t){return this.prevKey!==e.clusterKey||!d._.equal(this.spec,t)}}const j=async(n,e,t)=>{var r;const s=Pn(n);if(t instanceof Us){if(!t.shouldUpdate(s,e))return t;await((r=t.cleanup)==null?void 0:r.call(t))}return new Us(s.create(e),s,e)},De=async(n,e,t)=>{var r;const s=Pn(n);if(t instanceof Fs){if(!t.shouldUpdate(s,e))return t;await((r=t.cleanup)==null?void 0:r.call(t))}return new Fs(s.create(e),s,e)};class lt extends rs.Observer{async cleanup(){}}class We extends lt{async set(){return await Promise.resolve()}}u(We,"TYPE","noop-boolean-sink");const kn={type:We.TYPE,props:{},variant:"sink",valueType:"boolean"};class Xe extends lt{async set(){return await Promise.resolve()}}u(Xe,"TYPE","noop-numeric-sink");const zr={type:Xe.TYPE,props:{},variant:"sink",valueType:"number"};class Ve extends lt{async value(){return await Promise.resolve(!1)}}u(Ve,"TYPE","noop-boolean-source");const os={type:Ve.TYPE,props:{},variant:"source",valueType:"boolean"};class Ke extends lt{async value(){return 0}}u(Ke,"TYPE","noop-numeric-source");const Dr={type:Ke.TYPE,props:{},variant:"source",valueType:"number"};class Qe extends lt{async value(){return""}}u(Qe,"TYPE","noop-string-source");const Mr={type:Qe.TYPE,props:{},variant:"source",valueType:"string"};class Je extends lt{async value(){return{key:"noop",variant:"disabled",message:"unknown",time:d.m.now()}}}u(Je,"TYPE","noop-status-source");const ls={type:Je.TYPE,props:{},variant:"source",valueType:"status"};class tn extends lt{async value(){return o.ZERO}}u(tn,"TYPE","noop-color-source");const On={type:tn.TYPE,props:{},variant:"source",valueType:"color"};class en extends lt{async value(){return[o.G$1.ZERO,[]]}}u(en,"TYPE","noop-series");const Ar={type:en.TYPE,props:{},variant:"source",valueType:"series"},_a={[We.TYPE]:We,[Xe.TYPE]:Xe,[Ve.TYPE]:Ve,[Ke.TYPE]:Ke,[Je.TYPE]:Je,[tn.TYPE]:tn,[Qe.TYPE]:Qe,[en.TYPE]:en};class Lr{constructor(){u(this,"type","noop")}create(e){const t=_a[e.type];return t==null?null:new t}}const $a=p.z.instanceof(ArrayBuffer),Me=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($a).optional()}),ct=Me.extend({variant:p.z.literal("source")}),Yn=Me.extend({variant:p.z.literal("sink")}),_r=Me.extend({variant:p.z.literal("source-transformer")}),$r=Me.extend({variant:p.z.literal("sink-transformer")}),nn=ct.extend({valueType:p.z.literal("series")}),cs=ct.extend({valueType:p.z.literal("boolean")}),zn=Yn.extend({valueType:p.z.literal("boolean")}),Ga=$r.extend({valueType:p.z.literal("boolean")}),Za=_r.extend({valueType:p.z.literal("boolean")}),Gr=ct.extend({valueType:p.z.literal("number")}),Zr=Yn.extend({valueType:p.z.literal("number")}),us=ct.extend({valueType:p.z.literal("color")}),hs=ct.extend({valueType:p.z.literal("status")}),ds=ct.extend({valueType:p.z.literal("string")});class Dn extends rs.BaseObserver{constructor(t){super();u(this,"props_");u(this,"uProps_");u(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 d.B(`[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 d.B(`[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 F extends Dn{}class Mn extends Dn{}class mt extends F{constructor(){super(...arguments);u(this,"sources",{})}get source(){const[t]=Object.values(this.sources);if(t==null)throw new d.B("[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(s=>{this.shouldNotify(s)&&t()}).catch(console.error)})}setSources(t){this.sources=t}shouldNotify(t){return!0}transform(t){throw new d.B(`[UnarySourceTransformer] - expected subclass to define transform method, but none was found.
4
+ Make sure to define a method 'transform' on the class.`)}}class Ir extends F{constructor(){super(...arguments);u(this,"sources",{})}async value(){const t=Object.fromEntries(await Promise.all(Object.entries(this.sources).map(async([s,r])=>[s,await r.value()])));return this.transform(t)}setSources(t){this.sources={...this.sources,...t}}transform(t){throw new d.B(`[MultiSourceTransformer] - expected subclass to define transform method, but none was found.
5
+ Make sure to define a method 'transform' on the class.`)}}class Nr extends Dn{constructor(){super(...arguments);u(this,"sinks",{})}get sink(){const[t]=Object.values(this.sinks);if(t==null)throw new d.B("[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 d.B(`[UnarySinkTransformer] - expected subclass to define transform method, but none was found.
6
+ Make sure to define a method 'transform' on the class.`)}}const fs=p.z.object({from:p.z.string(),to:p.z.string()}),ps=p.z.object({connections:p.z.array(fs),outlet:p.z.string(),segments:p.z.record(ct)});class Br{constructor(e){u(this,"type","pipeline");u(this,"factory");this.factory=e}create(e){switch(e.type){case ce.TYPE:return new ce(e.props,this.factory);case ue.TYPE:return new ue(e.props,this.factory);default:return null}}}class ce extends F{constructor(t,s){super(t);u(this,"schema",ps);u(this,"sources",{});const{connections:r,segments:i}=this.props;Object.entries(i).forEach(([a,l])=>{const c=s.create(l);c!=null&&(this.sources[a]=c)}),r.forEach(({from:a,to:l})=>{const c=this.sources[a],h=this.sources[l];c==null||h==null||"setSources"in h&&h.setSources({[a]:c})})}get outlet(){const{outlet:t}=this.props,s=this.sources[t];if(s==null)throw new d.B(`[SourcePipeline] - expected source to exist at outlet '${t}', but none was found.`);return s}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 s;return await((s=t.cleanup)==null?void 0:s.call(t))}))}}u(ce,"TYPE","source-pipeline");const Ur=(n,e)=>({variant:"source",props:e,type:ce.TYPE,valueType:n}),gs=p.z.object({connections:p.z.array(fs),inlet:p.z.string(),segments:p.z.record(Yn)});class ue extends Mn{constructor(t,s){super(t);u(this,"schema",gs);u(this,"sinks",{});const{connections:r,segments:i}=this.props;Object.entries(i).forEach(([a,l])=>{const c=s.create(l);c!=null&&(this.sinks[a]=c)}),r.forEach(({from:a,to:l})=>{const c=this.sinks[a],h=this.sinks[l];c==null||h==null||"setSinks"in c&&c.setSinks({[l]:h})})}get inlet(){const{inlet:t}=this.props,s=this.sinks[t];if(s==null)throw new d.B(`[SinkPipeline] - expected source to exist at inlet '${t}', but none was found.`);return s}async set(t){return await this.inlet.set(t)}async cleanup(){await Promise.all(Object.values(this.sinks).map(async t=>{var s;return await((s=t.cleanup)==null?void 0:s.call(t))}))}}u(ue,"TYPE","sink-pipeline");const Fr=(n,e)=>({variant:"sink",props:e,type:ue.TYPE,valueType:n}),ms=p.z.object({channel:p.z.number().or(p.z.string())});class he extends F{constructor(t,s){super(s);u(this,"client");u(this,"removeStreamHandler",null);u(this,"channelKey",0);u(this,"schema",ms);u(this,"leadingBuffer",null);u(this,"valid",!1);this.client=t}get testingOnlyLeadingBuffer(){return this.leadingBuffer}get testingOnlyValid(){return this.valid}async cleanup(){var t,s;await((t=this.removeStreamHandler)==null?void 0:t.call(this)),this.valid=!1,(s=this.leadingBuffer)==null||s.release(),this.leadingBuffer=null,this.removeStreamHandler=null}async value(){return d.w$1(this.props.channel)||(this.channelKey===0&&(this.channelKey=(await ys(this.client,this.props.channel,!1)).key),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 s;await((s=this.removeStreamHandler)==null?void 0:s.call(this));const t=r=>{var l;const a=r[this.channelKey].data;if(a.length!==0){const c=a[a.length-1];c.acquire(),(l=this.leadingBuffer)==null||l.release(),this.leadingBuffer=c}this.notify()};this.removeStreamHandler=await this.client.stream(t,[this.channelKey])}}u(he,"TYPE","stream-channel-value");const ys=async(n,e,t)=>{const s=await n.retrieveChannel(e);return!t||s.isIndex?{key:s.key,dataType:s.dataType,virtual:s.virtual}:{key:s.index,dataType:d.g.TIMESTAMP,virtual:!1}},Ia=p.z.object({timeRange:d.E.z,channel:p.z.number().or(p.z.string()),useIndexOfChannel:p.z.boolean().optional().default(!1)});class de extends F{constructor(t,s){super(s);u(this,"client");u(this,"data",[]);u(this,"valid",!1);u(this,"schema",Ia);this.client=t}async cleanup(){this.data.forEach(t=>t.release()),this.valid=!1}async value(){const{timeRange:t,channel:s,useIndexOfChannel:r}=this.props;if(t.isZero||s===0)return[o.G$1.ZERO,[]];const i=await ys(this.client,s,r);this.valid||await this.readFixed(i.key);let a=o.G$1.max(this.data.map(l=>l.bounds));return i.dataType.equals(d.g.TIMESTAMP)&&(a={upper:Math.min(a.upper,Number(this.props.timeRange.end.valueOf())),lower:Math.max(a.lower,Number(this.props.timeRange.start.valueOf()))}),[a,this.data]}async readFixed(t){const r=(await this.client.read(this.props.timeRange,[t]))[t].data;r.forEach(i=>i.acquire()),this.data=r,this.valid=!0}}u(de,"TYPE","series-source");const Na=p.z.object({channel:p.z.number().or(p.z.string()),useIndexOfChannel:p.z.boolean().optional().default(!1),timeSpan:d.y.z,keepFor:d.y.z.optional()});class fe extends F{constructor(t,s){super(s);u(this,"client");u(this,"data",[]);u(this,"stopStreaming");u(this,"valid",!1);u(this,"schema",Na);this.client=t}async value(){const{channel:t,useIndexOfChannel:s,timeSpan:r}=this.props;if(t===0)return[o.G$1.ZERO,[]];const i=d.m.now(),a=await ys(this.client,t,s);if(this.valid||await this.read(a),a.dataType.isVariable)return[o.G$1.ZERO,this.data];let l=o.G$1.max(this.data.filter(c=>c.timeRange.end.after(i.sub(r))).map(c=>c.bounds));return a.dataType.equals(d.g.TIMESTAMP)&&(l={upper:l.upper,lower:Math.max(l.lower,l.upper-Number(r.valueOf()))}),[l,this.data]}async read({key:t,virtual:s}){const r=d.m.now().spanRange(-this.props.timeSpan);if(!s){const a=(await this.client.read(r,[t]))[t].data;a.forEach(l=>l.acquire()),this.data.push(...a)}await this.updateStreamHandler(t),this.valid=!0}async updateStreamHandler(t){this.stopStreaming!=null&&await this.stopStreaming();const s=r=>{const i=r[t].data;i.forEach(a=>a.acquire()),this.data.push(...i),this.gcOutOfRangeData(),this.notify()};this.stopStreaming=await this.client.stream(s,[t])}gcOutOfRangeData(){const t=d.m.now().sub(this.props.keepFor??this.props.timeSpan),s=this.data.findIndex(r=>r.timeRange.end.before(t));s!==-1&&(this.data.splice(s,1).forEach(r=>r.release()),this.gcOutOfRangeData())}async cleanup(){var t;await((t=this.stopStreaming)==null?void 0:t.call(this)),this.stopStreaming=void 0,this.data.forEach(s=>s.release())}}u(fe,"TYPE","dynamic-series-source");const Ba={[de.TYPE]:de,[fe.TYPE]:fe,[he.TYPE]:he};class qr{constructor(e){u(this,"type","remote");u(this,"client");this.client=e}create(e){const t=Ba[e.type];return t==null?null:new t(this.client,e.props)}}const jr=n=>({type:de.TYPE,props:n,variant:"source",valueType:"series"}),Hr=n=>({type:fe.TYPE,props:n,variant:"source",valueType:"series"}),Wr=n=>({type:he.TYPE,props:n,variant:"source",valueType:"number"});class Xr{constructor(){u(this,"type","static")}create(e){switch(e.type){case sn.TYPE:return new sn(e.props);case pe.TYPE:return new pe(e.props);case ge.TYPE:return new ge(e.props);case me.TYPE:return new me(e.props);case ye.TYPE:return new ye(e.props);default:return null}}}const ws=p.z.object({data:p.z.array(d.xt),offsets:p.z.array(p.z.number()).optional().default([])});class sn extends F{constructor(t){super(t);u(this,"data");u(this,"schema",ws);this.data=this.props.data.map((s,r)=>new d.V({data:s,dataType:d.g.FLOAT32,timeRange:d.E.ZERO,sampleOffset:this.props.offsets[r]??0}))}async value(){return[o.G$1.max(this.data.map(s=>s.bounds)),this.data]}}u(sn,"TYPE","static-series");const Vr=ws.extend({rate:d.P.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 pe extends F{constructor(t){super(t);u(this,"schema",Vr);u(this,"position");u(this,"interval");u(this,"data");this.position=this.props.startPosition,this.start(this.props.rate),this.data=this.props.data.map((s,r)=>new d.V({data:s,dataType:d.g.FLOAT32,timeRange:d.E.ZERO,sampleOffset:this.props.offsets[r]??0}))}async value(){const t=this.data.map(r=>r.slice(0,this.position));if(this.props.scrollBounds){const r=t[0].data[this.position-this.props.scroll<0?0:this.position-this.props.scroll],i=t[0].data[this.position-1];return[{lower:Number(r),upper:Number(i)},t]}return[o.G$1.max(t.map(r=>r.bounds)),t]}start(t){this.interval!=null&&clearInterval(this.interval),this.interval=setInterval(()=>{var s;(s=this.notify)==null||s.call(this),this.position++},t.period.milliseconds)}async cleanup(){clearInterval(this.interval),this.interval=void 0}}u(pe,"TYPE","iterative-series");const Kr=p.z.number();class ge extends F{constructor(){super(...arguments);u(this,"schema",Kr)}async value(){return this.props}}u(ge,"TYPE","static-numeric");const Qr=p.z.string();class me extends F{constructor(){super(...arguments);u(this,"schema",Qr)}async value(){return this.props}}u(me,"TYPE","static-string");const Jr=o.crudeZ;class ye extends F{constructor(){super(...arguments);u(this,"schema",Jr)}async value(){return new o.Color(this.props)}}u(ye,"TYPE","static-color");const Ua=n=>({type:sn.TYPE,props:n,variant:"source",valueType:"series"}),Fa=n=>({type:pe.TYPE,props:n,variant:"source",valueType:"series"}),qa=n=>({type:ge.TYPE,props:n,variant:"source",valueType:"number"}),ja=n=>({type:me.TYPE,props:n,variant:"source",valueType:"string"}),Ha=n=>({type:ye.TYPE,props:n,variant:"source",valueType:"color"}),Wa=["standard","scientific","engineering"],ti=p.z.enum(Wa),Xa=(n,e,t)=>{if(Number.isNaN(n))return"NaN";if(n===1/0)return"∞";if(n===-1/0)return"-∞";if(t==="standard")return n.toFixed(e);if(n===0)return e===0?"0ᴇ0":`0.${"0".repeat(e)}ᴇ0`;let s;return t==="scientific"?s=Math.floor(Math.log10(Math.abs(n))):s=Math.floor(Math.log10(Math.abs(n))/3)*3,`${(n/10**s).toFixed(e)}ᴇ${s}`};class ei{constructor(){u(this,"type","transformer")}create(e){switch(e.type){case Yt.TYPE:return new Yt(e.props);case zt.TYPE:return new zt(e.props);case Dt.TYPE:return new Dt(e.props);case Mt.TYPE:return new Mt(e.props);case At.TYPE:return new At(e.props);case Lt.TYPE:return new Lt(e.props);case _t.TYPE:return new _t(e.props);case $t.TYPE:return new $t(e.props)}return null}}const Va=p.z.object({truthy:p.z.number().optional().default(1),falsy:p.z.number().optional().default(0)}),ni=n=>({props:n,type:Yt.TYPE,variant:"sink",valueType:"boolean"}),te=class te extends Nr{constructor(){super(...arguments);u(this,"schema",te.propsZ)}transform(t){return t?this.props.truthy:this.props.falsy}};u(te,"TYPE","boolean-numeric-converter-sink"),u(te,"propsZ",Va);let Yt=te;const xs=p.z.object({trueBound:o.G$1.bounds}),si=n=>({props:n,type:zt.TYPE,variant:"source",valueType:"boolean"}),ee=class ee extends mt{constructor(){super(...arguments);u(this,"schema",ee.propsZ);u(this,"curr",null)}shouldNotify(t){const s=o.G$1.contains(this.props.trueBound,t)!==this.curr;return this.curr=o.G$1.contains(this.props.trueBound,t),s}transform(t){return this.curr=o.G$1.contains(this.props.trueBound,t),this.curr}};u(ee,"TYPE","boolean-source"),u(ee,"propsZ",xs);let zt=ee;const ri=p.z.object({}),ne=class ne extends Ir{constructor(){super(...arguments);u(this,"schema",ne.propsZ)}transform(t){return Object.values(t).reduce((s,r)=>s+r,0)/Object.keys(t).length}};u(ne,"TYPE","mean"),u(ne,"propsZ",ri);let Dt=ne;const Ka=n=>({props:n,type:Dt.TYPE,variant:"source",valueType:"boolean"}),ii=p.z.object({trueVariant:d.variantZ.optional().default("success")}),se=class se extends mt{constructor(){super(...arguments);u(this,"schema",se.propsZ)}transform(t){return t.variant===this.props.trueVariant}};u(se,"TYPE","boolean-status"),u(se,"propsZ",ii);let Mt=se;const Qa=n=>({props:n,type:Mt.TYPE,variant:"source",valueType:"boolean"}),bs=p.z.object({precision:p.z.number().optional().default(2),prefix:p.z.string().optional().default(""),suffix:p.z.string().optional().default(""),notation:ti.optional().default("standard")}),re=class re extends mt{constructor(){super(...arguments);u(this,"schema",re.propsZ)}transform(t){return`${this.props.prefix}${Xa(t,this.props.precision,this.props.notation)}${this.props.suffix}`}};u(re,"TYPE","stringify-number"),u(re,"propsZ",bs);let At=re;const ai=n=>({props:n,type:At.TYPE,variant:"source",valueType:"string"}),vs=p.z.object({windowSize:p.z.number().optional().default(5)});class Lt extends mt{constructor(){super(...arguments);u(this,"schema",vs);u(this,"values",[])}transform(t){return this.props.windowSize<2?t:this.values.reduce((s,r)=>s+r,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)}}u(Lt,"TYPE","rolling-average"),u(Lt,"propsZ",ri);const oi=n=>({props:n,type:Lt.TYPE,variant:"source",valueType:"number"}),li=p.z.object({gradient:o.gradientZ}),ie=class ie extends mt{constructor(){super(...arguments);u(this,"schema",ie.propsZ)}transform(t){return o.fromGradient(this.props.gradient,t)}};u(ie,"TYPE","color-gradient"),u(ie,"propsZ",li);let _t=ie;const ci=n=>({props:n,type:_t.TYPE,variant:"source",valueType:"color"}),ui=p.z.object({scale:o.b.transform}),ae=class ae extends mt{constructor(){super(...arguments);u(this,"schema",ae.propsZ)}transform(t){const{offset:s,scale:r}=this.props.scale;return t*r+s}};u(ae,"TYPE","scale-number"),u(ae,"propsZ",ui);let $t=ae;const hi=n=>({props:n,type:$t.TYPE,variant:"source",valueType:"number"});class di{constructor(e){u(this,"factories");u(this,"type","compound");this.factories=e}add(e){this.factories=[...this.factories.filter(t=>t.type!==e.type),e]}create(e){for(const t of this.factories){const s=t.create(e);if(s!=null)return s}return null}}const fi=n=>{const e=[new ei,new Xr,new Lr],t=new di(e);return n!=null&&t.add(new qr(n)),t.add(new Br(t)),t},pi=p.z.object({include:p.z.string().array().optional(),exclude:p.z.string().array().optional(),level:p.z.enum(d.g$1.LOG_LEVELS).optional().default("info")}),Wn="alamos-provider";var Hn;let Xn=(Hn=class extends d.Composite{constructor(){super(...arguments);u(this,"schema",pi)}async afterUpdate(){if(this.ctx.getOptional(Wn)!=null)return;const s=[],{include:r,exclude:i,level:a}=this.state;(r!=null||i!=null)&&s.push(d.g$1.logLevelKeyFiler({include:r,exclude:i})),a!=null&&s.push(d.g$1.logThresholdFilter(a)),s.length===0&&s.push(()=>!1),this.internal.ins=new d.g$1.Instrumentation({key:"aether",logger:new d.g$1.Logger({filters:s})}),this.ctx.set(Wn,this.internal.ins)}},u(Hn,"TYPE","AlamosProvider"),Hn);const Ae=(n,e)=>{const t=n.get(Wn);if(t==null)throw new Error("No instrumentation provider");return e==null?t:t.child(e)},Ja={[Xn.TYPE]:Xn},gi=(n,e)=>n.dataType.isVariable?n:(e==null&&n.dataType.equals(d.g.TIMESTAMP)&&(e=BigInt(n.data[0])),n.convert(d.g.FLOAT32,e)),mi=()=>({purgedSeries:0,purgedBytes:d.x.bytes(0)}),yi={instrumentation:d.g$1.NOOP,staleEntryThreshold:d.y.seconds(20)};class to{constructor(e){u(this,"data",[]);u(this,"props");this.props={...yi,...e}}write(e){e.length!==0&&(e.forEach(t=>this.writeOne(gi(t))),this.checkIntegrity(e))}dirtyRead(e){const t=this.data.filter(({data:a})=>a.timeRange.overlapsWith(e)).map(({data:a})=>a);if(t.length===0)return{series:[],gaps:[e]};const s=t.map((a,l)=>l===0?d.E.ZERO:new d.E(t[l-1].timeRange.end,a.timeRange.start)).filter(a=>!a.isZero&&a.isValid),r=new d.E(e.start,t[0].timeRange.start),i=new d.E(t[t.length-1].timeRange.end,e.end);return r.isValid&&!r.isZero&&s.unshift(r),i.isValid&&!i.isZero&&s.push(i),{series:t,gaps:s}}gc(){const{staleEntryThreshold:e}=this.props,t=mi(),s=this.data.filter(r=>{const i=r.data.refCount>0||d.m.since(r.addedAt).lessThan(e);return i||(t.purgedBytes=t.purgedBytes.add(r.data.byteCapacity)),i});return t.purgedSeries=this.data.length-s.length,this.data=s,t}close(){this.data=[]}writeOne(e){const{instrumentation:{L:t}}=this.props;if(e.length===0)return;const s=o.G$1.buildInsertionPlan(this.data.map(c=>c.data.alignmentBounds),e.alignmentBounds);if(s===null)return t.debug("Found no viable insertion plan",{inserting:e.digest,cacheContents:this.data.map(c=>c.data.digest)});const{removeBefore:r,removeAfter:i,insertInto:a,deleteInBetween:l}=s;e=e.slice(r,e.data.length-Number(i)),e.length!==0&&this.data.splice(a,l,{data:e,addedAt:d.m.now()})}checkIntegrity(e){const{instrumentation:{L:t}}=this.props,s=this.data.map(i=>i.data.alignmentBounds);if(s.some((i,a)=>s.some((l,c)=>a===c?!1:o.G$1.overlapsWith(i,l))))throw t.debug("Cache is in an invalid state - bounds overlap!",()=>({write:e.map(i=>i.digest),cacheContents:this.data.map(i=>i.data.digest)})),new Error("Invalid state")}}const eo=100,no=1e6,so=1e4,ro=100,io=40;class ao{constructor(e){u(this,"props");u(this,"counter",0);u(this,"curr");u(this,"avgRate",0);u(this,"timeOfLastWrite");u(this,"totalWrites",0);u(this,"now",()=>d.m.now());this.props=e,this.curr=null,e.testingNow!=null&&(this.now=e.testingNow),this.timeOfLastWrite=this.now()}get length(){var e;return((e=this.curr)==null?void 0:e.length)??0}get leadingBuffer(){return this.curr}write(e){const t=e.flatMap(s=>this._write(s));return{flushed:t.flatMap(s=>s.flushed),allocated:t.flatMap(s=>s.allocated)}}allocate(e,t,s){this.counter++;const r=this.props.dataType.isVariable,i=this.props.dataType.equals(d.g.TIMESTAMP);return d.V.alloc({capacity:r?e*io:e,dataType:r?this.props.dataType:d.g.FLOAT32,timeRange:s.range(d.m.MAX),sampleOffset:i?BigInt(s.valueOf()):0,glBufferUsage:"dynamic",alignment:t,key:`dynamic-${this.counter}`})}_write(e){const t=this.nextBufferSize(),s={flushed:[],allocated:[]};if(this.curr==null)this.curr=this.allocate(t,e.alignment,this.now()),s.allocated.push(this.curr);else if(Math.abs(Number(this.curr.alignment+BigInt(this.curr.length)-e.alignment))>1){const c=this.now();this.curr.timeRange.end=c,s.flushed.push(this.curr),this.curr=this.allocate(t,e.alignment,c),s.allocated.push(this.curr)}const r=gi(e,this.curr.sampleOffset),i=this.curr.write(r);if(i===e.length)return this.updateAvgRate(e),s;const a=this.now();this.curr.timeRange.end=a,s.flushed.push(this.curr),this.curr=this.allocate(t,e.alignment+BigInt(i),a),s.allocated.push(this.curr);const l=this._write(e.slice(i));return s.flushed.push(...l.flushed),s.allocated.push(...l.allocated),s}updateAvgRate(e){if(typeof this.props.dynamicBufferSize=="number")return;const t=e.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:e}=this.props;if(typeof e=="number")return e;if(this.totalWrites<ro)return so;const t=o.W.roundToNearestMagnitude(this.avgRate*e.seconds);return Math.round(Math.max(Math.min(t,no),eo))}close(){this.curr=null}}class oo{constructor(e){u(this,"channel");u(this,"closed",!1);u(this,"ins");u(this,"static");u(this,"dynamic");this.channel=e.channel,this.ins=e.instrumentation??d.g$1.NOOP,this.static=new to(e),this.dynamic=new ao({dynamicBufferSize:e.dynamicBufferSize,dataType:this.channel.dataType})}writeDynamic(e){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:s}=this.dynamic.write(e);return t.length>0&&this.static.write(t),s}get leadingBuffer(){return this.dynamic.leadingBuffer}writeStatic(e){if(this.closed)return this.ins.L.warn(`Ignoring attempted static write to a closed cache for channel ${this.channel.name}`);this.static.write(e)}read(e){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(e)}gc(){return this.closed?(this.ins.L.warn(`Ignoring attempted garbage collection on a closed cache for channel ${this.channel.name}`),{purgedSeries:0,purgedBytes:d.x.bytes(0)}):this.static.gc()}close(){this.closed=!0,this.dynamic.close(),this.static.close()}}const lo=d.k.seconds(60);class co{constructor(e){u(this,"props");u(this,"cache",new Map);u(this,"gcInterval");this.props={dynamicBufferSize:lo,gcInterval:d.k.seconds(30),...yi,...e},this.gcInterval=setInterval(()=>this.gc(),this.props.gcInterval.milliseconds)}async populateMissing(e){const{instrumentation:t,channelRetriever:s,dynamicBufferSize:r}=this.props,i=[];for(const l of e)this.cache.has(l)||i.push(l);if(i.length===0)return;const a=await s.retrieve(i);for(const l of a){const c=new oo({channel:l,dynamicBufferSize:r,instrumentation:t.child(`cache-${l.name}-${l.key}`)});this.cache.has(l.key)||this.cache.set(l.key,c)}}get(e){const t=this.cache.get(e);if(t!=null)return t;throw new d.Ce(`cache entry for ${e} not found`)}gc(){const{instrumentation:{L:e}}=this.props;e.info("starting garbage collection");const t=mi();this.cache.forEach(s=>{const r=s.gc();t.purgedSeries+=r.purgedSeries,t.purgedBytes=t.purgedBytes.add(r.purgedBytes)}),e.info("garbage collection complete",{purgedSeries:t.purgedSeries,purgedBytes:t.purgedBytes.toString()},!0)}close(){clearInterval(this.gcInterval),this.cache.forEach(e=>e.close()),this.cache.clear()}}class rn{constructor(e,t){u(this,"channel");u(this,"data");this.channel=e,this.data=t}get timeRange(){if(this.data.length===0)return d.V$1.ZERO;const e=this.data[0].timeRange,t=this.data[this.data.length-1].timeRange;return new d.V$1(e.start,t.end)}get digest(){return{channel:this.channel.key,timeRange:this.timeRange.toPrettyString(),series:this.data.map(e=>e.digest)}}}const $n=n=>n.map(e=>e.digest);class uo{constructor(e){u(this,"props");u(this,"debouncedRead");u(this,"guarded",{mu:new d.Mutex,requests:new Map});this.props={instrumentation:d.g$1.NOOP,batchDebounce:d.y.milliseconds(50),...e},this.debouncedRead=d.o(()=>{this.batchRead()},this.props.batchDebounce.milliseconds)}async read(e,t){const{instrumentation:{L:s},cache:r}=this.props;s.debug("starting read",{tr:e.toPrettyString(),channels:t});const i=performance.now(),a=new Map,l={};await r.populateMissing(t);try{for(const f of t){const g=r.get(f),{series:m,gaps:x}=g.read(e);x.length===0&&(l[f]=new rn(g.channel,m)),x.forEach(b=>{const v=a.get(b.toString());v==null?a.set(b.toString(),[b,new Set([f])]):a.set(b.toString(),[b,new Set([...v[1],f])])})}if(a.size===0)return s.debug("read satisfied by cache",()=>({tr:e.toPrettyString(),channels:t,responses:$n(Object.values(l)),time:d.y.milliseconds(performance.now()-i).toString()})),l;s.debug("read cache miss",()=>({tr:e.toPrettyString(),channels:t,toFetch:Array.from(a.values()).map(([f,g])=>({timeRange:f.toPrettyString(),channels:g})),responses:$n(Object.values(l))}));const{mu:c,requests:h}=this.guarded;for(const[,[f,g]]of a)await new Promise((m,x)=>{c.runExclusive(async()=>{h.set([f,g],{resolve:m,reject:x}),this.debouncedRead()})})}catch(c){throw s.error("read failed",{tr:e.toPrettyString(),channels:t,error:c}),c}for(const c of t){const h=r.get(c),{series:f}=h.read(e);l[c]=new rn(h.channel,f)}return s.debug("read satisfied by fetch",()=>({tr:e.toPrettyString(),channels:t,responses:$n(Object.values(l)),time:d.y.milliseconds(performance.now()-i).toString()})),l}async batchRead(){const{instrumentation:{L:e},readRemote:t,cache:s}=this.props,{mu:r,requests:i}=this.guarded;await r.runExclusive(async()=>{const a=[];try{i.forEach((l,c)=>{const[h,f]=c,g=a.find(([m])=>m.start.span(h.start).lessThan(d.y.milliseconds(5))&&m.end.span(h.end).lessThan(d.y.milliseconds(5)));g==null?a.push([h,f]):g[1]=new Set([...g[1],...f])}),e.debug("batch read",{toFetch:a.map(([l,c])=>({timeRange:l.toPrettyString(),channels:c}))});for(const[l,c]of a){const h=Array.from(c),f=await t(l,h);h.forEach(g=>{const m=s.get(g),x=f.get(g);m.writeStatic(x.series)})}i.forEach(l=>l.resolve())}catch(l){e.error("batch read failed",{error:l},!0),i.forEach(c=>c.reject(l))}finally{i.clear()}})}}class ho{constructor(e){u(this,"props");u(this,"mu",new d.Mutex);u(this,"listeners",new Map);u(this,"streamerRunLoop",null);u(this,"streamer",null);u(this,"closed",!1);this.props={instrumentation:d.g$1.NOOP,...e}}async stream(e,t){const{cache:s,instrumentation:{L:r}}=this.props;return await s.populateMissing(t),await this.mu.runExclusive(async()=>{r.debug("adding stream handler",{keys:t}),this.listeners.set(e,{valid:!0,keys:t});const i={};for(const a of t){const l=s.get(a),c=l.leadingBuffer!=null?[l.leadingBuffer]:[];i[a]=new rn(l.channel,c)}return e(i),await this.updateStreamer(),async()=>await this.removeStreamHandler(e)})}async removeStreamHandler(e){const{instrumentation:{L:t}}=this.props;await this.mu.runExclusive(()=>{const s=this.listeners.get(e);s!=null&&(s.valid=!1)}),setTimeout(()=>{this.mu.runExclusive(async()=>{if(t.debug("removing stream handler"),this.listeners.delete(e))return await this.updateStreamer();t.warn("attempted to remove non-existent stream handler")})},5e3)}async updateStreamer(){var i,a;if(this.closed)return;const{instrumentation:{L:e},core:t}=this.props,s=new Set;if(this.listeners.forEach(l=>l.keys.forEach(c=>s.add(c))),s.size===0){e.info("no keys to stream, closing streamer"),(i=this.streamer)==null||i.close(),this.streamerRunLoop!=null&&await this.streamerRunLoop,this.streamer=null,e.info("streamer closed successfully");return}const r=Array.from(s);if(d.F.primitiveArrays(r,((a=this.streamer)==null?void 0:a.keys)??[])===d.F.EQUAL){e.debug("streamer keys unchanged",{keys:r});return}this.streamer==null&&(e.info("creating new streamer",{keys:r}),this.streamer=await t.openStreamer(r),this.streamerRunLoop=this.runStreamer(this.streamer)),e.debug("updating streamer",{prev:this.streamer.keys,next:r});try{await this.streamer.update(r)}catch(l){throw e.error("failed to update streamer",{error:l}),l}}async runStreamer(e){const{cache:t,instrumentation:{L:s}}=this.props;try{for await(const r of e){const i=[];for(const a of r.keys){const l=r.get(a),c=t.get(a),h=c.writeDynamic(l.series);i.push(new rn(c.channel,h))}this.listeners.forEach((a,l)=>{if(!a.valid)return;const c=i.filter(f=>a.keys.includes(f.channel.key));if(c.length===0)return;const h=Object.fromEntries(c.map(f=>[f.channel.key,f]));l(h)})}}catch(r){throw s.error("streamer run loop failed",{error:r},!0),r}}async close(){var e;(e=this.streamer)==null||e.close(),this.streamerRunLoop!=null&&await this.streamerRunLoop,this.closed=!0}}class fo{constructor(){u(this,"key",d.Rt.id());u(this,"_client",null)}async swap(e){var t;this.key=d.Rt.id(),await((t=this._client)==null?void 0:t.close()),this._client=e}async retrieveChannel(e){return await this.client.retrieveChannel(e)}async read(e,t){return await this.client.read(e,t)}async stream(e,t){return await this.client.stream(e,t)}async close(){await this.client.close()}get client(){if(this._client==null)throw new d.re("No cluster has been connected");return this._client}}class po{constructor({instrumentation:e,core:t}){u(this,"key",d.Rt.id());u(this,"ins");u(this,"cache");u(this,"reader");u(this,"streamer");u(this,"channelRetriever");this.ins=e??d.g$1.NOOP,this.channelRetriever=t.channels.createDebouncedBatchRetriever(10),this.cache=new co({channelRetriever:this.channelRetriever,instrumentation:this.ins.child("cache")}),this.reader=new uo({cache:this.cache,readRemote:async(s,r)=>await t.read(s,r),instrumentation:this.ins.child("reader")}),this.streamer=new ho({cache:this.cache,core:t,instrumentation:this.ins.child("streamer")})}async retrieveChannel(e){const t=await this.channelRetriever.retrieve([e]);if(t.length===0)throw new d.re(`channel ${e} not found`);return t[0]}async read(e,t){return await this.reader.read(e,t)}async stream(e,t){return await this.streamer.stream(e,t)}async close(){this.ins.L.info("closing client",{key:this.key}),await this.streamer.close(),this.cache.close()}}const Ts=p.z.object({}),Ct=class Ct extends d.Composite{constructor(){super(...arguments);u(this,"client",new fo);u(this,"factory",fi(this.client));u(this,"schema",Ct.stateZ);u(this,"prevClient",null)}create(t){const{instrumentation:s}=this.internal;s.L.debug("creating telem",{spec:t});const r=this.factory.create(t);if(r==null)throw new d.Ce(`Telemetry service could not find a source for type ${t.type}`);return r}get clusterKey(){return this.client.key}registerFactory(t){this.factory.add(t)}equals(t){return t instanceof Ct?this.client._client===t.client._client:!1}async afterUpdate(){const t=ze(this.ctx),s=Ae(this.ctx,"telem");this.internal.instrumentation=s.child("provider"),t!==this.prevClient&&(s.L.info("swapping client",{client:t}),t==null?await this.client.swap(null):await this.client.swap(new po({core:t,instrumentation:s})),this.prevClient=t,Or(this.ctx,this))}};u(Ct,"TYPE","TelemProvider"),u(Ct,"stateZ",Ts);let Gt=Ct;const wi={[Gt.TYPE]:Gt},go=Object.freeze(Object.defineProperty({__proto__:null,AbstractSink:Mn,AbstractSource:F,Base:Dn,BaseProvider:Gt,BooleanStatus:Mt,ChannelData:de,ColorGradient:_t,CompoundTelemFactory:di,FixedColorSource:ye,FixedNumber:ge,FixedString:me,IterativeSeries:pe,Mean:Dt,MultiSourceTransformer:Ir,NoopFactory:Lr,PipelineFactory:Br,REGISTRY:wi,RemoteFactory:qr,RollingAverage:Lt,ScaleNumber:$t,SetPoint:Yt,SinkPipeline:ue,SourcePipeline:ce,StaticFactory:Xr,StreamChannelData:fe,StreamChannelValue:he,StringifyNumber:At,TransformerFactory:ei,UnarySinkTransformer:Nr,UnarySourceTransformer:mt,WithinBounds:zt,booleanSinkSpecZ:zn,booleanSinkTransformerSpecZ:Ga,booleanSourceSpecZ:cs,booleanSourceTransformerSpecZ:Za,booleanStatus:Qa,booleanStatusProps:ii,channelData:jr,colorGradient:ci,colorGradientProps:li,colorSourceSpecZ:us,connectionZ:fs,factory:fi,fixedArray:Ua,fixedColor:Ha,fixedColorSourcePropsZ:Jr,fixedNumber:qa,fixedNumberPropsZ:Kr,fixedSeriesPropsZ:ws,fixedString:ja,fixedStringPropsZ:Qr,iterativeArray:Fa,iterativeSeriesPropsZ:Vr,mean:Ka,noopBooleanSinkSpec:kn,noopBooleanSourceSpec:os,noopColorSourceSpec:On,noopNumericSinkSpec:zr,noopNumericSourceSpec:Dr,noopSeriesSourceSpec:Ar,noopStatusSourceSpec:ls,noopStringSourceSpec:Mr,numberSinkSpecZ:Zr,numberSourceSpecZ:Gr,providerStateZ:Ts,registerFactory:Yr,rollingAverage:oi,rollingAverageProps:vs,scaleNumber:hi,scaleNumberProps:ui,seriesSourceSpecZ:nn,setProvider:Or,setpoint:ni,sinkPipeline:Fr,sinkPipelinePropsZ:gs,sinkSpecZ:Yn,sinkTransformerSpecZ:$r,sourcePipeline:Ur,sourcePipelinePropsZ:ps,sourceSpecZ:ct,sourceTransformerSpecZ:_r,specZ:Me,statusSourceSpecZ:hs,streamChannelData:Hr,streamChannelValue:Wr,streamChannelValuePropsZ:ms,stringSourceSpecZ:ds,stringifyNumber:ai,stringifyNumberProps:bs,useProvider:Pn,useSink:De,useSource:j,withinBounds:si,withinBoundsProps:xs},Symbol.toStringTag,{value:"Module"})),xi=p.z.object({key:p.z.string(),size:p.z.number(),order:p.z.number(),loc:o.K.outer});p.z.record(xi);const dt=(n,e)=>Object.values(e).filter(({loc:t})=>t===n).sort((t,s)=>s.order-t.order),mo=(n,e,t)=>{const s=e[n];if(s==null)return o.G.ZERO;const r=o.K.construct(s.loc),i=dt(r,e),a=o.K.construct(o.g.swap(o.K.direction(r))),l=dt(a,e),c=i.findIndex(({key:g})=>g===n),h=i.slice(0,c).reduce((g,{size:m})=>g+m,0),f=l.reduce((g,{size:m})=>g+m,0);switch(r){case"left":return o.G.translate(o.Eo.topLeft(t),[h,f]);case"right":return o.G.translate(o.Eo.topRight(t),[h-s.size,f]);case"top":return o.G.translate(o.Eo.topLeft(t),[f,h]);default:return o.G.translate(o.Eo.bottomLeft(t),[f,-h-s.size])}},yo=(n,e)=>{const t=dt("left",n),s=dt("right",n),r=dt("top",n),i=dt("bottom",n),a=t.reduce((f,{size:g})=>f+g,0),l=s.reduce((f,{size:g})=>f+g,0),c=r.reduce((f,{size:g})=>f+g,0),h=i.reduce((f,{size:g})=>f+g,0);return o.Eo.construct(o.G.translate(o.Eo.topLeft(e),{x:a,y:c}),o.Eo.width(e)-a-l,o.Eo.height(e)-c-h)};function qe(n,e){return n==null||e==null?NaN:n<e?-1:n>e?1:n>=e?0:NaN}function wo(n,e){return n==null||e==null?NaN:e<n?-1:e>n?1:e>=n?0:NaN}function Ss(n){let e,t,s;n.length!==2?(e=qe,t=(l,c)=>qe(n(l),c),s=(l,c)=>n(l)-c):(e=n===qe||n===wo?n:xo,t=n,s=n);function r(l,c,h=0,f=l.length){if(h<f){if(e(c,c)!==0)return f;do{const g=h+f>>>1;t(l[g],c)<0?h=g+1:f=g}while(h<f)}return h}function i(l,c,h=0,f=l.length){if(h<f){if(e(c,c)!==0)return f;do{const g=h+f>>>1;t(l[g],c)<=0?h=g+1:f=g}while(h<f)}return h}function a(l,c,h=0,f=l.length){const g=r(l,c,h,f-1);return g>h&&s(l[g-1],c)>-s(l[g],c)?g-1:g}return{left:r,center:a,right:i}}function xo(){return 0}function bo(n){return n===null?NaN:+n}const vo=Ss(qe),To=vo.right;Ss(bo).center;const So=Math.sqrt(50),Eo=Math.sqrt(10),Co=Math.sqrt(2);function an(n,e,t){const s=(e-n)/Math.max(0,t),r=Math.floor(Math.log10(s)),i=s/Math.pow(10,r),a=i>=So?10:i>=Eo?5:i>=Co?2:1;let l,c,h;return r<0?(h=Math.pow(10,-r)/a,l=Math.round(n*h),c=Math.round(e*h),l/h<n&&++l,c/h>e&&--c,h=-h):(h=Math.pow(10,r)*a,l=Math.round(n/h),c=Math.round(e/h),l*h<n&&++l,c*h>e&&--c),c<l&&.5<=t&&t<2?an(n,e,t*2):[l,c,h]}function Ro(n,e,t){if(e=+e,n=+n,t=+t,!(t>0))return[];if(n===e)return[n];const s=e<n,[r,i,a]=s?an(e,n,t):an(n,e,t);if(!(i>=r))return[];const l=i-r+1,c=new Array(l);if(s)if(a<0)for(let h=0;h<l;++h)c[h]=(i-h)/-a;else for(let h=0;h<l;++h)c[h]=(i-h)*a;else if(a<0)for(let h=0;h<l;++h)c[h]=(r+h)/-a;else for(let h=0;h<l;++h)c[h]=(r+h)*a;return c}function Vn(n,e,t){return e=+e,n=+n,t=+t,an(n,e,t)[2]}function Kn(n,e,t){e=+e,n=+n,t=+t;const s=e<n,r=s?Vn(e,n,t):Vn(n,e,t);return(s?-1:1)*(r<0?1/-r:r)}function bi(n,e){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(e).domain(n);break}return this}function Es(n,e,t){n.prototype=e.prototype=t,t.constructor=n}function vi(n,e){var t=Object.create(n.prototype);for(var s in e)t[s]=e[s];return t}function Le(){}var we=.7,on=1/we,Ot="\\s*([+-]?\\d+)\\s*",xe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Q="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Po=/^#([0-9a-f]{3,8})$/,ko=new RegExp(`^rgb\\(${Ot},${Ot},${Ot}\\)$`),Oo=new RegExp(`^rgb\\(${Q},${Q},${Q}\\)$`),Yo=new RegExp(`^rgba\\(${Ot},${Ot},${Ot},${xe}\\)$`),zo=new RegExp(`^rgba\\(${Q},${Q},${Q},${xe}\\)$`),Do=new RegExp(`^hsl\\(${xe},${Q},${Q}\\)$`),Mo=new RegExp(`^hsla\\(${xe},${Q},${Q},${xe}\\)$`),qs={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};Es(Le,Zt,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:js,formatHex:js,formatHex8:Ao,formatHsl:Lo,formatRgb:Hs,toString:Hs});function js(){return this.rgb().formatHex()}function Ao(){return this.rgb().formatHex8()}function Lo(){return Ti(this).formatHsl()}function Hs(){return this.rgb().formatRgb()}function Zt(n){var e,t;return n=(n+"").trim().toLowerCase(),(e=Po.exec(n))?(t=e[1].length,e=parseInt(e[1],16),t===6?Ws(e):t===3?new N(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):t===8?Ie(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):t===4?Ie(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=ko.exec(n))?new N(e[1],e[2],e[3],1):(e=Oo.exec(n))?new N(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Yo.exec(n))?Ie(e[1],e[2],e[3],e[4]):(e=zo.exec(n))?Ie(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Do.exec(n))?Ks(e[1],e[2]/100,e[3]/100,1):(e=Mo.exec(n))?Ks(e[1],e[2]/100,e[3]/100,e[4]):qs.hasOwnProperty(n)?Ws(qs[n]):n==="transparent"?new N(NaN,NaN,NaN,0):null}function Ws(n){return new N(n>>16&255,n>>8&255,n&255,1)}function Ie(n,e,t,s){return s<=0&&(n=e=t=NaN),new N(n,e,t,s)}function _o(n){return n instanceof Le||(n=Zt(n)),n?(n=n.rgb(),new N(n.r,n.g,n.b,n.opacity)):new N}function Qn(n,e,t,s){return arguments.length===1?_o(n):new N(n,e,t,s??1)}function N(n,e,t,s){this.r=+n,this.g=+e,this.b=+t,this.opacity=+s}Es(N,Qn,vi(Le,{brighter(n){return n=n==null?on:Math.pow(on,n),new N(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){return n=n==null?we:Math.pow(we,n),new N(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new N(pt(this.r),pt(this.g),pt(this.b),ln(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:Xs,formatHex:Xs,formatHex8:$o,formatRgb:Vs,toString:Vs}));function Xs(){return`#${ft(this.r)}${ft(this.g)}${ft(this.b)}`}function $o(){return`#${ft(this.r)}${ft(this.g)}${ft(this.b)}${ft((isNaN(this.opacity)?1:this.opacity)*255)}`}function Vs(){const n=ln(this.opacity);return`${n===1?"rgb(":"rgba("}${pt(this.r)}, ${pt(this.g)}, ${pt(this.b)}${n===1?")":`, ${n})`}`}function ln(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function pt(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function ft(n){return n=pt(n),(n<16?"0":"")+n.toString(16)}function Ks(n,e,t,s){return s<=0?n=e=t=NaN:t<=0||t>=1?n=e=NaN:e<=0&&(n=NaN),new W(n,e,t,s)}function Ti(n){if(n instanceof W)return new W(n.h,n.s,n.l,n.opacity);if(n instanceof Le||(n=Zt(n)),!n)return new W;if(n instanceof W)return n;n=n.rgb();var e=n.r/255,t=n.g/255,s=n.b/255,r=Math.min(e,t,s),i=Math.max(e,t,s),a=NaN,l=i-r,c=(i+r)/2;return l?(e===i?a=(t-s)/l+(t<s)*6:t===i?a=(s-e)/l+2:a=(e-t)/l+4,l/=c<.5?i+r:2-i-r,a*=60):l=c>0&&c<1?0:a,new W(a,l,c,n.opacity)}function Go(n,e,t,s){return arguments.length===1?Ti(n):new W(n,e,t,s??1)}function W(n,e,t,s){this.h=+n,this.s=+e,this.l=+t,this.opacity=+s}Es(W,Go,vi(Le,{brighter(n){return n=n==null?on:Math.pow(on,n),new W(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?we:Math.pow(we,n),new W(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,e=isNaN(n)||isNaN(this.s)?0:this.s,t=this.l,s=t+(t<.5?t:1-t)*e,r=2*t-s;return new N(Gn(n>=240?n-240:n+120,r,s),Gn(n,r,s),Gn(n<120?n+240:n-120,r,s),this.opacity)},clamp(){return new W(Qs(this.h),Ne(this.s),Ne(this.l),ln(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 n=ln(this.opacity);return`${n===1?"hsl(":"hsla("}${Qs(this.h)}, ${Ne(this.s)*100}%, ${Ne(this.l)*100}%${n===1?")":`, ${n})`}`}}));function Qs(n){return n=(n||0)%360,n<0?n+360:n}function Ne(n){return Math.max(0,Math.min(1,n||0))}function Gn(n,e,t){return(n<60?e+(t-e)*n/60:n<180?t:n<240?e+(t-e)*(240-n)/60:e)*255}const Cs=n=>()=>n;function Zo(n,e){return function(t){return n+t*e}}function Io(n,e,t){return n=Math.pow(n,t),e=Math.pow(e,t)-n,t=1/t,function(s){return Math.pow(n+s*e,t)}}function No(n){return(n=+n)==1?Si:function(e,t){return t-e?Io(e,t,n):Cs(isNaN(e)?t:e)}}function Si(n,e){var t=e-n;return t?Zo(n,t):Cs(isNaN(n)?e:n)}const Jn=function n(e){var t=No(e);function s(r,i){var a=t((r=Qn(r)).r,(i=Qn(i)).r),l=t(r.g,i.g),c=t(r.b,i.b),h=Si(r.opacity,i.opacity);return function(f){return r.r=a(f),r.g=l(f),r.b=c(f),r.opacity=h(f),r+""}}return s.gamma=n,s}(1);function Bo(n,e){e||(e=[]);var t=n?Math.min(e.length,n.length):0,s=e.slice(),r;return function(i){for(r=0;r<t;++r)s[r]=n[r]*(1-i)+e[r]*i;return s}}function Uo(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Fo(n,e){var t=e?e.length:0,s=n?Math.min(t,n.length):0,r=new Array(s),i=new Array(t),a;for(a=0;a<s;++a)r[a]=Rs(n[a],e[a]);for(;a<t;++a)i[a]=e[a];return function(l){for(a=0;a<s;++a)i[a]=r[a](l);return i}}function qo(n,e){var t=new Date;return n=+n,e=+e,function(s){return t.setTime(n*(1-s)+e*s),t}}function be(n,e){return n=+n,e=+e,function(t){return n*(1-t)+e*t}}function jo(n,e){var t={},s={},r;(n===null||typeof n!="object")&&(n={}),(e===null||typeof e!="object")&&(e={});for(r in e)r in n?t[r]=Rs(n[r],e[r]):s[r]=e[r];return function(i){for(r in t)s[r]=t[r](i);return s}}var ts=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Zn=new RegExp(ts.source,"g");function Ho(n){return function(){return n}}function Wo(n){return function(e){return n(e)+""}}function Ei(n,e){var t=ts.lastIndex=Zn.lastIndex=0,s,r,i,a=-1,l=[],c=[];for(n=n+"",e=e+"";(s=ts.exec(n))&&(r=Zn.exec(e));)(i=r.index)>t&&(i=e.slice(t,i),l[a]?l[a]+=i:l[++a]=i),(s=s[0])===(r=r[0])?l[a]?l[a]+=r:l[++a]=r:(l[++a]=null,c.push({i:a,x:be(s,r)})),t=Zn.lastIndex;return t<e.length&&(i=e.slice(t),l[a]?l[a]+=i:l[++a]=i),l.length<2?c[0]?Wo(c[0].x):Ho(e):(e=c.length,function(h){for(var f=0,g;f<e;++f)l[(g=c[f]).i]=g.x(h);return l.join("")})}function Rs(n,e){var t=typeof e,s;return e==null||t==="boolean"?Cs(e):(t==="number"?be:t==="string"?(s=Zt(e))?(e=s,Jn):Ei:e instanceof Zt?Jn:e instanceof Date?qo:Uo(e)?Bo:Array.isArray(e)?Fo:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?jo:be)(n,e)}function Xo(n,e){return n=+n,e=+e,function(t){return Math.round(n*(1-t)+e*t)}}function Vo(n){return function(){return n}}function Ko(n){return+n}var Js=[0,1];function St(n){return n}function es(n,e){return(e-=n=+n)?function(t){return(t-n)/e}:Vo(isNaN(e)?NaN:.5)}function Qo(n,e){var t;return n>e&&(t=n,n=e,e=t),function(s){return Math.max(n,Math.min(e,s))}}function Jo(n,e,t){var s=n[0],r=n[1],i=e[0],a=e[1];return r<s?(s=es(r,s),i=t(a,i)):(s=es(s,r),i=t(i,a)),function(l){return i(s(l))}}function tl(n,e,t){var s=Math.min(n.length,e.length)-1,r=new Array(s),i=new Array(s),a=-1;for(n[s]<n[0]&&(n=n.slice().reverse(),e=e.slice().reverse());++a<s;)r[a]=es(n[a],n[a+1]),i[a]=t(e[a],e[a+1]);return function(l){var c=To(n,l,1,s)-1;return i[c](r[c](l))}}function Ci(n,e){return e.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function el(){var n=Js,e=Js,t=Rs,s,r,i,a=St,l,c,h;function f(){var m=Math.min(n.length,e.length);return a!==St&&(a=Qo(n[0],n[m-1])),l=m>2?tl:Jo,c=h=null,g}function g(m){return m==null||isNaN(m=+m)?i:(c||(c=l(n.map(s),e,t)))(s(a(m)))}return g.invert=function(m){return a(r((h||(h=l(e,n.map(s),be)))(m)))},g.domain=function(m){return arguments.length?(n=Array.from(m,Ko),f()):n.slice()},g.range=function(m){return arguments.length?(e=Array.from(m),f()):e.slice()},g.rangeRound=function(m){return e=Array.from(m),t=Xo,f()},g.clamp=function(m){return arguments.length?(a=m?!0:St,f()):a!==St},g.interpolate=function(m){return arguments.length?(t=m,f()):t},g.unknown=function(m){return arguments.length?(i=m,g):i},function(m,x){return s=m,r=x,f()}}function Ri(){return el()(St,St)}function nl(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function cn(n,e){if((t=(n=e?n.toExponential(e-1):n.toExponential()).indexOf("e"))<0)return null;var t,s=n.slice(0,t);return[s.length>1?s[0]+s.slice(2):s,+n.slice(t+1)]}function It(n){return n=cn(Math.abs(n)),n?n[1]:NaN}function sl(n,e){return function(t,s){for(var r=t.length,i=[],a=0,l=n[0],c=0;r>0&&l>0&&(c+l+1>s&&(l=Math.max(1,s-c)),i.push(t.substring(r-=l,r+l)),!((c+=l+1)>s));)l=n[a=(a+1)%n.length];return i.reverse().join(e)}}function rl(n){return function(e){return e.replace(/[0-9]/g,function(t){return n[+t]})}}var il=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function un(n){if(!(e=il.exec(n)))throw new Error("invalid format: "+n);var e;return new Ps({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}un.prototype=Ps.prototype;function Ps(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}Ps.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 al(n){t:for(var e=n.length,t=1,s=-1,r;t<e;++t)switch(n[t]){case".":s=r=t;break;case"0":s===0&&(s=t),r=t;break;default:if(!+n[t])break t;s>0&&(s=0);break}return s>0?n.slice(0,s)+n.slice(r+1):n}var Pi;function ol(n,e){var t=cn(n,e);if(!t)return n+"";var s=t[0],r=t[1],i=r-(Pi=Math.max(-8,Math.min(8,Math.floor(r/3)))*3)+1,a=s.length;return i===a?s:i>a?s+new Array(i-a+1).join("0"):i>0?s.slice(0,i)+"."+s.slice(i):"0."+new Array(1-i).join("0")+cn(n,Math.max(0,e+i-1))[0]}function tr(n,e){var t=cn(n,e);if(!t)return n+"";var s=t[0],r=t[1];return r<0?"0."+new Array(-r).join("0")+s:s.length>r+1?s.slice(0,r+1)+"."+s.slice(r+1):s+new Array(r-s.length+2).join("0")}const er={"%":(n,e)=>(n*100).toFixed(e),b:n=>Math.round(n).toString(2),c:n=>n+"",d:nl,e:(n,e)=>n.toExponential(e),f:(n,e)=>n.toFixed(e),g:(n,e)=>n.toPrecision(e),o:n=>Math.round(n).toString(8),p:(n,e)=>tr(n*100,e),r:tr,s:ol,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function nr(n){return n}var sr=Array.prototype.map,rr=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ll(n){var e=n.grouping===void 0||n.thousands===void 0?nr:sl(sr.call(n.grouping,Number),n.thousands+""),t=n.currency===void 0?"":n.currency[0]+"",s=n.currency===void 0?"":n.currency[1]+"",r=n.decimal===void 0?".":n.decimal+"",i=n.numerals===void 0?nr:rl(sr.call(n.numerals,String)),a=n.percent===void 0?"%":n.percent+"",l=n.minus===void 0?"−":n.minus+"",c=n.nan===void 0?"NaN":n.nan+"";function h(g){g=un(g);var m=g.fill,x=g.align,b=g.sign,v=g.symbol,E=g.zero,O=g.width,D=g.comma,R=g.precision,z=g.trim,_=g.type;_==="n"?(D=!0,_="g"):er[_]||(R===void 0&&(R=12),z=!0,_="g"),(E||m==="0"&&x==="=")&&(E=!0,m="0",x="=");var T=v==="$"?t:v==="#"&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",$=v==="$"?s:/[%p]/.test(_)?a:"",ut=er[_],Ln=/[defgprs%]/.test(_);R=R===void 0?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,R)):Math.max(0,Math.min(20,R));function Ge(C){var tt=T,Z=$,at,Ze,xt;if(_==="c")Z=ut(C)+Z,C="";else{C=+C;var bt=C<0||1/C<0;if(C=isNaN(C)?c:ut(Math.abs(C),R),z&&(C=al(C)),bt&&+C==0&&b!=="+"&&(bt=!1),tt=(bt?b==="("?b:l:b==="-"||b==="("?"":b)+tt,Z=(_==="s"?rr[8+Pi/3]:"")+Z+(bt&&b==="("?")":""),Ln){for(at=-1,Ze=C.length;++at<Ze;)if(xt=C.charCodeAt(at),48>xt||xt>57){Z=(xt===46?r+C.slice(at+1):C.slice(at))+Z,C=C.slice(0,at);break}}}D&&!E&&(C=e(C,1/0));var vt=tt.length+C.length+Z.length,H=vt<O?new Array(O-vt+1).join(m):"";switch(D&&E&&(C=e(H+C,H.length?O-Z.length:1/0),H=""),x){case"<":C=tt+C+Z+H;break;case"=":C=tt+H+C+Z;break;case"^":C=H.slice(0,vt=H.length>>1)+tt+C+Z+H.slice(vt);break;default:C=H+tt+C+Z;break}return i(C)}return Ge.toString=function(){return g+""},Ge}function f(g,m){var x=h((g=un(g),g.type="f",g)),b=Math.max(-8,Math.min(8,Math.floor(It(m)/3)))*3,v=Math.pow(10,-b),E=rr[8+b/3];return function(O){return x(v*O)+E}}return{format:h,formatPrefix:f}}var Be,ki,Oi;cl({thousands:",",grouping:[3],currency:["$",""]});function cl(n){return Be=ll(n),ki=Be.format,Oi=Be.formatPrefix,Be}function ul(n){return Math.max(0,-It(Math.abs(n)))}function hl(n,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(It(e)/3)))*3-It(Math.abs(n)))}function dl(n,e){return n=Math.abs(n),e=Math.abs(e)-n,Math.max(0,It(e)-It(n))+1}function fl(n,e,t,s){var r=Kn(n,e,t),i;switch(s=un(s??",f"),s.type){case"s":{var a=Math.max(Math.abs(n),Math.abs(e));return s.precision==null&&!isNaN(i=hl(r,a))&&(s.precision=i),Oi(s,a)}case"":case"e":case"g":case"p":case"r":{s.precision==null&&!isNaN(i=dl(r,Math.max(Math.abs(n),Math.abs(e))))&&(s.precision=i-(s.type==="e"));break}case"f":case"%":{s.precision==null&&!isNaN(i=ul(r))&&(s.precision=i-(s.type==="%")*2);break}}return ki(s)}function pl(n){var e=n.domain;return n.ticks=function(t){var s=e();return Ro(s[0],s[s.length-1],t??10)},n.tickFormat=function(t,s){var r=e();return fl(r[0],r[r.length-1],t??10,s)},n.nice=function(t){t==null&&(t=10);var s=e(),r=0,i=s.length-1,a=s[r],l=s[i],c,h,f=10;for(l<a&&(h=a,a=l,l=h,h=r,r=i,i=h);f-- >0;){if(h=Vn(a,l,t),h===c)return s[r]=a,s[i]=l,e(s);if(h>0)a=Math.floor(a/h)*h,l=Math.ceil(l/h)*h;else if(h<0)a=Math.ceil(a*h)/h,l=Math.floor(l*h)/h;else break;c=h}return n},n}function Yi(){var n=Ri();return n.copy=function(){return Ci(n,Yi())},bi.apply(n,arguments),pl(n)}function gl(n,e){n=n.slice();var t=0,s=n.length-1,r=n[t],i=n[s],a;return i<r&&(a=t,t=s,s=a,a=r,r=i,i=a),n[t]=e.floor(r),n[s]=e.ceil(i),n}const In=new Date,Nn=new Date;function M(n,e,t,s){function r(i){return n(i=arguments.length===0?new Date:new Date(+i)),i}return r.floor=i=>(n(i=new Date(+i)),i),r.ceil=i=>(n(i=new Date(i-1)),e(i,1),n(i),i),r.round=i=>{const a=r(i),l=r.ceil(i);return i-a<l-i?a:l},r.offset=(i,a)=>(e(i=new Date(+i),a==null?1:Math.floor(a)),i),r.range=(i,a,l)=>{const c=[];if(i=r.ceil(i),l=l==null?1:Math.floor(l),!(i<a)||!(l>0))return c;let h;do c.push(h=new Date(+i)),e(i,l),n(i);while(h<i&&i<a);return c},r.filter=i=>M(a=>{if(a>=a)for(;n(a),!i(a);)a.setTime(a-1)},(a,l)=>{if(a>=a)if(l<0)for(;++l<=0;)for(;e(a,-1),!i(a););else for(;--l>=0;)for(;e(a,1),!i(a););}),t&&(r.count=(i,a)=>(In.setTime(+i),Nn.setTime(+a),n(In),n(Nn),Math.floor(t(In,Nn))),r.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?r.filter(s?a=>s(a)%i===0:a=>r.count(0,a)%i===0):r)),r}const hn=M(()=>{},(n,e)=>{n.setTime(+n+e)},(n,e)=>e-n);hn.every=n=>(n=Math.floor(n),!isFinite(n)||!(n>0)?null:n>1?M(e=>{e.setTime(Math.floor(e/n)*n)},(e,t)=>{e.setTime(+e+t*n)},(e,t)=>(t-e)/n):hn);hn.range;const et=1e3,q=et*60,nt=q*60,st=nt*24,ks=st*7,ir=st*30,Bn=st*365,Et=M(n=>{n.setTime(n-n.getMilliseconds())},(n,e)=>{n.setTime(+n+e*et)},(n,e)=>(e-n)/et,n=>n.getUTCSeconds());Et.range;const Os=M(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*et)},(n,e)=>{n.setTime(+n+e*q)},(n,e)=>(e-n)/q,n=>n.getMinutes());Os.range;const ml=M(n=>{n.setUTCSeconds(0,0)},(n,e)=>{n.setTime(+n+e*q)},(n,e)=>(e-n)/q,n=>n.getUTCMinutes());ml.range;const Ys=M(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*et-n.getMinutes()*q)},(n,e)=>{n.setTime(+n+e*nt)},(n,e)=>(e-n)/nt,n=>n.getHours());Ys.range;const yl=M(n=>{n.setUTCMinutes(0,0,0)},(n,e)=>{n.setTime(+n+e*nt)},(n,e)=>(e-n)/nt,n=>n.getUTCHours());yl.range;const _e=M(n=>n.setHours(0,0,0,0),(n,e)=>n.setDate(n.getDate()+e),(n,e)=>(e-n-(e.getTimezoneOffset()-n.getTimezoneOffset())*q)/st,n=>n.getDate()-1);_e.range;const zs=M(n=>{n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCDate(n.getUTCDate()+e)},(n,e)=>(e-n)/st,n=>n.getUTCDate()-1);zs.range;const wl=M(n=>{n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCDate(n.getUTCDate()+e)},(n,e)=>(e-n)/st,n=>Math.floor(n/st));wl.range;function yt(n){return M(e=>{e.setDate(e.getDate()-(e.getDay()+7-n)%7),e.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*q)/ks)}const An=yt(0),dn=yt(1),xl=yt(2),bl=yt(3),Nt=yt(4),vl=yt(5),Tl=yt(6);An.range;dn.range;xl.range;bl.range;Nt.range;vl.range;Tl.range;function wt(n){return M(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-n)%7),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/ks)}const zi=wt(0),fn=wt(1),Sl=wt(2),El=wt(3),Bt=wt(4),Cl=wt(5),Rl=wt(6);zi.range;fn.range;Sl.range;El.range;Bt.range;Cl.range;Rl.range;const Ds=M(n=>{n.setDate(1),n.setHours(0,0,0,0)},(n,e)=>{n.setMonth(n.getMonth()+e)},(n,e)=>e.getMonth()-n.getMonth()+(e.getFullYear()-n.getFullYear())*12,n=>n.getMonth());Ds.range;const Pl=M(n=>{n.setUTCDate(1),n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCMonth(n.getUTCMonth()+e)},(n,e)=>e.getUTCMonth()-n.getUTCMonth()+(e.getUTCFullYear()-n.getUTCFullYear())*12,n=>n.getUTCMonth());Pl.range;const rt=M(n=>{n.setMonth(0,1),n.setHours(0,0,0,0)},(n,e)=>{n.setFullYear(n.getFullYear()+e)},(n,e)=>e.getFullYear()-n.getFullYear(),n=>n.getFullYear());rt.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:M(e=>{e.setFullYear(Math.floor(e.getFullYear()/n)*n),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t*n)});rt.range;const gt=M(n=>{n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e)},(n,e)=>e.getUTCFullYear()-n.getUTCFullYear(),n=>n.getUTCFullYear());gt.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:M(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/n)*n),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t*n)});gt.range;function kl(n,e,t,s,r,i){const a=[[Et,1,et],[Et,5,5*et],[Et,15,15*et],[Et,30,30*et],[i,1,q],[i,5,5*q],[i,15,15*q],[i,30,30*q],[r,1,nt],[r,3,3*nt],[r,6,6*nt],[r,12,12*nt],[s,1,st],[s,2,2*st],[t,1,ks],[e,1,ir],[e,3,3*ir],[n,1,Bn]];function l(h,f,g){const m=f<h;m&&([h,f]=[f,h]);const x=g&&typeof g.range=="function"?g:c(h,f,g),b=x?x.range(h,+f+1):[];return m?b.reverse():b}function c(h,f,g){const m=Math.abs(f-h)/g,x=Ss(([,,E])=>E).right(a,m);if(x===a.length)return n.every(Kn(h/Bn,f/Bn,g));if(x===0)return hn.every(Math.max(Kn(h,f,g),1));const[b,v]=a[m/a[x-1][2]<a[x][2]/m?x-1:x];return b.every(v)}return[l,c]}const[Ol,Yl]=kl(rt,Ds,An,_e,Ys,Os);function Un(n){if(0<=n.y&&n.y<100){var e=new Date(-1,n.m,n.d,n.H,n.M,n.S,n.L);return e.setFullYear(n.y),e}return new Date(n.y,n.m,n.d,n.H,n.M,n.S,n.L)}function Fn(n){if(0<=n.y&&n.y<100){var e=new Date(Date.UTC(-1,n.m,n.d,n.H,n.M,n.S,n.L));return e.setUTCFullYear(n.y),e}return new Date(Date.UTC(n.y,n.m,n.d,n.H,n.M,n.S,n.L))}function Vt(n,e,t){return{y:n,m:e,d:t,H:0,M:0,S:0,L:0}}function zl(n){var e=n.dateTime,t=n.date,s=n.time,r=n.periods,i=n.days,a=n.shortDays,l=n.months,c=n.shortMonths,h=Kt(r),f=Qt(r),g=Kt(i),m=Qt(i),x=Kt(a),b=Qt(a),v=Kt(l),E=Qt(l),O=Kt(c),D=Qt(c),R={a:bt,A:vt,b:H,B:xa,c:null,d:hr,e:hr,f:tc,g:uc,G:dc,H:Kl,I:Ql,j:Jl,L:Di,m:ec,M:nc,p:ba,q:va,Q:pr,s:gr,S:sc,u:rc,U:ic,V:ac,w:oc,W:lc,x:null,X:null,y:cc,Y:hc,Z:fc,"%":fr},z={a:Ta,A:Sa,b:Ea,B:Ca,c:null,d:dr,e:dr,f:yc,g:Pc,G:Oc,H:pc,I:gc,j:mc,L:Ai,m:wc,M:xc,p:Ra,q:Pa,Q:pr,s:gr,S:bc,u:vc,U:Tc,V:Sc,w:Ec,W:Cc,x:null,X:null,y:Rc,Y:kc,Z:Yc,"%":fr},_={a:Ge,A:C,b:tt,B:Z,c:at,d:cr,e:cr,f:Hl,g:lr,G:or,H:ur,I:ur,j:Ul,L:jl,m:Bl,M:Fl,p:Ln,q:Nl,Q:Xl,s:Vl,S:ql,u:_l,U:$l,V:Gl,w:Ll,W:Zl,x:Ze,X:xt,y:lr,Y:or,Z:Il,"%":Wl};R.x=T(t,R),R.X=T(s,R),R.c=T(e,R),z.x=T(t,z),z.X=T(s,z),z.c=T(e,z);function T(w,S){return function(P){var y=[],I=-1,Y=0,B=w.length,U,ht,Bs;for(P instanceof Date||(P=new Date(+P));++I<B;)w.charCodeAt(I)===37&&(y.push(w.slice(Y,I)),(ht=ar[U=w.charAt(++I)])!=null?U=w.charAt(++I):ht=U==="e"?" ":"0",(Bs=S[U])&&(U=Bs(P,ht)),y.push(U),Y=I+1);return y.push(w.slice(Y,I)),y.join("")}}function $(w,S){return function(P){var y=Vt(1900,void 0,1),I=ut(y,w,P+="",0),Y,B;if(I!=P.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(S&&!("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?(Y=Fn(Vt(y.y,0,1)),B=Y.getUTCDay(),Y=B>4||B===0?fn.ceil(Y):fn(Y),Y=zs.offset(Y,(y.V-1)*7),y.y=Y.getUTCFullYear(),y.m=Y.getUTCMonth(),y.d=Y.getUTCDate()+(y.w+6)%7):(Y=Un(Vt(y.y,0,1)),B=Y.getDay(),Y=B>4||B===0?dn.ceil(Y):dn(Y),Y=_e.offset(Y,(y.V-1)*7),y.y=Y.getFullYear(),y.m=Y.getMonth(),y.d=Y.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),B="Z"in y?Fn(Vt(y.y,0,1)).getUTCDay():Un(Vt(y.y,0,1)).getDay(),y.m=0,y.d="W"in y?(y.w+6)%7+y.W*7-(B+5)%7:y.w+y.U*7-(B+6)%7);return"Z"in y?(y.H+=y.Z/100|0,y.M+=y.Z%100,Fn(y)):Un(y)}}function ut(w,S,P,y){for(var I=0,Y=S.length,B=P.length,U,ht;I<Y;){if(y>=B)return-1;if(U=S.charCodeAt(I++),U===37){if(U=S.charAt(I++),ht=_[U in ar?S.charAt(I++):U],!ht||(y=ht(w,P,y))<0)return-1}else if(U!=P.charCodeAt(y++))return-1}return y}function Ln(w,S,P){var y=h.exec(S.slice(P));return y?(w.p=f.get(y[0].toLowerCase()),P+y[0].length):-1}function Ge(w,S,P){var y=x.exec(S.slice(P));return y?(w.w=b.get(y[0].toLowerCase()),P+y[0].length):-1}function C(w,S,P){var y=g.exec(S.slice(P));return y?(w.w=m.get(y[0].toLowerCase()),P+y[0].length):-1}function tt(w,S,P){var y=O.exec(S.slice(P));return y?(w.m=D.get(y[0].toLowerCase()),P+y[0].length):-1}function Z(w,S,P){var y=v.exec(S.slice(P));return y?(w.m=E.get(y[0].toLowerCase()),P+y[0].length):-1}function at(w,S,P){return ut(w,e,S,P)}function Ze(w,S,P){return ut(w,t,S,P)}function xt(w,S,P){return ut(w,s,S,P)}function bt(w){return a[w.getDay()]}function vt(w){return i[w.getDay()]}function H(w){return c[w.getMonth()]}function xa(w){return l[w.getMonth()]}function ba(w){return r[+(w.getHours()>=12)]}function va(w){return 1+~~(w.getMonth()/3)}function Ta(w){return a[w.getUTCDay()]}function Sa(w){return i[w.getUTCDay()]}function Ea(w){return c[w.getUTCMonth()]}function Ca(w){return l[w.getUTCMonth()]}function Ra(w){return r[+(w.getUTCHours()>=12)]}function Pa(w){return 1+~~(w.getUTCMonth()/3)}return{format:function(w){var S=T(w+="",R);return S.toString=function(){return w},S},parse:function(w){var S=$(w+="",!1);return S.toString=function(){return w},S},utcFormat:function(w){var S=T(w+="",z);return S.toString=function(){return w},S},utcParse:function(w){var S=$(w+="",!0);return S.toString=function(){return w},S}}}var ar={"-":"",_:" ",0:"0"},A=/^\s*\d+/,Dl=/^%/,Ml=/[\\^$*+?|[\]().{}]/g;function k(n,e,t){var s=n<0?"-":"",r=(s?-n:n)+"",i=r.length;return s+(i<t?new Array(t-i+1).join(e)+r:r)}function Al(n){return n.replace(Ml,"\\$&")}function Kt(n){return new RegExp("^(?:"+n.map(Al).join("|")+")","i")}function Qt(n){return new Map(n.map((e,t)=>[e.toLowerCase(),t]))}function Ll(n,e,t){var s=A.exec(e.slice(t,t+1));return s?(n.w=+s[0],t+s[0].length):-1}function _l(n,e,t){var s=A.exec(e.slice(t,t+1));return s?(n.u=+s[0],t+s[0].length):-1}function $l(n,e,t){var s=A.exec(e.slice(t,t+2));return s?(n.U=+s[0],t+s[0].length):-1}function Gl(n,e,t){var s=A.exec(e.slice(t,t+2));return s?(n.V=+s[0],t+s[0].length):-1}function Zl(n,e,t){var s=A.exec(e.slice(t,t+2));return s?(n.W=+s[0],t+s[0].length):-1}function or(n,e,t){var s=A.exec(e.slice(t,t+4));return s?(n.y=+s[0],t+s[0].length):-1}function lr(n,e,t){var s=A.exec(e.slice(t,t+2));return s?(n.y=+s[0]+(+s[0]>68?1900:2e3),t+s[0].length):-1}function Il(n,e,t){var s=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(t,t+6));return s?(n.Z=s[1]?0:-(s[2]+(s[3]||"00")),t+s[0].length):-1}function Nl(n,e,t){var s=A.exec(e.slice(t,t+1));return s?(n.q=s[0]*3-3,t+s[0].length):-1}function Bl(n,e,t){var s=A.exec(e.slice(t,t+2));return s?(n.m=s[0]-1,t+s[0].length):-1}function cr(n,e,t){var s=A.exec(e.slice(t,t+2));return s?(n.d=+s[0],t+s[0].length):-1}function Ul(n,e,t){var s=A.exec(e.slice(t,t+3));return s?(n.m=0,n.d=+s[0],t+s[0].length):-1}function ur(n,e,t){var s=A.exec(e.slice(t,t+2));return s?(n.H=+s[0],t+s[0].length):-1}function Fl(n,e,t){var s=A.exec(e.slice(t,t+2));return s?(n.M=+s[0],t+s[0].length):-1}function ql(n,e,t){var s=A.exec(e.slice(t,t+2));return s?(n.S=+s[0],t+s[0].length):-1}function jl(n,e,t){var s=A.exec(e.slice(t,t+3));return s?(n.L=+s[0],t+s[0].length):-1}function Hl(n,e,t){var s=A.exec(e.slice(t,t+6));return s?(n.L=Math.floor(s[0]/1e3),t+s[0].length):-1}function Wl(n,e,t){var s=Dl.exec(e.slice(t,t+1));return s?t+s[0].length:-1}function Xl(n,e,t){var s=A.exec(e.slice(t));return s?(n.Q=+s[0],t+s[0].length):-1}function Vl(n,e,t){var s=A.exec(e.slice(t));return s?(n.s=+s[0],t+s[0].length):-1}function hr(n,e){return k(n.getDate(),e,2)}function Kl(n,e){return k(n.getHours(),e,2)}function Ql(n,e){return k(n.getHours()%12||12,e,2)}function Jl(n,e){return k(1+_e.count(rt(n),n),e,3)}function Di(n,e){return k(n.getMilliseconds(),e,3)}function tc(n,e){return Di(n,e)+"000"}function ec(n,e){return k(n.getMonth()+1,e,2)}function nc(n,e){return k(n.getMinutes(),e,2)}function sc(n,e){return k(n.getSeconds(),e,2)}function rc(n){var e=n.getDay();return e===0?7:e}function ic(n,e){return k(An.count(rt(n)-1,n),e,2)}function Mi(n){var e=n.getDay();return e>=4||e===0?Nt(n):Nt.ceil(n)}function ac(n,e){return n=Mi(n),k(Nt.count(rt(n),n)+(rt(n).getDay()===4),e,2)}function oc(n){return n.getDay()}function lc(n,e){return k(dn.count(rt(n)-1,n),e,2)}function cc(n,e){return k(n.getFullYear()%100,e,2)}function uc(n,e){return n=Mi(n),k(n.getFullYear()%100,e,2)}function hc(n,e){return k(n.getFullYear()%1e4,e,4)}function dc(n,e){var t=n.getDay();return n=t>=4||t===0?Nt(n):Nt.ceil(n),k(n.getFullYear()%1e4,e,4)}function fc(n){var e=n.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+k(e/60|0,"0",2)+k(e%60,"0",2)}function dr(n,e){return k(n.getUTCDate(),e,2)}function pc(n,e){return k(n.getUTCHours(),e,2)}function gc(n,e){return k(n.getUTCHours()%12||12,e,2)}function mc(n,e){return k(1+zs.count(gt(n),n),e,3)}function Ai(n,e){return k(n.getUTCMilliseconds(),e,3)}function yc(n,e){return Ai(n,e)+"000"}function wc(n,e){return k(n.getUTCMonth()+1,e,2)}function xc(n,e){return k(n.getUTCMinutes(),e,2)}function bc(n,e){return k(n.getUTCSeconds(),e,2)}function vc(n){var e=n.getUTCDay();return e===0?7:e}function Tc(n,e){return k(zi.count(gt(n)-1,n),e,2)}function Li(n){var e=n.getUTCDay();return e>=4||e===0?Bt(n):Bt.ceil(n)}function Sc(n,e){return n=Li(n),k(Bt.count(gt(n),n)+(gt(n).getUTCDay()===4),e,2)}function Ec(n){return n.getUTCDay()}function Cc(n,e){return k(fn.count(gt(n)-1,n),e,2)}function Rc(n,e){return k(n.getUTCFullYear()%100,e,2)}function Pc(n,e){return n=Li(n),k(n.getUTCFullYear()%100,e,2)}function kc(n,e){return k(n.getUTCFullYear()%1e4,e,4)}function Oc(n,e){var t=n.getUTCDay();return n=t>=4||t===0?Bt(n):Bt.ceil(n),k(n.getUTCFullYear()%1e4,e,4)}function Yc(){return"+0000"}function fr(){return"%"}function pr(n){return+n}function gr(n){return Math.floor(+n/1e3)}var Tt,_i;zc({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 zc(n){return Tt=zl(n),_i=Tt.format,Tt.parse,Tt.utcFormat,Tt.utcParse,Tt}function Dc(n){return new Date(n)}function Mc(n){return n instanceof Date?+n:+new Date(+n)}function $i(n,e,t,s,r,i,a,l,c,h){var f=Ri(),g=f.invert,m=f.domain,x=h(".%L"),b=h(":%S"),v=h("%I:%M"),E=h("%I %p"),O=h("%a %d"),D=h("%b %d"),R=h("%B"),z=h("%Y");function _(T){return(c(T)<T?x:l(T)<T?b:a(T)<T?v:i(T)<T?E:s(T)<T?r(T)<T?O:D:t(T)<T?R:z)(T)}return f.invert=function(T){return new Date(g(T))},f.domain=function(T){return arguments.length?m(Array.from(T,Mc)):m().map(Dc)},f.ticks=function(T){var $=m();return n($[0],$[$.length-1],T??10)},f.tickFormat=function(T,$){return $==null?_:h($)},f.nice=function(T){var $=m();return(!T||typeof T.range!="function")&&(T=e($[0],$[$.length-1],T??10)),T?m(gl($,T)):f},f.copy=function(){return Ci(f,$i(n,e,t,s,r,i,a,l,c,h))},f}function Ac(){return bi.apply($i(Ol,Yl,rt,Ds,An,_e,Ys,Os,Et,_i).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}const Ms=p.z.enum(["linear","time"]),As=p.z.object({tickSpacing:p.z.number().default(75),type:Ms.optional().default("linear")}),ns=n=>{const e=As.parse(n);return $c[e.type](e)};class Lc{constructor(e){u(this,"props");this.props=e}generate({decimalToDataScale:e,size:t}){const s=[0,t],r=[new d.m(e.pos(0)).date(),new d.m(e.pos(1)).date()],i=Ac().domain(r).range(s);return i.ticks(Gi(t,this.props.tickSpacing)).map(l=>({label:this.tickLabel(l),position:i(l)}))}tickLabel(e){const t=new d.m(e).date();let s=`:${t.getSeconds()}`;if(t.getMilliseconds()!==0){const i=Math.round(t.getMilliseconds()).toString().padStart(3,"0").replace(/0+$/,"");s+=`.${i}`}return t.getSeconds()===0&&t.getMilliseconds()===0&&(s=`${t.getHours()}:${t.getMinutes().toString().padStart(2,"0")}`),s}}class _c{constructor(e){u(this,"props");this.props=e}generate({decimalToDataScale:e,size:t}){const s=[0,t],r=[e.pos(0),e.pos(1)],i=Yi().domain(r).range(s),a=Gi(t,this.props.tickSpacing);return i.ticks(a).map(c=>({label:this.tickLabel(c),position:i(c)}))}tickLabel(e){return e.toString()}}const Gi=(n,e)=>{const t=Math.floor(n/e);return t>0?t:1},$c={linear:n=>new _c(n),time:n=>new Lc(n)},Ls=As.extend({color:o.Color.z,type:Ms.optional().default("linear"),font:p.z.string(),showGrid:p.z.boolean().optional().default(!0),location:o.K.outer,gridColor:o.Color.z}),V=4;class mr{constructor(e,t){u(this,"numberDims");u(this,"negativeWidth");u(this,"periodWidth");u(this,"colonWidth");this.numberDims=d.dimensions("0",t,e),this.negativeWidth=d.dimensions("-",t,e).width,this.periodWidth=d.dimensions(".",t,e).width,this.colonWidth=d.dimensions(":",t,e).width}get(e){const t={width:0,height:this.numberDims.height};let s=e.length;return e.includes(".")&&(t.width+=this.periodWidth,s-=1),e.startsWith("-")&&(t.width+=this.negativeWidth,s-=1),e.includes(":")&&(t.width+=this.colonWidth,s-=1),t.width+=s*this.numberDims.width,t}}let Zi=class{constructor(e,t){u(this,"ctx");u(this,"state");u(this,"tickFactory");u(this,"dimensions");this.ctx=e,this.state=t,this.tickFactory=ns(this.state),this.dimensions=new mr(e.lower2d,t.font)}setState(e){this.state=d.prettyParse(Ls,e),this.tickFactory=ns(e),this.dimensions=new mr(this.ctx.lower2d,this.state.font)}render(e){const{lower2d:t}=this.ctx;switch(t.font=this.state.font,t.fillStyle=this.state.color.hex,t.lineWidth=1,this.state.location){case"left":return this.drawLeft(e);case"right":return this.drawRight(e);case"top":return this.drawTop(e);default:return this.drawBottom(e)}}drawBottom(e){const{lower2d:t}=this.ctx,{plot:s}=e,r=o.Eo.width(s),i=o.Eo.height(s),a=e.position,l=this.tickFactory.generate({...e,size:r});return this.maybeDrawGrid(r,l,h=>[o.G.translate(a,"x",h.position),o.G.translate(a,{x:h.position,y:-i})]),t.strokeStyle=this.state.color.hex,this.drawLine(a,o.G.translate(a,"x",r)),{size:this.drawTicks(l,(h,f)=>{t.moveTo(a.x+f.position,a.y),t.lineTo(a.x+f.position,a.y+V),t.stroke(),t.fillText(f.label,a.x+f.position-h.width/2,a.y+5+h.height)}).height+V+6}}drawTop(e){const{lower2d:t}=this.ctx,{plot:s}=e,r=o.Eo.width(s),i=o.Eo.height(s),a=o.G.translate(e.position,"y",e.size),l=this.tickFactory.generate({...e,size:r});return this.maybeDrawGrid(r,l,h=>[o.G.translate(a,"x",h.position),o.G.translate(a,{x:h.position,y:i})]),t.strokeStyle=this.state.color.hex,this.drawLine(a,o.G.translate(a,"x",r)),{size:this.drawTicks(l,(h,f)=>{t.moveTo(a.x+f.position,a.y),t.lineTo(a.x+f.position,a.y-V),t.stroke(),t.fillText(f.label,a.x+f.position-h.width/2,a.y-5-h.height)}).height+V}}drawLeft(e){const{lower2d:t}=this.ctx,{plot:s}=e,r=o.Eo.height(s),i=o.Eo.width(s),a=o.G.translate(e.position,"x",e.size),l=this.tickFactory.generate({...e,size:r});return this.maybeDrawGrid(r,l,h=>[o.G.translate(a,"y",h.position),o.G.translate(a,{x:i,y:h.position})]),t.strokeStyle=this.state.color.hex,this.drawLine(a,o.G.translate(a,"y",r)),{size:this.drawTicks(l,(h,f)=>{t.moveTo(a.x,a.y+f.position),t.lineTo(a.x-V,a.y+f.position),t.stroke(),t.fillText(f.label,a.x-h.width-V*2,a.y+f.position+h.height/3)}).width+V*2}}drawRight(e){const{lower2d:t}=this.ctx,{plot:s}=e,r=o.Eo.height(s),i=o.Eo.width(s),a=e.position,l=this.tickFactory.generate({...e,size:r});return this.maybeDrawGrid(r,l,h=>[o.G.translate(a,"y",h.position),o.G.translate(a,{x:-i,y:h.position})]),t.strokeStyle=this.state.color.hex,this.drawLine(a,o.G.translate(a,"y",r)),{size:this.drawTicks(l,(h,f)=>{t.moveTo(a.x,a.y+f.position),t.lineTo(a.x+V,a.y+f.position),t.stroke(),t.fillText(f.label,a.x+V+2,a.y+f.position+h.height/3)}).width+V*2}}drawLine(e,t){const{lower2d:s}=this.ctx;s.beginPath(),s.moveTo(...o.G.couple(e)),s.lineTo(...o.G.couple(t)),s.stroke()}drawTicks(e,t){let s=o._.ZERO;return e.forEach(r=>{const i=this.dimensions.get(r.label);s=o._.max([s,i]),t(i,r)}),s}maybeDrawGrid(e,t,s){const{showGrid:r,gridColor:i}=this.state;if(r){const a=o.G$1.construct(-1,1),l=o.G$1.construct(e-1,e+1);this.ctx.lower2d.strokeStyle=i.hex,t.filter(({position:c})=>!o.G$1.contains(a,c)&&!o.G$1.contains(l,c)).forEach(c=>this.drawLine(...s(c)))}}};const je=(n,e)=>o.Eo.construct(o.Eo.left(n)-e.x,o.Eo.top(n)-e.y,o.Eo.width(n)+e.x*2,o.Eo.height(n)+e.y*2);class pn{constructor(e,t=o.b.XY.IDENTITY){u(this,"scale_");u(this,"wrapped");this.wrapped=e,this.scale_=t}get fontStretch(){return this.wrapped.fontStretch}set fontStretch(e){this.wrapped.fontStretch=e}get fontVariantCaps(){return this.wrapped.fontVariantCaps}set fontVariantCaps(e){this.wrapped.fontVariantCaps=e}isContextLost(){return this.wrapped.isContextLost()}get wordSpacing(){return this.wrapped.wordSpacing}set wordSpacing(e){this.wrapped.wordSpacing=e}get letterSpacing(){return this.wrapped.letterSpacing}set letterSpacing(e){this.wrapped.letterSpacing=e}get textRendering(){return this.wrapped.textRendering}set textRendering(e){this.wrapped.textRendering=e}reset(){this.wrapped.reset()}applyScale(e){return new pn(this,e)}get canvas(){return this.wrapped.canvas}get miterLimit(){return this.wrapped.miterLimit}set miterLimit(e){this.wrapped.miterLimit=this.scale_.x.dim(e)}get globalAlpha(){return this.wrapped.globalAlpha}set globalAlpha(e){this.wrapped.globalAlpha=e}get globalCompositeOperation(){return this.wrapped.globalCompositeOperation}set globalCompositeOperation(e){this.wrapped.globalCompositeOperation=e}get fillStyle(){return this.wrapped.fillStyle}set fillStyle(e){this.wrapped.fillStyle=e}get strokeStyle(){return this.wrapped.strokeStyle}set strokeStyle(e){this.wrapped.strokeStyle=e}drawImage(e,t,s,r,i,a,l,c,h){this.wrapped.drawImage(e,t,s,r,i,a,l,c,h)}beginPath(){this.wrapped.beginPath()}clip(e,t){this.wrapped.clip(e,t)}fill(e,t){if(e==null)return this.wrapped.fill();this.wrapped.fill(e,t)}isPointInPath(e,t,s,r){return this.wrapped.isPointInPath(e,t,s,r)}isPointInStroke(e,t,s){return this.wrapped.isPointInStroke(e,t,s)}stroke(e){if(e==null)return this.wrapped.stroke();this.wrapped.stroke(e)}createConicGradient(e,t,s){return this.wrapped.createConicGradient(e,t,s)}createLinearGradient(e,t,s,r){return this.wrapped.createLinearGradient(e,t,s,r)}createPattern(e,t){return this.wrapped.createPattern(e,t)}createRadialGradient(e,t,s,r,i,a){return this.wrapped.createRadialGradient(e,t,s,r,i,a)}get filter(){return this.wrapped.filter}set filter(e){this.wrapped.filter=e}createImageData(e,t,s){return this.wrapped.createImageData(e,t,s)}getImageData(e,t,s,r,i){return this.wrapped.getImageData(e,t,s,r,i)}putImageData(e,t,s,r,i,a,l){this.wrapped.putImageData(e,t,s,r,i,a,l)}get imageSmoothingEnabled(){return this.wrapped.imageSmoothingEnabled}set imageSmoothingEnabled(e){this.wrapped.imageSmoothingEnabled=e}get imageSmoothingQuality(){return this.wrapped.imageSmoothingQuality}set imageSmoothingQuality(e){this.wrapped.imageSmoothingQuality=e}arc(e,t,s,r,i,a){this.wrapped.arc(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),r,i,a)}arcTo(e,t,s,r,i){this.wrapped.arcTo(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.pos(s),this.scale_.y.pos(r),this.scale_.x.dim(i))}bezierCurveTo(e,t,s,r,i,a){this.wrapped.bezierCurveTo(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.pos(s),this.scale_.y.pos(r),this.scale_.x.pos(i),this.scale_.y.pos(a))}closePath(){this.wrapped.closePath()}ellipse(e,t,s,r,i,a,l,c){this.wrapped.ellipse(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),this.scale_.y.dim(r),i,a,l,c)}lineTo(e,t){this.wrapped.lineTo(this.scale_.x.pos(e),this.scale_.y.pos(t))}moveTo(e,t){this.wrapped.moveTo(this.scale_.x.pos(e),this.scale_.y.pos(t))}quadraticCurveTo(e,t,s,r){this.wrapped.quadraticCurveTo(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.pos(s),this.scale_.y.pos(r))}rect(e,t,s,r){this.wrapped.rect(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),this.scale_.y.dim(r))}roundRect(e,t,s,r,i){this.wrapped.roundRect(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),this.scale_.y.dim(r),typeof i=="number"?this.scale_.x.dim(i):i)}get lineCap(){return this.wrapped.lineCap}set lineCap(e){this.wrapped.lineCap=e}get lineDashOffset(){return this.wrapped.lineDashOffset}set lineDashOffset(e){this.wrapped.lineDashOffset=this.scale_.x.dim(e)}get lineJoin(){return this.wrapped.lineJoin}set lineJoin(e){this.wrapped.lineJoin=e}get lineWidth(){return this.wrapped.lineWidth}set lineWidth(e){this.wrapped.lineWidth=this.scale_.x.dim(e)}getLineDash(){return this.wrapped.getLineDash()}setLineDash(e){const t=Array.from(e).map(s=>this.scale_.x.dim(s));this.wrapped.setLineDash(t)}clearRect(e,t,s,r){this.wrapped.clearRect(e,t,s,r)}fillRect(e,t,s,r){this.wrapped.fillRect(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),this.scale_.y.dim(r))}strokeRect(e,t,s,r){this.wrapped.strokeRect(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),this.scale_.y.dim(r))}get shadowBlur(){return this.wrapped.shadowBlur}set shadowBlur(e){this.wrapped.shadowBlur=e}get shadowColor(){return this.wrapped.shadowColor}set shadowColor(e){this.wrapped.shadowColor=e}get shadowOffsetX(){return this.wrapped.shadowOffsetX}set shadowOffsetX(e){this.wrapped.shadowOffsetX=e}get shadowOffsetY(){return this.wrapped.shadowOffsetY}restore(){this.wrapped.restore()}save(){this.wrapped.save()}fillText(e,t,s,r){this.wrapped.fillText(e,this.scale_.x.pos(t),this.scale_.y.pos(s),r!=null?this.scale_.x.dim(r):void 0)}measureText(e){this.wrapped.font=qn(this.wrapped.font,this.scale_.x.reverse());const t=this.wrapped.measureText(e);return this.wrapped.font=qn(this.wrapped.font,this.scale_.x),t}strokeText(e,t,s,r){this.wrapped.strokeText(e,this.scale_.x.pos(t),this.scale_.y.pos(s),r!=null?this.scale_.x.dim(r):void 0)}get direction(){return this.wrapped.direction}set direction(e){this.wrapped.direction=e}get font(){return this.wrapped.font}set font(e){this.wrapped.font=qn(e,this.scale_.x)}get fontKerning(){return this.wrapped.fontKerning}set fontKerning(e){this.wrapped.fontKerning=e}get textAlign(){return this.wrapped.textAlign}set textAlign(e){this.wrapped.textAlign=e}get textBaseline(){return this.wrapped.textBaseline}set textBaseline(e){this.wrapped.textBaseline=e}getTransform(){return this.wrapped.getTransform()}resetTransform(){this.wrapped.resetTransform()}rotate(e){this.wrapped.rotate(e)}scale(e,t){this.wrapped.scale(e,t)}scissor(e,t=o.G.ZERO){const s=new Gc(this.scale_);return e=je(e,t),s.rect(...o.G.couple(o.Eo.topLeft(e)),...o._.couple(o.Eo.dims(e))),this.save(),this.clip(s.getPath()),()=>this.restore()}setTransform(e,t,s,r,i,a){this.wrapped.setTransform(e,t,s,r,i,a)}transform(e,t,s,r,i,a){this.wrapped.transform(e,t,s,r,i,a)}translate(e,t){this.wrapped.translate(e,t)}}const yr=/(\d+(\.\d+)?)px/,qn=(n,e)=>{var r;const t=Number((r=n.match(yr))==null?void 0:r[1]);if(t==null)return n;const s=e.dim(t);return n.replace(yr,`${s}px`)};class Gc{constructor(e=o.b.XY.IDENTITY,t){u(this,"scale_");u(this,"path");this.scale_=e,t instanceof Path2D||typeof t=="string"?this.path=new Path2D(t):this.path=new Path2D}addPath(e,t){this.path.addPath(e,t)}arc(e,t,s,r,i,a){this.path.arc(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),r,i,a)}arcTo(e,t,s,r,i){this.path.arcTo(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.pos(s),this.scale_.y.pos(r),this.scale_.x.dim(i))}bezierCurveTo(e,t,s,r,i,a){this.path.bezierCurveTo(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.pos(s),this.scale_.y.pos(r),this.scale_.x.pos(i),this.scale_.y.pos(a))}closePath(){this.path.closePath()}ellipse(e,t,s,r,i,a,l,c){this.path.ellipse(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),this.scale_.y.dim(r),i,a,l,c)}lineTo(e,t){this.path.lineTo(this.scale_.x.pos(e),this.scale_.y.pos(t))}moveTo(e,t){this.path.moveTo(this.scale_.x.pos(e),this.scale_.y.pos(t))}quadraticCurveTo(e,t,s,r){this.path.quadraticCurveTo(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.pos(s),this.scale_.y.pos(r))}rect(e,t,s,r){this.path.rect(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),this.scale_.y.dim(r))}roundRect(e,t,s,r,i){const a=this.scaleRadii(i);this.path.roundRect(this.scale_.x.pos(e),this.scale_.y.pos(t),this.scale_.x.dim(s),this.scale_.y.dim(r),a)}scaleRadii(e){return e==null?e:typeof e=="number"?this.scale_.x.dim(e):Array.isArray(e)?e.map(t=>this.scaleRadius(t)):this.scaleRadius(e)}scaleRadius(e){return typeof e=="number"?this.scale_.x.dim(e):{x:this.scale_.x.dim(e.x??0),y:this.scale_.y.dim(e.y??0)}}getPath(){return this.path}}const Zc=`precision mediump float;
7
+
8
+ void main(void) {
9
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
10
+ }
11
+ `,Ic=`attribute vec4 a_position;
12
+
13
+ void main(void) {
14
+ gl_Position = a_position;
15
+ }
16
+ `,wr=n=>new Error(`failed to compile webgl program: ${n}`),Nc=new Error("null shader encountered");class _s{constructor(e,t,s){u(this,"ctx");u(this,"prog");u(this,"vertShader");u(this,"fragShader");u(this,"uniformLocCache",new Map);this.ctx=e;const r=e.gl.createProgram();if(r==null)throw wr("failed to create program");this.prog=r,this.vertShader=t,this.fragShader=s,this.compile()}setAsActive(){return this.ctx.gl.useProgram(this.prog),()=>this.ctx.gl.useProgram(null)}uniformXY(e,t){this.ctx.gl.uniform2fv(this.getUniformLoc(e),o.G.couple(o.G.construct(t)))}uniformColor(e,t){this.ctx.gl.uniform4fv(this.getUniformLoc(e),t.rgba1)}getUniformLoc(e){const t=this.uniformLocCache.get(e);if(t!=null)return t;const s=this.ctx.gl.getUniformLocation(this.prog,e);if(s==null)throw new Error(`unexpected missing uniform ${e}`);return this.uniformLocCache.set(e,s),s}compile(){const e=this.ctx.gl;this.compileShader(this.vertShader,e.VERTEX_SHADER),this.compileShader(this.fragShader,e.FRAGMENT_SHADER),e.linkProgram(this.prog)}compileShader(e,t){const s=this.ctx.gl,r=s.createShader(t);if(r==null)throw Nc;if(s.shaderSource(r,e),s.compileShader(r),!s.getShaderParameter(r,s.COMPILE_STATUS)){const a=s.getShaderInfoLog(r);throw s.deleteShader(r),wr(a??"unknown")}s.attachShader(this.prog,r)}}const Bc=new Float32Array([0,0,0,0,0,0]);class Uc extends _s{constructor(t){super(t,Ic,Zc);u(this,"positionBuffer");const s=t.gl.createBuffer();if(s==null)throw new d.Ce("webgl: failed to create buffer");this.positionBuffer=s,t.gl.bindBuffer(t.gl.ARRAY_BUFFER,this.positionBuffer),t.gl.bufferData(t.gl.ARRAY_BUFFER,Bc,t.gl.STATIC_DRAW)}exec(){const{gl:t}=this.ctx,s=t.getAttribLocation(this.prog,"a_position");t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer);const r=t.createVertexArray();t.bindVertexArray(r),t.enableVertexAttribArray(s),t.vertexAttribPointer(s,2,t.FLOAT,!1,0,0),this.setAsActive(),t.drawArrays(t.TRIANGLES,0,3)}}const xr={high:1,low:0},br=d.P.hz(45);class Ii{constructor(e){u(this,"mutex",new d.Mutex);u(this,"requests",new Map);u(this,"cleanup",new Map);u(this,"afterRender");this.start(),this.afterRender=e}async set(e){let t;e.priority==="high"&&(t=await this.mutex.acquire());const s=this.requests.get(e.key);if(s==null)this.requests.set(e.key,e);else{const r=xr[e.priority]>=xr[s.priority],i=e.canvases.length>=s.canvases.length;r&&i&&this.requests.set(e.key,e)}t==null||t()}async render(){await this.mutex.runExclusive(async()=>{var i;const e=performance.now(),{requests:t}=this;if(t.size===0)return;await this.runCleanupsSync(),await this.renderSync();const s=performance.now(),r=d.y.milliseconds(s-e);r.greaterThan(br.period)&&console.warn(`Render loop for ${this.requests.size} took longer than ${br.period.toString()} to execute: ${r.milliseconds}`),this.requests.clear(),(i=this.afterRender)==null||i.call(this)})}async runCleanupsSync(){const{cleanup:e,requests:t}=this;for(const[s,r]of e.entries()){const i=t.get(s);i!=null&&(await r(i),e.delete(s))}}async renderSync(){const{requests:e}=this;for(const t of e.values())try{const s=await t.render();s!=null&&this.cleanup.set(t.key,s)}catch(s){console.error(s)}}async start(){do{try{await this.render()}catch(e){console.error(e)}await this.sleep()}while(!0)}async sleep(){return await new Promise(requestAnimationFrame)}}const vr=n=>(n.textRendering="optimizeSpeed",n.imageSmoothingEnabled=!1,n);var X;let L=(X=class{constructor(e,t,s,r){u(this,"glCanvas");u(this,"upper2dCanvas");u(this,"lower2dCanvas");u(this,"gl");u(this,"lower2d");u(this,"upper2d");u(this,"region");u(this,"dpr");u(this,"loop");u(this,"clearProgram");u(this,"os");this.upper2dCanvas=s,this.lower2dCanvas=t,this.glCanvas=e,this.os=r;const i=this.lower2dCanvas.getContext("2d");if(i==null)throw new Error("Could not get 2D context");this.lower2d=vr(new pn(i));const a=this.upper2dCanvas.getContext("2d");if(a==null)throw new Error("Could not get 2D context");this.upper2d=vr(new pn(a));const l={preserveDrawingBuffer:!0,powerPreference:"high-performance",stencil:!1,depth:!1},c=this.glCanvas.getContext("webgl2",l);if(c==null)throw new Error("Could not get WebGL context");c.disable(c.DEPTH_TEST),c.disable(c.STENCIL_TEST),c.disable(c.CULL_FACE),c.disable(c.DITHER),this.gl=c,this.glCanvas.oncontextlost=console.log;const h=()=>{this.gl.flush(),this.gl.finish()};this.loop=new Ii(h),this.region=o.Eo.ZERO,this.dpr=1,this.os==="Windows"&&(this.clearProgram=new Uc(this))}static create(e,t,s,r,i){const a=new X(t,s,r,i);return e.set(X.CONTEXT_KEY,a),a}static useOptional(e){return e.getOptional(X.CONTEXT_KEY)}static use(e){return e.get(X.CONTEXT_KEY)}update(e){e.set(X.CONTEXT_KEY,this)}resize(e,t){o.Eo.equals(this.region,e)&&this.dpr===t||(this.region=e,this.dpr=t,this.resizeCanvas(this.glCanvas),this.resizeCanvas(this.upper2dCanvas),this.resizeCanvas(this.lower2dCanvas),this.lower2d.scale(this.dpr,this.dpr),this.upper2d.scale(this.dpr,this.dpr),this.gl.viewport(0,0,o.Eo.width(e)*t,o.Eo.height(e)*t))}resizeCanvas(e){e.width=o.Eo.width(this.region)*this.dpr,e.height=o.Eo.height(this.region)*this.dpr}get aspect(){return o.Eo.aspect(this.region)}scaleRegion(e){return new o.b.XY(o.b.Scale.scale(0,1).scale(o.Eo.width(e)).translate(o.Eo.left(e)).reBound(o.Eo.width(this.region)).scale(-1,1),o.b.Scale.scale(0,1).scale(o.Eo.height(e)).invert().translate(o.Eo.top(e)).reBound(o.Eo.height(this.region)).scale(-1,1).invert())}scissor(e,t=o.G.ZERO,s){const r=[];return s.includes("upper2d")&&r.push(this.upper2d.scissor(e,t)),s.includes("lower2d")&&r.push(this.lower2d.scissor(e,t)),s.includes("gl")&&r.push(this.scissorGL(e,t)),()=>r.forEach(i=>i())}scissorGL(e,t=o.G.ZERO){return this.gl.enable(this.gl.SCISSOR_TEST),e=je(e,t),this.gl.scissor(o.Eo.left(e)*this.dpr,(o.Eo.height(this.region)-o.Eo.bottom(e))*this.dpr,o.Eo.width(e)*this.dpr,o.Eo.height(e)*this.dpr),()=>this.gl.disable(this.gl.SCISSOR_TEST)}erase(e,t=o.G.ZERO,...s){t=o.G.construct(t),s.length===0&&(s=["upper2d","lower2d","gl"]),s.includes("upper2d")&&this.eraseCanvas(this.upper2d,e,t),s.includes("lower2d")&&this.eraseCanvas(this.lower2d,e,t),s.includes("gl")&&this.eraseGL(e,t)}eraseGL(e,t=o.G.ZERO){var i;const{gl:s}=this,r=this.scissorGL(je(e,t));s.clearColor(...o.ZERO.rgba1),s.clear(s.COLOR_BUFFER_BIT),this.os==="Windows"&&((i=this.clearProgram)==null||i.exec()),r()}eraseCanvas(e,t,s=o.G.ZERO){const r=je(t,s);e.clearRect(...o.G.couple(o.Eo.topLeft(r)),...o._.couple(o.Eo.dims(r)))}},u(X,"CONTEXT_KEY",o.CSS.B("render-context")),X);const J="layout",ss="data",it="tool";var K;let G=(K=class{constructor(e){u(this,"f");this.f=e}static control(e,t){e.set(K.CONTEXT_KEY,new K(t),!1)}static useRequest(e){return e.get(K.CONTEXT_KEY).f}static useOptionalRequest(e){var t;return((t=e.getOptional(K.CONTEXT_KEY))==null?void 0:t.f)??null}static requestRender(e,t){this.useRequest(e)(t)}},u(K,"CONTEXT_KEY","pluto-vis-renderer"),K),Ni=class{constructor(){u(this,"prevErase",o.Eo.ZERO)}erase(e,t,s,r,i){!o.Eo.equals(s,t)&&!o.Eo.equals(this.prevErase,s)?(e.erase(s,r,...i),this.prevErase=s):e.erase(t,r,...i)}};const $e=Ls.extend({bounds:o.G$1.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:d.y.z.optional().default(d.y.seconds(2)),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}),Fc=2,qc=7,Bi=(n,e)=>o.G$1.contains({lower:n-qc,upper:n+Fc},e),jc=o.G$1.DECIMAL,Tr=d.m.now(),Hc={lower:Number(Tr.valueOf()),upper:Number(Tr.add(d.y.HOUR).valueOf())},Ui=n=>n==="linear"?jc:Hc,Wc=(n,e=.1,t)=>{const s=o.G$1.max(n.filter(o.G$1.isFinite));if(!o.G$1.isFinite(s))return Ui(t);const{lower:r,upper:i}=s;if(i===r)return{lower:r-1,upper:i+1};const a=(i-r)*e;return{lower:r-a,upper:i+a}},Xc=.01,Vc=.1;class Fi extends d.Composite{async afterUpdate(){var t,s;this.internal.render=L.use(this.ctx);const e=d.use(this.ctx);(t=this.state).autoBoundPadding??(t.autoBoundPadding=o.g.construct(this.state.location)==="x"?Vc:Xc),this.internal.core=new Zi(this.internal.render,{color:e.colors.gray.l8,font:d.fontString(e,{level:"small"}),gridColor:e.colors.gray.l1,...this.state}),G.requestRender(this.ctx,J),(s=this.internal).updateBounds??(s.updateBounds=d.r(r=>this.setState(i=>({...i,bounds:r})),this.state.autoBoundUpdateInterval.milliseconds))}async afterDelete(){G.requestRender(this.ctx,J)}renderAxis(e,t){if(!e.canvases.includes("lower2d"))return;const{core:s}=this.internal,{grid:r,container:i}=e,a=mo(`${this.type}-${this.key}`,r,i),l={...e,position:a,decimalToDataScale:t,size:this.state.size+this.state.labelSize},{size:c}=s.render(l);Bi(this.state.size,c)||this.setState(h=>({...h,size:c}))}async bounds(e,t){var h,f;if(e&&this.internal.boundSnapshot!=null)return[this.internal.boundSnapshot,null];const{lower:s,upper:r}=qi(this.state.autoBounds);if(!s&&!r&&this.state.bounds!=null)return this.internal.boundSnapshot=this.state.bounds,[this.state.bounds,null];const i=g=>({upper:r||this.state.bounds==null?g.upper:this.state.bounds.upper,lower:s||this.state.bounds==null?g.lower:this.state.bounds.lower});let a,l=null;try{const g=await t();a=Wc(g,this.state.autoBoundPadding,this.state.type)}catch(g){a=Ui(this.state.type),l=g}const c=i(a);return this.internal.boundSnapshot=c,(this.state.bounds==null||s&&this.state.bounds.lower!==c.lower||r&&this.state.bounds.upper!==c.upper)&&((f=(h=this.internal).updateBounds)==null||f.call(h,c)),[c,l]}async dataToDecimalScale(e,t,s){const[r,i]=await this.bounds(e,t),a=o.g.swap(o.g.construct(this.state.location));return[o.b.Scale.scale(r).scale(1).translate(-o.Eo.root(s)[a]).magnify(1/o.Eo.dim(s,a)),i]}}const qi=n=>typeof n=="boolean"?{lower:n,upper:n}:{lower:(n==null?void 0:n.lower)??!0,upper:(n==null?void 0:n.upper)??!0},Kc=`precision lowp float;
17
+ uniform lowp vec4 u_color;
18
+
19
+ void main(void) {
20
+ gl_FragColor = u_color;
21
+ }
22
+ `,Qc=`attribute float a_x;
23
+ attribute float a_y;
24
+ attribute lowp vec2 a_translate;
25
+
26
+ uniform lowp vec2 u_scale_aggregate;
27
+ uniform lowp vec2 u_offset_aggregate;
28
+
29
+ void main(void) {
30
+ vec2 transformed = u_scale_aggregate * vec2(a_x,a_y) + u_offset_aggregate;
31
+ transformed = transformed + a_translate;
32
+ gl_Position = vec4(transformed, 0.0, 1.0);
33
+ }
34
+ `,Sr=d.g.FLOAT32.density.valueOf(),ji=p.z.object({x:nn,y:nn,label:p.z.string().optional(),color:o.Color.z,strokeWidth:p.z.number().default(1),downsample:p.z.number().min(1).max(50).optional().default(1)}),Jc=(n,e,t)=>n===-1||e===-1||n>=t.length?NaN:Number(t[n].at(e)),tu=d.y.milliseconds(2);o.G.NAN,o.G.NAN,o.ZERO;const Rt=class Rt extends _s{constructor(t){super(t,Qc,Kc);u(this,"translationBufferCache",new Map);this.translationBufferCache=new Map}bindState({strokeWidth:t,color:s}){return this.uniformColor("u_color",s),this.attrStrokeWidth(t)}bindScale(t,s){const r=o.G.scale(t.scale,s.scale),i=o.G.translate(o.G.scale(s.scale,t.offset),s.offset);this.uniformXY("u_scale_aggregate",r),this.uniformXY("u_offset_aggregate",i)}draw({x:t,y:s,count:r,downsample:i,xOffset:a,yOffset:l},c){const{gl:h}=this.ctx;this.bindAttrBuffer("x",t.glBuffer,i,a),this.bindAttrBuffer("y",s.glBuffer,i,l),h.drawArraysInstanced(h.LINE_STRIP,0,r/i,c)}static create(t){const s=L.use(t),r=new Rt(s);return t.set(Rt.CONTEXT_KEY,r),r}static use(t){return t.get(Rt.CONTEXT_KEY)}bindAttrBuffer(t,s,r,i=0){const{gl:a}=this.ctx;a.bindBuffer(a.ARRAY_BUFFER,s);const l=a.getAttribLocation(this.prog,`a_${t}`);a.vertexAttribPointer(l,1,a.FLOAT,!1,Sr*r,Sr*i),a.enableVertexAttribArray(l)}getAndBindTranslationBuffer(t){const{gl:s}=this.ctx,r=`${this.ctx.aspect}:${t}`,i=this.translationBufferCache.get(r);if(i!=null)return s.bindBuffer(s.ARRAY_BUFFER,i.glBuffer),i;const a=s.createBuffer();if(a==null)throw new d.Ce("Failed to create buffer from WebGL context");const l=nu(this.ctx.aspect,t);s.bindBuffer(s.ARRAY_BUFFER,a),s.bufferData(s.ARRAY_BUFFER,l,s.DYNAMIC_DRAW);const c={glBuffer:a,jsBuffer:l};return this.translationBufferCache.set(r,c),c}attrStrokeWidth(t){const{gl:s}=this.ctx,{jsBuffer:r}=this.getAndBindTranslationBuffer(t),i=s.getAttribLocation(this.prog,"a_translate");return s.vertexAttribPointer(i,2,s.FLOAT,!1,0,0),s.enableVertexAttribArray(i),s.vertexAttribDivisor(i,1),r.length/2}};u(Rt,"CONTEXT_KEY","pluto-line-gl-program");let gn=Rt;class ve extends d.Leaf{constructor(){super(...arguments);u(this,"schema",ji)}async afterUpdate(){var s,r;if(this.deleted)return;const{internal:t}=this;t.xTelem=await j(this.ctx,this.state.x,t.xTelem),t.yTelem=await j(this.ctx,this.state.y,t.yTelem),t.instrumentation=Ae(this.ctx,"line"),t.prog=gn.use(this.ctx),t.requestRender=G.useRequest(this.ctx),(s=t.stopListeningXTelem)==null||s.call(t),(r=t.stopListeningYTelem)==null||r.call(t),t.stopListeningXTelem=t.xTelem.onChange(()=>t.requestRender(ss)),t.stopListeningYTelem=t.yTelem.onChange(()=>t.requestRender(ss)),t.requestRender(J)}async afterDelete(){var s,r,i,a;const{internal:t}=this;await((r=(s=t.xTelem).cleanup)==null?void 0:r.call(s)),await((a=(i=t.yTelem).cleanup)==null?void 0:a.call(i)),t.requestRender(J)}async xBounds(){return(await this.internal.xTelem.value())[0]}async yBounds(){return(await this.internal.yTelem.value())[0]}async findByXValue(t,s){const{xTelem:r,yTelem:i}=this.internal,[,a]=await r.value();let[l,c]=[-1,-1];a.find((O,D)=>{const R=O.binarySearch(s),z=R>=0&&R<O.length;return z&&([l,c]=[R,D]),z});const{key:h}=this,{color:f,label:g}=this.state,m={key:h,color:f,label:g,position:{x:0,y:0},value:{x:NaN,y:NaN}};if(l===-1||c===-1)return m;const x=a[c];m.value.x=Jc(c,l,a);const[,b]=await i.value(),v=b.find(O=>o.G$1.contains(O.alignmentBounds,x.alignment+BigInt(l)));if(v==null)return m;const E=Number(v.alignment-x.alignment);return m.value.y=Number(v.at(l-E)),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)return;const{downsample:s}=this.state,{xTelem:r,yTelem:i,prog:a}=this.internal,{dataToDecimalScale:l,exposure:c}=t,[[,h],[,f]]=await Promise.all([r.value(),i.value()]);h.forEach(v=>v.updateGLBuffer(a.ctx.gl)),f.forEach(v=>v.updateGLBuffer(a.ctx.gl));const g=lu(h,f,c,s,tu);this.internal.instrumentation.L.debug("render",()=>({key:this.key,downsample:s,scale:l.transform,props:t.region,ops:cu(g)}));const m=a.setAsActive(),x=a.bindState(this.state),b=a.ctx.scaleRegion(t.region).transform;g.forEach(v=>{const E=au(l,v).transform;a.bindScale(E,b),a.draw(v,x)}),m()}}u(ve,"TYPE","line");const eu=5e3,nu=(n,e)=>iu(ru(n),e).map((t,s)=>Math.floor(s/su)*(1/(eu*n))*t),su=5,ru=n=>new Float32Array([0,0,0,n,0,-n,1,0,-1,0]),iu=(n,e)=>{const t=new Float32Array(n.length*e);for(let s=0;s<e;s++)t.set(n,s*n.length);return t},au=(n,e)=>n.translate(n.x.dim(Number(e.x.sampleOffset)),n.y.dim(Number(e.y.sampleOffset))),ou={[ve.TYPE]:ve},lu=(n,e,t,s,r)=>{if(n.length===0||e.length===0)return[];const i=[];return n.forEach(a=>e.forEach(l=>{if(!uu(a,l,r))return;let c=0,h=0;a.alignment<l.alignment?c=Number(l.alignment-a.alignment):l.alignment<a.alignment&&(h=Number(a.alignment-l.alignment));const f=Math.min(a.length-c,l.length-h);if(f===0)return;const g=o.Y(Math.round(t*4*f),s,51);i.push({x:a,y:l,xOffset:c,yOffset:h,count:f,downsample:g})})),i},cu=n=>n.map(e=>({...e,x:e.x.digest,y:e.y.digest})),uu=(n,e,t)=>{if(!(n._timeRange!=null&&e._timeRange!=null))throw new d.Ce(`Encountered series without time range in buildDrawOperations. X series present: ${n._timeRange!=null}, Y series present: ${e._timeRange!=null}`);const r=n.timeRange.overlapsWith(e.timeRange,t),i=o.G$1.overlapsWith(n.alignmentBounds,e.alignmentBounds);return r&&i};class Xt{constructor(e,t){u(this,"canvas");u(this,"theme");this.canvas=e,this.theme=t}rule({direction:e,region:t,position:s,...r}){return e==="x"?this.line({start:o.G.construct(o.Eo.left(t),s),end:o.G.construct(o.Eo.right(t),s),...r}):this.line({start:o.G.construct(s,o.Eo.top(t)),end:o.G.construct(s,o.Eo.bottom(t)),...r})}line({stroke:e,lineWidth:t,lineDash:s,start:r,end:i}){const a=this.canvas;a.strokeStyle=e.hex,a.lineWidth=t,a.setLineDash([s]),a.beginPath(),a.moveTo(...o.G.couple(r)),a.lineTo(...o.G.couple(i)),a.stroke()}circle({fill:e,radius:t,position:s}){const r=this.canvas;r.fillStyle=e.hex,r.beginPath(),r.arc(...o.G.couple(s),t,0,2*Math.PI),r.fill()}resolveColor(e,t){return e==null?this.resolveColor(t):typeof e=="function"?e(this.theme):new o.Color(e)}border({region:e,color:t,width:s,radius:r,location:i}){const a=this.canvas;a.strokeStyle=this.resolveColor(t,this.theme.colors.border).hex,a.lineWidth=s??this.theme.sizes.border.width,r??(r=this.theme.sizes.border.radius),i==null||i===!0?r>0?(a.roundRect(...o.G.couple(o.Eo.topLeft(e)),...o.G.couple(o.Eo.dims(e)),r),a.stroke()):(a.rect(...o.G.couple(o.Eo.topLeft(e)),...o.G.couple(o.Eo.dims(e))),a.stroke()):d.A(i).forEach(l=>{const[c,h]=o.Eo.edgePoints(e,l);a.beginPath(),a.moveTo(...o.G.couple(c)),a.lineTo(...o.G.couple(h)),a.stroke()})}container({region:e,bordered:t=!0,rounded:s=!0,borderColor:r,borderRadius:i,borderWidth:a,backgroundColor:l}){i??(i=this.theme.sizes.border.radius),a??(a=1);const c=this.canvas;c.fillStyle=this.resolveColor(l,this.theme.colors.gray.l1).hex,c.strokeStyle=this.resolveColor(r,this.theme.colors.border).hex,c.setLineDash([]),c.lineWidth=1,c.beginPath(),s?c.roundRect(...o.G.couple(o.Eo.topLeft(e)),...o.G.couple(o.Eo.dims(e)),i):c.rect(...o.G.couple(o.Eo.topLeft(e)),...o.G.couple(o.Eo.dims(e))),c.fill(),t&&this.border({region:e,color:r,radius:i,width:a,location:t})}textContainer(e){const[t,s]=this.spacedTextDrawF(e);t.width+=12,t.height+=12;const{root:r=o.K.TOP_LEFT,offset:i=o.G.ZERO}=e,a={...e.position};r.x==="right"?a.x-=t.width+i.x:a.x+=i.x,r.y==="bottom"?a.y-=t.height+i.y:a.y+=i.y,this.container({region:o.Eo.construct(a,t.width,t.height),...e}),this.canvas.filter="none",s(o.G.translate(a,[6,6]))}spacedTextDrawF({text:e,direction:t,spacing:s=1,level:r="p"}){const i=d.fontString(this.theme,{level:r}),a=e.map(h=>d.dimensions(h,i,this.canvas)),l=this.theme.sizes.base*s,c=Math.max(...a.map(h=>h[o.g.dimension(t)]))+l;return[{[o.g.dimension(o.g.swap(t))]:Math.max(...a.map(h=>h[o.g.dimension(o.g.swap(t))])),[o.g.dimension(t)]:c*e.length-l},h=>{const f=d.fontString(this.theme,{level:r});this.canvas.font=f,this.canvas.fillStyle=this.theme.colors.text.hex,this.canvas.textBaseline="top",e.forEach((g,m)=>{this.canvas.fillText(g,h.x,h.y+c*m)})}]}drawTextInCenter({box:e,text:t,level:s}){const r=d.dimensions(t,this.canvas.font,this.canvas),i=o.Eo.positionInCenter(o.Eo.construct(o.G.ZERO,r),e);return this.text({text:t,position:o.Eo.topLeft(i),level:s})}text({text:e,position:t,level:s="p",weight:r,shade:i,maxWidth:a,code:l}){this.canvas.font=d.fontString(this.theme,{level:s,weight:r,code:l}),i==null?this.canvas.fillStyle=this.theme.colors.text.hex:this.canvas.fillStyle=this.theme.colors.gray[`l${i}`].hex,this.canvas.textBaseline="top";let c;a!=null&&(c=this.canvas.scissor(o.Eo.construct(t,a,1e3))),this.canvas.fillText(e,t.x,t.y),c==null||c()}}const $s=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:o.Color.z});class Ut extends d.Leaf{constructor(){super(...arguments);u(this,"schema",$s)}async afterUpdate(){this.internal.renderCtx=L.use(this.ctx);const t=d.use(this.ctx);this.internal.draw=new Xt(this.internal.renderCtx.upper2d,t),G.requestRender(this.ctx,it)}async afterDelete(){G.requestRender(this.ctx,it)}updatePositions({decimalToDataScale:t,plot:s,container:r}){if(this.state.dragging&&this.state.pixelPosition!=null){const a=t.pos((this.state.pixelPosition-o.Eo.top(s)+o.Eo.top(r))/o.Eo.height(s));return this.setState(l=>({...l,position:a})),this.state.pixelPosition}if(this.state.position==null){const a=t.pos(.5);this.setState(l=>({...l,position:a}))}const i=t.reverse().pos(this.state.position)*o.Eo.height(s)+o.Eo.top(s)-o.Eo.top(r);return isNaN(i)||this.setState(a=>({...a,pixelPosition:i})),i}async render(t){if(this.deleted)return;const{renderCtx:s}=this.internal,{location:r,plot:i}=t,a=o.K.direction(r),{upper2d:l}=s,c=this.internal.draw;let h=this.updatePositions(t);h+=o.Eo.top(t.container),c.rule({stroke:this.state.color,lineWidth:this.state.lineWidth,lineDash:this.state.lineDash,direction:a,region:i,position:h}),l.fillStyle=this.state.color.hex,l.beginPath(),r==="left"?(l.moveTo(o.Eo.left(i),h),l.lineTo(o.Eo.left(i)-5,h-5),l.lineTo(o.Eo.left(i)-5,h+5)):r==="right"&&(l.moveTo(o.Eo.right(i),h),l.lineTo(o.Eo.right(i)+5,h-5),l.lineTo(o.Eo.right(i)+5,h+5)),l.closePath(),l.fill()}}u(Ut,"TYPE","Rule");const Hi={[Ut.TYPE]:Ut},hu=Object.freeze(Object.defineProperty({__proto__:null,REGISTRY:Hi,Rule:Ut,ruleStateZ:$s},Symbol.toStringTag,{value:"Module"})),du=$e.extend({location:o.K.x.optional().default("left")}),Er=2,fu=n=>o.Eo.signedWidth(n)<Er||o.Eo.signedHeight(n)<Er;class Te extends Fi{constructor(){super(...arguments);u(this,"schema",$e)}async xBounds(){return o.G$1.max(await Promise.all(this.lines.map(async t=>await t.xBounds())))}async render(t){if(this.deleted)return;const[s,r]=await this.dataToDecimalScale(t.hold,this.dataBounds.bind(this),t.viewport),i=s.invert().reverse();if(this.renderAxis(t,i),await this.renderLines(t,s),await this.renderRules(t,i),r!=null)throw r}async renderLines({xDataToDecimalScale:t,plot:s,canvases:r,exposure:i},a){if(!r.includes("gl")||fu(s))return;const l={region:s,dataToDecimalScale:new o.b.XY(t,a),exposure:i};await Promise.all(this.lines.map(async c=>await c.render(l)))}async renderRules({container:t,plot:s,canvases:r},i){if(!r.includes("upper2d"))return;const{location:a}=this.state,{render:l}=this.internal,c=o.Eo.construct(o.Eo.left(t),o.Eo.top(s),o.Eo.width(t),o.Eo.height(s)),h=l.scissor(c,o.G.ZERO,["upper2d"]),f={container:t,plot:s,decimalToDataScale:i,location:a};await Promise.all(this.rules.map(async g=>await g.render(f))),h()}async findByXValue({xDataToDecimalScale:t,plot:s,viewport:r,hold:i,exposure:a},l){const[c,h]=await this.dataToDecimalScale(i,this.dataBounds.bind(this),r);if(h!=null)throw h;const f=new o.b.XY(t,c),g={region:s,dataToDecimalScale:f,exposure:a};return(await Promise.all(this.lines.map(async m=>await m.findByXValue(g,l)))).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(ve.TYPE)}get rules(){return this.childrenOfType(Ut.TYPE)}}u(Te,"TYPE","YAxis");const Wi=p.z.object({start:d.m.z,end:d.m.z});class mn extends d.Leaf{constructor(){super(...arguments);u(this,"schema",Wi)}async afterUpdate(){this.internal.render=L.use(this.ctx),this.internal.draw=new Xt(this.internal.render.upper2d,d.use(this.ctx))}async render(){}}u(mn,"TYPE","range-annotation");const pu=p.z.object({region:o.Eo.box,clearOverScan:o.G.crudeZ.optional().default(0),visible:p.z.boolean().optional().default(!0)}),jn=["upper2d","lower2d"],Pt=class Pt extends d.Composite{constructor(){super(...arguments);u(this,"schema",Pt.stateZ)}async afterUpdate(){const{internal:t}=this;t.renderCtx=L.use(this.ctx),G.control(this.ctx,()=>this.requestRender("low")),this.requestRender("high")}async afterDelete(){this.requestRender("high")}async render(){const t=o.Eo.copy(this.state.region);if(!this.state.visible)return async()=>this.internal.renderCtx.erase(this.state.region,this.state.clearOverScan,...jn);const{renderCtx:s}=this.internal,r=o.b.XY.translate(o.Eo.topLeft(this.state.region)),i=s.scissor(this.state.region,o.G.construct(this.state.clearOverScan),jn);try{for(const a of this.children)await a.render({viewportScale:r})}catch(a){console.error(a)}finally{i()}return async()=>{this.internal.renderCtx.erase(t,this.state.clearOverScan)}}requestRender(t){const{renderCtx:s}=this.internal;s.loop.set({key:`${Pt.TYPE}-${this.key}`,render:this.render.bind(this),priority:t,canvases:jn})}};u(Pt,"TYPE","Table"),u(Pt,"stateZ",pu);let Se=Pt;const gu={[Se.TYPE]:Se},Xi=p.z.object({triggered:p.z.boolean(),status:d.specZ$1,sink:zn.optional().default(kn),source:hs.optional().default(ls)});class yn extends d.Leaf{constructor(){super(...arguments);u(this,"schema",Xi)}async afterUpdate(){var r,i,a;const{sink:t,source:s}=this.state;this.internal.source=await j(this.ctx,s,this.internal.source),this.internal.sink=await De(this.ctx,t,this.internal.sink),this.state.triggered&&!this.prevState.triggered&&this.internal.sink.set(((r=this.state.status.data)==null?void 0:r.authority)!==d.Np.Absolute.valueOf()).catch(console.error),await this.updateEnabledState(),(a=(i=this.internal).stopListening)==null||a.call(i),this.internal.stopListening=this.internal.source.onChange(()=>{this.updateEnabledState()})}async updateEnabledState(){const t=await this.internal.source.value();t.time.equals(this.state.status.time)||this.setState(s=>({...s,status:t,triggered:!1}))}async afterDelete(){this.asyncAfterDelete().catch(console.error)}async asyncAfterDelete(){var t,s,r,i;this.internal.stopListening(),await((s=(t=this.internal.source).cleanup)==null?void 0:s.call(t)),await((i=(r=this.internal.sink).cleanup)==null?void 0:i.call(r))}render(){}}u(yn,"TYPE","Chip");const Vi=p.z.object({}),Cr="control-state-provider",Ki=d.Gg.stateZ.extend({subjectColor:o.Color.z});class Ft extends d.Composite{constructor(){super(...arguments);u(this,"schema",Vi);u(this,"colors",new Map);u(this,"tracker");u(this,"disconnectTrackerChange");u(this,"obs",new rs.Observer)}static use(t){return t.get(Cr)}async afterUpdate(){const{internal:t}=this;t.instrumentation=Ae(this.ctx,"control-state");const s=d.use(this.ctx);t.palette=s.colors.visualization.palettes.default,t.defaultColor=s.colors.gray.l6;const r=ze(this.ctx);t.client!=null&&r===t.client||(t.client=r,this.ctx.set(Cr,this),await this.maybeCloseTracker(),t.client!=null&&(this.internal.instrumentation.L.debug("starting state tracker"),await this.openTracker(t.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)?d.n(t).map(s=>this.getOne(s)).filter(s=>s!=null):this.getOne(t)}getOne(t){if(this.tracker==null)return;const s=this.tracker.states.get(t);if(s!=null)return{...s,subjectColor:this.colors.get(s.subject.key)??this.internal.defaultColor}}async openTracker(t){var i;const{internal:s}=this,{instrumentation:r}=s;try{this.tracker=await t.control.openStateTracker()}catch{r.L.error("failed to open state tracker");return}(i=this.disconnectTrackerChange)==null||i.call(this),this.disconnectTrackerChange=this.tracker.onChange(a=>{if(r.L.debug("transfer",{transfers:a.map(l=>d.Gg.transferString(l))}),this.tracker==null)throw new d.Ce("tracker is null inside it's own onChange callback!");this.updateColors(this.tracker),this.obs.notify(a)})}updateColors(t){const s=t.subjects(),r=s.map(l=>l.key),i=Array.from(this.colors.values());this.colors.forEach((l,c)=>!r.includes(c)&&this.colors.delete(c));const{palette:a}=this.internal;s.forEach(l=>{if(this.colors.has(l.key))return;const c=a.find(h=>!i.includes(h))??a[0];this.colors.set(l.key,c),i.push(c)})}}u(Ft,"TYPE","StateProvider");const Qi=["acquired","released","overridden","failed"],Ji=p.z.enum(Qi),ta=p.z.object({name:p.z.string(),authority:p.z.number().default(0),acquireTrigger:p.z.number(),status:Ji.optional(),needsControlOf:d.Mg.keyZ.array().optional().default([])});class wn extends d.Composite{constructor(){super(...arguments);u(this,"schema",ta);u(this,"registry",new Map);u(this,"writer")}async afterUpdate(){this.internal.instrumentation=Ae(this.ctx),(this.internal.prevTrigger==null||Math.abs(this.state.acquireTrigger-this.internal.prevTrigger)>1)&&(this.internal.prevTrigger=this.state.acquireTrigger);const t=ze(this.ctx),s=Ft.use(this.ctx);this.internal.client=t,this.internal.client==null&&await this.release(),this.internal.stateProv=s,Yr(this.ctx,this),this.internal.addStatus=d.useAggregate(this.ctx),this.state.acquireTrigger>this.internal.prevTrigger?(this.acquire(),this.internal.prevTrigger=this.state.acquireTrigger):this.state.acquireTrigger<this.internal.prevTrigger&&(this.release(),this.internal.prevTrigger=this.state.acquireTrigger)}async afterDelete(){await this.release()}async updateNeedsControlOf(){const{client:t}=this.internal;if(t==null)return;const s=new Set([]);for(const i of this.registry.keys())(await i.needsControlOf(t)).forEach(l=>l!==0&&s.add(l));const r=Array.from(s);d.F.unorderedPrimitiveArrays(this.state.needsControlOf,r)!==d.F.EQUAL&&this.setState(i=>({...i,needsControlOf:r}))}async acquire(){const{client:t,addStatus:s}=this.internal;if(t==null)return s({message:`Cannot acquire control on ${this.state.name} because no cluster has been connected.`,variant:"warning"});try{await this.updateNeedsControlOf();const r=this.state.needsControlOf;if(r.length===0)return s({message:`Cannot acquire control on ${this.state.name} because there are no channels to control.`,variant:"warning"});this.writer=await t.openWriter({start:d.I.now(),channels:r,controlSubject:{key:this.key,name:this.state.name},authorities:this.state.authority}),this.setState(i=>({...i,status:"acquired"}))}catch(r){this.setState(i=>({...i,status:"failed"})),s({message:`${this.state.name} failed to acquire control: ${r.message}`,variant:"error"})}}async release(){var t;try{await((t=this.writer)==null?void 0:t.close()),this.setState(s=>({...s,status:"released"}))}catch(s){this.internal.addStatus({message:`${this.state.name} failed to release control: ${s.message}`,variant:"error"})}finally{this.writer=void 0}}async set(t){var s;this.writer==null&&await this.acquire(),await((s=this.writer)==null?void 0:s.write(t))}async setAuthority(t,s){var r;this.writer==null&&await this.acquire(),await((r=this.writer)==null?void 0:r.setAuthority(Object.fromEntries(t.map(i=>[i,s]))))}async releaseAuthority(t){var s;this.writer==null&&await this.acquire(),await((s=this.writer)==null?void 0:s.setAuthority(Object.fromEntries(t.map(r=>[r,this.state.authority]))))}deleteTelem(t){this.registry.delete(t),this.updateNeedsControlOf()}create(t){const r=(()=>{switch(t.type){case Ee.TYPE:{const i=new Ee(this,t.props);return this.registry.set(i,null),i}case Re.TYPE:{const i=new Re(this,this.internal.stateProv,t.props);return this.registry.set(i,null),i}case Ce.TYPE:return new Ce(this,t.props);default:return null}})();return r!=null&&this.updateNeedsControlOf(),r}}u(wn,"TYPE","Controller");const ea=p.z.object({channel:p.z.number()});class Ee extends Mn{constructor(t,s){super(s);u(this,"controller");u(this,"schema",ea);this.controller=t}invalidate(){}async cleanup(){this.controller.deleteTelem(this)}async needsControlOf(t){if(this.props.channel===0)return[];const s=await t.channels.retrieve(this.props.channel),r=[s.key];return s.index!==0&&r.push(s.index),r}async set(t){const{client:s}=this.controller.internal;if(s==null)return;const r=await s.channels.retrieve(this.props.channel),i={[r.key]:t};if(r.index!==0){const a=await s.channels.retrieve(r.index);i[a.key]=d.I.now()}await this.controller.set(i)}}u(Ee,"TYPE","controlled-numeric-telem-sink");const mu=n=>({type:Ee.TYPE,props:n,variant:"sink",valueType:"number"}),na=p.z.object({authority:p.z.number().default(d.Gg.Authority.Absolute.valueOf()),channel:p.z.number()});class Ce extends Mn{constructor(t,s){super(s);u(this,"controller");u(this,"schema",na);this.controller=t}async cleanup(){this.controller.deleteTelem(this)}async needsControlOf(t){const s=await t.channels.retrieve(this.props.channel),r=[s.key];return s.index!==0&&r.push(s.index),r}async set(t){const{controller:s}=this,{client:r}=s.internal;if(r==null)return;const i=await r.channels.retrieve(this.props.channel),a=[i.key];i.index!==0&&a.push(i.index),t?await this.controller.setAuthority(a,this.props.authority):await this.controller.releaseAuthority(a)}}u(Ce,"TYPE","acquire-channel-control");const yu=n=>({type:Ce.TYPE,props:n,variant:"sink",valueType:"boolean"}),sa=p.z.object({channel:p.z.number()});class Re extends F{constructor(t,s,r){super(r);u(this,"prov");u(this,"valid",!1);u(this,"stopListening");u(this,"controller");u(this,"schema",sa);this.prov=s,this.controller=t}async needsControlOf(){return[]}maybeRevalidate(){var r;if(this.valid)return;const{channel:t}=this.props;(r=this.stopListening)==null||r.call(this);const s=d.W.filterTransfersByChannelKey(t);this.stopListening=this.prov.onChange(i=>{var a;s(i).length!==0&&((a=this.notify)==null||a.call(this))}),this.valid=!0}async value(){this.maybeRevalidate();const t=d.I.now();if(this.props.channel===0)return{key:this.controller.key,variant:"disabled",message:"No Channel",time:t,data:{valid:!1,authority:0}};const s=this.prov.get(this.props.channel);return s==null?{key:this.controller.key,variant:"disabled",message:"Uncontrolled",time:t,data:{valid:!0,color:void 0,authority:0}}:{key:s.subject.key,variant:s.subject.key===this.controller.key?"success":"error",message:`Controlled by ${s.subject.name}`,time:t,data:{valid:!0,color:s.subjectColor,authority:s.authority}}}async cleanup(){var t;this.controller.deleteTelem(this),(t=this.stopListening)==null||t.call(this)}}u(Re,"TYPE","controlled-status-source");const wu=n=>({type:Re.TYPE,props:n,variant:"source",valueType:"status"}),ra=p.z.object({statusSource:hs.optional().default(ls),colorSource:us.optional().default(On),status:d.specZ$1,color:o.Color.z.optional()});class xn extends d.Leaf{constructor(){super(...arguments);u(this,"schema",ra);u(this,"stopListeningStatus");u(this,"stopListeningColor")}async afterUpdate(){var s,r;const{internal:t}=this;t.statusSource=await j(this.ctx,this.state.statusSource,t.statusSource),t.colorSource=await j(this.ctx,this.state.colorSource,t.colorSource),await this.updateState(),(s=this.stopListeningStatus)==null||s.call(this),this.stopListeningStatus=t.statusSource.onChange(()=>{this.updateState()}),(r=this.stopListeningColor)==null||r.call(this),this.stopListeningColor=t.colorSource.onChange(()=>{this.updateState()})}async afterDelete(){this.internalAfterDelete().catch(console.error)}async internalAfterDelete(){var t,s,r,i;await((s=(t=this.internal.statusSource).cleanup)==null?void 0:s.call(t)),await((i=(r=this.internal.colorSource).cleanup)==null?void 0:i.call(r))}async render(){}async updateState(){const t=await this.internal.colorSource.value(),s=await this.internal.statusSource.value();t.equals(this.state.color)&&s.message===this.state.status.message||this.setState(r=>({...r,color:t,status:s}))}}u(xn,"TYPE","Indicator");const ia=p.z.object({needsControlOf:d.Mg.keyZ.array(),states:Ki.array()});class bn extends d.Leaf{constructor(){super(...arguments);u(this,"schema",ia)}async afterUpdate(){var a;const{internal:t}=this;t.stateProv=Ft.use(this.ctx);const s=this.state.needsControlOf;(a=t.disconnectStateProv)==null||a.call(t);const r=d.W.filterTransfersByChannelKey(...s),i=t.stateProv.get(s);this.setState(l=>({...l,states:i})),t.disconnectStateProv=t.stateProv.onChange(l=>{if(r(l).length===0)return;const c=t.stateProv.get(s);this.setState(h=>({...h,states:c}))})}async afterDelete(){var s;const{internal:t}=this;(s=t.disconnectStateProv)==null||s.call(t)}async render(){}}u(bn,"TYPE","Legend");const xu={[wn.TYPE]:wn,[Ft.TYPE]:Ft,[xn.TYPE]:xn,[yn.TYPE]:yn,[bn.TYPE]:bn},aa=p.z.object({trigger:p.z.number(),sink:zn.optional().default(kn)});class vn extends d.Leaf{constructor(){super(...arguments);u(this,"schema",aa)}async afterUpdate(){var r;const{sink:t}=this.state;(r=this.internal).prevTrigger??(r.prevTrigger=this.state.trigger),this.internal.sink=await De(this.ctx,t,this.internal.sink);const s=this.internal.prevTrigger;this.internal.prevTrigger=this.state.trigger,!(this.state.trigger<=s)&&this.internal.sink.set(!0).catch(console.error)}render(){}async afterDelete(){await this.internalAfterDelete()}async internalAfterDelete(){var s,r;const{internal:t}=this;await((r=(s=t.sink).cleanup)==null?void 0:r.call(s))}}u(vn,"TYPE","Button");const bu={[vn.TYPE]:vn},Gs=p.z.object({dpr:p.z.number(),region:o.Eo.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:d.w.osZ});class Pe extends d.Composite{constructor(){super(...arguments);u(this,"schema",Gs);u(this,"renderContextSet",!1)}async afterUpdate(){let t=L.useOptional(this.ctx);if(t==null){if(this.renderContextSet)throw new d.Ce("[vis.worker.Canvas] - expected render context to be set");if(!this.state.bootstrap)return;const{glCanvas:s,lower2dCanvas:r,upper2dCanvas:i,os:a}=this.state;if(s==null||r==null||i==null)throw new d.Ce("[vis.worker.Canvas] - expected render context bootstrap to include all canvases");t=L.create(this.ctx,s,r,i,a),gn.create(this.ctx),this.setState(l=>({...l,bootstrap:!1,bootstrapped:!0,glCanvas:void 0,lower2dCanvas:void 0,upper2dCanvas:void 0}))}else t.update(this.ctx);t.resize(this.state.region,this.state.dpr)}}u(Pe,"TYPE","Canvas");const oa={[Pe.TYPE]:Pe},vu=Object.freeze(Object.defineProperty({__proto__:null,Canvas:Pe,REGISTRY:oa,canvasStateZ:Gs},Symbol.toStringTag,{value:"Module"})),Zs=p.z.object({position:o.G.xy,zoom:p.z.number(),region:o.Eo.box,clearOverScan:o.G.crudeZ.optional().default(10),visible:p.z.boolean().optional().default(!0)}),Ue=["upper2d","lower2d"],kt=class kt extends d.Composite{constructor(){super(...arguments);u(this,"schema",kt.stateZ)}async afterUpdate(){this.internal.renderCtx=L.use(this.ctx),this.internal.addStatus=d.useAggregate(this.ctx),G.control(this.ctx,()=>this.requestRender("low")),this.requestRender("high")}async afterDelete(){this.requestRender("high")}async render(){if(this.deleted)return;const{renderCtx:t,addStatus:s}=this.internal,{zoom:r,position:i}=this.state,a=o.Eo.construct(this.state.region);if(!this.state.visible)return async()=>t.erase(a,this.state.clearOverScan,...Ue);const l=t.scissor(a,o.G.ZERO,Ue),c=o.b.XY.magnify(o.G.construct(r)).translate(o.Eo.topLeft(a)).translate(i);try{await Promise.all(this.children.map(async f=>await f.render({viewportScale:c})))}catch(f){s({variant:"error",message:f.message})}finally{l()}const h=o.Eo.copy(this.state.region);return async()=>{this.internal.renderCtx.erase(h,this.state.clearOverScan,...Ue)}}requestRender(t){const{renderCtx:s}=this.internal;s.loop.set({key:`${kt.TYPE}-${this.key}`,render:this.render.bind(this),priority:t,canvases:Ue})}};u(kt,"TYPE","Diagram"),u(kt,"stateZ",Zs);let qt=kt;const la={[qt.TYPE]:qt},Tu=Object.freeze(Object.defineProperty({__proto__:null,Diagram:qt,REGISTRY:la,diagramStateZ:Zs},Symbol.toStringTag,{value:"Module"})),ca=p.z.object({region:o.Eo.box,enabled:p.z.boolean().optional().default(!1)});class Tn extends d.Leaf{constructor(){super(...arguments);u(this,"schema",ca);u(this,"eraser",new Ni)}async afterUpdate(){this.deleted||(this.internal.render=L.use(this.ctx),await this.internal.render.loop.set({key:`${this.type}-${this.key}`,render:this.render.bind(this),priority:"high",canvases:["gl","lower2d","upper2d"]}))}async afterDelete(){await this.internal.render.loop.set({key:`${this.type}-${this.key}`,render:this.render.bind(this),priority:"high",canvases:["gl","lower2d","upper2d"]})}async render(){this.deleted||!this.state.enabled||this.internal.render.erase(this.state.region,o.G.construct(0),"gl","lower2d","upper2d")}}u(Tn,"TYPE","eraser");const Su={[Tn.TYPE]:Tn},ua=p.z.object({enabled:p.z.boolean(),source:cs.optional().default(os)});class Sn extends d.Leaf{constructor(){super(...arguments);u(this,"schema",ua)}async afterUpdate(){var r;this.internal.addStatus=d.useOptionalAggregate(this.ctx);const{source:t}=this.state,{internal:s}=this;this.internal.source=await j(this.ctx,t,this.internal.source),await this.updateEnabledState(),(r=s.stopListening)==null||r.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(s=>({...s,enabled:t}))}async afterDelete(){await this.internalAfterDelete()}async internalAfterDelete(){var t,s;this.internal.stopListening(),await((s=(t=this.internal.source).cleanup)==null?void 0:s.call(t))}async render(){}}u(Sn,"TYPE","Light");const Eu={[Sn.TYPE]:Sn},Is=p.z.object({position:o.G.xy.or(p.z.null()),textColor:o.Color.z.optional().default(o.ZERO),backgroundColor:o.Color.z.optional().default(o.ZERO),borderColor:o.Color.z.optional().default(o.ZERO),ruleColor:o.Color.z.optional().default(o.ZERO),ruleStrokeWidth:p.z.number().optional().default(1),ruleStrokeDash:p.z.number().default(0)});class jt extends d.Leaf{constructor(){super(...arguments);u(this,"schema",Is)}async afterUpdate(){const t=d.use(this.ctx);this.state.textColor.isZero&&(this.state.textColor=t.colors.text),this.state.backgroundColor.isZero&&(this.state.backgroundColor=t.colors.gray.l1),this.state.borderColor.isZero&&(this.state.borderColor=t.colors.border),this.state.ruleColor.isZero&&(this.state.ruleColor=t.colors.gray.l5),this.internal.dotColor=t.colors.text,this.internal.dotColorContrast=t.colors.textInverted,this.internal.render=L.use(this.ctx),this.internal.draw=new Xt(this.internal.render.upper2d,t),G.requestRender(this.ctx,it)}async afterDelete(){G.requestRender(this.ctx,it)}async render(t){if(this.deleted||this.state.position==null)return;const{region:s}=t,r=o.b.XY.scale(o.Eo.DECIMAL).scale(s),i=o.b.XY.scale(s).scale(o.Eo.DECIMAL),a=await t.findByXDecimal(i.x.pos(this.state.position.x)),l=a.filter(b=>o.G.isFinite(b.value)),{draw:c}=this.internal,h=l.reduce((b,v)=>b+v.position.x,0)/l.length,f=new d.m(l.reduce((b,v)=>b+v.value.x,0)/l.length),g=r.x.pos(h);if(!o.G$1.contains(o.Eo.xBounds(s),g))return;c.rule({stroke:this.state.ruleColor,lineWidth:this.state.ruleStrokeWidth,lineDash:this.state.ruleStrokeDash,direction:"y",region:s,position:g}),l.forEach(b=>{const v=r.pos(b.position);c.circle({fill:b.color.setAlpha(.5),radius:8,position:v}),c.circle({fill:b.color.setAlpha(.8),radius:5,position:v}),c.circle({fill:b.color.pickByContrast(this.internal.dotColor,this.internal.dotColorContrast),radius:2,position:v})});const m=a.map(b=>`${b.label??""}: ${b.value.y.toFixed(2)}`);m.unshift(`Time: ${f.fString("preciseDate","local")}`);const x=i.pos(this.state.position);c.textContainer({text:m,backgroundColor:this.state.backgroundColor,borderColor:this.state.borderColor,position:this.state.position,direction:"y",level:"small",spacing:.5,offset:{x:12,y:12},root:{x:x.x>.8?"right":"left",y:x.y>.8?"top":"bottom"}})}}u(jt,"TYPE","tooltip");const ha={[jt.TYPE]:jt},Cu=Object.freeze(Object.defineProperty({__proto__:null,REGISTRY:ha,Tooltip:jt,tooltipStateZ:Is},Symbol.toStringTag,{value:"Module"})),da=p.z.object({region:o.Eo.box,wheelPos:p.z.number(),scrolling:p.z.boolean(),empty:p.z.boolean(),visible:p.z.boolean(),telem:nn.optional().default(Ar),font:d.levelZ.optional().default("p"),color:o.Color.z.optional().default(o.ZERO),overshoot:o.G.xy.optional().default({x:0,y:0})}),Ru=.98,Jt="lower2d",Pu={offset:0n,offsetRef:0n,scrollRef:0},oe=class oe extends d.Leaf{constructor(){super(...arguments);u(this,"schema",oe.z);u(this,"values",new d.Ct([]));u(this,"scrollState",Pu)}async afterUpdate(){var c;const{internal:t}=this;t.render=L.use(this.ctx),t.theme=d.use(this.ctx),this.state.color.isZero?this.internal.textColor=t.theme.colors.gray.l8:t.textColor=this.state.color,t.telem=await j(this.ctx,this.state.telem,t.telem);const{scrolling:s,wheelPos:r}=this.state;if(this.state.scrolling&&!this.prevState.scrolling){const h=this.values.alignmentBounds.upper-1n;this.scrollState={offset:h,offsetRef:h,scrollRef:this.state.wheelPos}}else if(s){const{scrollState:h,values:f}=this,g=Math.ceil((r-this.scrollState.scrollRef)/this.lineHeight);h.offset=this.values.traverseAlignment(h.offsetRef,-BigInt(g)),h.offset<f.alignmentBounds.lower+BigInt(this.visibleLineCount)&&(h.offset=f.alignmentBounds.lower,this.setState(m=>({...m,wheelPos:this.prevState.wheelPos}))),h.offset>=f.alignmentBounds.upper&&this.setState(m=>({...m,scrolling:!1}))}const[a,l]=await this.internal.telem.value();this.values=new d.Ct(l),this.checkEmpty(),(c=t.stopListeningTelem)==null||c.call(t),t.stopListeningTelem=t.telem.onChange(()=>this.internal.telem.value().then(([h,f])=>{this.checkEmpty(),this.values=new d.Ct(f),this.requestRender()})),this.requestRender()}checkEmpty(){const t=this.values.length===0;t!==this.state.empty&&this.setState(s=>({...s,empty:t}))}async afterDelete(){var r;const{telem:t,render:s}=this.internal;await((r=t.cleanup)==null?void 0:r.call(t)),s.erase(o.Eo.construct(this.state.region),o.G.ZERO,Jt)}requestRender(){const{render:t}=this.internal;t.loop.set({key:`${this.type}-${this.key}`,render:async()=>await this.render(),priority:"high",canvases:[Jt]})}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((o.Eo.height(this.state.region)-12)/this.lineHeight),this.values.length)}async render(){const{render:t}=this.internal,s=this.state.region;if(o.Eo.areaIsZero(s))return;if(!this.state.visible)return async()=>t.erase(s,o.G.ZERO,Jt);let r;if(!this.state.scrolling)r=this.values.subIterator(this.values.length-this.visibleLineCount,this.values.length);else{const f=this.values.traverseAlignment(this.scrollState.offset,-BigInt(this.visibleLineCount));r=this.values.subAlignmentSpanIterator(f,this.visibleLineCount)}const i=this.state.region,a=t[Jt],l=new Xt(a,this.internal.theme),c=t.scissor(i,o.G.ZERO,[Jt]);this.renderElements(l,r),this.renderScrollbar(l),c();const h=o.Eo.copy(this.state.region);return async({canvases:f})=>t.erase(h,this.state.overshoot,...f)}renderScrollbar(t){const s=this.state.region,r=o.Eo.height(s)/this.totalHeight*o.Eo.height(s);if(r>=o.Eo.height(s)*Ru)return;let i=o.Eo.bottom(s)-r;this.state.scrolling&&(i-=Number(this.values.distance(this.values.alignmentBounds.upper,this.scrollState.offset))/this.values.length*o.Eo.height(s)),i<0&&(i=o.Eo.top(s)),t.container({region:o.Eo.construct({x:o.Eo.right(s)-6,y:i},{width:6,height:r}),bordered:!1,backgroundColor:a=>a.colors.gray.l4})}renderElements(t,s){const r=this.state.region;let i=0;for(const a of s){const l=this.values.dataType.equals(d.g.JSON)?JSON.stringify(a):a.toString();t.text({text:l,level:this.state.font,shade:9,position:o.G.translate(o.Eo.topLeft(r),{x:6,y:i*this.lineHeight+6}),code:!0}),i++}}};u(oe,"TYPE","log"),u(oe,"z",da);let ke=oe;const ku={[ke.TYPE]:ke},Ns=p.z.object({one:o.G.xy.nullable(),two:o.G.xy.nullable(),hover:o.G.xy.nullable(),color:p.z.union([o.Color.z,p.z.object({verticalLine:o.Color.z.optional().default(o.ZERO),horizontalLine:o.Color.z.optional().default(o.ZERO),obliqueLine:o.Color.z.optional().default(o.ZERO)})]).optional().default(o.ZERO),strokeWidth:p.z.number().optional().default(1),strokeDash:p.z.number().optional().default(2)});class Ht extends d.Leaf{constructor(){super(...arguments);u(this,"schema",Ns)}async afterUpdate(){const t=L.use(this.ctx);this.internal.theme=d.use(this.ctx),this.internal.render=t,this.internal.draw=new Xt(t.upper2d,this.internal.theme),G.requestRender(this.ctx,it)}async afterDelete(){G.requestRender(this.ctx,J)}get verticalLineColor(){return this.state.color instanceof o.Color?this.state.color.isZero?this.internal.theme.colors.gray.l6:this.state.color:this.state.color.verticalLine.isZero?this.internal.theme.colors.gray.l6:this.state.color.verticalLine}get horizontalLineColor(){return this.state.color instanceof o.Color?this.state.color.isZero?this.internal.theme.colors.gray.l6:this.state.color:this.state.color.horizontalLine.isZero?this.internal.theme.colors.gray.l6:this.state.color.horizontalLine}get obliqueLineColor(){return this.state.color instanceof o.Color?this.state.color.isZero?this.internal.theme.colors.gray.l6:this.state.color:this.state.color.obliqueLine.isZero?this.internal.theme.colors.gray.l6:this.state.color.obliqueLine}async find(t){const{one:s,two:r}=this.state;if(s==null||r==null)return null;const{one:i,two:a}=this.prevState,{dataOne:l,dataTwo:c}=this.internal;if(i!=null&&o.G.equals(s,i)&&a!=null&&o.G.equals(r,a)&&l!=null&&c!=null){const[E,O]=[await t.findByXValue(l.x),await t.findByXValue(c.x)];return E.length===0||O.length===0?null:[E.sort((D,R)=>o.G.distance(l,D.value)-o.G.distance(l,R.value))[0],O.sort((D,R)=>o.G.distance(c,D.value)-o.G.distance(c,R.value))[0]]}const h=o.b.XY.scale(t.region).scale(o.Eo.DECIMAL),[f,g]=[h.pos(s),h.pos(r)],[m,x]=[await t.findByXDecimal(f.x),await t.findByXDecimal(g.x)];if(m.length===0||x.length===0)return null;const[b,v]=[m.sort((E,O)=>o.G.distance(f,E.position)-o.G.distance(f,O.position))[0],x.sort((E,O)=>o.G.distance(g,E.position)-o.G.distance(g,O.position))[0]];return this.internal.dataOne=b.value,this.internal.dataTwo=v.value,[b,v]}async renderHover(t){if(this.state.hover==null)return;const s=this.state.hover,r=o.b.XY.scale(t.region).scale(o.Eo.DECIMAL),i=r.pos(s),a=await t.findByXDecimal(r.pos(s).x);if(a.length===0)return;const l=a.sort((h,f)=>o.G.distance(i,h.position)-o.G.distance(i,f.position))[0],{draw:c}=this.internal;c.circle({fill:l.color.setAlpha(.5),radius:9,position:r.reverse().pos(l.position)})}async render(t){if(this.deleted)return;await this.renderHover(t);const s=await this.find(t);if(s==null)return;const[r,i]=s,{draw:a}=this.internal,{strokeDash:l,strokeWidth:c}=this.state,h=o.b.XY.scale(o.Eo.DECIMAL).scale(t.region),f=h.pos(r.position),g=h.pos(i.position),m=new d.y(Math.abs(r.value.x-i.value.x)),x=Math.abs(r.value.y-i.value.y),b=x/m.seconds;a.line({start:o.G.construct(f.x,f.y),end:o.G.construct(f.x,g.y),stroke:this.verticalLineColor,lineDash:l,lineWidth:c}),a.textContainer({text:[`${x.toFixed(2)} ${r.units??""}`],direction:"x",position:o.G.construct(f.x,(f.y+g.y)/2),level:"small"}),a.line({start:o.G.construct(f.x,g.y),end:o.G.construct(g.x,g.y),stroke:this.horizontalLineColor,lineDash:l,lineWidth:c}),a.textContainer({text:[m.truncate(d.y.MILLISECOND).toString()],direction:"x",position:o.G.construct((f.x+g.x)/2,g.y),level:"small"}),a.line({start:o.G.construct(f.x,f.y),end:o.G.construct(g.x,g.y),stroke:this.obliqueLineColor,lineDash:l,lineWidth:c}),a.textContainer({text:[`${b.toFixed(2)} ${r.units??""} / S`],direction:"x",position:o.G.construct((f.x+g.x)/2,(f.y+g.y)/2),level:"small"}),a.circle({fill:r.color.setAlpha(.5),radius:8,position:f}),a.circle({fill:r.color.setAlpha(.8),radius:5,position:f}),a.circle({fill:new o.Color("#ffffff"),radius:2,position:f}),a.circle({fill:i.color.setAlpha(.5),radius:8,position:g}),a.circle({fill:i.color.setAlpha(.8),radius:5,position:g}),a.circle({fill:new o.Color("#ffffff"),radius:2,position:g})}}u(Ht,"TYPE","measure");const fa={[Ht.TYPE]:Ht},Ou=Object.freeze(Object.defineProperty({__proto__:null,Measure:Ht,REGISTRY:fa,measureStateZ:Ns},Symbol.toStringTag,{value:"Module"})),pa=p.z.object({trigger:p.z.number(),command:p.z.number().optional(),value:p.z.number(),sink:Zr.optional().default(zr),source:Gr.optional().default(Dr)});class En extends d.Leaf{constructor(){super(...arguments);u(this,"schema",pa)}async afterUpdate(){var c;this.internal.addStatus=d.useOptionalAggregate(this.ctx);const{sink:t,source:s,trigger:r,command:i}=this.state,{trigger:a}=this.prevState,{internal:l}=this;this.internal.source=await j(this.ctx,s,this.internal.source),l.sink=await De(this.ctx,t,l.sink),r!==a&&i!=null&&this.internal.sink.set(i),await this.updateValue(),(c=l.stopListening)==null||c.call(l),l.stopListening=l.source.onChange(()=>{this.updateValue().catch(this.reportError.bind(this))})}reportError(t){this.internal.addStatus({key:this.key,variant:"error",message:`Failed to update Setpoint: ${t.message}`})}async updateValue(){const t=await this.internal.source.value();t!==this.state.value&&this.setState(s=>({...s,value:t,triggered:!1}))}async afterDelete(){await this.internalAfterDelete()}async internalAfterDelete(){var t,s,r,i;this.internal.stopListening(),await((s=(t=this.internal.source).cleanup)==null?void 0:s.call(t)),await((i=(r=this.internal.sink).cleanup)==null?void 0:i.call(r))}async render(){}}u(En,"TYPE","Setpoint");const Yu={[En.TYPE]:En},ga=p.z.object({triggered:p.z.boolean(),enabled:p.z.boolean(),sink:zn.optional().default(kn),source:cs.optional().default(os)});class Cn extends d.Leaf{constructor(){super(...arguments);u(this,"schema",ga)}async afterUpdate(){var c;this.internal.addStatus=d.useOptionalAggregate(this.ctx);const{sink:t,source:s,triggered:r,enabled:i}=this.state,{triggered:a}=this.prevState,{internal:l}=this;this.internal.source=await j(this.ctx,s,this.internal.source),l.sink=await De(this.ctx,t,l.sink),r&&!a&&await l.sink.set(!i),await this.updateEnabledState(),(c=l.stopListening)==null||c.call(l),l.stopListening=l.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(s=>({...s,enabled:t,triggered:!1}))}async afterDelete(){await this.internalAfterDelete()}async internalAfterDelete(){var t,s,r,i;this.internal.stopListening(),await((s=(t=this.internal.source).cleanup)==null?void 0:s.call(t)),await((i=(r=this.internal.sink).cleanup)==null?void 0:i.call(r))}async render(){}}u(Cn,"TYPE","Toggle");const zu={[Cn.TYPE]:Cn},Du=p.z.object({box:o.Eo.box,telem:ds.optional().default(Mr),backgroundTelem:us.optional().default(On),level:d.levelZ.optional().default("p"),color:o.Color.z.optional().default(o.ZERO),precision:p.z.number().optional().default(2),minWidth:p.z.number().optional().default(60),width:p.z.number().optional(),notation:ti.optional().default("standard"),location:o.K.xy.optional().default({x:"left",y:"center"})}),Mu=["upper2d","lower2d"],le=class le extends d.Leaf{constructor(){super(...arguments);u(this,"schema",le.z)}async afterUpdate(){var s,r;const{internal:t}=this;t.render=L.use(this.ctx),t.theme=d.use(this.ctx),this.state.color.isZero?this.internal.textColor=t.theme.colors.gray.l8:t.textColor=this.state.color,t.telem=await j(this.ctx,this.state.telem,t.telem),(s=t.stopListening)==null||s.call(t),t.stopListening=this.internal.telem.onChange(()=>this.requestRender()),t.backgroundTelem=await j(this.ctx,this.state.backgroundTelem,t.backgroundTelem),(r=t.stopListeningBackground)==null||r.call(t),t.stopListeningBackground=this.internal.backgroundTelem.onChange(()=>this.requestRender()),this.internal.requestRender=G.useOptionalRequest(this.ctx),this.requestRender()}async afterDelete(){var i;const{requestRender:t,telem:s,render:r}=this.internal;await((i=s.cleanup)==null?void 0:i.call(s)),t==null?r.erase(o.Eo.construct(this.state.box),o.G.ZERO,...Mu):t(J)}requestRender(){const{requestRender:t}=this.internal;t!=null?t(J):this.render({})}get fontHeight(){const{theme:t}=this.internal;return t.typography[this.state.level].size*t.sizes.base}maybeUpdateWidth(t){const{theme:s}=this.internal,r=t+s.sizes.base+this.fontHeight;this.state.width==null||this.state.width+this.fontHeight*.5<r||this.state.minWidth>r&&this.state.width!==this.state.minWidth?this.setState(i=>({...i,width:Math.max(r,i.minWidth)})):this.state.width-this.fontHeight>r&&this.setState(i=>({...i,width:Math.max(r,i.minWidth)}))}async render({viewportScale:t=o.b.XY.IDENTITY}){const{render:s,telem:r,backgroundTelem:i}=this.internal,a=o.Eo.construct(this.state.box);if(o.Eo.areaIsZero(a))return;const{location:l}=this.state,c=s.lower2d.applyScale(t);let h=await r.value();const f=d.fontString(this.internal.theme,{level:this.state.level,code:!0});c.font=f;const g=this.fontHeight,m=h[0]=="-";m&&(h=h.slice(1));const{theme:x}=this.internal,b=d.dimensions(h,f,c).width+x.sizes.base;this.internal.requestRender==null&&s.erase(o.Eo.construct(this.prevState.box)),this.maybeUpdateWidth(b);const v={...o.G.ZERO};l.x==="left"&&(v.x=6+g*.75),l.x==="center"&&(v.x=o.Eo.width(a)/2-b/2),l.y==="center"&&(v.y=o.Eo.height(a)/2);const E=o.G.translate(o.Eo.topLeft(a),v),O=c.scissor(a,void 0);let D=!0;if(this.state.backgroundTelem.type!=On.type){const R=s.lower2d.applyScale(t),z=await i.value();D=z.isZero,z.isZero||(R.fillStyle=z.hex,R.rect(...o.G.couple(o.Eo.topLeft(a)),o.Eo.width(a),o.Eo.height(a)),R.fill(),c.fillStyle=z.pickByContrast(x.colors.gray.l0,x.colors.gray.l9).hex)}D&&(c.fillStyle=this.internal.textColor.hex),c.textBaseline="middle",m&&c.fillText("-",...o.G.couple(o.G.translateX(E,-g*.6))),c.fillText(h,...o.G.couple(E)),O()}};u(le,"TYPE","value"),u(le,"z",Du);let Wt=le;const ma={[Wt.TYPE]:Wt},Au=Object.freeze(Object.defineProperty({__proto__:null,REGISTRY:ma,Value:Wt},Symbol.toStringTag,{value:"Module"})),Lu=d.op.payloadZ.extend({viewport:o.G$1.bounds}),Rr=n=>o.Color.z.safeParse(n).success,ya=p.z.object({cursor:o.G.xy.or(p.z.null()),hovered:Lu.or(p.z.null()),count:p.z.number()});class Oe extends d.Leaf{constructor(){super(...arguments);u(this,"schema",ya);u(this,"fetchedInitial",d.E.ZERO)}async afterUpdate(){const{internal:t}=this;t.render=L.use(this.ctx),t.draw=new Xt(t.render.upper2d,d.use(this.ctx)),t.ranges??(t.ranges=new Map);const s=ze(this.ctx);s!=null&&(t.client=s,t.tracker==null&&(t.tracker=await t.client.ranges.openTracker(),t.tracker.onChange(async r=>{r.forEach(async i=>{i.variant==="delete"?t.ranges.delete(i.key):Rr(i.value.color)&&t.ranges.set(i.key,i.value)}),G.requestRender(this.ctx,it),this.setState(i=>({...i,count:t.ranges.size}))}),G.requestRender(this.ctx,it)))}async fetchInitial(t){const{internal:s}=this;if(s.client==null||this.fetchedInitial.roughlyEquals(t,d.y.minutes(1)))return;this.fetchedInitial=t,(await s.client.ranges.retrieve(t)).forEach(i=>{Rr(i.color)&&s.ranges.set(i.key,i)}),this.setState(i=>({...i,count:s.ranges.size}))}async render(t){const{dataToDecimalScale:s,region:r,viewport:i,timeRange:a}=t;await this.fetchInitial(a);const{draw:l,ranges:c}=this.internal,h=s.scale(o.Eo.xBounds(r)),f=this.state.cursor==null?null:this.state.cursor.x;let g=null;const m=l.canvas.scissor(o.Eo.construct({x:o.Eo.left(r),y:o.Eo.top(r)-35},{x:o.Eo.right(r),y:o.Eo.bottom(r)}));c.forEach(x=>{const b=o.Color.z.safeParse(x.color);if(!b.success)return;const v=b.data;let E=h.pos(Number(x.timeRange.start.valueOf()));const O=h.pos(Number(x.timeRange.end.valueOf()));if(O<o.Eo.left(r)||E>o.Eo.right(r))return;E=o.Y(E,o.Eo.left(r)-2,o.Eo.right(r)-1);let D=!1;f!=null&&(D=o.G$1.contains({lower:E,upper:O},f)),D&&(g={key:x.key,name:x.name,color:x.color,timeRange:x.timeRange,viewport:{lower:s.scale(o.Eo.xBounds(i)).pos(Number(x.timeRange.start.valueOf())),upper:s.scale(o.Eo.xBounds(i)).pos(Number(x.timeRange.end.valueOf()))}}),l.container({region:o.Eo.construct({x:E,y:o.Eo.top(r)-1},{x:O,y:o.Eo.bottom(r)-1}),backgroundColor:v.setAlpha(.2),bordered:!1});const R=o.Eo.construct({x:E+1,y:o.Eo.top(r)-34},{x:O-1,y:o.Eo.top(r)-12});l.container({region:R,backgroundColor:o.Eo.width(R)<20?v.setAlpha(.4):z=>D?z.colors.gray.l2:z.colors.gray.l0,bordered:!0,borderWidth:1,borderRadius:2,borderColor:v.setAlpha(.8)}),l.text({text:x.name,position:{x:E+8,y:o.Eo.top(r)-30},level:"small",shade:8,weight:500,maxWidth:O-E-16})}),m(),g!=null?this.setState(x=>({...x,hovered:g})):this.state.hovered&&this.setState(x=>({...x,hovered:null}))}}u(Oe,"TYPE","range-provider");const _u={[mn.TYPE]:mn,[Oe.TYPE]:Oe},$u=$e;class Ye extends Fi{constructor(){super(...arguments);u(this,"schema",$e)}async render(t){if(this.deleted)return;const[s,r]=await this.dataToDecimalScale(t.hold,this.dataBounds.bind(this),t.viewport);if(this.renderAxis(t,s.reverse()),await this.renderYAxes(t,s),await this.renderRangeAnnotations(t,s),r!=null)throw r}async findByXDecimal(t,s){const[r,i]=await this.dataToDecimalScale(t.hold,this.dataBounds.bind(this),t.viewport);if(i!=null)throw i;return await this.findByXValue(t,r.reverse().pos(s))}async findByXValue(t,s){const[r,i]=await this.dataToDecimalScale(t.hold,this.dataBounds.bind(this),t.viewport);if(i!=null)throw i;const a={...t,xDataToDecimalScale:r},l=this.yAxes.map(async c=>await c.findByXValue(a,s));return(await Promise.all(l)).flat()}async renderYAxes(t,s){const r={...t,xDataToDecimalScale:s};await Promise.all(this.yAxes.map(async i=>await i.render(r)))}get yAxes(){return this.childrenOfType(Te.TYPE)}get rangeAnnotations(){return this.childrenOfType(Oe.TYPE)}async renderRangeAnnotations(t,s){const[r,i]=await this.bounds(t.hold,this.dataBounds.bind(this));if(i!=null)throw i;await Promise.all(this.rangeAnnotations.map(async a=>await a.render({dataToDecimalScale:s,region:t.plot,viewport:t.viewport,timeRange:new d.E(r.lower,r.upper)})))}async dataBounds(){return await Promise.all(this.yAxes.map(async t=>await t.xBounds()))}}u(Ye,"TYPE","XAxis");const wa=p.z.object({container:o.Eo.box,viewport:o.Eo.box,hold:p.z.boolean().optional().default(!1),grid:p.z.record(xi),visible:p.z.boolean().optional().default(!0),clearOverScan:o.G.crudeZ.optional().default(o.G.ZERO)}),Gu=(n,e)=>{const t=o.Eo.width(n)*Math.sqrt(o.Eo.height(n)),s=o.Eo.width(e)*Math.sqrt(o.Eo.height(e));return t/s};class Rn extends d.Composite{constructor(){super(...arguments);u(this,"schema",wa)}async afterUpdate(){this.internal.instrumentation=Ae(this.ctx,"lineplot"),this.internal.aggregate=d.useAggregate(this.ctx),this.internal.renderCtx=L.use(this.ctx),G.control(this.ctx,t=>this.requestRender("low",t)),this.requestRender("high",J)}async afterDelete(){this.internal.renderCtx=L.use(this.ctx),this.requestRender("high",J)}async findByXDecimal(t){const s={...this.state,plot:this.calculatePlot(),exposure:this.exposure},r=this.axes.flatMap(async i=>await i.findByXDecimal(s,t));return(await Promise.all(r)).flat()}async findByXValue(t){const s={...this.state,plot:this.calculatePlot(),exposure:this.exposure},r=this.axes.flatMap(async i=>await i.findByXValue(s,t));return(await Promise.all(r)).flat()}get axes(){return this.childrenOfType(Ye.TYPE)}get tooltips(){return this.childrenOfType(jt.TYPE)}get measures(){return this.childrenOfType(Ht.TYPE)}get exposure(){return Gu(this.state.viewport,this.state.container)}async renderAxes(t,s){const r={...this.state,plot:t,canvases:s,exposure:this.exposure};await Promise.all(this.axes.map(async i=>await i.render(r)))}async renderTooltips(t,s){const r={findByXDecimal:this.findByXDecimal.bind(this),region:t,canvases:s};await Promise.all(this.tooltips.map(async i=>await i.render(r)))}async renderMeasures(t,s){const r={findByXDecimal:this.findByXDecimal.bind(this),findByXValue:this.findByXValue.bind(this),region:t,canvases:s};await Promise.all(this.measures.map(async i=>await i.render(r)))}calculatePlot(){return yo(this.state.grid,this.state.container)}async render(t){const{renderCtx:s}=this.internal,{instrumentation:r}=this.internal;if(this.deleted){r.L.debug("deleted, skipping render",{key:this.key});return}if(!this.state.visible)return r.L.debug("not visible, skipping render",{key:this.key}),async({canvases:f})=>s.erase(this.state.container,this.state.clearOverScan,...f);const i=this.calculatePlot();r.L.debug("rendering",{key:this.key,viewport:this.state.viewport,container:this.state.container,grid:this.state.grid,plot:i,canvases:t});const a=o.G.construct(this.state.clearOverScan),l=s.scissor(this.state.container,a,t.filter(f=>f!=="gl")),c=s.scissor(i,o.G.ZERO,t.filter(f=>f==="gl"));try{await this.renderAxes(i,t),await this.renderTooltips(i,t),await this.renderMeasures(i,t),s.gl.finish(),s.gl.flush(),s.gl.finish()}catch(f){if(f.message.toLowerCase().includes("bigint"))return;this.internal.aggregate({key:`${this.type}-${this.key}`,variant:"error",message:f.message})}finally{l(),c()}r.L.debug("rendered",{key:this.key});const h=o.Eo.copy(this.state.container);return async({canvases:f})=>s.erase(h,this.state.clearOverScan,...f)}requestRender(t,s){const{renderCtx:r}=this.internal;let i=["upper2d","lower2d","gl"];s===it&&(i=["upper2d"]),r.loop.set({key:`${this.type}-${this.key}`,render:async()=>await this.render(i),priority:t,canvases:i})}}u(Rn,"TYPE","LinePlot");const Zu={[Rn.TYPE]:Rn,[Ye.TYPE]:Ye,[Te.TYPE]:Te};exports.AcquireChannelControl=Ce;exports.Annotation=mn;exports.AuthoritySource=Re;exports.BaseProvider=Gt;exports.Button=vn;exports.Canvas=Zi;exports.Canvas$1=Pe;exports.Chip=yn;exports.Context=L;exports.Controller=G;exports.Controller$1=wn;exports.Diagram=Tu;exports.Diagram$1=qt;exports.Eraser=Ni;exports.Eraser$1=Tn;exports.GLProgram=_s;exports.Indicator=xn;exports.Legend=bn;exports.Light=Sn;exports.Line=ve;exports.LinePlot=Rn;exports.Log=ke;exports.Loop=Ii;exports.Measure=Ht;exports.Provider=He;exports.Provider$1=Oe;exports.Provider$2=Xn;exports.REASON_DATA=ss;exports.REASON_LAYOUT=J;exports.REASON_TOOL=it;exports.REGISTRY=Ja;exports.REGISTRY$1=bu;exports.REGISTRY$10=_u;exports.REGISTRY$11=Hi;exports.REGISTRY$12=Yu;exports.REGISTRY$13=Pr;exports.REGISTRY$14=wi;exports.REGISTRY$15=zu;exports.REGISTRY$16=ha;exports.REGISTRY$17=ma;exports.REGISTRY$18=ku;exports.REGISTRY$19=gu;exports.REGISTRY$2=oa;exports.REGISTRY$3=xu;exports.REGISTRY$4=la;exports.REGISTRY$5=Su;exports.REGISTRY$6=Eu;exports.REGISTRY$7=ou;exports.REGISTRY$8=Zu;exports.REGISTRY$9=fa;exports.Rule=Ut;exports.STATUSES=Qi;exports.SetChannelValue=Ee;exports.Setpoint=En;exports.StateProvider=Ft;exports.Table=Se;exports.Toggle=Cn;exports.Tooltip=jt;exports.Value=Wt;exports.XAxis=Ye;exports.YAxis=Te;exports.ZERO_CONTEXT_VALUE=is;exports.acquireChannelControl=yu;exports.acquireChannelControlPropsZ=na;exports.aether=hu;exports.annotationStateZ=Wi;exports.authoritySource=wu;exports.authoritySourceProps=sa;exports.axisStateZ=Ls;exports.buttonStateZ=aa;exports.canvas=vu;exports.canvasStateZ=Gs;exports.channelData=jr;exports.chipStateZ=Xi;exports.color=Zt;exports.colorGradient=ci;exports.controllerStateZ=ta;exports.coreAxisStateZ=$e;exports.diagramStateZ=Zs;exports.eraserStateZ=ca;exports.external=go;exports.indicatorStateZ=ra;exports.interpolateNumber=be;exports.interpolateRgb=Jn;exports.interpolateString=Ei;exports.legendStateZ=ia;exports.lightStateZ=ua;exports.linePlotStateZ=wa;exports.logState=da;exports.measure=Ou;exports.measureStateZ=Ns;exports.newTickFactory=ns;exports.parseAutoBounds=qi;exports.provider=La;exports.providerStateZ=ya;exports.providerStateZ$1=pi;exports.providerStateZ$2=Ts;exports.regions=dt;exports.rollingAverage=oi;exports.rollingAverageProps=vs;exports.ruleStateZ=$s;exports.scaleNumber=hi;exports.setChannelValue=mu;exports.setChannelValuePropsZ=ea;exports.setpoint=ni;exports.setpointStateZ=pa;exports.sinkPipeline=Fr;exports.sinkPipelinePropsZ=gs;exports.sourcePipeline=Ur;exports.sourcePipelinePropsZ=ps;exports.stateProviderStateZ=Vi;exports.stateZ=ji;exports.statusZ=Ji;exports.streamChannelData=Hr;exports.streamChannelValue=Wr;exports.streamChannelValuePropsZ=ms;exports.stringSourceSpecZ=ds;exports.stringifyNumber=ai;exports.stringifyNumberProps=bs;exports.sugaredStateZ=Ki;exports.tickFactoryProps=As;exports.tickType=Ms;exports.toggleStateZ=ga;exports.tooltip=Cu;exports.tooltipStateZ=Is;exports.value=Au;exports.withinBounds=si;exports.withinBoundsProps=xs;exports.withinSizeThreshold=Bi;exports.xAxisStateZ=$u;exports.yAxisStateZ=du;