@tradecanvas/chart 1.51.0 → 1.53.0

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 (119) hide show
  1. package/dist/Chart.d.ts +275 -10
  2. package/dist/Chart.d.ts.map +1 -1
  3. package/dist/DataManager.d.ts +24 -0
  4. package/dist/DataManager.d.ts.map +1 -1
  5. package/dist/HistoryPager.d.ts +12 -2
  6. package/dist/HistoryPager.d.ts.map +1 -1
  7. package/dist/{LayoutSession-Qkx1huV-.js → LayoutSession-D7uQq3jX.js} +1225 -474
  8. package/dist/LayoutSession-D7uQq3jX.js.map +1 -0
  9. package/dist/LayoutSession-nlhT-EH7.cjs +2 -0
  10. package/dist/LayoutSession-nlhT-EH7.cjs.map +1 -0
  11. package/dist/SeriesStore.d.ts +58 -4
  12. package/dist/SeriesStore.d.ts.map +1 -1
  13. package/dist/charts/ChartTypeStrategy.d.ts +32 -5
  14. package/dist/charts/ChartTypeStrategy.d.ts.map +1 -1
  15. package/dist/frameworks/feedBars.d.ts +22 -6
  16. package/dist/frameworks/feedBars.d.ts.map +1 -1
  17. package/dist/{i18n-DFTQ73Cz.js → i18n-CwCzRLKW.js} +39 -1
  18. package/dist/i18n-CwCzRLKW.js.map +1 -0
  19. package/dist/i18n-D7B7uFrN.cjs +2 -0
  20. package/dist/i18n-D7B7uFrN.cjs.map +1 -0
  21. package/dist/index.cjs +1 -1
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.ts +6 -6
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +124 -101
  26. package/dist/index.js.map +1 -1
  27. package/dist/io/resampleOHLCV.d.ts +10 -4
  28. package/dist/io/resampleOHLCV.d.ts.map +1 -1
  29. package/dist/replay/ReplayStepLoader.d.ts +52 -0
  30. package/dist/replay/ReplayStepLoader.d.ts.map +1 -0
  31. package/dist/replay/intrabarPath.d.ts +44 -0
  32. package/dist/replay/intrabarPath.d.ts.map +1 -0
  33. package/dist/replay/replayStep.d.ts +18 -0
  34. package/dist/replay/replayStep.d.ts.map +1 -0
  35. package/dist/widget/ChartWidget.d.ts +329 -13
  36. package/dist/widget/ChartWidget.d.ts.map +1 -1
  37. package/dist/widget/ChartWidgetGrid.d.ts.map +1 -1
  38. package/dist/widget/WidgetDataWindow.d.ts +7 -0
  39. package/dist/widget/WidgetDataWindow.d.ts.map +1 -1
  40. package/dist/widget/WidgetHotkeySheet.d.ts.map +1 -1
  41. package/dist/widget/WidgetIndicatorLegend.d.ts +21 -3
  42. package/dist/widget/WidgetIndicatorLegend.d.ts.map +1 -1
  43. package/dist/widget/WidgetIndicatorSettings.d.ts.map +1 -1
  44. package/dist/widget/WidgetObjectTree.d.ts +7 -1
  45. package/dist/widget/WidgetObjectTree.d.ts.map +1 -1
  46. package/dist/widget/WidgetReplayBar.d.ts +101 -23
  47. package/dist/widget/WidgetReplayBar.d.ts.map +1 -1
  48. package/dist/widget/WidgetSettings.d.ts +11 -3
  49. package/dist/widget/WidgetSettings.d.ts.map +1 -1
  50. package/dist/widget/chartSettingsStore.d.ts +76 -0
  51. package/dist/widget/chartSettingsStore.d.ts.map +1 -0
  52. package/dist/widget/chartTemplates.d.ts.map +1 -1
  53. package/dist/widget/compareLegend.d.ts +20 -0
  54. package/dist/widget/compareLegend.d.ts.map +1 -0
  55. package/dist/widget/index.cjs +382 -166
  56. package/dist/widget/index.cjs.map +1 -1
  57. package/dist/widget/index.d.ts +1 -1
  58. package/dist/widget/index.d.ts.map +1 -1
  59. package/dist/widget/index.js +2947 -2041
  60. package/dist/widget/index.js.map +1 -1
  61. package/dist/widget/indicatorInputWords.d.ts +19 -0
  62. package/dist/widget/indicatorInputWords.d.ts.map +1 -0
  63. package/dist/widget/locales/ar.d.ts.map +1 -1
  64. package/dist/widget/locales/cs.d.ts.map +1 -1
  65. package/dist/widget/locales/da.d.ts.map +1 -1
  66. package/dist/widget/locales/de.d.ts.map +1 -1
  67. package/dist/widget/locales/el.d.ts.map +1 -1
  68. package/dist/widget/locales/en.d.ts +20 -0
  69. package/dist/widget/locales/en.d.ts.map +1 -1
  70. package/dist/widget/locales/es.d.ts.map +1 -1
  71. package/dist/widget/locales/et.d.ts.map +1 -1
  72. package/dist/widget/locales/fa.d.ts.map +1 -1
  73. package/dist/widget/locales/fr.d.ts.map +1 -1
  74. package/dist/widget/locales/he.d.ts.map +1 -1
  75. package/dist/widget/locales/hu.d.ts.map +1 -1
  76. package/dist/widget/locales/id.d.ts.map +1 -1
  77. package/dist/widget/locales/index.cjs +1 -1
  78. package/dist/widget/locales/index.cjs.map +1 -1
  79. package/dist/widget/locales/index.js +533 -1
  80. package/dist/widget/locales/index.js.map +1 -1
  81. package/dist/widget/locales/it.d.ts.map +1 -1
  82. package/dist/widget/locales/ja.d.ts.map +1 -1
  83. package/dist/widget/locales/ko.d.ts.map +1 -1
  84. package/dist/widget/locales/ms.d.ts.map +1 -1
  85. package/dist/widget/locales/nb.d.ts.map +1 -1
  86. package/dist/widget/locales/nl.d.ts.map +1 -1
  87. package/dist/widget/locales/pl.d.ts.map +1 -1
  88. package/dist/widget/locales/pt.d.ts.map +1 -1
  89. package/dist/widget/locales/ro.d.ts.map +1 -1
  90. package/dist/widget/locales/ru.d.ts.map +1 -1
  91. package/dist/widget/locales/sk.d.ts.map +1 -1
  92. package/dist/widget/locales/sv.d.ts.map +1 -1
  93. package/dist/widget/locales/th.d.ts.map +1 -1
  94. package/dist/widget/locales/tr.d.ts.map +1 -1
  95. package/dist/widget/locales/vi.d.ts.map +1 -1
  96. package/dist/widget/locales/zh.d.ts.map +1 -1
  97. package/dist/widget/locales/zhHant.d.ts.map +1 -1
  98. package/dist/widget/settingsRows.d.ts +12 -3
  99. package/dist/widget/settingsRows.d.ts.map +1 -1
  100. package/dist/widget/symbolInfoView.d.ts.map +1 -1
  101. package/dist/widget/types.d.ts +75 -7
  102. package/dist/widget/types.d.ts.map +1 -1
  103. package/dist/widget/widgetCompare.d.ts +18 -0
  104. package/dist/widget/widgetCompare.d.ts.map +1 -1
  105. package/dist/widget/widgetLayout.d.ts +13 -1
  106. package/dist/widget/widgetLayout.d.ts.map +1 -1
  107. package/dist/widget/widgetSettingsLook.d.ts +3 -1
  108. package/dist/widget/widgetSettingsLook.d.ts.map +1 -1
  109. package/dist/widget/widgetShareState.d.ts +8 -0
  110. package/dist/widget/widgetShareState.d.ts.map +1 -1
  111. package/dist/widget/widgetTimezones.d.ts +4 -1
  112. package/dist/widget/widgetTimezones.d.ts.map +1 -1
  113. package/package.json +3 -3
  114. package/dist/LayoutSession-DuV9kpdQ.cjs +0 -2
  115. package/dist/LayoutSession-DuV9kpdQ.cjs.map +0 -1
  116. package/dist/LayoutSession-Qkx1huV-.js.map +0 -1
  117. package/dist/i18n-Bg_UJSNs.cjs +0 -2
  118. package/dist/i18n-Bg_UJSNs.cjs.map +0 -1
  119. package/dist/i18n-DFTQ73Cz.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { C as e, S as t, _ as n, a as r, b as i, c as a, d as o, f as s, g as c, h as l, i as u, l as ee, m as te, n as ne, o as re, p as ie, r as ae, s as oe, t as se, u as ce, v as le, w as d, x as ue, y as de } from "./LayoutSession-Qkx1huV-.js";
