@forgecharts/sdk 1.5.83 → 1.5.84

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.
@@ -485,6 +485,15 @@ export declare class ForgeCharts implements IPublicChart {
485
485
  replayStepForward(n?: number): void;
486
486
  /** Rewind the replay head n bars back in time (default 10). */
487
487
  replayRewind(n?: number): void;
488
+ /** Set an exact playback speed (nearest catalogued value). */
489
+ replaySetSpeed(speed: number): void;
490
+ /**
491
+ * Restore a persisted replay session (browser refresh mid-replay). Applies
492
+ * the same gate as entering selection; the cutoff simply lands where it
493
+ * was, paused, with the anchor centered. A cutoff at or beyond the tape's
494
+ * head means the replay had effectively finished — nothing is restored.
495
+ */
496
+ replayRestore(cutoffTime: number, speed?: number): boolean;
488
497
  /** Cycle to the next playback speed; restarts the timer when playing. */
489
498
  replayCycleSpeed(): number;
490
499
  /** Exit replay entirely: the full tape (live head included) returns. */
@@ -1 +1 @@
1
- {"version":3,"file":"ForgeCharts.d.ts","sourceRoot":"","sources":["../../src/api/ForgeCharts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ForgeCharts.d.ts","sourceRoot":"","sources":["../../src/api/ForgeCharts.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9406,6 +9406,16 @@ var PixiChart = class {
9406
9406
  }
9407
9407
  this._markViewportDirty();
9408
9408
  }
9409
+ /**
9410
+ * Pans the viewport so the bar at `time` sits at the horizontal center.
9411
+ * Used by bar replay: the anchor candle the trader picked becomes the
9412
+ * chart's center, with the (empty, dimmed-away) future to its right.
9413
+ */
9414
+ centerOnTime(time) {
9415
+ const px = this._transform.timeToX(time);
9416
+ this._transform.pan(-(px - this._transform.plotWidth / 2), 0);
9417
+ this._markViewportDirty();
9418
+ }
9409
9419
  /** Pans the viewport so the latest bar sits near the right edge. */
9410
9420
  _scrollToLatestBar() {
9411
9421
  let latestTime = -Infinity;
@@ -13176,7 +13186,7 @@ var ForgeCharts = class _ForgeCharts {
13176
13186
  // exists. Selection (the hover shadow of what a click would remove) is a
13177
13187
  // backend surface only Pixi implements; ForgeCharts refuses replay elsewhere.
13178
13188
  /** Playback speeds, in bars per second. */
13179
- static REPLAY_SPEEDS = [0.5, 1, 2, 5, 10];
13189
+ static REPLAY_SPEEDS = [0.5, 1, 2, 5, 10, 15, 20];
13180
13190
  _replay = {
13181
13191
  selecting: false,
13182
13192
  active: false,
@@ -13244,6 +13254,7 @@ var ForgeCharts = class _ForgeCharts {
13244
13254
  this._series.setCutoffTime(time);
13245
13255
  this._replay.active = true;
13246
13256
  this._replay.playing = false;
13257
+ this._core.centerOnTime?.(time);
13247
13258
  this._core.markDirty();
13248
13259
  this._emitReplayState();
13249
13260
  }
@@ -13289,6 +13300,33 @@ var ForgeCharts = class _ForgeCharts {
13289
13300
  this._core.markDirty();
13290
13301
  this._emitReplayState();
13291
13302
  }
13303
+ /** Set an exact playback speed (nearest catalogued value). */
13304
+ replaySetSpeed(speed) {
13305
+ this._assertAlive();
13306
+ let best = 0;
13307
+ for (let i = 0; i < _ForgeCharts.REPLAY_SPEEDS.length; i++) {
13308
+ if (Math.abs(_ForgeCharts.REPLAY_SPEEDS[i] - speed) < Math.abs(_ForgeCharts.REPLAY_SPEEDS[best] - speed)) best = i;
13309
+ }
13310
+ this._replay.speedIdx = best;
13311
+ if (this._replay.playing) this._replayStartTimer();
13312
+ this._emitReplayState();
13313
+ }
13314
+ /**
13315
+ * Restore a persisted replay session (browser refresh mid-replay). Applies
13316
+ * the same gate as entering selection; the cutoff simply lands where it
13317
+ * was, paused, with the anchor centered. A cutoff at or beyond the tape's
13318
+ * head means the replay had effectively finished — nothing is restored.
13319
+ */
13320
+ replayRestore(cutoffTime, speed) {
13321
+ this._assertAlive();
13322
+ if (!canUseBarReplay()) return false;
13323
+ const full = this._series.fullData();
13324
+ const last = full[full.length - 1];
13325
+ if (!last || cutoffTime >= last.time) return false;
13326
+ if (speed !== void 0) this.replaySetSpeed(speed);
13327
+ this._replayCommit(cutoffTime);
13328
+ return true;
13329
+ }
13292
13330
  /** Cycle to the next playback speed; restarts the timer when playing. */
13293
13331
  replayCycleSpeed() {
13294
13332
  this._assertAlive();
@@ -23526,6 +23564,8 @@ var ChartCanvas = forwardRef(
23526
23564
  onPointerToolChange,
23527
23565
  initialPointerTool,
23528
23566
  initialSeriesType,
23567
+ initialReplay,
23568
+ onReplayStateChange,
23529
23569
  initialMagnetMode,
23530
23570
  onMagnetModeChange,
23531
23571
  drawingFavorites: drawingFavoritesProp,
@@ -23716,6 +23756,7 @@ var ChartCanvas = forwardRef(
23716
23756
  }
23717
23757
  chart.on("replayStateChanged", (s) => {
23718
23758
  setReplayState(s.selecting || s.active ? s : null);
23759
+ onReplayStateChangeRef.current?.(s);
23719
23760
  });
23720
23761
  transformRef.current = chart.getTransform();
23721
23762
  const syncChartState = () => {
@@ -24677,6 +24718,36 @@ var ChartCanvas = forwardRef(
24677
24718
  const initialPointerAppliedRef = useRef(false);
24678
24719
  const initialSeriesAppliedRef = useRef(false);
24679
24720
  const [replayState, setReplayState] = useState(null);
24721
+ const [replayBarOffset, setReplayBarOffset] = useState(0);
24722
+ const replayDragRef = useRef(null);
24723
+ const onReplayStateChangeRef = useRef(onReplayStateChange);
24724
+ useEffect(() => {
24725
+ onReplayStateChangeRef.current = onReplayStateChange;
24726
+ }, [onReplayStateChange]);
24727
+ const initialReplayAppliedRef = useRef(false);
24728
+ useEffect(() => {
24729
+ if (initialReplayAppliedRef.current || !initialReplay || bars.length === 0) return;
24730
+ initialReplayAppliedRef.current = true;
24731
+ chartRef.current?.replayRestore(initialReplay.cutoffTime, initialReplay.speed);
24732
+ }, [initialReplay, bars]);
24733
+ useEffect(() => {
24734
+ const move = (e) => {
24735
+ const d = replayDragRef.current;
24736
+ if (!d) return;
24737
+ const host = outerRef.current;
24738
+ const max = host ? Math.max(0, host.clientHeight - 80) : 400;
24739
+ setReplayBarOffset(Math.min(max, Math.max(0, d.startOffset + (d.startY - e.clientY))));
24740
+ };
24741
+ const up = () => {
24742
+ replayDragRef.current = null;
24743
+ };
24744
+ window.addEventListener("pointermove", move);
24745
+ window.addEventListener("pointerup", up);
24746
+ return () => {
24747
+ window.removeEventListener("pointermove", move);
24748
+ window.removeEventListener("pointerup", up);
24749
+ };
24750
+ }, []);
24680
24751
  useEffect(() => {
24681
24752
  if (!initialSeriesAppliedRef.current && initialSeriesType && chartRef.current) {
24682
24753
  initialSeriesAppliedRef.current = true;
@@ -24783,15 +24854,15 @@ var ChartCanvas = forwardRef(
24783
24854
  children: [
24784
24855
  replayState && (() => {
24785
24856
  const dark = effectiveTheme !== "light";
24786
- const bg = dark ? "rgba(24,26,34,0.94)" : "rgba(255,255,255,0.96)";
24787
- const fg = dark ? "#dfe3ee" : "#20242f";
24788
- const line = dark ? "rgba(255,255,255,0.12)" : "rgba(0,0,0,0.12)";
24857
+ const bg = dark ? "#000000" : "#ffffff";
24858
+ const fg = dark ? "#ffffff" : "#000000";
24859
+ const line = dark ? "rgba(255,255,255,0.22)" : "rgba(0,0,0,0.22)";
24789
24860
  const btn = {
24790
24861
  background: "transparent",
24791
24862
  border: "none",
24792
24863
  color: fg,
24793
24864
  cursor: "pointer",
24794
- padding: "5px 9px",
24865
+ padding: "6px 10px",
24795
24866
  borderRadius: 6,
24796
24867
  fontSize: 12,
24797
24868
  display: "inline-flex",
@@ -24799,27 +24870,44 @@ var ChartCanvas = forwardRef(
24799
24870
  gap: 5,
24800
24871
  lineHeight: 1
24801
24872
  };
24873
+ const sep = /* @__PURE__ */ jsx("span", { style: { width: 1, alignSelf: "stretch", background: line, margin: "6px 4px" } });
24802
24874
  const call = (fn) => () => {
24803
24875
  if (chartRef.current) fn(chartRef.current);
24804
24876
  };
24805
24877
  return /* @__PURE__ */ jsxs("div", { style: {
24806
24878
  position: "absolute",
24807
- bottom: 46,
24808
- left: "50%",
24809
- transform: "translateX(-50%)",
24879
+ left: 0,
24880
+ right: 0,
24881
+ bottom: replayBarOffset,
24810
24882
  zIndex: 8,
24811
24883
  display: "flex",
24812
24884
  alignItems: "center",
24813
24885
  gap: 2,
24886
+ height: 38,
24887
+ padding: "0 8px",
24888
+ boxSizing: "border-box",
24814
24889
  background: bg,
24815
24890
  color: fg,
24816
- border: `1px solid ${line}`,
24817
- borderRadius: 8,
24818
- padding: "2px 6px",
24819
- boxShadow: "0 4px 16px rgba(0,0,0,0.25)",
24891
+ borderTop: `1px solid ${line}`,
24892
+ borderBottom: `1px solid ${line}`,
24820
24893
  userSelect: "none"
24821
24894
  }, children: [
24822
- replayState.selecting ? /* @__PURE__ */ jsx("span", { style: { fontSize: 12, padding: "5px 9px" }, children: "Click a bar to start replay from there" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
24895
+ /* @__PURE__ */ jsx(
24896
+ "span",
24897
+ {
24898
+ title: "Drag to move",
24899
+ onPointerDown: (e) => {
24900
+ e.preventDefault();
24901
+ replayDragRef.current = { startY: e.clientY, startOffset: replayBarOffset };
24902
+ },
24903
+ style: { cursor: "ns-resize", padding: "6px 6px", color: fg, opacity: 0.55, fontSize: 12, letterSpacing: 1 },
24904
+ children: "\u2059\u2059"
24905
+ }
24906
+ ),
24907
+ sep,
24908
+ /* @__PURE__ */ jsx("span", { style: { fontSize: 12, fontWeight: 600, letterSpacing: 0.3, padding: "0 6px" }, children: "Replay" }),
24909
+ sep,
24910
+ replayState.selecting ? /* @__PURE__ */ jsx("span", { style: { fontSize: 12, padding: "0 8px", opacity: 0.85 }, children: "Click a bar to start replay from there" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
24823
24911
  /* @__PURE__ */ jsx(
24824
24912
  "button",
24825
24913
  {
@@ -24829,7 +24917,7 @@ var ChartCanvas = forwardRef(
24829
24917
  children: "\u2506\u2190 Select bar"
24830
24918
  }
24831
24919
  ),
24832
- /* @__PURE__ */ jsx("span", { style: { width: 1, alignSelf: "stretch", background: line, margin: "4px 2px" } }),
24920
+ sep,
24833
24921
  /* @__PURE__ */ jsx(
24834
24922
  "button",
24835
24923
  {
@@ -24860,8 +24948,8 @@ var ChartCanvas = forwardRef(
24860
24948
  /* @__PURE__ */ jsxs(
24861
24949
  "button",
24862
24950
  {
24863
- style: { ...btn, fontVariantNumeric: "tabular-nums" },
24864
- title: "Playback speed",
24951
+ style: { ...btn, fontVariantNumeric: "tabular-nums", minWidth: 44, justifyContent: "center" },
24952
+ title: "Playback speed (0.5\u201320 bars per second)",
24865
24953
  onClick: call((c) => c.replayCycleSpeed()),
24866
24954
  children: [
24867
24955
  replayState.speed,
@@ -24870,7 +24958,7 @@ var ChartCanvas = forwardRef(
24870
24958
  }
24871
24959
  )
24872
24960
  ] }),
24873
- /* @__PURE__ */ jsx("span", { style: { width: 1, alignSelf: "stretch", background: line, margin: "4px 2px" } }),
24961
+ /* @__PURE__ */ jsx("span", { style: { flex: 1 } }),
24874
24962
  /* @__PURE__ */ jsx(
24875
24963
  "button",
24876
24964
  {
@@ -26025,7 +26113,7 @@ var demonstrationTool = {
26025
26113
  };
26026
26114
 
26027
26115
  // src/version.ts
26028
- var FORGECHARTS_VERSION = "1.5.83" ;
26116
+ var FORGECHARTS_VERSION = "1.5.84" ;
26029
26117
 
26030
26118
  // src/compatibility.ts
26031
26119
  var MIN_KIT_API = 1;