@forgecharts/sdk 1.5.72 → 1.5.74
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.
- package/dist/index.js +19 -55
- package/dist/index.js.map +1 -1
- package/dist/internal.js +19 -55
- package/dist/internal.js.map +1 -1
- package/dist/pixi/PixiChart.d.ts +8 -1
- package/dist/pixi/PixiChart.d.ts.map +1 -1
- package/dist/pixi/PixiLastPriceRenderer.d.ts.map +1 -1
- package/dist/react/index.js +41 -63
- package/dist/react/index.js.map +1 -1
- package/dist/react/internal.js +42 -64
- package/dist/react/internal.js.map +1 -1
- package/dist/react/shell/ScriptDrawer.d.ts.map +1 -1
- package/dist/react/workspace/toolbars/TopToolbar.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/pixi/PixiChart.d.ts
CHANGED
|
@@ -187,7 +187,14 @@ export declare class PixiChart implements ChartBackend {
|
|
|
187
187
|
private _handleDrawClick;
|
|
188
188
|
private _buildDraftPreview;
|
|
189
189
|
private _snapToBar;
|
|
190
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* Convert a Timeframe string to seconds (internal helper).
|
|
192
|
+
*
|
|
193
|
+
* Delegates to the shared parser — this was one of three private maps, and
|
|
194
|
+
* the only one still keyed '1D'/'1W' uppercase, so canonical '1d' fell to
|
|
195
|
+
* the 3600 fallback here while '1D' fell to the 1m fallback everywhere
|
|
196
|
+
* else. One derivation, one dialect.
|
|
197
|
+
*/
|
|
191
198
|
private _tfToSeconds;
|
|
192
199
|
private _resolveOptions;
|
|
193
200
|
private _resolveColors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PixiChart.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiChart.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PixiChart.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiChart.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PixiLastPriceRenderer.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiLastPriceRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"PixiLastPriceRenderer.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiLastPriceRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAyB7C;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAO;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;IACtC,OAAO,CAAC,QAAQ,CAAK;IACrB,yDAAyD;IACzD,cAAc,EAAE,MAAM,GAAG,SAAS,CAAa;IAC/C,2CAA2C;IAC3C,aAAa,UAAQ;gBAET,KAAK,EAAE,SAAS;IAyB5B,OAAO,IAAI,IAAI;IAOf;;;;OAIG;IACH,IAAI,CACF,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,SAAS,GAClB,OAAO;IA8EV,6EAA6E;IAC7E,WAAW,IAAI,OAAO;CAIvB"}
|
package/dist/react/index.js
CHANGED
|
@@ -47,8 +47,14 @@ function timeframeToMs(tf) {
|
|
|
47
47
|
const secs = parseTfSeconds(tf);
|
|
48
48
|
return secs !== null ? secs * 1e3 : null;
|
|
49
49
|
}
|
|
50
|
+
function normalizeTimeframe(tf) {
|
|
51
|
+
const m = /^(\d+)([a-zA-Z])$/.exec(tf.trim());
|
|
52
|
+
if (!m) return tf.trim();
|
|
53
|
+
const unit = m[2];
|
|
54
|
+
return m[1] + (unit === "M" ? unit : unit.toLowerCase());
|
|
55
|
+
}
|
|
50
56
|
function parseTfSeconds(tf) {
|
|
51
|
-
const m = /^(\d+)(s|m|h|d|w|M)$/.exec(tf);
|
|
57
|
+
const m = /^(\d+)(s|m|h|d|w|M)$/.exec(normalizeTimeframe(tf));
|
|
52
58
|
if (!m) return null;
|
|
53
59
|
const n = parseInt(m[1], 10);
|
|
54
60
|
const unit = m[2];
|
|
@@ -64,6 +70,7 @@ function parseTfSeconds(tf) {
|
|
|
64
70
|
return unitSec !== void 0 ? n * unitSec : null;
|
|
65
71
|
}
|
|
66
72
|
function getBucketStart(timeMs, timeframe) {
|
|
73
|
+
timeframe = normalizeTimeframe(timeframe);
|
|
67
74
|
if (timeframe === "1w") return getWeekBucketStart(timeMs);
|
|
68
75
|
if (timeframe === "1M") return getMonthBucketStart(timeMs);
|
|
69
76
|
if (timeframe === "3M") return getQuarterBucketStart(timeMs);
|
|
@@ -7670,32 +7677,7 @@ function formatCountdown(secs) {
|
|
|
7670
7677
|
return `${m}:${String(s).padStart(2, "0")}`;
|
|
7671
7678
|
}
|
|
7672
7679
|
function tfToSeconds(tf) {
|
|
7673
|
-
|
|
7674
|
-
"1s": 1,
|
|
7675
|
-
"5s": 5,
|
|
7676
|
-
"10s": 10,
|
|
7677
|
-
"15s": 15,
|
|
7678
|
-
"30s": 30,
|
|
7679
|
-
"1m": 60,
|
|
7680
|
-
"3m": 180,
|
|
7681
|
-
"5m": 300,
|
|
7682
|
-
"15m": 900,
|
|
7683
|
-
"30m": 1800,
|
|
7684
|
-
"1h": 3600,
|
|
7685
|
-
"2h": 7200,
|
|
7686
|
-
"4h": 14400,
|
|
7687
|
-
"6h": 21600,
|
|
7688
|
-
"8h": 28800,
|
|
7689
|
-
"12h": 43200,
|
|
7690
|
-
"1D": 86400,
|
|
7691
|
-
"3D": 259200,
|
|
7692
|
-
"1W": 604800,
|
|
7693
|
-
"1M": 2592e3,
|
|
7694
|
-
"3M": 7776e3,
|
|
7695
|
-
"6M": 15552e3,
|
|
7696
|
-
"12M": 31536e3
|
|
7697
|
-
};
|
|
7698
|
-
return map[tf] ?? 3600;
|
|
7680
|
+
return parseTfSeconds(tf) ?? 3600;
|
|
7699
7681
|
}
|
|
7700
7682
|
var PixiLastPriceRenderer = class {
|
|
7701
7683
|
_lineGfx;
|
|
@@ -9680,34 +9662,16 @@ var PixiChart = class {
|
|
|
9680
9662
|
}
|
|
9681
9663
|
return { time: bestBar.time, price: snappedPrice };
|
|
9682
9664
|
}
|
|
9683
|
-
/**
|
|
9665
|
+
/**
|
|
9666
|
+
* Convert a Timeframe string to seconds (internal helper).
|
|
9667
|
+
*
|
|
9668
|
+
* Delegates to the shared parser — this was one of three private maps, and
|
|
9669
|
+
* the only one still keyed '1D'/'1W' uppercase, so canonical '1d' fell to
|
|
9670
|
+
* the 3600 fallback here while '1D' fell to the 1m fallback everywhere
|
|
9671
|
+
* else. One derivation, one dialect.
|
|
9672
|
+
*/
|
|
9684
9673
|
_tfToSeconds(tf) {
|
|
9685
|
-
|
|
9686
|
-
"1s": 1,
|
|
9687
|
-
"5s": 5,
|
|
9688
|
-
"10s": 10,
|
|
9689
|
-
"15s": 15,
|
|
9690
|
-
"30s": 30,
|
|
9691
|
-
"1m": 60,
|
|
9692
|
-
"3m": 180,
|
|
9693
|
-
"5m": 300,
|
|
9694
|
-
"15m": 900,
|
|
9695
|
-
"30m": 1800,
|
|
9696
|
-
"1h": 3600,
|
|
9697
|
-
"2h": 7200,
|
|
9698
|
-
"4h": 14400,
|
|
9699
|
-
"6h": 21600,
|
|
9700
|
-
"8h": 28800,
|
|
9701
|
-
"12h": 43200,
|
|
9702
|
-
"1D": 86400,
|
|
9703
|
-
"3D": 259200,
|
|
9704
|
-
"1W": 604800,
|
|
9705
|
-
"1M": 2592e3,
|
|
9706
|
-
"3M": 7776e3,
|
|
9707
|
-
"6M": 15552e3,
|
|
9708
|
-
"12M": 31536e3
|
|
9709
|
-
};
|
|
9710
|
-
return map[tf] ?? 3600;
|
|
9674
|
+
return parseTfSeconds(tf) ?? 3600;
|
|
9711
9675
|
}
|
|
9712
9676
|
// ─── Option resolvers ────────────────────────────────────────────────────────
|
|
9713
9677
|
_resolveOptions(opts) {
|
|
@@ -18144,7 +18108,7 @@ var DEMONSTRATION_STROKE = "rgba(255, 200, 50, 0.7)";
|
|
|
18144
18108
|
var DEMONSTRATION_COLOR = "var(--crosshair-overlay, rgba(255,255,255,0.75))";
|
|
18145
18109
|
|
|
18146
18110
|
// src/version.ts
|
|
18147
|
-
var FORGECHARTS_VERSION = "1.5.
|
|
18111
|
+
var FORGECHARTS_VERSION = "1.5.74" ;
|
|
18148
18112
|
function applyRuntimeConfig(caps, config) {
|
|
18149
18113
|
if (!config) return caps;
|
|
18150
18114
|
const orderEntry = config.enableOrderEntry === false ? false : caps.orderEntry;
|
|
@@ -25981,6 +25945,7 @@ function IndicatorsDialog({ onAdd, onClose, maxIndicators, getAuthToken }) {
|
|
|
25981
25945
|
] })
|
|
25982
25946
|
] }) });
|
|
25983
25947
|
}
|
|
25948
|
+
var chipLabel = (tf) => /^\d+[dw]$/.test(tf) ? tf.toUpperCase() : tf;
|
|
25984
25949
|
var TF_LABELS = {
|
|
25985
25950
|
"1m": "1 minute",
|
|
25986
25951
|
"2m": "2 minutes",
|
|
@@ -26420,7 +26385,7 @@ function TopToolbar({
|
|
|
26420
26385
|
onClick: () => onTimeframeChange(tf),
|
|
26421
26386
|
children: tf
|
|
26422
26387
|
},
|
|
26423
|
-
tf
|
|
26388
|
+
chipLabel(tf)
|
|
26424
26389
|
)),
|
|
26425
26390
|
/* @__PURE__ */ jsx(
|
|
26426
26391
|
"button",
|
|
@@ -29988,6 +29953,7 @@ function ScriptDrawer({ onClose, onAddIndicator, apiUrl, getAuthToken }) {
|
|
|
29988
29953
|
const [savedScripts, setSavedScripts] = useState([]);
|
|
29989
29954
|
const [scriptsMenuOpen, setScriptsMenuOpen] = useState(false);
|
|
29990
29955
|
const [saving, setSaving] = useState(false);
|
|
29956
|
+
const [saveError, setSaveError] = useState(null);
|
|
29991
29957
|
const [activeScriptId, setActiveScriptId] = useState(null);
|
|
29992
29958
|
const [saveNameInput, setSaveNameInput] = useState("");
|
|
29993
29959
|
const [showSaveNamePrompt, setShowSaveNamePrompt] = useState(false);
|
|
@@ -30081,6 +30047,7 @@ function ScriptDrawer({ onClose, onAddIndicator, apiUrl, getAuthToken }) {
|
|
|
30081
30047
|
}, [scriptsMenuOpen]);
|
|
30082
30048
|
const handleSaveScript = useCallback(async (name) => {
|
|
30083
30049
|
setSaving(true);
|
|
30050
|
+
setSaveError(null);
|
|
30084
30051
|
const base = apiUrl ?? "";
|
|
30085
30052
|
const auth = await _authHeaders();
|
|
30086
30053
|
const scriptSource = code;
|
|
@@ -30088,27 +30055,28 @@ function ScriptDrawer({ onClose, onAddIndicator, apiUrl, getAuthToken }) {
|
|
|
30088
30055
|
const scriptName = name ?? extractScriptName(scriptSource);
|
|
30089
30056
|
try {
|
|
30090
30057
|
if (activeScriptId) {
|
|
30091
|
-
await fetch(`${base}/api/scripts/${encodeURIComponent(activeScriptId)}/versions`, {
|
|
30058
|
+
const res = await fetch(`${base}/api/scripts/${encodeURIComponent(activeScriptId)}/versions`, {
|
|
30092
30059
|
method: "POST",
|
|
30093
30060
|
headers: { "Content-Type": "application/json", ...auth },
|
|
30094
30061
|
body: JSON.stringify({ source: scriptSource })
|
|
30095
30062
|
});
|
|
30063
|
+
if (!res.ok) throw new Error(`save failed (${res.status})`);
|
|
30096
30064
|
} else {
|
|
30097
30065
|
const res = await fetch(`${base}/api/scripts`, {
|
|
30098
30066
|
method: "POST",
|
|
30099
30067
|
headers: { "Content-Type": "application/json", ...auth },
|
|
30100
30068
|
body: JSON.stringify({ name: scriptName, language: scriptLang, source: scriptSource })
|
|
30101
30069
|
});
|
|
30102
|
-
if (res.ok) {
|
|
30103
|
-
|
|
30104
|
-
|
|
30105
|
-
}
|
|
30070
|
+
if (!res.ok) throw new Error(`save failed (${res.status})`);
|
|
30071
|
+
const created = await res.json();
|
|
30072
|
+
setActiveScriptId(created.id);
|
|
30106
30073
|
}
|
|
30107
30074
|
await fetchSavedScripts();
|
|
30108
|
-
|
|
30075
|
+
setShowSaveNamePrompt(false);
|
|
30076
|
+
} catch (err) {
|
|
30077
|
+
setSaveError(err instanceof Error ? err.message : "save failed");
|
|
30109
30078
|
}
|
|
30110
30079
|
setSaving(false);
|
|
30111
|
-
setShowSaveNamePrompt(false);
|
|
30112
30080
|
}, [apiUrl, _authHeaders, code, activeScriptId, extractScriptName, fetchSavedScripts]);
|
|
30113
30081
|
const handleSaveClick = useCallback(() => {
|
|
30114
30082
|
if (activeScriptId) {
|
|
@@ -30211,6 +30179,16 @@ function ScriptDrawer({ onClose, onAddIndicator, apiUrl, getAuthToken }) {
|
|
|
30211
30179
|
]
|
|
30212
30180
|
}
|
|
30213
30181
|
),
|
|
30182
|
+
saveError && /* @__PURE__ */ jsx(
|
|
30183
|
+
"span",
|
|
30184
|
+
{
|
|
30185
|
+
className: "script-save-error",
|
|
30186
|
+
role: "alert",
|
|
30187
|
+
title: saveError,
|
|
30188
|
+
style: { color: "var(--fc-danger, #e5484d)", fontSize: 11, marginLeft: 6 },
|
|
30189
|
+
children: saveError
|
|
30190
|
+
}
|
|
30191
|
+
),
|
|
30214
30192
|
/* @__PURE__ */ jsxs("div", { className: "script-my-scripts-wrap", ref: scriptsMenuRef, children: [
|
|
30215
30193
|
/* @__PURE__ */ jsxs(
|
|
30216
30194
|
"button",
|