@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.
@@ -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 within 60 s.
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;AAiDhD;;;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;;;OAGG;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;IA+JnD;;;;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"}
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 within 60 s.
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
- if (lastBarTime == null) {
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
- fireLoaded();
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
- return /* @__PURE__ */ jsxs(Fragment, { children: [
21286
- /* @__PURE__ */ jsx("div", { className: "chart-ctx-backdrop", onClick: onClose, onContextMenu: (e) => {
21287
- e.preventDefault();
21288
- onClose();
21289
- } }),
21290
- /* @__PURE__ */ jsxs("div", { className: "chart-ctx-menu", style: { left: x, top: y }, children: [
21291
- /* @__PURE__ */ jsx(
21292
- "button",
21293
- {
21294
- className: "chart-ctx-item",
21295
- onClick: () => {
21296
- onSettings();
21297
- onClose();
21298
- },
21299
- children: "Settings\u2026"
21300
- }
21301
- ),
21302
- /* @__PURE__ */ jsx("div", { className: "chart-ctx-divider" }),
21303
- /* @__PURE__ */ jsx(
21304
- "button",
21305
- {
21306
- className: "chart-ctx-item",
21307
- onClick: () => {
21308
- onResetView();
21309
- onClose();
21310
- },
21311
- children: "Reset Chart View"
21312
- }
21313
- ),
21314
- /* @__PURE__ */ jsx("div", { className: "chart-ctx-divider" }),
21315
- /* @__PURE__ */ jsx(
21316
- "button",
21317
- {
21318
- className: "chart-ctx-item chart-ctx-item--danger",
21319
- onClick: () => {
21320
- onClearIndicators();
21321
- onClose();
21322
- },
21323
- children: "Clear Indicators"
21324
- }
21325
- ),
21326
- /* @__PURE__ */ jsx(
21327
- "button",
21328
- {
21329
- className: "chart-ctx-item chart-ctx-item--danger",
21330
- onClick: () => {
21331
- onClearDrawings();
21332
- onClose();
21333
- },
21334
- children: "Clear Drawings"
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.47" ;
25519
+ var FORGECHARTS_VERSION = "1.5.49" ;
25517
25520
 
25518
25521
  // src/compatibility.ts
25519
25522
  var MIN_KIT_API = 1;