2
- import { CHART_STYLE_KEYS as fe, DARK_TERMINAL as pe, DARK_THEME as me, DARK_THEME as he, DEFAULT_DRAWING_STYLE as ge, DEFAULT_FONT_FAMILY as _e, DEFAULT_RECONNECT as ve, DEFAULT_SIGNAL_STYLE as ye, DEFAULT_STREAM_CONFIG as be, DEFAULT_TIMEFRAME_FAVORITES as xe, DEFAULT_TRADE_ZONE_STYLE as Se, DEFAULT_TRADING_CONFIG as Ce, HNX_SESSIONS as we, HOSE_SESSIONS as Te, LIGHT_THEME as Ee, LIGHT_THEME as De, MARKET_CRYPTO as f, MARKET_HNX as p, MARKET_HOSE as m, MARKET_HOSE_ETF as h, MARKET_NYSE as g, MARKET_UPCOM as _, MARKET_VN30F as v, MS_TIME_THRESHOLD as y, PRICE_SOURCES as b, SANS_FONT_FAMILY as x, TC_PALETTE as S, TC_SERIES_COLORS as C, TIMEFRAMES_CRYPTO as w, TIMEFRAMES_FOREX as T, TIMEFRAMES_STOCK as E, UPCOM_SESSIONS as Oe, VN30F_SESSIONS as ke, VN_COLORS as Ae, VOLUME_ALPHA as je, barTimeUnit as Me, barsAreDaily as Ne, computePriceLimits as Pe, createVNTheme as Fe, formatFraction as Ie, formatNumber as Le, formatVND as Re, formatVolumeLoc as ze, fractionTick as Be, getCurrentSession as Ve, getLocale as He, indicatorSource as Ue, isPriceSource as We, isTimeFrame as Ge, isValidTimeZone as Ke, marketStatus as qe, normalizeBar as Je, normalizeBarTime as Ye, offsetAt as Xe, parseIndicatorSource as Ze, parseTimeframe as Qe, pickBaseTimeframe as $e, priceFormatterFor as et, priceStepAt as tt, rankSymbols as nt, readNews as rt, readQuote as it, registerLocale as at, resampleBars as ot, roundToPriceStep as st, scaleMarketPrices as ct, setLocale as lt, sourcePrice as ut, stepDecimals as dt, symbolTimeZone as ft, t as pt, tickBarCount as mt, timeframeBucketStart as ht, timeframeToMs as gt, vn30fContracts as _t, vn30fLastTradingDay as vt, volumeColor as yt, wallToUtc as bt, zoneOffsetMinutes as xt } from "@tradecanvas/commons";
3
- import { AlertManager as St, Animator as Ct, BarCountdown as wt, BaseFinanceChart as D, BinanceAdapter as Tt, BybitAdapter as Et, CANDLE_PATTERNS as Dt, ChartLegend as Ot, ChartStateManager as kt, CoinbaseAdapter as At, CompareRenderer as jt, CrosshairTooltip as Mt, CurrentPriceLine as Nt, DEFAULT_LEGEND_CONFIG as Pt, DEFAULT_MAX_WEBGL_CHARTS as Ft, DEFAULT_SESSION_HOURS as It, DataExporter as Lt, DrawingBase as Rt, Easing as zt, FinanceCrosshair as O, GROUP_HEADER as Bt, INDICATOR_CATEGORIES as Vt, IndicatorBase as Ht, IndicatorValueMap as Ut, KeyboardHandler as Wt, KrakenAdapter as Gt, MAX_ALERT_BARS as Kt, MIN_ALERT_BARS as qt, MockAdapter as Jt, PaperExecutionAdapter as Yt, PollingAdapter as Xt, RANGE_PRESETS as Zt, ReplayManager as Qt, ResamplingAdapter as $t, Screenshot as en, SessionBreaks as tn, SessionShading as nn, SignalMarkerManager as rn, StreamManager as an, TickAggregator as on, TickBarAdapter as sn, TickBarBuilder as k, TradeZoneManager as cn, UndoRedoManager as ln, VolumeRenderer as un, Watermark as dn, WebSocketAdapter as fn, barIndexToTime as pn, barIndexToX as mn, barIndexToX as A, canvasMeasure as hn, computeBarLayout as gn, computeCalendarLayout as _n, computeCounterClockLayout as vn, computeDonutLayout as yn, computeHistogramLayout as bn, computeMatrixLayout as xn, computeScatterLayout as Sn, correlationMatrix as Cn, counterClockPhase as wn, counterClockPhase as Tn, counterClockPoints as En, counterClockPoints as Dn, detectCandlePatterns as On, formatTooltipTime as kn, histogramBins as An, hitBar as j, hitDay as M, hitMatrixCell as N, hitSlice as P, indicatorCategory as jn, isPriceLevelAlert as Mn, layoutGroupedTreemap as Nn, layoutSquarifiedTreemap as Pn, layoutUniformGrid as Fn, lttbDownsample as In, lttbVisibleIndices as Ln, nearestCounterClockPoint as F, nearestPoint as I, niceScale as Rn, priceToY as zn, priceToYMapper as Bn, priceToYMapper as Vn, rangePresetStart as Hn, renderBarChart as Un, renderCalendar as Wn, renderCounterClock as Gn, renderDepthChart as Kn, renderDonut as qn, renderEquityCurve as Jn, renderGauge as Yn, renderHeatmap as Xn, renderHistogram as Zn, renderMatrix as Qn, renderScatter as $n, renderSparkline as er, renderWaterfall as tr, servesTimeframe as nr, setMaxWebGLCharts as rr, shownCount as ir, timeToX as ar, timestampToBarIndex as or, timestampToBarIndex as sr, toHeikinAshi as cr, toKagi as lr, toLineBreak as ur, toPointAndFigure as dr, toRangeBars as fr, toRenko as pr, withResampling as mr, withTickBars as hr, xToBarIndex as gr, xToBarIndex as L, xToTime as _r, yToPrice as vr, yToPrice as yr } from "@tradecanvas/core";
1
+ import { C as e, D as t, E as n, S as r, T as i, _ as a, a as o, b as s, c, g as l, h as u, i as ee, l as te, m as ne, n as re, o as ie, p as ae, r as oe, s as se, t as ce, u as le, v as ue, w as de, x as fe, y as pe } from "./LayoutSession-D7uQq3jX.js";
2
+ import { CHART_STYLE_KEYS as me, DARK_TERMINAL as he, DARK_THEME as ge, DARK_THEME as _e, DEFAULT_DRAWING_STYLE as ve, DEFAULT_FONT_FAMILY as ye, DEFAULT_RECONNECT as be, DEFAULT_SIGNAL_STYLE as xe, DEFAULT_STREAM_CONFIG as Se, DEFAULT_TIMEFRAME_FAVORITES as Ce, DEFAULT_TRADE_ZONE_STYLE as we, DEFAULT_TRADING_CONFIG as Te, HNX_SESSIONS as Ee, HOSE_SESSIONS as d, LIGHT_THEME as f, LIGHT_THEME as p, MARKET_CRYPTO as m, MARKET_HNX as h, MARKET_HOSE as g, MARKET_HOSE_ETF as _, MARKET_NYSE as v, MARKET_UPCOM as y, MARKET_VN30F as b, MS_TIME_THRESHOLD as x, PRICE_SOURCES as S, SANS_FONT_FAMILY as C, TC_PALETTE as w, TC_SERIES_COLORS as T, TIMEFRAMES_CRYPTO as E, TIMEFRAMES_FOREX as D, TIMEFRAMES_STOCK as De, UPCOM_SESSIONS as Oe, VN30F_SESSIONS as ke, VN_COLORS as Ae, VOLUME_ALPHA as je, barTimeUnit as Me, barsAreDaily as Ne, computePriceLimits as Pe, createVNTheme as Fe, formatFraction as Ie, formatNumber as Le, formatVND as Re, formatVolumeLoc as ze, fractionTick as Be, getCurrentSession as Ve, getLocale as He, indicatorSource as Ue, isPriceSource as We, isTimeFrame as Ge, isValidTimeZone as Ke, marketStatus as qe, normalizeBar as Je, normalizeBarTime as Ye, offsetAt as Xe, parseIndicatorSource as Ze, parseTimeframe as Qe, pickBaseTimeframe as $e, priceFormatterFor as et, priceStepAt as tt, rankSymbols as nt, readNews as rt, readQuote as it, registerLocale as at, resampleBars as ot, roundToPriceStep as st, scaleMarketPrices as ct, setLocale as lt, sourcePrice as ut, stepDecimals as dt, symbolTimeZone as ft, t as pt, tickBarCount as mt, timeframeBucketStart as ht, timeframeBucketStart as gt, timeframeToMs as _t, vn30fContracts as vt, vn30fLastTradingDay as yt, volumeColor as bt, wallToUtc as xt, zoneOffsetMinutes as St } from "@tradecanvas/commons";
3
+ import { AlertManager as Ct, Animator as wt, BarCountdown as Tt, BaseFinanceChart as O, BinanceAdapter as Et, BybitAdapter as Dt, CANDLE_PATTERNS as Ot, ChartLegend as kt, ChartStateManager as At, CoinbaseAdapter as jt, CompareRenderer as Mt, CrosshairTooltip as Nt, CurrentPriceLine as Pt, DEFAULT_LEGEND_CONFIG as Ft, DEFAULT_MAX_WEBGL_CHARTS as It, DEFAULT_SESSION_HOURS as Lt, DataExporter as Rt, DrawingBase as zt, Easing as Bt, FinanceCrosshair as k, GROUP_HEADER as Vt, INDICATOR_CATEGORIES as Ht, IndicatorBase as Ut, IndicatorValueMap as Wt, KEPT_BUCKETS as Gt, KeyboardHandler as Kt, KrakenAdapter as qt, MAX_ALERT_BARS as Jt, MIN_ALERT_BARS as Yt, MockAdapter as Xt, PaperExecutionAdapter as Zt, PollingAdapter as Qt, RANGE_PRESETS as $t, ReplayManager as en, ResamplingAdapter as tn, ReshapeMemo as nn, Screenshot as rn, SessionBreaks as an, SessionShading as on, SignalMarkerManager as sn, StreamManager as cn, TickAggregator as ln, TickBarAdapter as un, TickBarBuilder as A, TradeZoneManager as dn, UndoRedoManager as fn, VolumeRenderer as pn, Watermark as mn, WebSocketAdapter as hn, barIndexToTime as gn, barIndexToX as _n, barIndexToX as j, canvasMeasure as vn, computeBarLayout as yn, computeCalendarLayout as bn, computeCounterClockLayout as xn, computeDonutLayout as Sn, computeHistogramLayout as Cn, computeMatrixLayout as wn, computeScatterLayout as Tn, correlationMatrix as En, counterClockPhase as Dn, counterClockPhase as On, counterClockPoints as kn, counterClockPoints as An, detectCandlePatterns as jn, formatTooltipTime as Mn, histogramBins as Nn, hitBar as M, hitDay as N, hitMatrixCell as P, hitSlice as F, indicatorCategory as Pn, isPriceLevelAlert as Fn, layoutGroupedTreemap as In, layoutSquarifiedTreemap as Ln, layoutUniformGrid as Rn, lttbDownsample as zn, lttbVisibleIndices as Bn, nearestCounterClockPoint as I, nearestPoint as L, niceScale as Vn, priceToY as Hn, priceToYMapper as Un, priceToYMapper as Wn, rangePresetStart as Gn, renderBarChart as Kn, renderCalendar as qn, renderCounterClock as Jn, renderDepthChart as Yn, renderDonut as Xn, renderEquityCurve as Zn, renderGauge as Qn, renderHeatmap as $n, renderHistogram as er, renderMatrix as tr, renderScatter as nr, renderSparkline as rr, renderWaterfall as ir, servesTimeframe as ar, setMaxWebGLCharts as or, shownCount as sr, timeToX as cr, timestampToBarIndex as lr, timestampToBarIndex as ur, toHeikinAshi as dr, toKagi as fr, toLineBreak as pr, toPointAndFigure as mr, toRangeBars as hr, toRenko as gr, withResampling as _r, withTickBars as vr, xToBarIndex as yr, xToBarIndex as R, xToTime as br, yToPrice as xr, yToPrice as Sr } from "@tradecanvas/core";
4
4
  //#region src/frameworks/syncIndicators.ts
