@synnaxlabs/pluto 0.21.8 → 0.21.9

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 (141) hide show
  1. package/dist/{Center-hbwH7rg9.js → Center-BK9Rcaa0.js} +2 -2
  2. package/dist/{Center-hbwH7rg9.js.map → Center-BK9Rcaa0.js.map} +1 -1
  3. package/dist/{Center-5NJ61qfA.cjs → Center-Cc_rR5pQ.cjs} +2 -2
  4. package/dist/{Center-5NJ61qfA.cjs.map → Center-Cc_rR5pQ.cjs.map} +1 -1
  5. package/dist/{Keyboard-DaFraUsQ.cjs → Keyboard-Byx8rGZt.cjs} +3 -3
  6. package/dist/{Keyboard-DaFraUsQ.cjs.map → Keyboard-Byx8rGZt.cjs.map} +1 -1
  7. package/dist/{Keyboard-nDIAR7Rj.js → Keyboard-D31SwhYT.js} +3 -3
  8. package/dist/{Keyboard-nDIAR7Rj.js.map → Keyboard-D31SwhYT.js.map} +1 -1
  9. package/dist/{LinePlot-BZDm4uxJ.cjs → LinePlot-Bnb8Ufob.cjs} +96 -65
  10. package/dist/LinePlot-Bnb8Ufob.cjs.map +1 -0
  11. package/dist/{LinePlot-tOiSUMjC.js → LinePlot-KYwy1D7H.js} +281 -250
  12. package/dist/LinePlot-KYwy1D7H.js.map +1 -0
  13. package/dist/{Link-BdWFvK8v.cjs → Link-Bq38h1dw.cjs} +2 -2
  14. package/dist/{Link-BdWFvK8v.cjs.map → Link-Bq38h1dw.cjs.map} +1 -1
  15. package/dist/{Link-d3CXVSaO.js → Link-DQKdkwWL.js} +2 -2
  16. package/dist/{Link-d3CXVSaO.js.map → Link-DQKdkwWL.js.map} +1 -1
  17. package/dist/{List-DcsWFiLT.js → List-BmP_se57.js} +3 -3
  18. package/dist/{List-DcsWFiLT.js.map → List-BmP_se57.js.map} +1 -1
  19. package/dist/{List-PlMTfEHi.cjs → List-BnB-C5vQ.cjs} +3 -3
  20. package/dist/{List-PlMTfEHi.cjs.map → List-BnB-C5vQ.cjs.map} +1 -1
  21. package/dist/{Toggle-C6Z8WPT3.cjs → Toggle-D3iCEbO1.cjs} +46 -46
  22. package/dist/{Toggle-C6Z8WPT3.cjs.map → Toggle-D3iCEbO1.cjs.map} +1 -1
  23. package/dist/{Toggle-DGLgYCOX.js → Toggle-bT5RpwfA.js} +399 -399
  24. package/dist/{Toggle-DGLgYCOX.js.map → Toggle-bT5RpwfA.js.map} +1 -1
  25. package/dist/{Video-DFtnAOYY.cjs → Video-B4sma9fk.cjs} +2 -2
  26. package/dist/{Video-DFtnAOYY.cjs.map → Video-B4sma9fk.cjs.map} +1 -1
  27. package/dist/{Video-SGhKphYR.js → Video-Cp6XjjOK.js} +2 -2
  28. package/dist/{Video-SGhKphYR.js.map → Video-Cp6XjjOK.js.map} +1 -1
  29. package/dist/{aggregator-BgImZc4o.js → aggregator-B8fg7W2s.js} +106 -106
  30. package/dist/aggregator-B8fg7W2s.js.map +1 -0
  31. package/dist/{aggregator-BpfMBUD1.cjs → aggregator-Bh2Kyzkg.cjs} +100 -100
  32. package/dist/aggregator-Bh2Kyzkg.cjs.map +1 -0
  33. package/dist/align.cjs +1 -1
  34. package/dist/align.js +1 -1
  35. package/dist/button.cjs +1 -1
  36. package/dist/button.js +1 -1
  37. package/dist/{color-DV-YGUvp.js → color-CjdRh-aN.js} +2 -2
  38. package/dist/{color-DV-YGUvp.js.map → color-CjdRh-aN.js.map} +1 -1
  39. package/dist/{color-BVVyrgRF.cjs → color-DBNbbjJy.cjs} +2 -2
  40. package/dist/{color-BVVyrgRF.cjs.map → color-DBNbbjJy.cjs.map} +1 -1
  41. package/dist/color.cjs +1 -1
  42. package/dist/color.js +1 -1
  43. package/dist/{css-Pf9qxhQ4.cjs → css-Ci8WUD5E.cjs} +112 -108
  44. package/dist/css-Ci8WUD5E.cjs.map +1 -0
  45. package/dist/{css-DoalWJF6.js → css-DKKmdhSr.js} +114 -110
  46. package/dist/css-DKKmdhSr.js.map +1 -0
  47. package/dist/css.cjs +2 -2
  48. package/dist/css.js +2 -2
  49. package/dist/dropdown.cjs +1 -1
  50. package/dist/dropdown.js +1 -1
  51. package/dist/ether.cjs +3 -3
  52. package/dist/ether.js +5 -5
  53. package/dist/{external-Cu6T11fi.cjs → external-9_cqFQy3.cjs} +6 -6
  54. package/dist/{external-Cu6T11fi.cjs.map → external-9_cqFQy3.cjs.map} +1 -1
  55. package/dist/{external-Blx0rtt2.cjs → external-B-zN2e5z.cjs} +6 -6
  56. package/dist/{external-Blx0rtt2.cjs.map → external-B-zN2e5z.cjs.map} +1 -1
  57. package/dist/{external-DeheWVb-.js → external-BM82B8W2.js} +6 -6
  58. package/dist/{external-DeheWVb-.js.map → external-BM82B8W2.js.map} +1 -1
  59. package/dist/{external-96EinZfY.js → external-BYqTC99W.js} +3 -3
  60. package/dist/external-BYqTC99W.js.map +1 -0
  61. package/dist/{external-5przQjJD.js → external-BfZYUV3z.js} +11 -11
  62. package/dist/{external-5przQjJD.js.map → external-BfZYUV3z.js.map} +1 -1
  63. package/dist/{external-SxB9IH0p.js → external-BpqCp_M1.js} +2 -2
  64. package/dist/external-BpqCp_M1.js.map +1 -0
  65. package/dist/{external-C6GmnG49.js → external-BrW40HJx.js} +6 -6
  66. package/dist/{external-C6GmnG49.js.map → external-BrW40HJx.js.map} +1 -1
  67. package/dist/{external-1osPryUV.js → external-CAOQcoqL.js} +5 -5
  68. package/dist/{external-1osPryUV.js.map → external-CAOQcoqL.js.map} +1 -1
  69. package/dist/{external-D8dWmF4U.cjs → external-CIVsFXOp.cjs} +2 -2
  70. package/dist/external-CIVsFXOp.cjs.map +1 -0
  71. package/dist/{external-BAdU6u03.js → external-CnNdgPsB.js} +5 -5
  72. package/dist/{external-BAdU6u03.js.map → external-CnNdgPsB.js.map} +1 -1
  73. package/dist/{external-DiFhWWS-.js → external-CwjCCHPi.js} +7 -7
  74. package/dist/{external-DiFhWWS-.js.map → external-CwjCCHPi.js.map} +1 -1
  75. package/dist/{external-DarqsFzT.js → external-DNHMAfGi.js} +5 -5
  76. package/dist/{external-DarqsFzT.js.map → external-DNHMAfGi.js.map} +1 -1
  77. package/dist/{external-0PM7JrzG.cjs → external-DVQ2SRoH.cjs} +5 -5
  78. package/dist/{external-0PM7JrzG.cjs.map → external-DVQ2SRoH.cjs.map} +1 -1
  79. package/dist/{external-16K8slq8.cjs → external-D_yXh8rn.cjs} +11 -11
  80. package/dist/{external-16K8slq8.cjs.map → external-D_yXh8rn.cjs.map} +1 -1
  81. package/dist/{external-CPx8XA9-.cjs → external-Df0D1YYb.cjs} +7 -7
  82. package/dist/{external-CPx8XA9-.cjs.map → external-Df0D1YYb.cjs.map} +1 -1
  83. package/dist/{external-DvGqQHd8.cjs → external-DhPBdJpR.cjs} +3 -3
  84. package/dist/external-DhPBdJpR.cjs.map +1 -0
  85. package/dist/{external-D7XrxOVE.cjs → external-DhiN6pEk.cjs} +4 -4
  86. package/dist/{external-D7XrxOVE.cjs.map → external-DhiN6pEk.cjs.map} +1 -1
  87. package/dist/{external-CsO29OsF.cjs → external-DjYXzP7v.cjs} +7 -7
  88. package/dist/{external-CsO29OsF.cjs.map → external-DjYXzP7v.cjs.map} +1 -1
  89. package/dist/{external-B3ly2-jy.js → external-FWIwgLzc.js} +7 -7
  90. package/dist/{external-B3ly2-jy.js.map → external-FWIwgLzc.js.map} +1 -1
  91. package/dist/{external-B0z7uXZV.cjs → external-Iv2mRce8.cjs} +5 -5
  92. package/dist/{external-B0z7uXZV.cjs.map → external-Iv2mRce8.cjs.map} +1 -1
  93. package/dist/{external-CzJYG1hX.cjs → external-P6zP6dBA.cjs} +3 -3
  94. package/dist/external-P6zP6dBA.cjs.map +1 -0
  95. package/dist/{external-D4ur_D1S.cjs → external-d-vI8EHK.cjs} +5 -5
  96. package/dist/{external-D4ur_D1S.cjs.map → external-d-vI8EHK.cjs.map} +1 -1
  97. package/dist/{external-DQkw1ko0.js → external-giUMrk8w.js} +4 -4
  98. package/dist/{external-DQkw1ko0.js.map → external-giUMrk8w.js.map} +1 -1
  99. package/dist/{external-CgMwmBnF.js → external-zG96smqq.js} +3 -3
  100. package/dist/external-zG96smqq.js.map +1 -0
  101. package/dist/header.cjs +1 -1
  102. package/dist/header.js +1 -1
  103. package/dist/index.cjs +30 -30
  104. package/dist/index.js +55 -55
  105. package/dist/index.js.map +1 -1
  106. package/dist/input.cjs +1 -1
  107. package/dist/input.js +1 -1
  108. package/dist/list.cjs +1 -1
  109. package/dist/list.js +1 -1
  110. package/dist/menu.cjs +1 -1
  111. package/dist/menu.js +1 -1
  112. package/dist/src/telem/client/cache/cache.d.ts +3 -8
  113. package/dist/src/telem/client/cache/cache.d.ts.map +1 -1
  114. package/dist/src/telem/client/cache/dynamic.d.ts +13 -3
  115. package/dist/src/telem/client/cache/dynamic.d.ts.map +1 -1
  116. package/dist/src/telem/client/client.d.ts +1 -1
  117. package/dist/tabs.cjs +1 -1
  118. package/dist/tabs.js +1 -1
  119. package/dist/text.cjs +2 -2
  120. package/dist/text.js +2 -2
  121. package/dist/theming.cjs +2 -2
  122. package/dist/theming.js +2 -2
  123. package/dist/tree.cjs +1 -1
  124. package/dist/tree.js +1 -1
  125. package/dist/triggers.cjs +1 -1
  126. package/dist/triggers.js +1 -1
  127. package/dist/video.cjs +1 -1
  128. package/dist/video.js +1 -1
  129. package/package.json +2 -2
  130. package/dist/LinePlot-BZDm4uxJ.cjs.map +0 -1
  131. package/dist/LinePlot-tOiSUMjC.js.map +0 -1
  132. package/dist/aggregator-BgImZc4o.js.map +0 -1
  133. package/dist/aggregator-BpfMBUD1.cjs.map +0 -1
  134. package/dist/css-DoalWJF6.js.map +0 -1
  135. package/dist/css-Pf9qxhQ4.cjs.map +0 -1
  136. package/dist/external-96EinZfY.js.map +0 -1
  137. package/dist/external-CgMwmBnF.js.map +0 -1
  138. package/dist/external-CzJYG1hX.cjs.map +0 -1
  139. package/dist/external-D8dWmF4U.cjs.map +0 -1
  140. package/dist/external-DvGqQHd8.cjs.map +0 -1
  141. package/dist/external-SxB9IH0p.js.map +0 -1
