@forgecharts/sdk 1.5.47 → 1.5.49
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/datafeed/DatafeedConnector.d.ts +2 -1
- package/dist/datafeed/DatafeedConnector.d.ts.map +1 -1
- package/dist/index.js +65 -62
- package/dist/index.js.map +1 -1
- package/dist/internal.js +65 -62
- package/dist/internal.js.map +1 -1
- package/dist/react/canvas/ChartContextMenu.d.ts +1 -7
- package/dist/react/canvas/ChartContextMenu.d.ts.map +1 -1
- package/dist/react/index.js +65 -62
- package/dist/react/index.js.map +1 -1
- package/dist/react/internal.js +65 -62
- package/dist/react/internal.js.map +1 -1
- package/package.json +1 -1
|
@@ -69,7 +69,8 @@ export declare class DatafeedConnector {
|
|
|
69
69
|
*/
|
|
70
70
|
private _emptyPageStreak;
|
|
71
71
|
/**
|
|
72
|
-
* Safety timer: clears `batchPending` if bar_batch never arrives
|
|
72
|
+
* Safety timer: clears `batchPending` if bar_batch never arrives, so live
|
|
73
|
+
* ticks resume. It no longer gates the chart reveal.
|
|
73
74
|
* Prevents the chart from staying blank when a provider doesn't fire onHistoricalReady.
|
|
74
75
|
*/
|
|
75
76
|
private _batchSafetyTimer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatafeedConnector.d.ts","sourceRoot":"","sources":["../../src/datafeed/DatafeedConnector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"DatafeedConnector.d.ts","sourceRoot":"","sources":["../../src/datafeed/DatafeedConnector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AA0DhD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACnE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClE,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IAEzD;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,UAAU,CAAS;IAE3B,oEAAoE;IACpE,OAAO,CAAC,cAAc,CAAS;IAC/B,6FAA6F;IAC7F,OAAO,CAAC,cAAc,CAAS;IAC/B,gFAAgF;IAChF,OAAO,CAAC,eAAe,CAAK;IAC5B;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAuB;IAC9C;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAa;IAErC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAA8C;gBAE3D,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB;IAQ/E;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IA2KnD;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAIlB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAKrD;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAOf;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IA0G3D,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;CAoBtB"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TextStyle, Application, Container, Graphics, Text, FillGradient, CanvasTextMetrics } from 'pixi.js';
|
|
2
2
|
import { forwardRef, useRef, useState, useEffect, useImperativeHandle, useCallback, createContext, useMemo, useContext } from 'react';
|
|
3
3
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
4
|
-
import ReactDOM from 'react-dom';
|
|
4
|
+
import ReactDOM, { createPortal } from 'react-dom';
|
|
5
5
|
|
|
6
6
|
// ../shared/src/time/timeframeRegistry.ts
|
|
7
7
|
function isCalendarTimeframe(key) {
|
|
@@ -10343,6 +10343,7 @@ function toOHLCV(bar) {
|
|
|
10343
10343
|
function _historyWindow(tf) {
|
|
10344
10344
|
return 500 * (parseTfSeconds(tf) ?? 3600);
|
|
10345
10345
|
}
|
|
10346
|
+
var BATCH_SUPPRESSION_MS = 1e4;
|
|
10346
10347
|
function _pageSize(tf) {
|
|
10347
10348
|
return 500 * (parseTfSeconds(tf) ?? 3600);
|
|
10348
10349
|
}
|
|
@@ -10378,7 +10379,8 @@ var DatafeedConnector = class {
|
|
|
10378
10379
|
*/
|
|
10379
10380
|
_emptyPageStreak = 0;
|
|
10380
10381
|
/**
|
|
10381
|
-
* Safety timer: clears `batchPending` if bar_batch never arrives
|
|
10382
|
+
* Safety timer: clears `batchPending` if bar_batch never arrives, so live
|
|
10383
|
+
* ticks resume. It no longer gates the chart reveal.
|
|
10382
10384
|
* Prevents the chart from staying blank when a provider doesn't fire onHistoricalReady.
|
|
10383
10385
|
*/
|
|
10384
10386
|
_batchSafetyTimer = null;
|
|
@@ -10453,9 +10455,7 @@ var DatafeedConnector = class {
|
|
|
10453
10455
|
loadedFired = true;
|
|
10454
10456
|
this._cb.onLoaded(symbol, timeframe, engine.getBars().length);
|
|
10455
10457
|
};
|
|
10456
|
-
|
|
10457
|
-
fireLoaded();
|
|
10458
|
-
}
|
|
10458
|
+
fireLoaded();
|
|
10459
10459
|
const prefetchTo = from;
|
|
10460
10460
|
const prefetchFrom = from - _pageSize(timeframe);
|
|
10461
10461
|
void this._datafeed.getHistoricalBars(symbol, timeframe, prefetchFrom, prefetchTo - 1).then(({ bars: prefetchedBars }) => {
|
|
@@ -10469,8 +10469,7 @@ var DatafeedConnector = class {
|
|
|
10469
10469
|
this._batchSafetyTimer = setTimeout(() => {
|
|
10470
10470
|
batchPending = false;
|
|
10471
10471
|
this._batchSafetyTimer = null;
|
|
10472
|
-
|
|
10473
|
-
}, 6e4);
|
|
10472
|
+
}, BATCH_SUPPRESSION_MS);
|
|
10474
10473
|
}
|
|
10475
10474
|
this._datafeed.subscribeBars(symbol, timeframe, (bar) => {
|
|
10476
10475
|
if (this._activeUID === uid) {
|
|
@@ -21282,60 +21281,64 @@ function ChartContextMenu({
|
|
|
21282
21281
|
onClearIndicators,
|
|
21283
21282
|
onResetView
|
|
21284
21283
|
}) {
|
|
21285
|
-
|
|
21286
|
-
|
|
21287
|
-
|
|
21288
|
-
onClose()
|
|
21289
|
-
|
|
21290
|
-
|
|
21291
|
-
|
|
21292
|
-
|
|
21293
|
-
|
|
21294
|
-
|
|
21295
|
-
|
|
21296
|
-
|
|
21297
|
-
|
|
21298
|
-
|
|
21299
|
-
|
|
21300
|
-
|
|
21301
|
-
|
|
21302
|
-
|
|
21303
|
-
|
|
21304
|
-
"
|
|
21305
|
-
|
|
21306
|
-
|
|
21307
|
-
|
|
21308
|
-
|
|
21309
|
-
|
|
21310
|
-
|
|
21311
|
-
|
|
21312
|
-
|
|
21313
|
-
|
|
21314
|
-
|
|
21315
|
-
|
|
21316
|
-
"
|
|
21317
|
-
|
|
21318
|
-
|
|
21319
|
-
|
|
21320
|
-
|
|
21321
|
-
|
|
21322
|
-
|
|
21323
|
-
|
|
21324
|
-
|
|
21325
|
-
|
|
21326
|
-
|
|
21327
|
-
|
|
21328
|
-
|
|
21329
|
-
|
|
21330
|
-
|
|
21331
|
-
|
|
21332
|
-
|
|
21333
|
-
|
|
21334
|
-
|
|
21335
|
-
|
|
21336
|
-
|
|
21337
|
-
|
|
21338
|
-
|
|
21284
|
+
if (typeof document === "undefined") return null;
|
|
21285
|
+
return createPortal(
|
|
21286
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
21287
|
+
/* @__PURE__ */ jsx("div", { className: "chart-ctx-backdrop", onClick: onClose, onContextMenu: (e) => {
|
|
21288
|
+
e.preventDefault();
|
|
21289
|
+
onClose();
|
|
21290
|
+
} }),
|
|
21291
|
+
/* @__PURE__ */ jsxs("div", { className: "chart-ctx-menu", style: { left: x, top: y }, children: [
|
|
21292
|
+
/* @__PURE__ */ jsx(
|
|
21293
|
+
"button",
|
|
21294
|
+
{
|
|
21295
|
+
className: "chart-ctx-item",
|
|
21296
|
+
onClick: () => {
|
|
21297
|
+
onSettings();
|
|
21298
|
+
onClose();
|
|
21299
|
+
},
|
|
21300
|
+
children: "Settings\u2026"
|
|
21301
|
+
}
|
|
21302
|
+
),
|
|
21303
|
+
/* @__PURE__ */ jsx("div", { className: "chart-ctx-divider" }),
|
|
21304
|
+
/* @__PURE__ */ jsx(
|
|
21305
|
+
"button",
|
|
21306
|
+
{
|
|
21307
|
+
className: "chart-ctx-item",
|
|
21308
|
+
onClick: () => {
|
|
21309
|
+
onResetView();
|
|
21310
|
+
onClose();
|
|
21311
|
+
},
|
|
21312
|
+
children: "Reset Chart View"
|
|
21313
|
+
}
|
|
21314
|
+
),
|
|
21315
|
+
/* @__PURE__ */ jsx("div", { className: "chart-ctx-divider" }),
|
|
21316
|
+
/* @__PURE__ */ jsx(
|
|
21317
|
+
"button",
|
|
21318
|
+
{
|
|
21319
|
+
className: "chart-ctx-item chart-ctx-item--danger",
|
|
21320
|
+
onClick: () => {
|
|
21321
|
+
onClearIndicators();
|
|
21322
|
+
onClose();
|
|
21323
|
+
},
|
|
21324
|
+
children: "Clear Indicators"
|
|
21325
|
+
}
|
|
21326
|
+
),
|
|
21327
|
+
/* @__PURE__ */ jsx(
|
|
21328
|
+
"button",
|
|
21329
|
+
{
|
|
21330
|
+
className: "chart-ctx-item chart-ctx-item--danger",
|
|
21331
|
+
onClick: () => {
|
|
21332
|
+
onClearDrawings();
|
|
21333
|
+
onClose();
|
|
21334
|
+
},
|
|
21335
|
+
children: "Clear Drawings"
|
|
21336
|
+
}
|
|
21337
|
+
)
|
|
21338
|
+
] })
|
|
21339
|
+
] }),
|
|
21340
|
+
document.body
|
|
21341
|
+
);
|
|
21339
21342
|
}
|
|
21340
21343
|
var SECTIONS = [
|
|
21341
21344
|
{ id: "symbol", label: "Symbol", icon: "\u{1D446}" },
|
|
@@ -25513,7 +25516,7 @@ var demonstrationTool = {
|
|
|
25513
25516
|
};
|
|
25514
25517
|
|
|
25515
25518
|
// src/version.ts
|
|
25516
|
-
var FORGECHARTS_VERSION = "1.5.
|
|
25519
|
+
var FORGECHARTS_VERSION = "1.5.49" ;
|
|
25517
25520
|
|
|
25518
25521
|
// src/compatibility.ts
|
|
25519
25522
|
var MIN_KIT_API = 1;
|