5
- function br(e) {
5
+ function Cr(e) {
6
6
  let { id: t, params: n = {}, position: r = null } = typeof e == "string" ? { id: e } : e;
7
7
  return JSON.stringify([
8
8
  t,
@@ -10,9 +10,9 @@ function br(e) {
10
10
  r
11
11
  ]);
12
12
  }
13
- function xr(e, t, n) {
13
+ function wr(e, t, n) {
14
14
  let r = /* @__PURE__ */ new Map(), i = t.map((e) => {
15
- let t = br(e), n = r.get(t) ?? 0;
15
+ let t = Cr(e), n = r.get(t) ?? 0;
16
16
  return r.set(t, n + 1), {
17
17
  spec: e,
18
18
  key: `${t}#${n}`
@@ -27,7 +27,7 @@ function xr(e, t, n) {
27
27
  }
28
28
  //#endregion
29
29
  //#region src/frameworks/feedBars.ts
30
- var R = (e, t) => e === t || e.time === t.time && e.open === t.open && e.high === t.high && e.low === t.low && e.close === t.close && e.volume === t.volume, z = (e) => ({
30
+ var Tr = 3, z = (e) => ({
31
31
  time: e.time,
32
32
  open: e.open,
33
33
  high: e.high,
@@ -35,56 +35,79 @@ var R = (e, t) => e === t || e.time === t.time && e.open === t.open && e.high ==
35
35
  close: e.close,
36
36
  volume: e.volume
37
37
  }), B = (e) => e.length > 0 ? e[e.length - 1] : null;
38
- function Sr(e, t, n) {
39
- for (let r = 0; r < n; r++) if (!R(e[r], t[r])) return !1;
38
+ function Er(e, n, r) {
39
+ for (let i = 0; i < r; i++) if (!t(e[i], n[i])) return !1;
40
40
  return !0;
41
41
  }
42
- function Cr(e, t) {
42
+ function Dr(e, t) {
43
43
  if (e.isReplayActive()) return !0;
44
44
  let n = B(e.getData());
45
45
  return t.inReplay ? n?.time === t.last?.time : n === t.shownBar ? n?.time === t.last?.time || !e.isExtendedHoursVisible() : !1;
46
46
  }
47
- function wr(e, t) {
48
- let n = [];
49
- for (let r = t; r < e.length; r++) {
50
- if (!d(e[r]) || !(e[r].time > e[r - 1].time)) return null;
51
- n.push(z(e[r]));
47
+ function Or(e, r, i) {
48
+ let a = [];
49
+ for (let o = 0; o < r.length; o++) {
50
+ let s = e[i + o];
51
+ if (!t(s, r[o])) {
52
+ if (s.time !== r[o].time || !n(s)) return null;
53
+ a.push(z(s));
54
+ }
55
+ }
56
+ return a;
57
+ }
58
+ function kr(e, t) {
59
+ if (t.length === 0) return !0;
60
+ if (!e.updateBar) return !1;
61
+ for (let n of t) if (!e.updateBar(n)) return !1;
62
+ return !0;
63
+ }
64
+ function Ar(e) {
65
+ return e.slice(Math.max(1, e.length - 1 - 3), -1).map(z);
66
+ }
67
+ function jr(e, t) {
68
+ let r = [];
69
+ for (let i = t; i < e.length; i++) {
70
+ if (!n(e[i]) || !(e[i].time > e[i - 1].time)) return null;
71
+ r.push(z(e[i]));
52
72
  }
53
- return n;
73
+ return r;
54
74
  }
55
- function Tr(e, t, n) {
56
- let r = n.length;
57
- if (r === 0 || !n.last || !d(n.last) || t.length < r || !Cr(e, n) || t !== n.source && (n.source.length !== r || !Sr(n.source, t, r - 1))) return !1;
58
- let i = t[r - 1];
59
- if (i.time !== n.last.time || !d(i)) return !1;
60
- let a = wr(t, r);
61
- return a ? (R(i, n.last) || e.updateLastBar(z(i)), a.length === 1 ? e.appendBar(a[0]) : a.length > 1 && e.appendBars(a), !0) : !1;
75
+ function Mr(e, r, i) {
76
+ let a = i.length;
77
+ if (a === 0 || !i.last || !n(i.last) || r.length < a || !Dr(e, i)) return !1;
78
+ let o = i.recent ?? [], s = a - 1 - o.length;
79
+ if (r !== i.source && (i.source.length !== a || !Er(i.source, r, s))) return !1;
80
+ let c = r[a - 1];
81
+ if (c.time !== i.last.time || !n(c)) return !1;
82
+ let l = Or(r, o, s), u = jr(r, a);
83
+ return !l || !u || !kr(e, l) ? !1 : (t(c, i.last) || e.updateLastBar(z(c)), u.length === 1 ? e.appendBar(u[0]) : u.length > 1 && e.appendBars(u), !0);
62
84
  }
63
- function Er(e, t, n) {
64
- (!n || !Tr(e, t, n)) && e.setData(t.map(z));
85
+ function Nr(e, t, n) {
86
+ (!n || !Mr(e, t, n)) && e.setData(t.map(z));
65
87
  let r = t.length > 0 ? z(t[t.length - 1]) : null, i = e.isReplayActive();
66
88
  return {
67
89
  source: t,
68
90
  length: t.length,
69
91
  last: r,
92
+ recent: Ar(t),
70
93
  shownBar: i ? null : B(e.getData()),
71
94
  inReplay: i
72
95
  };
73
96
  }
74
97
  //#endregion
75
98
  //#region src/plugins/overlayScale.ts
76
- function Dr(e) {
77
- let { viewport: t, data: n } = e, r = Vn(t), i = n.length - 1, a = Math.max(0, Math.floor(t.visibleRange.from)), o = Math.min(i, Math.ceil(t.visibleRange.to)), s = (e) => n.length > 0 ? sr(e, n) : e;
99
+ function Pr(e) {
100
+ let { viewport: t, data: n } = e, r = Wn(t), i = n.length - 1, a = Math.max(0, Math.floor(t.visibleRange.from)), o = Math.min(i, Math.ceil(t.visibleRange.to)), s = (e) => n.length > 0 ? ur(e, n) : e;
78
101
  return {
79
- timeToX: (e) => A(s(e), t),
102
+ timeToX: (e) => j(s(e), t),
80
103
  xToTime: (e) => {
81
- let r = L(e, t);
82
- return n.length > 0 ? pn(r, n) : r;
104
+ let r = R(e, t);
105
+ return n.length > 0 ? gn(r, n) : r;
83
106
  },
84
- indexToX: (e) => A(e, t),
85
- xToIndex: (e) => L(e, t),
107
+ indexToX: (e) => j(e, t),
108
+ xToIndex: (e) => R(e, t),
86
109
  priceToY: r,
87
- yToPrice: (e) => yr(e, t),
110
+ yToPrice: (e) => Sr(e, t),
88
111
  barWidth: t.barWidth,
89
112
  visible: o < a ? {
90
113
  from: 0,
@@ -130,7 +153,7 @@ var V = {
130
153
  cols: 2,
131
154
  rows: 3
132
155
  }
133
- }, Or = class {
156
+ }, Fr = class {
134
157
  root;
135
158
  cells = [];
136
159
  layout;
@@ -151,7 +174,7 @@ var V = {
151
174
  createCell(e) {
152
175
  let t = this.options.cells?.[e] ?? {}, n = document.createElement("div");
153
176
  n.style.cssText = "position:relative;overflow:hidden;min-width:0;min-height:0;", this.root.appendChild(n);
154
- let r = new a(n, {
177
+ let r = new c(n, {
155
178
  chartType: "candlestick",
156
179
  autoScale: !0,
157
180
  features: {
@@ -237,13 +260,13 @@ var V = {
237
260
  this.cells = [], this.root.remove();
238
261
  }
239
262
  }
240
- }, kr = class extends D {
263
+ }, Ir = class extends O {
241
264
  options;
242
265
  constructor(e, t) {
243
266
  super(e, t.theme), this.options = t, this.requestRender();
244
267
  }
245
268
  renderChart(e, t, n, r) {
246
- er(e, t, n, this.options, r);
269
+ rr(e, t, n, this.options, r);
247
270
  }
248
271
  update(e) {
249
272
  this.options = {
@@ -257,15 +280,15 @@ var V = {
257
280
  ...e
258
281
  }, this.requestRender();
259
282
  }
260
- }, Ar = class extends D {
283
+ }, Lr = class extends O {
261
284
  options;
262
285
  crosshair = null;
263
286
  constructor(e, t) {
264
- super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new O(this.canvas, () => this.requestRender())), this.requestRender();
287
+ super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new k(this.canvas, () => this.requestRender())), this.requestRender();
265
288
  }
266
289
  renderChart(e, t, n, r) {
267
290
  let i = this.crosshair?.getPosition() ?? null;
268
- Kn(e, t, n, this.options, r, i);
291
+ Yn(e, t, n, this.options, r, i);
269
292
  }
270
293
  update(e) {
271
294
  this.options = {
@@ -282,15 +305,15 @@ var V = {
282
305
  destroy() {
283
306
  this.crosshair?.destroy(), super.destroy();
284
307
  }
285
- }, H = class extends D {
308
+ }, H = class extends O {
286
309
  options;
287
310
  crosshair = null;
288
311
  constructor(e, t) {
289
- super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new O(this.canvas, () => this.requestRender())), this.requestRender();
312
+ super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new k(this.canvas, () => this.requestRender())), this.requestRender();
290
313
  }
291
314
  renderChart(e, t, n, r) {
292
315
  let i = this.crosshair?.getPosition() ?? null;
293
- Jn(e, t, n, this.options, r, i);
316
+ Zn(e, t, n, this.options, r, i);
294
317
  }
295
318
  update(e, t) {
296
319
  this.options = {
@@ -310,7 +333,7 @@ var V = {
310
333
  destroy() {
311
334
  this.crosshair?.destroy(), super.destroy();
312
335
  }
313
- }, U = class extends D {
336
+ }, U = class extends O {
314
337
  options;
315
338
  crosshair = null;
316
339
  cachedRects = [];
@@ -320,7 +343,7 @@ var V = {
320
343
  lastLayoutHeight = 0;
321
344
  handleClick = null;
322
345
  constructor(e, t) {
323
- super(e, t.theme), this.options = t, this.currentData = t.data ?? [], t.crosshair !== !1 && (this.crosshair = new O(this.canvas, () => this.requestRender())), t.onCellClick && (this.handleClick = (e) => {
346
+ super(e, t.theme), this.options = t, this.currentData = t.data ?? [], t.crosshair !== !1 && (this.crosshair = new k(this.canvas, () => this.requestRender())), t.onCellClick && (this.handleClick = (e) => {
324
347
  let t = this.canvas.getBoundingClientRect(), n = e.clientX - t.left, r = e.clientY - t.top;
325
348
  this.onCanvasClick(n, r);
326
349
  }, this.canvas.addEventListener("click", this.handleClick)), this.applyLabel(), this.recomputeLayout(), this.requestRender();
@@ -337,20 +360,20 @@ var V = {
337
360
  height: this.height
338
361
  }, t = this.options.cellPadding ?? 2;
339
362
  if (this.lastLayoutWidth = this.width, this.lastLayoutHeight = this.height, this.cachedGroups = [], this.options.grouped) {
340
- let { groups: n, cells: r } = Nn(this.currentData.map((e) => ({
363
+ let { groups: n, cells: r } = In(this.currentData.map((e) => ({
341
364
  id: e.id,
342
365
  weight: e.weight ?? (Math.abs(e.value) || 1),
343
366
  group: e.group,
344
367
  value: e.value
345
- })), e, t, Bt);
368
+ })), e, t, Vt);
346
369
  this.cachedRects = r, this.cachedGroups = n;
347
370
  } else if (this.options.weighted) {
348
371
  let n = this.currentData.map((e) => ({
349
372
  id: e.id,
350
373
  weight: e.weight ?? (Math.abs(e.value) || 1)
351
374
  }));
352
- this.cachedRects = Pn(n, e, t);
353
- } else this.cachedRects = Fn(this.currentData.map((e) => ({ id: e.id })), e, t);
375
+ this.cachedRects = Ln(n, e, t);
376
+ } else this.cachedRects = Rn(this.currentData.map((e) => ({ id: e.id })), e, t);
354
377
  }
355
378
  onCanvasClick(e, t) {
356
379
  if (this.options.onCellClick) for (let n of this.cachedRects) {
@@ -365,7 +388,7 @@ var V = {
365
388
  renderChart(e, t, n, r) {
366
389
  (t !== this.lastLayoutWidth || n !== this.lastLayoutHeight) && this.recomputeLayout();
367
390
  let i = this.crosshair?.getPosition() ?? null;
368
- Xn(e, t, n, this.currentData, this.cachedRects, this.options, r, i, this.cachedGroups);
391
+ $n(e, t, n, this.currentData, this.cachedRects, this.options, r, i, this.cachedGroups);
369
392
  }
370
393
  update(e) {
371
394
  this.currentData = e, this.options = {
@@ -382,15 +405,15 @@ var V = {
382
405
  destroy() {
383
406
  this.crosshair?.destroy(), this.handleClick && this.canvas.removeEventListener("click", this.handleClick), super.destroy();
384
407
  }
385
- }, jr = class extends D {
408
+ }, Rr = class extends O {
386
409
  options;
387
410
  crosshair = null;
388
411
  constructor(e, t) {
389
- super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new O(this.canvas, () => this.requestRender())), this.requestRender();
412
+ super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new k(this.canvas, () => this.requestRender())), this.requestRender();
390
413
  }
391
414
  renderChart(e, t, n, r) {
392
415
  let i = this.crosshair?.getPosition() ?? null;
393
- tr(e, t, n, this.options, r, i);
416
+ ir(e, t, n, this.options, r, i);
394
417
  }
395
418
  update(e) {
396
419
  this.options = {
@@ -407,12 +430,12 @@ var V = {
407
430
  destroy() {
408
431
  this.crosshair?.destroy(), super.destroy();
409
432
  }
410
- }, Mr = 500;
411
- function Nr(e) {
433
+ }, zr = 500;
434
+ function Br(e) {
412
435
  let t = 1 - e;
413
436
  return 1 - t * t * t;
414
437
  }
415
- var Pr = class extends D {
438
+ var Vr = class extends O {
416
439
  options;
417
440
  currentValue;
418
441
  targetValue;
@@ -423,7 +446,7 @@ var Pr = class extends D {
423
446
  super(e, t.theme), this.options = t, this.currentValue = t.value, this.targetValue = t.value, this.requestRender();
424
447
  }
425
448
  renderChart(e, t, n, r) {
426
- Yn(e, t, n, this.options, r, this.currentValue);
449
+ Qn(e, t, n, this.options, r, this.currentValue);
427
450
  }
428
451
  setValue(e) {
429
452
  if (this.options.animate === !1) {
@@ -453,7 +476,7 @@ var Pr = class extends D {
453
476
  if (this.animationFrameId !== null) return;
454
477
  let e = () => {
455
478
  if (this.animationFrameId = null, this.animationStart === null) return;
456
- let t = this.options.animationDuration ?? Mr, n = performance.now() - this.animationStart, r = Math.min(1, n / Math.max(1, t)), i = Nr(r);
479
+ let t = this.options.animationDuration ?? zr, n = performance.now() - this.animationStart, r = Math.min(1, n / Math.max(1, t)), i = Br(r);
457
480
  this.currentValue = this.animationFrom + (this.targetValue - this.animationFrom) * i, this.requestRender(), r < 1 ? this.animationFrameId = requestAnimationFrame(e) : (this.currentValue = this.targetValue, this.animationStart = null);
458
481
  };
459
482
  this.animationFrameId = requestAnimationFrame(e);
@@ -464,7 +487,7 @@ var Pr = class extends D {
464
487
  destroy() {
465
488
  this.cancelAnimation(), super.destroy();
466
489
  }
467
- }, W = class extends D {
490
+ }, W = class extends O {
468
491
  options;
469
492
  layout = null;
470
493
  layoutFor = null;
@@ -479,11 +502,11 @@ var Pr = class extends D {
479
502
  this.canvas.style.cursor = this.hits(this.layout, e.clientX - t.left, e.clientY - t.top) ? "pointer" : "";
480
503
  };
481
504
  constructor(e, t) {
482
- super(e, t.theme), this.options = t, this.crosshair = new O(this.canvas, () => this.requestRender()), this.canvas.addEventListener("click", this.onClick), this.canvas.addEventListener("pointermove", this.onMove), this.applyLabel(), this.requestRender();
505
+ super(e, t.theme), this.options = t, this.crosshair = new k(this.canvas, () => this.requestRender()), this.canvas.addEventListener("click", this.onClick), this.canvas.addEventListener("pointermove", this.onMove), this.applyLabel(), this.requestRender();
483
506
  }
484
507
  renderChart(e, t, n, r) {
485
508
  let i = this.options.crosshair === !1 ? null : this.crosshair.getPosition(), a = this.layoutFor;
486
- (!this.layout || !a || a.options !== this.options || a.width !== t || a.height !== n || a.theme !== r) && (this.layout = this.compute(t, n, r, hn(e, r)), this.layoutFor = {
509
+ (!this.layout || !a || a.options !== this.options || a.width !== t || a.height !== n || a.theme !== r) && (this.layout = this.compute(t, n, r, vn(e, r)), this.layoutFor = {
487
510
  options: this.options,
488
511
  width: t,
489
512
  height: n,
@@ -502,12 +525,12 @@ var Pr = class extends D {
502
525
  destroy() {
503
526
  this.crosshair.destroy(), this.canvas.removeEventListener("click", this.onClick), this.canvas.removeEventListener("pointermove", this.onMove), super.destroy();
504
527
  }
505
- }, Fr = class extends W {
528
+ }, Hr = class extends W {
506
529
  compute(e, t, n, r) {
507
- return gn(this.options, e, t, n, r);
530
+ return yn(this.options, e, t, n, r);
508
531
  }
509
532
  draw(e, t, n, r, i, a) {
510
- Un(e, t, n, this.options, r, i, a);
533
+ Kn(e, t, n, this.options, r, i, a);
511
534
  }
512
535
  describe() {
513
536
  return `Bar chart of ${this.options.series.map((e) => e.name).join(", ")}, ${this.options.categories.length} categories`;
@@ -516,10 +539,10 @@ var Pr = class extends D {
516
539
  return this.options.onBarClick !== void 0;
517
540
  }
518
541
  hits(e, t, n) {
519
- return j(e, t, n) !== null;
542
+ return M(e, t, n) !== null;
520
543
  }
521
544
  clickAt(e, t, n) {
522
- let r = j(e, t, n);
545
+ let r = M(e, t, n);
523
546
  r && this.options.onBarClick?.({
524
547
  category: r.category,
525
548
  series: r.series,
@@ -533,12 +556,12 @@ var Pr = class extends D {
533
556
  series: t
534
557
  });
535
558
  }
536
- }, Ir = class extends W {
559
+ }, Ur = class extends W {
537
560
  compute(e, t, n, r) {
538
- return yn(this.options, e, t, n, r);
561
+ return Sn(this.options, e, t, n, r);
539
562
  }
540
563
  draw(e, t, n, r, i, a) {
541
- qn(e, t, n, this.options, r, i, a);
564
+ Xn(e, t, n, this.options, r, i, a);
542
565
  }
543
566
  describe() {
544
567
  let e = this.options.data.filter((e) => Number.isFinite(e.value) && e.value > 0).map((e) => e.label).join(", ");
@@ -548,21 +571,21 @@ var Pr = class extends D {
548
571
  return this.options.onSliceClick !== void 0;
549
572
  }
550
573
  hits(e, t, n) {
551
- return P(e, t, n) !== null;
574
+ return F(e, t, n) !== null;
552
575
  }
553
576
  clickAt(e, t, n) {
554
- let r = P(e, t, n);
577
+ let r = F(e, t, n);
555
578
  r && this.options.onSliceClick?.(r.slice);
556
579
  }
557
580
  update(e) {
558
581
  this.setOptions({ data: e });
559
582
  }
560
- }, Lr = class extends W {
583
+ }, Wr = class extends W {
561
584
  compute(e, t, n, r) {
562
- return Sn(this.options, e, t, n, r);
585
+ return Tn(this.options, e, t, n, r);
563
586
  }
564
587
  draw(e, t, n, r, i, a) {
565
- $n(e, t, n, this.options, r, i, a);
588
+ nr(e, t, n, this.options, r, i, a);
566
589
  }
567
590
  describe() {
568
591
  let e = this.options.series.reduce((e, t) => e + t.points.length, 0);
@@ -572,21 +595,21 @@ var Pr = class extends D {
572
595
  return this.options.onPointClick !== void 0;
573
596
  }
574
597
  hits(e, t, n) {
575
- return I(e, t, n) !== null;
598
+ return L(e, t, n) !== null;
576
599
  }
577
600
  clickAt(e, t, n) {
578
- let r = I(e, t, n);
601
+ let r = L(e, t, n);
579
602
  r && this.options.onPointClick?.(r.point, r.series);
580
603
  }
581
604
  update(e) {
582
605
  this.setOptions({ series: e });
583
606
  }
584
- }, Rr = class extends W {
607
+ }, Gr = class extends W {
585
608
  compute(e, t, n, r) {
586
- return bn(this.options, e, t, n, r);
609
+ return Cn(this.options, e, t, n, r);
587
610
  }
588
611
  draw(e, t, n, r, i, a) {
589
- Zn(e, t, n, this.options, r, i, a);
612
+ er(e, t, n, this.options, r, i, a);
590
613
  }
591
614
  describe() {
592
615
  return `Histogram of ${this.options.values.length} values`;
@@ -601,12 +624,12 @@ var Pr = class extends D {
601
624
  update(e) {
602
625
  this.setOptions({ values: e });
603
626
  }
604
- }, zr = class extends W {
627
+ }, Kr = class extends W {
605
628
  compute(e, t, n, r) {
606
- return _n(this.options, e, t, n, r);
629
+ return bn(this.options, e, t, n, r);
607
630
  }
608
631
  draw(e, t, n, r, i, a) {
609
- Wn(e, t, n, this.options, r, i, a);
632
+ qn(e, t, n, this.options, r, i, a);
610
633
  }
611
634
  describe() {
612
635
  let e = this.options.data.map((e) => e.date).filter((e) => /^\d{4}-\d{2}-\d{2}$/.test(e)).sort(), t = this.options.from ?? e[0], n = this.options.to ?? e[e.length - 1];
@@ -616,21 +639,21 @@ var Pr = class extends D {
616
639
  return this.options.onDayClick !== void 0;
617
640
  }
618
641
  hits(e, t, n) {
619
- return M(e, t, n)?.day !== void 0;
642
+ return N(e, t, n)?.day !== void 0;
620
643
  }
621
644
  clickAt(e, t, n) {
622
- let r = M(e, t, n)?.day;
645
+ let r = N(e, t, n)?.day;
623
646
  r && this.options.onDayClick?.(r);
624
647
  }
625
648
  update(e) {
626
649
  this.setOptions({ data: e });
627
650
  }
628
- }, G = 12, Br = class extends W {
651
+ }, G = 12, qr = class extends W {
629
652
  compute(e, t, n, r) {
630
- return xn(this.options, e, t, n, r);
653
+ return wn(this.options, e, t, n, r);
631
654
  }
632
655
  draw(e, t, n, r, i, a) {
633
- Qn(e, t, n, this.options, r, i, a);
656
+ tr(e, t, n, this.options, r, i, a);
634
657
  }
635
658
  describe() {
636
659
  let { rows: e, columns: t } = this.options;
@@ -640,21 +663,21 @@ var Pr = class extends D {
640
663
  return this.options.onCellClick !== void 0;
641
664
  }
642
665
  hits(e, t, n) {
643
- return N(e, t, n) !== null;
666
+ return P(e, t, n) !== null;
644
667
  }
645
668
  clickAt(e, t, n) {
646
- let r = N(e, t, n);
669
+ let r = P(e, t, n);
647
670
  r && this.options.onCellClick?.(r.cell);
648
671
  }
649
672
  update(e) {
650
673
  this.setOptions({ values: e });
651
674
  }
652
- }, Vr = class extends W {
675
+ }, Jr = class extends W {
653
676
  compute(e, t, n, r) {
654
- return vn(this.options, e, t, n, r);
677
+ return xn(this.options, e, t, n, r);
655
678
  }
656
679
  draw(e, t, n, r, i, a) {
657
- Gn(e, t, n, this.options, r, i, a);
680
+ Jn(e, t, n, this.options, r, i, a);
658
681
  }
659
682
  describe() {
660
683
  return `Counter-clock chart of price against volume, ${this.options.period ?? 25}-bar averages`;
@@ -663,19 +686,19 @@ var Pr = class extends D {
663
686
  return this.options.onPointClick !== void 0;
664
687
  }
665
688
  hits(e, t, n) {
666
- return F(e, t, n) !== null;
689
+ return I(e, t, n) !== null;
667
690
  }
668
691
  clickAt(e, t, n) {
669
- let r = F(e, t, n);
692
+ let r = I(e, t, n);
670
693
  r && this.options.onPointClick?.(r.point);
671
694
  }
672
695
  getPhase() {
673
- return Tn(Dn(this.options.data, this.options.period ?? 25, ir(this.options)));
696
+ return On(An(this.options.data, this.options.period ?? 25, sr(this.options)));
674
697
  }
675
698
  update(e) {
676
699
  this.setOptions({ data: e });
677
700
  }
678
- }, Hr = [
701
+ }, Yr = [
679
702
  "Jan",
680
703
  "Feb",
681
704
  "Mar",
@@ -710,7 +733,7 @@ function J(e) {
710
733
  if (e.length === 0) return [];
711
734
  let t = [];
712
735
  for (let n of e) {
713
- let e = ht(n.time, "1M"), r = t[t.length - 1];
736
+ let e = gt(n.time, "1M"), r = t[t.length - 1];
714
737
  r && r.key === e ? r.close = n.equity : t.push({
715
738
  key: e,
716
739
  close: n.equity
@@ -723,7 +746,7 @@ function J(e) {
723
746
  let a = new Date(e.key), o = a.getUTCFullYear(), s = a.getUTCMonth();
724
747
  r.push({
725
748
  id: `${o}-${String(s + 1).padStart(2, "0")}`,
726
- label: Hr[s],
749
+ label: Yr[s],
727
750
  group: String(o),
728
751
  value: i
729
752
  });
@@ -784,9 +807,9 @@ function Q(e) {
784
807
  //#endregion
785
808
  //#region src/finance/PerformanceDashboard.ts
786
809
  function $(e) {
787
- return !e || e === "dark" ? he : e === "light" ? De : e;
810
+ return !e || e === "dark" ? _e : e === "light" ? p : e;
788
811
  }
789
- var Ur = class {
812
+ var Xr = class {
790
813
  options;
791
814
  theme;
792
815
  root;
@@ -935,6 +958,6 @@ var Ur = class {
935
958
  }
936
959
  };
937
960
  //#endregion
938
- export { St as AlertManager, Ct as Animator, Fr as BarChart, wt as BarCountdown, Tt as BinanceAdapter, Et as BybitAdapter, Dt as CANDLE_PATTERNS, fe as CHART_STYLE_KEYS, zr as CalendarChart, a as Chart, Or as ChartGrid, Ot as ChartLegend, kt as ChartStateManager, At as CoinbaseAdapter, jt as CompareRenderer, Vr as CounterClockChart, Mt as CrosshairTooltip, Nt as CurrentPriceLine, pe as DARK_TERMINAL, me as DARK_THEME, ge as DEFAULT_DRAWING_STYLE, _e as DEFAULT_FONT_FAMILY, ue as DEFAULT_HISTORY_PAGE_SIZE, Pt as DEFAULT_LEGEND_CONFIG, Ft as DEFAULT_MAX_WEBGL_CHARTS, ve as DEFAULT_RECONNECT, It as DEFAULT_SESSION_HOURS, ye as DEFAULT_SIGNAL_STYLE, be as DEFAULT_STREAM_CONFIG, xe as DEFAULT_TIMEFRAME_FAVORITES, Se as DEFAULT_TRADE_ZONE_STYLE, Ce as DEFAULT_TRADING_CONFIG, Lt as DataExporter, e as DataManager, Ar as DepthChart, Ir as DonutChart, re as DragDropImporter, Rt as DrawingBase, ee as EXCHANGE_TIMEZONE, ce as EXCHANGE_TIME_ZONE, zt as Easing, H as EquityCurveChart, Pr as GaugeChart, t as HISTORY_RETRY_MS, we as HNX_SESSIONS, Te as HOSE_SESSIONS, U as HeatmapChart, Rr as HistogramChart, Vt as INDICATOR_CATEGORIES, Ht as IndicatorBase, Ut as IndicatorValueMap, Wt as KeyboardHandler, Gt as KrakenAdapter, Ee as LIGHT_THEME, de as LayoutManager, se as LayoutSession, f as MARKET_CRYPTO, p as MARKET_HNX, m as MARKET_HOSE, h as MARKET_HOSE_ETF, g as MARKET_NYSE, _ as MARKET_UPCOM, v as MARKET_VN30F, Kt as MAX_ALERT_BARS, ne as MAX_LAYOUT_NAME, qt as MIN_ALERT_BARS, y as MS_TIME_THRESHOLD, Br as MatrixChart, Jt as MockAdapter, c as PLUGIN_API_VERSION, b as PRICE_SOURCES, Yt as PaperExecutionAdapter, Ur as PerformanceDashboard, o as PluginManager, Xt as PollingAdapter, Zt as RANGE_PRESETS, Qt as ReplayManager, $t as ResamplingAdapter, x as SANS_FONT_FAMILY, Lr as ScatterChart, en as Screenshot, tn as SessionBreaks, nn as SessionShading, rn as SignalMarkerManager, kr as SparklineChart, an as StreamManager, S as TC_PALETTE, C as TC_SERIES_COLORS, w as TIMEFRAMES_CRYPTO, T as TIMEFRAMES_FOREX, E as TIMEFRAMES_STOCK, i as ThemeManager, on as TickAggregator, sn as TickBarAdapter, k as TickBarBuilder, cn as TradeZoneManager, Oe as UPCOM_SESSIONS, ln as UndoRedoManager, ke as VN30F_SESSIONS, Ae as VN_COLORS, je as VOLUME_ALPHA, un as VolumeRenderer, jr as WaterfallChart, dn as Watermark, fn as WebSocketAdapter, mn as barIndexToX, Me as barTimeUnit, Ne as barsAreDaily, ae as cleanLayoutName, s as clearGlobalPlugins, q as computeDrawdownCurve, J as computeMonthlyReturns, Pe as computePriceLimits, Cn as correlationMatrix, wn as counterClockPhase, En as counterClockPoints, Fe as createVNTheme, On as detectCandlePatterns, Er as feedBars, Ie as formatFraction, Le as formatNumber, kn as formatTooltipTime, Re as formatVND, ze as formatVolumeLoc, Be as fractionTick, Ve as getCurrentSession, ie as getGlobalPlugins, He as getLocale, An as histogramBins, jn as indicatorCategory, Ue as indicatorSource, Mn as isPriceLevelAlert, We as isPriceSource, Ge as isTimeFrame, Ke as isValidTimeZone, u as localStorageLayouts, In as lttbDownsample, Ln as lttbVisibleIndices, qe as marketStatus, r as memoryLayouts, Rn as niceScale, Je as normalizeBar, Ye as normalizeBarTime, Xe as offsetAt, Dr as overlayScale, n as overlaysForLayer, Ze as parseIndicatorSource, oe as parseOHLCV, Qe as parseTimeframe, $e as pickBaseTimeframe, le as pluginKey, et as priceFormatterFor, tt as priceStepAt, zn as priceToY, Bn as priceToYMapper, Hn as rangePresetStart, nt as rankSymbols, rt as readNews, it as readQuote, at as registerLocale, te as registerPlugin, ot as resampleBars, st as roundToPriceStep, ct as scaleMarketPrices, Q as selectKeyStats, nr as servesTimeframe, lt as setLocale, rr as setMaxWebGLCharts, ut as sourcePrice, dt as stepDecimals, ft as symbolTimeZone, xr as syncIndicators, pt as t, mt as tickBarCount, ar as timeToX, gt as timeframeToMs, or as timestampToBarIndex, K as toEquityPoints, cr as toHeikinAshi, lr as toKagi, ur as toLineBreak, dr as toPointAndFigure, fr as toRangeBars, pr as toRenko, l as unregisterPlugin, _t as vn30fContracts, vt as vn30fLastTradingDay, yt as volumeColor, bt as wallToUtc, mr as withResampling, hr as withTickBars, gr as xToBarIndex, _r as xToTime, vr as yToPrice, xt as zoneOffsetMinutes };
961
+ export { Ct as AlertManager, wt as Animator, Hr as BarChart, Tt as BarCountdown, Et as BinanceAdapter, Dt as BybitAdapter, Ot as CANDLE_PATTERNS, me as CHART_STYLE_KEYS, Tr as CORRECTABLE_BARS, Kr as CalendarChart, c as Chart, Fr as ChartGrid, kt as ChartLegend, At as ChartStateManager, jt as CoinbaseAdapter, Mt as CompareRenderer, Jr as CounterClockChart, Nt as CrosshairTooltip, Pt as CurrentPriceLine, he as DARK_TERMINAL, ge as DARK_THEME, ve as DEFAULT_DRAWING_STYLE, ye as DEFAULT_FONT_FAMILY, e as DEFAULT_HISTORY_PAGE_SIZE, Ft as DEFAULT_LEGEND_CONFIG, It as DEFAULT_MAX_WEBGL_CHARTS, be as DEFAULT_RECONNECT, Lt as DEFAULT_SESSION_HOURS, xe as DEFAULT_SIGNAL_STYLE, Se as DEFAULT_STREAM_CONFIG, Ce as DEFAULT_TIMEFRAME_FAVORITES, we as DEFAULT_TRADE_ZONE_STYLE, Te as DEFAULT_TRADING_CONFIG, Rt as DataExporter, i as DataManager, Lr as DepthChart, Ur as DonutChart, ie as DragDropImporter, zt as DrawingBase, te as EXCHANGE_TIMEZONE, le as EXCHANGE_TIME_ZONE, Bt as Easing, H as EquityCurveChart, Vr as GaugeChart, de as HISTORY_RETRY_MS, Ee as HNX_SESSIONS, d as HOSE_SESSIONS, U as HeatmapChart, Gr as HistogramChart, Ht as INDICATOR_CATEGORIES, Ut as IndicatorBase, Wt as IndicatorValueMap, Gt as KEPT_BUCKETS, Kt as KeyboardHandler, qt as KrakenAdapter, f as LIGHT_THEME, fe as LayoutManager, ce as LayoutSession, m as MARKET_CRYPTO, h as MARKET_HNX, g as MARKET_HOSE, _ as MARKET_HOSE_ETF, v as MARKET_NYSE, y as MARKET_UPCOM, b as MARKET_VN30F, Jt as MAX_ALERT_BARS, re as MAX_LAYOUT_NAME, Yt as MIN_ALERT_BARS, x as MS_TIME_THRESHOLD, qr as MatrixChart, Xt as MockAdapter, ue as PLUGIN_API_VERSION, S as PRICE_SOURCES, Zt as PaperExecutionAdapter, Xr as PerformanceDashboard, ae as PluginManager, Qt as PollingAdapter, $t as RANGE_PRESETS, en as ReplayManager, tn as ResamplingAdapter, nn as ReshapeMemo, C as SANS_FONT_FAMILY, Wr as ScatterChart, rn as Screenshot, an as SessionBreaks, on as SessionShading, sn as SignalMarkerManager, Ir as SparklineChart, cn as StreamManager, w as TC_PALETTE, T as TC_SERIES_COLORS, E as TIMEFRAMES_CRYPTO, D as TIMEFRAMES_FOREX, De as TIMEFRAMES_STOCK, r as ThemeManager, ln as TickAggregator, un as TickBarAdapter, A as TickBarBuilder, dn as TradeZoneManager, Oe as UPCOM_SESSIONS, fn as UndoRedoManager, ke as VN30F_SESSIONS, Ae as VN_COLORS, je as VOLUME_ALPHA, pn as VolumeRenderer, Rr as WaterfallChart, mn as Watermark, hn as WebSocketAdapter, _n as barIndexToX, Me as barTimeUnit, Ne as barsAreDaily, oe as cleanLayoutName, ne as clearGlobalPlugins, q as computeDrawdownCurve, J as computeMonthlyReturns, Pe as computePriceLimits, En as correlationMatrix, Dn as counterClockPhase, kn as counterClockPoints, Fe as createVNTheme, jn as detectCandlePatterns, Nr as feedBars, Ie as formatFraction, Le as formatNumber, Mn as formatTooltipTime, Re as formatVND, ze as formatVolumeLoc, Be as fractionTick, Ve as getCurrentSession, u as getGlobalPlugins, He as getLocale, Nn as histogramBins, Pn as indicatorCategory, Ue as indicatorSource, Fn as isPriceLevelAlert, We as isPriceSource, Ge as isTimeFrame, Ke as isValidTimeZone, ee as localStorageLayouts, zn as lttbDownsample, Bn as lttbVisibleIndices, qe as marketStatus, o as memoryLayouts, Vn as niceScale, Je as normalizeBar, Ye as normalizeBarTime, Xe as offsetAt, Pr as overlayScale, pe as overlaysForLayer, Ze as parseIndicatorSource, se as parseOHLCV, Qe as parseTimeframe, $e as pickBaseTimeframe, s as pluginKey, et as priceFormatterFor, tt as priceStepAt, Hn as priceToY, Un as priceToYMapper, Gn as rangePresetStart, nt as rankSymbols, rt as readNews, it as readQuote, at as registerLocale, l as registerPlugin, ot as resampleBars, st as roundToPriceStep, ct as scaleMarketPrices, Q as selectKeyStats, ar as servesTimeframe, lt as setLocale, or as setMaxWebGLCharts, ut as sourcePrice, dt as stepDecimals, ft as symbolTimeZone, wr as syncIndicators, pt as t, mt as tickBarCount, cr as timeToX, ht as timeframeBucketStart, _t as timeframeToMs, lr as timestampToBarIndex, K as toEquityPoints, dr as toHeikinAshi, fr as toKagi, pr as toLineBreak, mr as toPointAndFigure, hr as toRangeBars, gr as toRenko, a as unregisterPlugin, vt as vn30fContracts, yt as vn30fLastTradingDay, bt as volumeColor, xt as wallToUtc, _r as withResampling, vr as withTickBars, yr as xToBarIndex, br as xToTime, xr as yToPrice, St as zoneOffsetMinutes };
939
962
 
940
963
  //# sourceMappingURL=index.js.map