@@ -6,9 +6,9 @@ var __publicField = (obj, key, value2) => {
6
6
  return value2;
7
7
  };
8
8
  var _a, _b, _c, _d, _e;
9
- const aggregator = require("./aggregator-BpfMBUD1.cjs");
9
+ const aggregator = require("./aggregator-Bh2Kyzkg.cjs");
10
10
  const zod = require("zod");
11
- const css = require("./css-Pf9qxhQ4.cjs");
11
+ const css = require("./css-Ci8WUD5E.cjs");
12
12
  const React = require("react");
13
13
  require("react-dom");
14
14
  const a = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
@@ -355,7 +355,7 @@ class StatusSource extends Noop {
355
355
  key: "noop",
356
356
  variant: "disabled",
357
357
  message: "unknown",
358
- time: aggregator.w.now()
358
+ time: aggregator.m.now()
359
359
  };
360
360
  }
361
361
  }
@@ -625,11 +625,11 @@ class ChannelData extends AbstractSource {
625
625
  async value() {
626
626
  const { timeRange, channel, useIndexOfChannel: indexOfChannel } = this.props;
627
627
  if (timeRange.isZero || channel === 0)
628
- return [css.L.ZERO, []];
628
+ return [css.C.ZERO, []];
629
629
  const chan = await fetchChannelProperties(this.client, channel, indexOfChannel);
630
630
  if (!this.valid)
631
631
  await this.readFixed(chan.key);
632
- let b = css.L.max(this.data.map((d2) => d2.bounds));
632
+ let b = css.C.max(this.data.map((d2) => d2.bounds));
633
633
  if (chan.dataType.equals(aggregator.g.TIMESTAMP))
634
634
  b = {
635
635
  upper: Math.min(b.upper, Number(this.props.timeRange.end.valueOf())),
@@ -649,8 +649,8 @@ __publicField(ChannelData, "TYPE", "series-source");
649
649
  const streamChannelDataPropsZ = zod.z.object({
650
650
  channel: zod.z.number().or(zod.z.string()),
651
651
  useIndexOfChannel: zod.z.boolean().optional().default(false),
652
- timeSpan: aggregator.y.z,
653
- keepFor: aggregator.y.z.optional()
652
+ timeSpan: aggregator.w.z,
653
+ keepFor: aggregator.w.z.optional()
654
654
  });
655
655
  class StreamChannelData extends AbstractSource {
656
656
  constructor(client, props) {
@@ -665,12 +665,12 @@ class StreamChannelData extends AbstractSource {
665
665
  async value() {
666
666
  const { channel, useIndexOfChannel, timeSpan } = this.props;
667
667
  if (channel === 0)
668
- return [css.L.ZERO, []];
669
- const now2 = aggregator.w.now();
668
+ return [css.C.ZERO, []];
669
+ const now2 = aggregator.m.now();
670
670
  const ch = await fetchChannelProperties(this.client, channel, useIndexOfChannel);
671
671
  if (!this.valid)
672
672
  await this.read(ch.key);
673
- let b = css.L.max(
673
+ let b = css.C.max(
674
674
  this.data.filter((d2) => d2.timeRange.end.after(now2.sub(timeSpan))).map((d2) => d2.bounds)
675
675
  );
676
676
  if (ch.dataType.equals(aggregator.g.TIMESTAMP))
@@ -681,7 +681,7 @@ class StreamChannelData extends AbstractSource {
681
681
  return [b, this.data];
682
682
  }
683
683
  async read(key) {
684
- const tr = aggregator.w.now().spanRange(-this.props.timeSpan);
684
+ const tr = aggregator.m.now().spanRange(-this.props.timeSpan);
685
685
  const res = await this.client.read(tr, [key]);
686
686
  const newData = res[key].data;
687
687
  newData.forEach((d2) => d2.acquire());
@@ -702,7 +702,7 @@ class StreamChannelData extends AbstractSource {
702
702
  this.stopStreaming = await this.client.stream(handler, [key]);
703
703
  }
704
704
  gcOutOfRangeData() {
705
- const threshold = aggregator.w.now().sub(this.props.keepFor ?? this.props.timeSpan);
705
+ const threshold = aggregator.m.now().sub(this.props.keepFor ?? this.props.timeSpan);
706
706
  const toGC = this.data.findIndex((d2) => d2.timeRange.end.before(threshold));
707
707
  if (toGC === -1)
708
708
  return;
@@ -791,7 +791,7 @@ class FixedSeries extends AbstractSource {
791
791
  );
792
792
  }
793
793
  async value() {
794
- const b = css.L.max(this.data.map((x) => x.bounds));
794
+ const b = css.C.max(this.data.map((x) => x.bounds));
795
795
  return [b, this.data];
796
796
  }
797
797
  }
@@ -832,7 +832,7 @@ class IterativeSeries extends AbstractSource {
832
832
  };
833
833
  return [b2, d2];
834
834
  }
835
- const b = css.L.max(d2.map((x) => x.bounds));
835
+ const b = css.C.max(d2.map((x) => x.bounds));
836
836
  return [b, d2];
837
837
  }
838
838
  start(rate) {
@@ -940,7 +940,7 @@ const _SetPoint = class _SetPoint extends UnarySinkTransformer {
940
940
  __publicField(_SetPoint, "TYPE", "boolean-numeric-converter-sink");
941
941
  __publicField(_SetPoint, "propsZ", setpointProps);
942
942
  let SetPoint = _SetPoint;
943
- const withinBoundsProps = zod.z.object({ trueBound: css.L.bounds });
943
+ const withinBoundsProps = zod.z.object({ trueBound: css.C.bounds });
944
944
  const withinBounds = (props) => ({
945
945
  props,
946
946
  type: WithinBounds.TYPE,
@@ -954,12 +954,12 @@ const _WithinBounds = class _WithinBounds extends UnarySourceTransformer {
954
954
  __publicField(this, "curr", null);
955
955
  }
956
956
  shouldNotify(value2) {
957
- const shouldNotify = css.L.contains(this.props.trueBound, value2) !== this.curr;
958
- this.curr = css.L.contains(this.props.trueBound, value2);
957
+ const shouldNotify = css.C.contains(this.props.trueBound, value2) !== this.curr;
958
+ this.curr = css.C.contains(this.props.trueBound, value2);
959
959
  return shouldNotify;
960
960
  }
961
961
  transform(value2) {
962
- this.curr = css.L.contains(this.props.trueBound, value2);
962
+ this.curr = css.C.contains(this.props.trueBound, value2);
963
963
  return this.curr;
964
964
  }
965
965
  };
@@ -1212,7 +1212,7 @@ const zeroCacheGCMetrics = () => ({
1212
1212
  });
1213
1213
  const DEFAULT_STATIC_PROPS = {
1214
1214
  instrumentation: aggregator.g$1.NOOP,
1215
- staleEntryThreshold: aggregator.y.seconds(20)
1215
+ staleEntryThreshold: aggregator.w.seconds(20)
1216
1216
  };
1217
1217
  class Static {
1218
1218
  constructor(props) {
@@ -1265,7 +1265,7 @@ class Static {
1265
1265
  gc() {
1266
1266
  const res = zeroCacheGCMetrics();
1267
1267
  const newData = this.data.filter((s) => {
1268
- const shouldKeep = s.data.refCount === 0 && aggregator.w.since(s.addedAt).lessThan(this.props.staleEntryThreshold);
1268
+ const shouldKeep = s.data.refCount === 0 && aggregator.m.since(s.addedAt).lessThan(this.props.staleEntryThreshold);
1269
1269
  if (!shouldKeep)
1270
1270
  res.purgedBytes = res.purgedBytes.add(s.data.byteCapacity);
1271
1271
  return shouldKeep;
@@ -1286,7 +1286,7 @@ class Static {
1286
1286
  } = this.props;
1287
1287
  if (series.length === 0)
1288
1288
  return;
1289
- const insertionPlan = css.L.buildInsertionPlan(
1289
+ const insertionPlan = css.C.buildInsertionPlan(
1290
1290
  this.data.map((s) => s.data.alignmentBounds),
1291
1291
  series.alignmentBounds
1292
1292
  );
@@ -1301,7 +1301,7 @@ class Static {
1301
1301
  return;
1302
1302
  this.data.splice(insertInto, deleteInBetween, {
1303
1303
  data: series,
1304
- addedAt: aggregator.w.now()
1304
+ addedAt: aggregator.m.now()
1305
1305
  });
1306
1306
  }
1307
1307
  checkIntegrity(write) {
@@ -1313,7 +1313,7 @@ class Static {
1313
1313
  return allBounds.some((b2, j) => {
1314
1314
  if (i2 === j)
1315
1315
  return false;
1316
- const ok = css.L.overlapsWith(b, b2);
1316
+ const ok = css.C.overlapsWith(b, b2);
1317
1317
  return ok;
1318
1318
  });
1319
1319
  });
@@ -1326,6 +1326,10 @@ class Static {
1326
1326
  }
1327
1327
  }
1328
1328
  }
1329
+ const MIN_SIZE = 100;
1330
+ const MAX_SIZE = 1e6;
1331
+ const DEF_SIZE = 1e4;
1332
+ const MAX_DEF_WRITES = 100;
1329
1333
  class Dynamic {
1330
1334
  /**
1331
1335
  * @constructor
@@ -1338,10 +1342,17 @@ class Dynamic {
1338
1342
  __publicField(this, "counter", 0);
1339
1343
  /** Current buffer */
1340
1344
  __publicField(this, "buffer");
1345
+ __publicField(this, "avgRate", 0);
1346
+ __publicField(this, "timeOfLastWrite");
1347
+ __publicField(this, "totalWrites", 0);
1348
+ __publicField(this, "now", () => aggregator.m.now());
1341
1349
  this.props = props;
1342
1350
  this.buffer = null;
1351
+ if (props.testingNow != null)
1352
+ this.now = props.testingNow;
1353
+ this.timeOfLastWrite = this.now();
1343
1354
  }
1344
- /** @returns the number of samples currenly held in the cache. */
1355
+ /** @returns the number of samples currently held in the cache. */
1345
1356
  get length() {
1346
1357
  var _a2;
1347
1358
  return ((_a2 = this.buffer) == null ? void 0 : _a2.length) ?? 0;
@@ -1371,7 +1382,7 @@ class Dynamic {
1371
1382
  return aggregator.N.alloc({
1372
1383
  capacity,
1373
1384
  dataType: aggregator.g.FLOAT32,
1374
- timeRange: start2.range(aggregator.w.MAX),
1385
+ timeRange: start2.range(aggregator.m.MAX),
1375
1386
  sampleOffset: this.props.dataType.equals(aggregator.g.TIMESTAMP) ? BigInt(start2.valueOf()) : 0,
1376
1387
  glBufferUsage: "dynamic",
1377
1388
  alignment,
@@ -1379,15 +1390,15 @@ class Dynamic {
1379
1390
  });
1380
1391
  }
1381
1392
  _write(series) {
1382
- const { dynamicBufferSize: cap } = this.props;
1393
+ const cap = this.nextBufferSize();
1383
1394
  const res = { flushed: [], allocated: [] };
1384
1395
  if (this.buffer == null) {
1385
- this.buffer = this.allocate(cap, series.alignment, aggregator.w.now());
1396
+ this.buffer = this.allocate(cap, series.alignment, this.now());
1386
1397
  res.allocated.push(this.buffer);
1387
1398
  } else if (Math.abs(
1388
1399
  Number(this.buffer.alignment + BigInt(this.buffer.length) - series.alignment)
1389
1400
  ) > 1) {
1390
- const now22 = aggregator.w.now();
1401
+ const now22 = this.now();
1391
1402
  this.buffer.timeRange.end = now22;
1392
1403
  res.flushed.push(this.buffer);
1393
1404
  this.buffer = this.allocate(cap, series.alignment, now22);
@@ -1395,9 +1406,11 @@ class Dynamic {
1395
1406
  }
1396
1407
  const converted = convertSeriesFloat32(series, this.buffer.sampleOffset);
1397
1408
  const amountWritten = this.buffer.write(converted);
1398
- if (amountWritten === series.length)
1409
+ if (amountWritten === series.length) {
1410
+ this.updateAvgRate(series);
1399
1411
  return res;
1400
- const now2 = aggregator.w.now();
1412
+ }
1413
+ const now2 = this.now();
1401
1414
  this.buffer.timeRange.end = now2;
1402
1415
  res.flushed.push(this.buffer);
1403
1416
  this.buffer = this.allocate(cap, series.alignment + BigInt(amountWritten), now2);
@@ -1407,6 +1420,24 @@ class Dynamic {
1407
1420
  res.allocated.push(...nextRes.allocated);
1408
1421
  return res;
1409
1422
  }
1423
+ updateAvgRate(series) {
1424
+ if (typeof this.props.dynamicBufferSize === "number")
1425
+ return;
1426
+ const newRate = series.length / this.now().span(this.timeOfLastWrite).seconds;
1427
+ if (this.totalWrites > 0 && isFinite(newRate) && newRate > 0)
1428
+ this.avgRate = (this.avgRate * (this.totalWrites - 1) + newRate) / this.totalWrites;
1429
+ this.totalWrites++;
1430
+ this.timeOfLastWrite = this.now();
1431
+ }
1432
+ nextBufferSize() {
1433
+ const { dynamicBufferSize } = this.props;
1434
+ if (typeof dynamicBufferSize === "number")
1435
+ return dynamicBufferSize;
1436
+ if (this.totalWrites < MAX_DEF_WRITES)
1437
+ return DEF_SIZE;
1438
+ const size = css.L.roundToNearestMagnitude(this.avgRate * dynamicBufferSize.seconds);
1439
+ return Math.round(Math.max(Math.min(size, MAX_SIZE), MIN_SIZE));
1440
+ }
1410
1441
  /**
1411
1442
  * Closes the cache and releases all resources associated with it. After close()
1412
1443
  * is called, the cache should not be used again.
@@ -1476,7 +1507,7 @@ class Unary {
1476
1507
  this.static.close();
1477
1508
  }
1478
1509
  }
1479
- const CACHE_BUFFER_SIZE = 1e4;
1510
+ const CACHE_BUFFER_SIZE = aggregator.X.seconds(60);
1480
1511
  class Cache {
1481
1512
  constructor(props) {
1482
1513
  __publicField(this, "props");
@@ -1564,7 +1595,7 @@ class Reader {
1564
1595
  });
1565
1596
  this.props = {
1566
1597
  instrumentation: aggregator.g$1.NOOP,
1567
- batchDebounce: aggregator.y.milliseconds(50),
1598
+ batchDebounce: aggregator.w.milliseconds(50),
1568
1599
  ...props
1569
1600
  };
1570
1601
  this.debouncedRead = aggregator.o$1(() => {
@@ -1601,7 +1632,7 @@ class Reader {
1601
1632
  tr: tr.toPrettyString(),
1602
1633
  channels,
1603
1634
  responses: responseDigests(Object.values(responses)),
1604
- time: aggregator.y.milliseconds(performance.now() - start2).toString()
1635
+ time: aggregator.w.milliseconds(performance.now() - start2).toString()
1605
1636
  }));
1606
1637
  return responses;
1607
1638
  }
@@ -1635,7 +1666,7 @@ class Reader {
1635
1666
  tr: tr.toPrettyString(),
1636
1667
  channels,
1637
1668
  responses: responseDigests(Object.values(responses)),
1638
- time: aggregator.y.milliseconds(performance.now() - start2).toString()
1669
+ time: aggregator.w.milliseconds(performance.now() - start2).toString()
1639
1670
  }));
1640
1671
  return responses;
1641
1672
  }
@@ -1652,7 +1683,7 @@ class Reader {
1652
1683
  requests.forEach((_, k) => {
1653
1684
  const [tr, keys] = k;
1654
1685
  const groupWith = compressedToFetch.find(
1655
- ([r]) => r.start.span(tr.start).lessThan(aggregator.y.milliseconds(5)) && r.end.span(tr.end).lessThan(aggregator.y.milliseconds(5))
1686
+ ([r]) => r.start.span(tr.start).lessThan(aggregator.w.milliseconds(5)) && r.end.span(tr.end).lessThan(aggregator.w.milliseconds(5))
1656
1687
  );
1657
1688
  if (groupWith == null)
1658
1689
  compressedToFetch.push([tr, keys]);
@@ -2601,8 +2632,8 @@ class Loop {
2601
2632
  }
2602
2633
  }
2603
2634
  const end = performance.now();
2604
- const span = aggregator.y.milliseconds(end - start2);
2605
- if (span.greaterThan(aggregator.y.milliseconds(25))) {
2635
+ const span = aggregator.w.milliseconds(end - start2);
2636
+ if (span.greaterThan(aggregator.w.milliseconds(25))) {
2606
2637
  console.warn(
2607
2638
  `Render loop for ${this.requests.size} took longer than 16ms to execute: ${span.milliseconds}`
2608
2639
  );
@@ -2831,7 +2862,7 @@ const safelyGetDataValue = (series, index, data) => {
2831
2862
  return NaN;
2832
2863
  return Number(data[series].at(index));
2833
2864
  };
2834
- const DEFAULT_OVERLAP_THRESHOLD = aggregator.y.milliseconds(2);
2865
+ const DEFAULT_OVERLAP_THRESHOLD = aggregator.w.milliseconds(2);
2835
2866
  ({
2836
2867
  key: "",
2837
2868
  position: css.q.NAN,
@@ -2983,7 +3014,7 @@ class Line extends aggregator.Leaf {
2983
3014
  result.value.x = safelyGetDataValue(series, index, xData);
2984
3015
  const [, yData] = await yTelem.value();
2985
3016
  const ySeries = yData.find(
2986
- (ys) => css.L.contains(ys.alignmentBounds, xSeries.alignment + BigInt(index))
3017
+ (ys) => css.C.contains(ys.alignmentBounds, xSeries.alignment + BigInt(index))
2987
3018
  );
2988
3019
  if (ySeries == null)
2989
3020
  return result;
@@ -3093,7 +3124,7 @@ const findSeriesThatOverlapWith = (x, y, overlapThreshold) => y.filter((ys) => {
3093
3124
  `Encountered series without time range in buildDrawOperations. X series present: ${x._timeRange != null}, Y series present: ${ys._timeRange != null}`
3094
3125
  );
3095
3126
  const timeRangesOverlap = x.timeRange.overlapsWith(ys.timeRange, overlapThreshold);
3096
- const alignmentsOverlap = css.L.overlapsWith(
3127
+ const alignmentsOverlap = css.C.overlapsWith(
3097
3128
  x.alignmentBounds,
3098
3129
  ys.alignmentBounds
3099
3130
  );
@@ -5342,8 +5373,8 @@ class TimeTickFactory {
5342
5373
  generate({ decimalToDataScale: scale, size }) {
5343
5374
  const range = [0, size];
5344
5375
  const domain = [
5345
- new aggregator.w(scale.pos(0)).date(),
5346
- new aggregator.w(scale.pos(1)).date()
5376
+ new aggregator.m(scale.pos(0)).date(),
5377
+ new aggregator.m(scale.pos(1)).date()
5347
5378
  ];
5348
5379
  const d3Scale = time().domain(domain).range(range);
5349
5380
  const ticks2 = d3Scale.ticks(calcTickCount(size, this.props.tickSpacing));
@@ -5353,7 +5384,7 @@ class TimeTickFactory {
5353
5384
  }));
5354
5385
  }
5355
5386
  tickLabel(date2) {
5356
- const value2 = new aggregator.w(date2).date();
5387
+ const value2 = new aggregator.m(date2).date();
5357
5388
  let formatted = `:${value2.getSeconds()}`;
5358
5389
  const ms = value2.getMilliseconds();
5359
5390
  if (ms !== 0) {
@@ -5550,46 +5581,46 @@ class Canvas {
5550
5581
  maybeDrawGrid(size, ticks2, f) {
5551
5582
  const { showGrid, gridColor } = this.state;
5552
5583
  if (showGrid) {
5553
- const startBound = css.L.construct(-1, 1);
5554
- const endBound = css.L.construct(size - 1, size + 1);
5584
+ const startBound = css.C.construct(-1, 1);
5585
+ const endBound = css.C.construct(size - 1, size + 1);
5555
5586
  this.ctx.lower2d.strokeStyle = gridColor.hex;
5556
5587
  ticks2.filter(
5557
- ({ position }) => !css.L.contains(startBound, position) && !css.L.contains(endBound, position)
5588
+ ({ position }) => !css.C.contains(startBound, position) && !css.C.contains(endBound, position)
5558
5589
  ).forEach((tick) => this.drawLine(...f(tick)));
5559
5590
  }
5560
5591
  }
5561
5592
  }
5562
5593
  const coreAxisStateZ = axisStateZ.extend({
5563
- bounds: css.L.bounds.optional(),
5594
+ bounds: css.C.bounds.optional(),
5564
5595
  autoBounds: zod.z.object({
5565
5596
  lower: zod.z.boolean().optional().default(true),
5566
5597
  upper: zod.z.boolean().optional().default(true)
5567
5598
  }).or(zod.z.boolean().optional().default(true)),
5568
5599
  autoBoundPadding: zod.z.number().optional(),
5569
- autoBoundUpdateInterval: aggregator.y.z.optional().default(aggregator.y.seconds(2)),
5600
+ autoBoundUpdateInterval: aggregator.w.z.optional().default(aggregator.w.seconds(2)),
5570
5601
  size: zod.z.number().optional().default(0),
5571
5602
  label: zod.z.string().optional().default(""),
5572
5603
  labelSize: zod.z.number().optional().default(0)
5573
5604
  }).partial({ color: true, font: true, gridColor: true });
5574
5605
  const AXIS_SIZE_UPADTE_UPPER_THRESHOLD = 2;
5575
5606
  const AXIS_SIZE_UPDATE_LOWER_THRESHOLD = 7;
5576
- const withinSizeThreshold = (prev, next) => css.L.contains(
5607
+ const withinSizeThreshold = (prev, next) => css.C.contains(
5577
5608
  {
5578
5609
  lower: prev - AXIS_SIZE_UPDATE_LOWER_THRESHOLD,
5579
5610
  upper: prev + AXIS_SIZE_UPADTE_UPPER_THRESHOLD
5580
5611
  },
5581
5612
  next
5582
5613
  );
5583
- const EMPTY_LINEAR_BOUNDS = css.L.DECIMAL;
5584
- const now$1 = aggregator.w.now();
5614
+ const EMPTY_LINEAR_BOUNDS = css.C.DECIMAL;
5615
+ const now$1 = aggregator.m.now();
5585
5616
  const EMPTY_TIME_BOUNDS = {
5586
5617
  lower: Number(now$1.valueOf()),
5587
- upper: Number(now$1.add(aggregator.y.HOUR).valueOf())
5618
+ upper: Number(now$1.add(aggregator.w.HOUR).valueOf())
5588
5619
  };
5589
5620
  const emptyBounds = (type) => type === "linear" ? EMPTY_LINEAR_BOUNDS : EMPTY_TIME_BOUNDS;
5590
5621
  const autoBounds = (b, padding = 0.1, type) => {
5591
- const m = css.L.max(b.filter(css.L.isFinite));
5592
- if (!css.L.isFinite(m))
5622
+ const m = css.C.max(b.filter(css.C.isFinite));
5623
+ if (!css.C.isFinite(m))
5593
5624
  return emptyBounds(type);
5594
5625
  const { lower: lower2, upper } = m;
5595
5626
  if (upper === lower2)
@@ -5952,7 +5983,7 @@ class YAxis extends CoreAxis {
5952
5983
  __publicField(this, "schema", coreAxisStateZ);
5953
5984
  }
5954
5985
  async xBounds() {
5955
- return css.L.max(
5986
+ return css.C.max(
5956
5987
  await Promise.all(this.lines.map(async (el) => await el.xBounds()))
5957
5988
  );
5958
5989
  }
@@ -6022,8 +6053,8 @@ class YAxis extends CoreAxis {
6022
6053
  }
6023
6054
  __publicField(YAxis, "TYPE", "YAxis");
6024
6055
  const annotationStateZ = zod.z.object({
6025
- start: aggregator.w.z,
6026
- end: aggregator.w.z
6056
+ start: aggregator.m.z,
6057
+ end: aggregator.m.z
6027
6058
  });
6028
6059
  class Annotation extends aggregator.Leaf {
6029
6060
  constructor() {
@@ -13453,11 +13484,11 @@ class Tooltip extends aggregator.Leaf {
13453
13484
  const validValues = values.filter((c) => css.q.isFinite(c.value));
13454
13485
  const { draw } = this.internal;
13455
13486
  const avgXPosition = validValues.reduce((p, c) => p + c.position.x, 0) / validValues.length;
13456
- const avgXValue = new aggregator.w(
13487
+ const avgXValue = new aggregator.m(
13457
13488
  validValues.reduce((p, c) => p + c.value.x, 0) / validValues.length
13458
13489
  );
13459
13490
  const rulePosition = scale_.x.pos(avgXPosition);
13460
- if (!css.L.contains(css.To.xBounds(region), rulePosition))
13491
+ if (!css.C.contains(css.To.xBounds(region), rulePosition))
13461
13492
  return;
13462
13493
  draw.rule({
13463
13494
  stroke: this.state.ruleColor,
@@ -13643,7 +13674,7 @@ class Measure extends aggregator.Leaf {
13643
13674
  const s = css.k.XY.scale(css.To.DECIMAL).scale(props.region);
13644
13675
  const onePos = s.pos(oneValue.position);
13645
13676
  const twoPos = s.pos(twoValue.position);
13646
- const xDist = new aggregator.y(Math.abs(oneValue.value.x - twoValue.value.x));
13677
+ const xDist = new aggregator.w(Math.abs(oneValue.value.x - twoValue.value.x));
13647
13678
  const yDist = Math.abs(oneValue.value.y - twoValue.value.y);
13648
13679
  const slope = yDist / xDist.seconds;
13649
13680
  draw.line({
@@ -13667,7 +13698,7 @@ class Measure extends aggregator.Leaf {
13667
13698
  lineWidth: strokeWidth
13668
13699
  });
13669
13700
  draw.textContainer({
13670
- text: [xDist.truncate(aggregator.y.MILLISECOND).toString()],
13701
+ text: [xDist.truncate(aggregator.w.MILLISECOND).toString()],
13671
13702
  direction: "x",
13672
13703
  position: css.q.construct((onePos.x + twoPos.x) / 2, twoPos.y),
13673
13704
  level: "small"
@@ -13852,7 +13883,7 @@ const value = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePropert
13852
13883
  Value
13853
13884
  }, Symbol.toStringTag, { value: "Module" }));
13854
13885
  const selectedStateZ = aggregator.nk.payloadZ.extend({
13855
- viewport: css.L.bounds
13886
+ viewport: css.C.bounds
13856
13887
  });
13857
13888
  const providerStateZ = zod.z.object({
13858
13889
  cursor: css.q.xy.or(zod.z.null()),
@@ -13891,7 +13922,7 @@ class Provider extends aggregator.Leaf {
13891
13922
  }
13892
13923
  async fetchInitial(timeRange) {
13893
13924
  const { internal: i2 } = this;
13894
- if (i2.client == null || this.fetchedInitial.roughlyEquals(timeRange, aggregator.y.minutes(1)))
13925
+ if (i2.client == null || this.fetchedInitial.roughlyEquals(timeRange, aggregator.w.minutes(1)))
13895
13926
  return;
13896
13927
  this.fetchedInitial = timeRange;
13897
13928
  const ranges = await i2.client.ranges.retrieve(timeRange);
@@ -13923,7 +13954,7 @@ class Provider extends aggregator.Leaf {
13923
13954
  startPos = css.Y(startPos, css.To.left(region) - 2, css.To.right(region) - 1);
13924
13955
  let hovered = false;
13925
13956
  if (cursor != null)
13926
- hovered = css.L.contains({ lower: startPos, upper: endPos }, cursor);
13957
+ hovered = css.C.contains({ lower: startPos, upper: endPos }, cursor);
13927
13958
  if (hovered)
13928
13959
  hoveredState = {
13929
13960
  key: r.key,
@@ -14303,4 +14334,4 @@ exports.withinBounds = withinBounds;
14303
14334
  exports.withinSizeThreshold = withinSizeThreshold;
14304
14335
  exports.xAxisStateZ = xAxisStateZ;
14305
14336
  exports.yAxisStateZ = yAxisStateZ;
14306
- //# sourceMappingURL=LinePlot-BZDm4uxJ.cjs.map
14337
+ //# sourceMappingURL=LinePlot-Bnb8Ufob.cjs.map