@tradecanvas/chart 1.82.0 → 1.83.1
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/{LayoutSession-CLlUszTA.js → LayoutSession--k_77YkA.js} +617 -379
- package/dist/LayoutSession--k_77YkA.js.map +1 -0
- package/dist/LayoutSession-CEqWF-nM.cjs +2 -0
- package/dist/LayoutSession-CEqWF-nM.cjs.map +1 -0
- package/dist/{WidgetCommandPalette-p4DQCe57.js → WidgetCommandPalette-DHGvEl9n.js} +2 -2
- package/dist/{WidgetCommandPalette-p4DQCe57.js.map → WidgetCommandPalette-DHGvEl9n.js.map} +1 -1
- package/dist/{WidgetCommandPalette-BNBL1mO2.cjs → WidgetCommandPalette-Ol8Z923q.cjs} +2 -2
- package/dist/{WidgetCommandPalette-BNBL1mO2.cjs.map → WidgetCommandPalette-Ol8Z923q.cjs.map} +1 -1
- package/dist/{WidgetDrawingSettings-D7l2NkVj.js → WidgetDrawingSettings-CSB88SvC.js} +2 -2
- package/dist/{WidgetDrawingSettings-D7l2NkVj.js.map → WidgetDrawingSettings-CSB88SvC.js.map} +1 -1
- package/dist/{WidgetDrawingSettings-BqGuAMz3.cjs → WidgetDrawingSettings-XL1Z9-ly.cjs} +2 -2
- package/dist/{WidgetDrawingSettings-BqGuAMz3.cjs.map → WidgetDrawingSettings-XL1Z9-ly.cjs.map} +1 -1
- package/dist/{WidgetIndicatorPicker-BOxIKUn-.cjs → WidgetIndicatorPicker-K01RJSLs.cjs} +2 -2
- package/dist/{WidgetIndicatorPicker-BOxIKUn-.cjs.map → WidgetIndicatorPicker-K01RJSLs.cjs.map} +1 -1
- package/dist/{WidgetIndicatorPicker-Bk0y6c35.js → WidgetIndicatorPicker-a4rpptDc.js} +2 -2
- package/dist/{WidgetIndicatorPicker-Bk0y6c35.js.map → WidgetIndicatorPicker-a4rpptDc.js.map} +1 -1
- package/dist/{WidgetIndicatorSettings-BmOqq2Fv.js → WidgetIndicatorSettings-BmIFp19I.js} +3 -3
- package/dist/{WidgetIndicatorSettings-BmOqq2Fv.js.map → WidgetIndicatorSettings-BmIFp19I.js.map} +1 -1
- package/dist/{WidgetIndicatorSettings-DrPcNSxS.cjs → WidgetIndicatorSettings-CJWR-x9q.cjs} +2 -2
- package/dist/{WidgetIndicatorSettings-DrPcNSxS.cjs.map → WidgetIndicatorSettings-CJWR-x9q.cjs.map} +1 -1
- package/dist/{WidgetSettings-C6m55YF0.js → WidgetSettings-9clgY3_1.js} +2 -2
- package/dist/{WidgetSettings-C6m55YF0.js.map → WidgetSettings-9clgY3_1.js.map} +1 -1
- package/dist/{WidgetSettings-B57_tUke.cjs → WidgetSettings-D6COgRaB.cjs} +2 -2
- package/dist/{WidgetSettings-B57_tUke.cjs.map → WidgetSettings-D6COgRaB.cjs.map} +1 -1
- package/dist/{WidgetSymbolSearch-8HMKUv2P.cjs → WidgetSymbolSearch-6EB31v-O.cjs} +2 -2
- package/dist/{WidgetSymbolSearch-8HMKUv2P.cjs.map → WidgetSymbolSearch-6EB31v-O.cjs.map} +1 -1
- package/dist/{WidgetSymbolSearch-BdI1egoq.js → WidgetSymbolSearch-DToOqJoG.js} +2 -2
- package/dist/{WidgetSymbolSearch-BdI1egoq.js.map → WidgetSymbolSearch-DToOqJoG.js.map} +1 -1
- package/dist/grid/ChartGrid.d.ts +9 -1
- package/dist/grid/ChartGrid.d.ts.map +1 -1
- package/dist/grid/gridShapes.d.ts +43 -0
- package/dist/grid/gridShapes.d.ts.map +1 -0
- package/dist/i18n-D0SPfH2s.cjs +2 -0
- package/dist/i18n-D0SPfH2s.cjs.map +1 -0
- package/dist/{i18n-BMzvClhl.js → i18n-nWmX3G55.js} +11 -1
- package/dist/i18n-nWmX3G55.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +155 -179
- package/dist/index.js.map +1 -1
- package/dist/{indicatorInputWords-Dn_gEPug.js → indicatorInputWords-D0SGBaUD.js} +2 -2
- package/dist/{indicatorInputWords-Dn_gEPug.js.map → indicatorInputWords-D0SGBaUD.js.map} +1 -1
- package/dist/{indicatorInputWords-DGObUFDn.cjs → indicatorInputWords-HqTGFokF.cjs} +2 -2
- package/dist/{indicatorInputWords-DGObUFDn.cjs.map → indicatorInputWords-HqTGFokF.cjs.map} +1 -1
- package/dist/widget/ChartWidget.d.ts +2 -0
- package/dist/widget/ChartWidget.d.ts.map +1 -1
- package/dist/widget/ChartWidgetGrid.d.ts +7 -10
- package/dist/widget/ChartWidgetGrid.d.ts.map +1 -1
- package/dist/widget/GridLayoutPicker.d.ts +55 -0
- package/dist/widget/GridLayoutPicker.d.ts.map +1 -0
- package/dist/widget/WatchlistStore.d.ts +11 -0
- package/dist/widget/WatchlistStore.d.ts.map +1 -1
- package/dist/widget/WidgetDockArea.d.ts +1 -0
- package/dist/widget/WidgetDockArea.d.ts.map +1 -1
- package/dist/widget/WidgetToolbar.d.ts.map +1 -1
- package/dist/widget/WidgetWatchlist.d.ts +3 -0
- package/dist/widget/WidgetWatchlist.d.ts.map +1 -1
- package/dist/widget/WidgetWatchlists.d.ts +1 -0
- package/dist/widget/WidgetWatchlists.d.ts.map +1 -1
- package/dist/widget/index.cjs +59 -4
- package/dist/widget/index.cjs.map +1 -1
- package/dist/widget/index.d.ts +1 -0
- package/dist/widget/index.d.ts.map +1 -1
- package/dist/widget/index.js +1662 -1532
- package/dist/widget/index.js.map +1 -1
- package/dist/widget/locales/ar.d.ts.map +1 -1
- package/dist/widget/locales/cs.d.ts.map +1 -1
- package/dist/widget/locales/da.d.ts.map +1 -1
- package/dist/widget/locales/de.d.ts.map +1 -1
- package/dist/widget/locales/el.d.ts.map +1 -1
- package/dist/widget/locales/en.d.ts +5 -0
- package/dist/widget/locales/en.d.ts.map +1 -1
- package/dist/widget/locales/es.d.ts.map +1 -1
- package/dist/widget/locales/et.d.ts.map +1 -1
- package/dist/widget/locales/fa.d.ts.map +1 -1
- package/dist/widget/locales/fr.d.ts.map +1 -1
- package/dist/widget/locales/he.d.ts.map +1 -1
- package/dist/widget/locales/hu.d.ts.map +1 -1
- package/dist/widget/locales/id.d.ts.map +1 -1
- package/dist/widget/locales/index.cjs +1 -1
- package/dist/widget/locales/index.cjs.map +1 -1
- package/dist/widget/locales/index.js +141 -1
- package/dist/widget/locales/index.js.map +1 -1
- package/dist/widget/locales/it.d.ts.map +1 -1
- package/dist/widget/locales/ja.d.ts.map +1 -1
- package/dist/widget/locales/ko.d.ts.map +1 -1
- package/dist/widget/locales/ms.d.ts.map +1 -1
- package/dist/widget/locales/nb.d.ts.map +1 -1
- package/dist/widget/locales/nl.d.ts.map +1 -1
- package/dist/widget/locales/pl.d.ts.map +1 -1
- package/dist/widget/locales/pt.d.ts.map +1 -1
- package/dist/widget/locales/ro.d.ts.map +1 -1
- package/dist/widget/locales/ru.d.ts.map +1 -1
- package/dist/widget/locales/sk.d.ts.map +1 -1
- package/dist/widget/locales/sv.d.ts.map +1 -1
- package/dist/widget/locales/th.d.ts.map +1 -1
- package/dist/widget/locales/tr.d.ts.map +1 -1
- package/dist/widget/locales/vi.d.ts.map +1 -1
- package/dist/widget/locales/zh.d.ts.map +1 -1
- package/dist/widget/locales/zhHant.d.ts.map +1 -1
- package/dist/widget/types.d.ts +7 -1
- package/dist/widget/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/LayoutSession-CLlUszTA.js.map +0 -1
- package/dist/LayoutSession-Cs8SJ1LU.cjs +0 -2
- package/dist/LayoutSession-Cs8SJ1LU.cjs.map +0 -1
- package/dist/i18n-BMzvClhl.js.map +0 -1
- package/dist/i18n-Dq-eMISy.cjs +0 -2
- package/dist/i18n-Dq-eMISy.cjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CHART_STYLE_KEYS as
|
|
3
|
-
import { AlertManager as
|
|
1
|
+
import { A as e, C as t, D as n, E as r, M as i, N as a, O as o, P as s, S as c, T as l, _ as u, a as ee, b as te, c as ne, d, f as re, g as ie, h as f, i as ae, j as oe, k as se, l as p, m as ce, n as le, p as ue, r as de, s as m, t as fe, w as pe, x as me } from "./LayoutSession--k_77YkA.js";
|
|
2
|
+
import { CHART_STYLE_KEYS as he, DARK_PRICE_LIMITS as ge, DARK_TERMINAL as _e, DARK_THEME as ve, DARK_THEME as ye, DEFAULT_DRAWING_STYLE as be, DEFAULT_FONT_FAMILY as xe, DEFAULT_RECONNECT as Se, DEFAULT_SIGNAL_STYLE as Ce, DEFAULT_STREAM_CONFIG as we, DEFAULT_TIMEFRAME_FAVORITES as Te, DEFAULT_TRADE_ZONE_STYLE as Ee, DEFAULT_TRADING_CONFIG as De, HNX_SESSIONS as Oe, HOSE_SESSIONS as ke, KRX_SESSIONS as Ae, KR_COLORS as je, LIGHT_PRICE_LIMITS as Me, LIGHT_THEME as Ne, LIGHT_THEME as Pe, MARKET_CRYPTO as Fe, MARKET_HNX as Ie, MARKET_HOSE as Le, MARKET_HOSE_ETF as h, MARKET_KRX as g, MARKET_NXT as Re, MARKET_NYSE as ze, MARKET_UPBIT_KRW as Be, MARKET_UPCOM as Ve, MARKET_VN30F as He, MS_TIME_THRESHOLD as Ue, NXT_SESSIONS as We, PRICE_SOURCES as Ge, SANS_FONT_FAMILY as Ke, TC_PALETTE as qe, TC_SERIES_COLORS as Je, TIMEFRAMES_CRYPTO as Ye, TIMEFRAMES_FOREX as Xe, TIMEFRAMES_STOCK as Ze, UPCOM_SESSIONS as Qe, VN30F_SESSIONS as $e, VN_COLORS as et, VOLUME_ALPHA as tt, barTimeUnit as nt, barsAreDaily as rt, computePriceLimits as it, contrastRatio as at, createMarketTheme as ot, createVNTheme as st, formatFraction as ct, formatNumber as lt, formatVND as ut, formatVolumeLoc as dt, fractionTick as ft, getCurrentSession as pt, getLocale as mt, indicatorSource as ht, inkOn as gt, isPriceSource as _t, isTimeFrame as vt, isValidTimeZone as yt, marketStatus as bt, normalizeBar as xt, normalizeBarTime as St, offsetAt as Ct, parseIndicatorSource as wt, parseTimeframe as Tt, pickBaseTimeframe as Et, priceFormatterFor as Dt, priceStepAt as Ot, rankSymbols as kt, readNews as At, readQuote as jt, readableOn as Mt, registerLocale as Nt, resampleBars as Pt, roundToPriceStep as Ft, scaleMarketPrices as It, setLocale as Lt, sourcePrice as Rt, stepDecimals as zt, symbolTimeZone as Bt, t as Vt, tickBarCount as Ht, tickerOf as Ut, timeframeBucketStart as Wt, timeframeBucketStart as Gt, timeframeToMs as Kt, usesKoreanUnits as qt, vn30fContracts as Jt, vn30fLastTradingDay as Yt, volumeColor as Xt, wallToUtc as Zt, zoneOffsetMinutes as Qt } from "@tradecanvas/commons";
|
|
3
|
+
import { AlertManager as $t, Animator as en, BarCountdown as tn, BaseFinanceChart as _, BinanceAdapter as nn, BybitAdapter as rn, CANDLE_PATTERNS as an, ChartLegend as on, ChartStateManager as sn, CoinbaseAdapter as cn, CompareRenderer as ln, CrosshairTooltip as un, CurrentPriceLine as dn, DEFAULT_LEGEND_CONFIG as fn, DEFAULT_MAX_WEBGL_CHARTS as pn, DEFAULT_SESSION_HOURS as mn, DataExporter as hn, DrawingBase as gn, Easing as _n, FinanceCrosshair as v, GROUP_HEADER as vn, INDICATOR_CATEGORIES as yn, IndicatorBase as bn, IndicatorValueMap as xn, KEPT_BUCKETS as Sn, KeyboardHandler as Cn, KrakenAdapter as wn, MAX_ALERT_BARS as Tn, MIN_ALERT_BARS as En, ManualFeed as Dn, MockAdapter as On, PaperExecutionAdapter as kn, PollingAdapter as An, RANGE_PRESETS as jn, ReconnectManager as Mn, ReplayController as Nn, ReplayManager as Pn, ResamplingAdapter as Fn, ReshapeMemo as In, Screenshot as Ln, SessionBreaks as Rn, SessionShading as zn, SignalMarkerManager as Bn, StreamManager as Vn, TickAggregator as Hn, TickBarAdapter as Un, TickBarBuilder as Wn, TradeZoneManager as Gn, UndoRedoManager as y, UpbitAdapter as Kn, VolumeRenderer as qn, Watermark as Jn, WebSocketAdapter as Yn, adapterFromFeed as Xn, axisTimes as Zn, barIndexToTime as Qn, barIndexToX as $n, barIndexToX as b, canvasMeasure as er, computeBarLayout as tr, computeCalendarLayout as nr, computeCounterClockLayout as rr, computeDonutLayout as ir, computeHistogramLayout as ar, computeMatrixLayout as or, computeScatterLayout as sr, correlationMatrix as cr, counterClockPhase as lr, counterClockPhase as ur, counterClockPoints as dr, counterClockPoints as fr, describeInputs as pr, detectCandlePatterns as mr, feedFromAdapter as hr, formatTooltipTime as gr, histogramBins as _r, hitBar as x, hitDay as S, hitMatrixCell as C, hitSlice as w, indicatorCategory as vr, isDataFeed as yr, isDataFeed as br, isPriceLevelAlert as xr, layoutGroupedTreemap as Sr, layoutSquarifiedTreemap as Cr, layoutUniformGrid as wr, lttbDownsample as Tr, lttbVisibleIndices as Er, nearestCounterClockPoint as T, nearestPoint as E, niceScale as Dr, priceToY as Or, priceToYMapper as kr, priceToYMapper as Ar, rangePresetStart as jr, renderBarChart as Mr, renderCalendar as Nr, renderCounterClock as Pr, renderDepthChart as Fr, renderDonut as Ir, renderEquityCurve as Lr, renderGauge as Rr, renderHeatmap as zr, renderHistogram as Br, renderMatrix as Vr, renderScatter as Hr, renderSparkline as Ur, renderWaterfall as Wr, servesTimeframe as Gr, setMaxWebGLCharts as Kr, shownCount as qr, timeToX as Jr, timestampToBarIndex as Yr, timestampToBarIndex as Xr, toHeikinAshi as Zr, toKagi as Qr, toLineBreak as $r, toPointAndFigure as ei, toRangeBars as ti, toRenko as ni, withResampling as ri, withTickBars as ii, xToBarIndex as ai, xToBarIndex as D, xToTime as oi, yToPrice as si, yToPrice as ci } from "@tradecanvas/core";
|
|
4
4
|
//#region src/frameworks/syncIndicators.ts
|
|
5
|
-
function
|
|
5
|
+
function li(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 ai(e) {
|
|
|
10
10
|
r
|
|
11
11
|
]);
|
|
12
12
|
}
|
|
13
|
-
function
|
|
13
|
+
function ui(e, t, n) {
|
|
14
14
|
let r = /* @__PURE__ */ new Map(), i = t.map((e) => {
|
|
15
|
-
let t =
|
|
15
|
+
let t = li(e), n = r.get(t) ?? 0;
|
|
16
16
|
return r.set(t, n + 1), {
|
|
17
17
|
spec: e,
|
|
18
18
|
key: `${t}#${n}`
|
|
@@ -27,123 +27,123 @@ function oi(e, t, n) {
|
|
|
27
27
|
}
|
|
28
28
|
//#endregion
|
|
29
29
|
//#region src/frameworks/feedBars.ts
|
|
30
|
-
var
|
|
30
|
+
var di = 3, O = (e) => ({
|
|
31
31
|
time: e.time,
|
|
32
32
|
open: e.open,
|
|
33
33
|
high: e.high,
|
|
34
34
|
low: e.low,
|
|
35
35
|
close: e.close,
|
|
36
36
|
volume: e.volume
|
|
37
|
-
}),
|
|
38
|
-
function
|
|
39
|
-
for (let
|
|
37
|
+
}), k = (e) => e.length > 0 ? e[e.length - 1] : null;
|
|
38
|
+
function fi(e, t, n) {
|
|
39
|
+
for (let r = 0; r < n; r++) if (!s(e[r], t[r])) return !1;
|
|
40
40
|
return !0;
|
|
41
41
|
}
|
|
42
|
-
function
|
|
42
|
+
function pi(e, t) {
|
|
43
43
|
if (e.isReplayActive()) return !0;
|
|
44
|
-
let n =
|
|
44
|
+
let n = k(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
|
|
48
|
-
let
|
|
49
|
-
for (let
|
|
50
|
-
let
|
|
51
|
-
if (!
|
|
52
|
-
if (
|
|
53
|
-
|
|
47
|
+
function mi(e, t, n) {
|
|
48
|
+
let r = [];
|
|
49
|
+
for (let i = 0; i < t.length; i++) {
|
|
50
|
+
let o = e[n + i];
|
|
51
|
+
if (!s(o, t[i])) {
|
|
52
|
+
if (o.time !== t[i].time || !a(o)) return null;
|
|
53
|
+
r.push(O(o));
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
return
|
|
56
|
+
return r;
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function hi(e, t) {
|
|
59
59
|
if (t.length === 0) return !0;
|
|
60
60
|
if (!e.updateBar) return !1;
|
|
61
61
|
for (let n of t) if (!e.updateBar(n)) return !1;
|
|
62
62
|
return !0;
|
|
63
63
|
}
|
|
64
|
-
function
|
|
65
|
-
return e.slice(Math.max(1, e.length - 1 - 3), -1).map(
|
|
64
|
+
function gi(e) {
|
|
65
|
+
return e.slice(Math.max(1, e.length - 1 - 3), -1).map(O);
|
|
66
66
|
}
|
|
67
|
-
function
|
|
68
|
-
let
|
|
69
|
-
for (let
|
|
70
|
-
if (!
|
|
71
|
-
|
|
67
|
+
function _i(e, t) {
|
|
68
|
+
let n = [];
|
|
69
|
+
for (let r = t; r < e.length; r++) {
|
|
70
|
+
if (!a(e[r]) || !(e[r].time > e[r - 1].time)) return null;
|
|
71
|
+
n.push(O(e[r]));
|
|
72
72
|
}
|
|
73
|
-
return
|
|
73
|
+
return n;
|
|
74
74
|
}
|
|
75
|
-
function
|
|
76
|
-
let
|
|
77
|
-
if (
|
|
78
|
-
let
|
|
79
|
-
if (
|
|
80
|
-
let c = r
|
|
81
|
-
if (c.time !==
|
|
82
|
-
let l =
|
|
83
|
-
return !l || !u || !
|
|
75
|
+
function vi(e, t, n) {
|
|
76
|
+
let r = n.length;
|
|
77
|
+
if (r === 0 || !n.last || !a(n.last) || t.length < r || !pi(e, n)) return !1;
|
|
78
|
+
let i = n.recent ?? [], o = r - 1 - i.length;
|
|
79
|
+
if (t !== n.source && (n.source.length !== r || !fi(n.source, t, o))) return !1;
|
|
80
|
+
let c = t[r - 1];
|
|
81
|
+
if (c.time !== n.last.time || !a(c)) return !1;
|
|
82
|
+
let l = mi(t, i, o), u = _i(t, r);
|
|
83
|
+
return !l || !u || !hi(e, l) ? !1 : (s(c, n.last) || e.updateLastBar(O(c)), u.length === 1 ? e.appendBar(u[0]) : u.length > 1 && e.appendBars(u), !0);
|
|
84
84
|
}
|
|
85
|
-
function
|
|
86
|
-
(!n || !
|
|
87
|
-
let r = t.length > 0 ?
|
|
85
|
+
function yi(e, t, n) {
|
|
86
|
+
(!n || !vi(e, t, n)) && e.setData(t.map(O));
|
|
87
|
+
let r = t.length > 0 ? O(t[t.length - 1]) : null, i = e.isReplayActive();
|
|
88
88
|
return {
|
|
89
89
|
source: t,
|
|
90
90
|
length: t.length,
|
|
91
91
|
last: r,
|
|
92
|
-
recent:
|
|
93
|
-
shownBar: i ? null :
|
|
92
|
+
recent: gi(t),
|
|
93
|
+
shownBar: i ? null : k(e.getData()),
|
|
94
94
|
inReplay: i
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
97
|
//#endregion
|
|
98
98
|
//#region src/brand/poweredBy.ts
|
|
99
|
-
var
|
|
100
|
-
function
|
|
101
|
-
let t = Number.isFinite(e) ? Math.max(
|
|
99
|
+
var A = "https://tradecanvas.dev", j = "Powered by TradeCanvas", M = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M186 70A82 82 0 1 0 186 186\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"22\" stroke-linecap=\"round\"/><rect x=\"92\" y=\"74\" width=\"72\" height=\"20\" rx=\"10\" fill=\"currentColor\"/><path fill=\"#E8961E\" d=\"M119 94H137V108H144a10 10 0 0 1 10 10V164a10 10 0 0 1-10 10H137V190H119V174H112a10 10 0 0 1-10-10V118a10 10 0 0 1 10-10H119Z\"/></svg>", N = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 16 686 88\" aria-hidden=\"true\" focusable=\"false\"><path fill=\"currentColor\" transform=\"translate(0 101.64)\" d=\"M27.24 0.00L27.24 -69.72L1.32 -69.72L1.32 -83.64L68.76 -83.64L68.76 -69.72L42.96 -69.72L42.96 0.00ZM70.90 0.00L70.90 -59.16L85.90 -59.16L85.90 -50.64Q86.26 -51.36 86.74 -51.96Q89.50 -55.92 93.52 -58.14Q97.54 -60.36 101.74 -60.36Q104.74 -60.36 107.44 -59.58Q110.14 -58.80 113.02 -57.00L105.82 -43.56Q104.50 -44.28 102.46 -44.88Q100.42 -45.48 98.38 -45.48Q95.98 -45.48 93.76 -44.64Q91.54 -43.80 89.80 -42.00Q88.06 -40.20 86.98 -37.20Q86.50 -35.52 86.20 -32.94Q85.90 -30.36 85.90 -25.44L85.90 0.00ZM156.44 0.00L155.36 -7.56Q155.00 -6.96 154.52 -6.36Q151.28 -2.40 147.20 -0.60Q143.12 1.20 138.56 1.20Q132.08 1.20 126.98 -1.20Q121.88 -3.60 118.94 -8.04Q116.00 -12.48 116.00 -18.24Q116.00 -23.40 118.10 -27.06Q120.20 -30.72 123.68 -32.64Q126.68 -34.44 130.34 -35.16Q134.00 -35.88 138.20 -35.88L155.24 -35.88L155.24 -37.32Q155.24 -42.60 151.94 -45.18Q148.64 -47.76 143.00 -47.76Q138.32 -47.76 133.46 -45.90Q128.60 -44.04 124.88 -40.68L117.32 -50.88Q123.56 -55.92 130.10 -58.14Q136.64 -60.36 144.20 -60.36Q156.44 -60.36 163.28 -54.24Q170.12 -48.12 170.12 -37.32L170.12 0.00ZM155.24 -24.84L140.36 -24.84Q138.44 -24.84 136.58 -24.54Q134.72 -24.24 133.40 -23.16Q132.20 -22.32 131.60 -21.06Q131.00 -19.80 131.00 -18.24Q131.00 -14.88 133.64 -12.84Q136.28 -10.80 140.72 -10.80Q144.68 -10.80 147.98 -12.54Q151.28 -14.28 153.26 -17.34Q155.24 -20.40 155.24 -24.36ZM202.98 1.20Q195.18 1.20 189.54 -2.82Q183.90 -6.84 180.84 -13.86Q177.78 -20.88 177.78 -29.64Q177.78 -39.36 181.20 -46.20Q184.62 -53.04 190.38 -56.70Q196.14 -60.36 202.98 -60.36Q207.78 -60.36 211.92 -58.38Q216.06 -56.40 219.06 -52.44Q219.54 -51.72 220.02 -51.00L220.02 -83.64L234.78 -83.64L234.78 0.00L220.02 0.00L220.02 -8.04Q219.54 -7.20 218.94 -6.48Q215.70 -2.28 211.56 -0.54Q207.42 1.20 202.98 1.20ZM207.06 -12.48Q211.50 -12.48 214.68 -14.64Q217.86 -16.80 219.60 -20.64Q221.34 -24.48 221.34 -29.64Q221.34 -34.80 219.60 -38.64Q217.86 -42.48 214.68 -44.58Q211.50 -46.68 207.06 -46.68Q202.74 -46.68 199.50 -44.58Q196.26 -42.48 194.52 -38.70Q192.78 -34.92 192.78 -29.64Q192.78 -24.36 194.52 -20.52Q196.26 -16.68 199.50 -14.58Q202.74 -12.48 207.06 -12.48ZM272.32 1.20Q264.64 1.20 259.12 -1.32Q253.60 -3.84 250.06 -8.10Q246.52 -12.36 244.84 -17.82Q243.16 -23.28 243.16 -29.28Q243.16 -35.04 244.84 -40.56Q246.52 -46.08 249.88 -50.52Q253.24 -54.96 258.58 -57.66Q263.92 -60.36 271.36 -60.36Q278.32 -60.36 283.48 -58.02Q288.64 -55.68 292.00 -51.54Q295.36 -47.40 297.10 -41.88Q298.84 -36.36 298.84 -30.12Q298.84 -29.28 298.78 -27.78Q298.72 -26.28 298.48 -24.60L258.04 -24.60Q258.64 -18.24 262.78 -15.00Q266.92 -11.76 273.16 -11.76Q277.72 -11.76 282.04 -13.38Q286.36 -15.00 289.72 -18.00L297.16 -7.92Q292.96 -4.68 289.24 -2.64Q285.52 -0.60 281.50 0.30Q277.48 1.20 272.32 1.20ZM284.68 -35.64Q284.68 -35.76 284.68 -35.76Q284.68 -38.28 283.72 -40.50Q282.76 -42.72 281.08 -44.40Q279.40 -46.08 277.06 -46.98Q274.72 -47.88 271.72 -47.88Q267.28 -47.88 264.28 -46.08Q261.28 -44.28 259.78 -41.46Q258.28 -38.64 257.92 -35.64ZM346.66 1.56Q335.02 1.56 326.20 -3.84Q317.38 -9.24 312.46 -19.08Q307.54 -28.92 307.54 -41.88Q307.54 -54.84 312.46 -64.62Q317.38 -74.40 326.20 -79.80Q335.02 -85.20 346.66 -85.20Q359.50 -85.20 368.92 -78.84Q378.34 -72.48 382.42 -61.20L371.02 -57.00Q368.02 -64.80 361.78 -69.18Q355.54 -73.56 346.66 -73.56Q338.50 -73.56 332.44 -69.66Q326.38 -65.76 323.08 -58.74Q319.78 -51.72 319.78 -41.88Q319.78 -32.04 323.08 -24.96Q326.38 -17.88 332.44 -13.98Q338.50 -10.08 346.66 -10.08Q355.54 -10.08 361.78 -14.46Q368.02 -18.84 371.02 -26.64L382.42 -22.56Q378.34 -11.40 368.92 -4.92Q359.50 1.56 346.66 1.56ZM429.04 0.00L428.32 -8.64Q428.20 -8.52 428.08 -8.40Q424.96 -3.72 420.34 -1.32Q415.72 1.08 409.96 1.08Q403.36 1.08 398.32 -1.32Q393.28 -3.72 390.52 -7.98Q387.76 -12.24 387.76 -17.88Q387.76 -22.80 389.80 -26.34Q391.84 -29.88 395.08 -31.80Q398.08 -33.72 401.98 -34.50Q405.88 -35.28 410.32 -35.28L428.08 -35.28L428.08 -37.20Q428.08 -43.44 424.48 -46.80Q420.88 -50.16 414.04 -50.16Q409.24 -50.16 404.86 -48.24Q400.48 -46.32 396.52 -42.00L389.20 -49.56Q394.48 -55.08 400.90 -57.66Q407.32 -60.24 414.88 -60.24Q426.76 -60.24 433.30 -54.18Q439.84 -48.12 439.84 -37.20L439.84 0.00ZM428.08 -26.40L412.00 -26.40Q409.60 -26.40 407.02 -25.98Q404.44 -25.56 402.64 -24.24Q401.20 -23.16 400.36 -21.54Q399.52 -19.92 399.52 -17.76Q399.52 -13.56 402.76 -11.04Q406.00 -8.52 411.40 -8.52Q415.96 -8.52 419.74 -10.62Q423.52 -12.72 425.80 -16.38Q428.08 -20.04 428.08 -24.72ZM451.94 0.00L451.94 -59.16L463.82 -59.16L463.82 -50.88Q464.78 -52.44 465.98 -53.76Q468.86 -56.88 472.88 -58.56Q476.90 -60.24 481.58 -60.24Q491.42 -60.24 497.00 -54.54Q502.58 -48.84 502.58 -37.92L502.58 0.00L490.82 0.00L490.82 -33.60Q490.82 -42.12 487.76 -46.08Q484.70 -50.04 478.34 -50.04Q473.54 -50.04 470.36 -47.88Q467.18 -45.72 465.50 -41.04Q463.82 -36.36 463.82 -29.16L463.82 0.00ZM533.28 0.00L509.04 -59.16L522.00 -59.16L538.08 -15.24L554.40 -59.16L567.12 -59.16L543.12 0.00ZM610.56 0.00L609.84 -8.64Q609.72 -8.52 609.60 -8.40Q606.48 -3.72 601.86 -1.32Q597.24 1.08 591.48 1.08Q584.88 1.08 579.84 -1.32Q574.80 -3.72 572.04 -7.98Q569.28 -12.24 569.28 -17.88Q569.28 -22.80 571.32 -26.34Q573.36 -29.88 576.60 -31.80Q579.60 -33.72 583.50 -34.50Q587.40 -35.28 591.84 -35.28L609.60 -35.28L609.60 -37.20Q609.60 -43.44 606.00 -46.80Q602.40 -50.16 595.56 -50.16Q590.76 -50.16 586.38 -48.24Q582.00 -46.32 578.04 -42.00L570.72 -49.56Q576.00 -55.08 582.42 -57.66Q588.84 -60.24 596.40 -60.24Q608.28 -60.24 614.82 -54.18Q621.36 -48.12 621.36 -37.20L621.36 0.00ZM609.60 -26.40L593.52 -26.40Q591.12 -26.40 588.54 -25.98Q585.96 -25.56 584.16 -24.24Q582.72 -23.16 581.88 -21.54Q581.04 -19.92 581.04 -17.76Q581.04 -13.56 584.28 -11.04Q587.52 -8.52 592.92 -8.52Q597.48 -8.52 601.26 -10.62Q605.04 -12.72 607.32 -16.38Q609.60 -20.04 609.60 -24.72ZM653.38 1.08Q647.14 1.08 642.34 -0.78Q637.54 -2.64 634.12 -5.58Q630.70 -8.52 628.66 -11.64L636.70 -18.60Q638.98 -14.52 643.24 -11.58Q647.50 -8.64 653.50 -8.64Q658.78 -8.64 661.84 -10.86Q664.90 -13.08 664.90 -16.68Q664.90 -19.56 662.98 -21.30Q661.06 -23.04 657.94 -24.18Q654.82 -25.32 651.10 -26.16Q647.74 -27.12 644.26 -28.32Q640.78 -29.52 637.96 -31.38Q635.14 -33.24 633.40 -36.18Q631.66 -39.12 631.66 -43.44Q631.66 -51.00 637.48 -55.62Q643.30 -60.24 652.90 -60.24Q659.74 -60.24 665.38 -57.42Q671.02 -54.60 674.14 -49.08L666.82 -43.44Q664.42 -47.40 660.64 -49.20Q656.86 -51.00 652.42 -51.00Q648.22 -51.00 645.40 -49.26Q642.58 -47.52 642.58 -44.52Q642.58 -42.36 643.84 -40.98Q645.10 -39.60 647.80 -38.58Q650.50 -37.56 654.46 -36.60Q658.18 -35.76 662.02 -34.56Q665.86 -33.36 669.10 -31.44Q672.34 -29.52 674.38 -26.28Q676.42 -23.04 676.42 -17.88Q676.42 -12.24 673.54 -7.98Q670.66 -3.72 665.50 -1.32Q660.34 1.08 653.38 1.08Z\"/></svg>", bi = 12, P = 16, xi = .58, Si = 10, Ci = .56, wi = 686 / 88, Ti = 83.64 / 88, Ei = .25;
|
|
100
|
+
function F(e = P) {
|
|
101
|
+
let t = Number.isFinite(e) ? Math.max(bi, e) : P, n = I(t * Ci / Ti);
|
|
102
102
|
return {
|
|
103
103
|
height: t,
|
|
104
|
-
fontSize:
|
|
105
|
-
gap:
|
|
106
|
-
wordmarkWidth:
|
|
104
|
+
fontSize: I(Math.max(Si, t * xi)),
|
|
105
|
+
gap: I(t * Ei),
|
|
106
|
+
wordmarkWidth: I(n * wi),
|
|
107
107
|
wordmarkHeight: n
|
|
108
108
|
};
|
|
109
109
|
}
|
|
110
|
-
function F(e) {
|
|
111
|
-
return Math.round(e * 10) / 10;
|
|
112
|
-
}
|
|
113
110
|
function I(e) {
|
|
114
|
-
return
|
|
111
|
+
return Math.round(e * 10) / 10;
|
|
115
112
|
}
|
|
116
113
|
function L(e) {
|
|
117
|
-
return e
|
|
114
|
+
return e.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<");
|
|
118
115
|
}
|
|
119
116
|
function R(e) {
|
|
117
|
+
return e && (/^(https?:)?\/\//i.test(e) || e.startsWith("/")) ? e : A;
|
|
118
|
+
}
|
|
119
|
+
function z(e) {
|
|
120
120
|
return !!e && !/^_(self|parent|top)$/i.test(e);
|
|
121
121
|
}
|
|
122
|
-
function
|
|
122
|
+
function B(e, t, n) {
|
|
123
123
|
return e.replace("<svg ", `<svg width="${t}" height="${n}" style="display:block;flex:none" `);
|
|
124
124
|
}
|
|
125
|
-
function
|
|
126
|
-
let t =
|
|
127
|
-
return `<a class="tc-powered-by" href="${n}"${r ? ` target="${
|
|
125
|
+
function V(e = {}) {
|
|
126
|
+
let t = F(e.height), n = L(R(e.href)), r = e.target ?? "_blank";
|
|
127
|
+
return `<a class="tc-powered-by" href="${n}"${r ? ` target="${L(r)}"${z(r) ? " rel=\"noopener noreferrer\"" : ""}` : ""} aria-label="${j}" style="${`display:inline-flex;align-items:center;gap:${t.gap}px;height:${t.height}px;color:inherit;text-decoration:none;font-size:${t.fontSize}px;line-height:1;white-space:nowrap`}"><span aria-hidden="true">Powered by</span>` + B(M, t.height, t.height) + B(N, t.wordmarkWidth, t.wordmarkHeight) + "</a>";
|
|
128
128
|
}
|
|
129
|
-
function
|
|
129
|
+
function Di(e = {}, t = document) {
|
|
130
130
|
let n = t.createElement("div");
|
|
131
|
-
return n.innerHTML =
|
|
131
|
+
return n.innerHTML = V(e), n.firstElementChild;
|
|
132
132
|
}
|
|
133
133
|
//#endregion
|
|
134
134
|
//#region src/plugins/overlayScale.ts
|
|
135
|
-
function
|
|
136
|
-
let { viewport: t, data: n } = e, r =
|
|
135
|
+
function Oi(e) {
|
|
136
|
+
let { viewport: t, data: n } = e, r = Ar(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 ? Xr(e, n) : e;
|
|
137
137
|
return {
|
|
138
|
-
timeToX: (e) =>
|
|
138
|
+
timeToX: (e) => b(s(e), t),
|
|
139
139
|
xToTime: (e) => {
|
|
140
|
-
let r =
|
|
141
|
-
return n.length > 0 ?
|
|
140
|
+
let r = D(e, t);
|
|
141
|
+
return n.length > 0 ? Qn(r, n) : r;
|
|
142
142
|
},
|
|
143
|
-
indexToX: (e) =>
|
|
144
|
-
xToIndex: (e) =>
|
|
143
|
+
indexToX: (e) => b(e, t),
|
|
144
|
+
xToIndex: (e) => D(e, t),
|
|
145
145
|
priceToY: r,
|
|
146
|
-
yToPrice: (e) =>
|
|
146
|
+
yToPrice: (e) => ci(e, t),
|
|
147
147
|
barWidth: t.barWidth,
|
|
148
148
|
visible: o < a ? {
|
|
149
149
|
from: 0,
|
|
@@ -156,40 +156,7 @@ function wi(e) {
|
|
|
156
156
|
}
|
|
157
157
|
//#endregion
|
|
158
158
|
//#region src/grid/ChartGrid.ts
|
|
159
|
-
var
|
|
160
|
-
"1x1": {
|
|
161
|
-
cols: 1,
|
|
162
|
-
rows: 1
|
|
163
|
-
},
|
|
164
|
-
"1x2": {
|
|
165
|
-
cols: 2,
|
|
166
|
-
rows: 1
|
|
167
|
-
},
|
|
168
|
-
"2x1": {
|
|
169
|
-
cols: 1,
|
|
170
|
-
rows: 2
|
|
171
|
-
},
|
|
172
|
-
"2x2": {
|
|
173
|
-
cols: 2,
|
|
174
|
-
rows: 2
|
|
175
|
-
},
|
|
176
|
-
"1x3": {
|
|
177
|
-
cols: 3,
|
|
178
|
-
rows: 1
|
|
179
|
-
},
|
|
180
|
-
"3x1": {
|
|
181
|
-
cols: 1,
|
|
182
|
-
rows: 3
|
|
183
|
-
},
|
|
184
|
-
"2x3": {
|
|
185
|
-
cols: 3,
|
|
186
|
-
rows: 2
|
|
187
|
-
},
|
|
188
|
-
"3x2": {
|
|
189
|
-
cols: 2,
|
|
190
|
-
rows: 3
|
|
191
|
-
}
|
|
192
|
-
}, Ti = class {
|
|
159
|
+
var ki = class {
|
|
193
160
|
root;
|
|
194
161
|
cells = [];
|
|
195
162
|
layout;
|
|
@@ -197,20 +164,25 @@ var V = {
|
|
|
197
164
|
destroyed = !1;
|
|
198
165
|
syncing = !1;
|
|
199
166
|
constructor(e, t = {}) {
|
|
200
|
-
this.options = t, this.layout = t.layout
|
|
167
|
+
this.options = t, this.layout = d(t.layout) ? t.layout : "2x2", this.root = document.createElement("div"), this.root.style.cssText = "display:grid;width:100%;height:100%;overflow:hidden;", e.appendChild(this.root), this.applyLayout(), this.createCells();
|
|
201
168
|
}
|
|
202
169
|
applyLayout() {
|
|
203
|
-
let { cols: e, rows: t } =
|
|
204
|
-
this.root.style.gridTemplateColumns = `repeat(${e}, 1fr)`, this.root.style.gridTemplateRows = `repeat(${t}, 1fr)`, this.root.style.gap = `${n}px
|
|
170
|
+
let { cols: e, rows: t } = m[this.layout], n = this.options.gap ?? 1;
|
|
171
|
+
this.root.style.gridTemplateColumns = `repeat(${e}, minmax(0, 1fr))`, this.root.style.gridTemplateRows = `repeat(${t}, minmax(0, 1fr))`, this.root.style.gap = `${n}px`, this.placeCells();
|
|
172
|
+
}
|
|
173
|
+
placeCells() {
|
|
174
|
+
let e = ne(m[this.layout]);
|
|
175
|
+
this.cells.forEach((t, n) => re(t.container, e[n]));
|
|
205
176
|
}
|
|
206
177
|
createCells() {
|
|
207
|
-
let
|
|
208
|
-
for (let
|
|
178
|
+
let e = p(m[this.layout]);
|
|
179
|
+
for (let t = 0; t < e; t++) this.cells.push(this.createCell(t));
|
|
180
|
+
this.placeCells();
|
|
209
181
|
}
|
|
210
182
|
createCell(e) {
|
|
211
183
|
let t = this.options.cells?.[e] ?? {}, n = document.createElement("div");
|
|
212
184
|
n.style.cssText = "position:relative;overflow:hidden;min-width:0;min-height:0;", this.root.appendChild(n);
|
|
213
|
-
let r = new
|
|
185
|
+
let r = new f(n, {
|
|
214
186
|
chartType: "candlestick",
|
|
215
187
|
autoScale: !0,
|
|
216
188
|
features: {
|
|
@@ -248,14 +220,18 @@ var V = {
|
|
|
248
220
|
}), i;
|
|
249
221
|
}
|
|
250
222
|
setLayout(e) {
|
|
251
|
-
if (e === this.layout) return;
|
|
252
|
-
let t = this.cells.length,
|
|
253
|
-
if (
|
|
223
|
+
if (e === this.layout || !d(e)) return;
|
|
224
|
+
let t = this.cells.length, n = p(m[e]);
|
|
225
|
+
if (n < t) for (let e = t - 1; e >= n; e--) {
|
|
254
226
|
let t = this.cells[e];
|
|
255
227
|
t.chart.destroy(), t.container.remove(), this.cells.pop();
|
|
256
228
|
}
|
|
257
229
|
this.layout = e, this.applyLayout();
|
|
258
|
-
for (let e = t; e <
|
|
230
|
+
for (let e = t; e < n; e++) this.cells.push(this.createCell(e));
|
|
231
|
+
this.placeCells();
|
|
232
|
+
}
|
|
233
|
+
getLayout() {
|
|
234
|
+
return this.layout;
|
|
259
235
|
}
|
|
260
236
|
getChart(e) {
|
|
261
237
|
return this.cells[e]?.chart ?? null;
|
|
@@ -279,7 +255,7 @@ var V = {
|
|
|
279
255
|
async connectAll(e, t, n, r = 500) {
|
|
280
256
|
let i = [];
|
|
281
257
|
for (let a = 0; a < this.cells.length && a < t.length; a++) i.push(this.connectCell(a, {
|
|
282
|
-
...typeof e == "function" ? { adapter: e(t[a], a) } :
|
|
258
|
+
...typeof e == "function" ? { adapter: e(t[a], a) } : br(e) ? { feed: e } : { adapter: e },
|
|
283
259
|
symbol: t[a],
|
|
284
260
|
timeframe: n,
|
|
285
261
|
historyLimit: r
|
|
@@ -296,13 +272,13 @@ var V = {
|
|
|
296
272
|
this.cells = [], this.root.remove();
|
|
297
273
|
}
|
|
298
274
|
}
|
|
299
|
-
},
|
|
275
|
+
}, Ai = class extends _ {
|
|
300
276
|
options;
|
|
301
277
|
constructor(e, t) {
|
|
302
278
|
super(e, t.theme), this.options = t, this.requestRender();
|
|
303
279
|
}
|
|
304
280
|
renderChart(e, t, n, r) {
|
|
305
|
-
|
|
281
|
+
Ur(e, t, n, this.options, r);
|
|
306
282
|
}
|
|
307
283
|
update(e) {
|
|
308
284
|
this.options = {
|
|
@@ -316,15 +292,15 @@ var V = {
|
|
|
316
292
|
...e
|
|
317
293
|
}, this.requestRender();
|
|
318
294
|
}
|
|
319
|
-
},
|
|
295
|
+
}, ji = class extends _ {
|
|
320
296
|
options;
|
|
321
297
|
crosshair = null;
|
|
322
298
|
constructor(e, t) {
|
|
323
|
-
super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new
|
|
299
|
+
super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new v(this.canvas, () => this.requestRender())), this.requestRender();
|
|
324
300
|
}
|
|
325
301
|
renderChart(e, t, n, r) {
|
|
326
302
|
let i = this.crosshair?.getPosition() ?? null;
|
|
327
|
-
|
|
303
|
+
Fr(e, t, n, this.options, r, i);
|
|
328
304
|
}
|
|
329
305
|
update(e) {
|
|
330
306
|
this.options = {
|
|
@@ -341,15 +317,15 @@ var V = {
|
|
|
341
317
|
destroy() {
|
|
342
318
|
this.crosshair?.destroy(), super.destroy();
|
|
343
319
|
}
|
|
344
|
-
}, H = class extends
|
|
320
|
+
}, H = class extends _ {
|
|
345
321
|
options;
|
|
346
322
|
crosshair = null;
|
|
347
323
|
constructor(e, t) {
|
|
348
|
-
super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new
|
|
324
|
+
super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new v(this.canvas, () => this.requestRender())), this.requestRender();
|
|
349
325
|
}
|
|
350
326
|
renderChart(e, t, n, r) {
|
|
351
327
|
let i = this.crosshair?.getPosition() ?? null;
|
|
352
|
-
|
|
328
|
+
Lr(e, t, n, this.options, r, i);
|
|
353
329
|
}
|
|
354
330
|
update(e, t) {
|
|
355
331
|
this.options = {
|
|
@@ -369,7 +345,7 @@ var V = {
|
|
|
369
345
|
destroy() {
|
|
370
346
|
this.crosshair?.destroy(), super.destroy();
|
|
371
347
|
}
|
|
372
|
-
}, U = class extends
|
|
348
|
+
}, U = class extends _ {
|
|
373
349
|
options;
|
|
374
350
|
crosshair = null;
|
|
375
351
|
cachedRects = [];
|
|
@@ -379,7 +355,7 @@ var V = {
|
|
|
379
355
|
lastLayoutHeight = 0;
|
|
380
356
|
handleClick = null;
|
|
381
357
|
constructor(e, t) {
|
|
382
|
-
super(e, t.theme), this.options = t, this.currentData = t.data ?? [], t.crosshair !== !1 && (this.crosshair = new
|
|
358
|
+
super(e, t.theme), this.options = t, this.currentData = t.data ?? [], t.crosshair !== !1 && (this.crosshair = new v(this.canvas, () => this.requestRender())), t.onCellClick && (this.handleClick = (e) => {
|
|
383
359
|
let t = this.canvas.getBoundingClientRect(), n = e.clientX - t.left, r = e.clientY - t.top;
|
|
384
360
|
this.onCanvasClick(n, r);
|
|
385
361
|
}, this.canvas.addEventListener("click", this.handleClick)), this.applyLabel(), this.recomputeLayout(), this.requestRender();
|
|
@@ -396,20 +372,20 @@ var V = {
|
|
|
396
372
|
height: this.height
|
|
397
373
|
}, t = this.options.cellPadding ?? 2;
|
|
398
374
|
if (this.lastLayoutWidth = this.width, this.lastLayoutHeight = this.height, this.cachedGroups = [], this.options.grouped) {
|
|
399
|
-
let { groups: n, cells: r } =
|
|
375
|
+
let { groups: n, cells: r } = Sr(this.currentData.map((e) => ({
|
|
400
376
|
id: e.id,
|
|
401
377
|
weight: e.weight ?? (Math.abs(e.value) || 1),
|
|
402
378
|
group: e.group,
|
|
403
379
|
value: e.value
|
|
404
|
-
})), e, t,
|
|
380
|
+
})), e, t, vn);
|
|
405
381
|
this.cachedRects = r, this.cachedGroups = n;
|
|
406
382
|
} else if (this.options.weighted) {
|
|
407
383
|
let n = this.currentData.map((e) => ({
|
|
408
384
|
id: e.id,
|
|
409
385
|
weight: e.weight ?? (Math.abs(e.value) || 1)
|
|
410
386
|
}));
|
|
411
|
-
this.cachedRects =
|
|
412
|
-
} else this.cachedRects =
|
|
387
|
+
this.cachedRects = Cr(n, e, t);
|
|
388
|
+
} else this.cachedRects = wr(this.currentData.map((e) => ({ id: e.id })), e, t);
|
|
413
389
|
}
|
|
414
390
|
onCanvasClick(e, t) {
|
|
415
391
|
if (this.options.onCellClick) for (let n of this.cachedRects) {
|
|
@@ -424,7 +400,7 @@ var V = {
|
|
|
424
400
|
renderChart(e, t, n, r) {
|
|
425
401
|
(t !== this.lastLayoutWidth || n !== this.lastLayoutHeight) && this.recomputeLayout();
|
|
426
402
|
let i = this.crosshair?.getPosition() ?? null;
|
|
427
|
-
|
|
403
|
+
zr(e, t, n, this.currentData, this.cachedRects, this.options, r, i, this.cachedGroups);
|
|
428
404
|
}
|
|
429
405
|
update(e) {
|
|
430
406
|
this.currentData = e, this.options = {
|
|
@@ -441,15 +417,15 @@ var V = {
|
|
|
441
417
|
destroy() {
|
|
442
418
|
this.crosshair?.destroy(), this.handleClick && this.canvas.removeEventListener("click", this.handleClick), super.destroy();
|
|
443
419
|
}
|
|
444
|
-
},
|
|
420
|
+
}, Mi = class extends _ {
|
|
445
421
|
options;
|
|
446
422
|
crosshair = null;
|
|
447
423
|
constructor(e, t) {
|
|
448
|
-
super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new
|
|
424
|
+
super(e, t.theme), this.options = t, t.crosshair !== !1 && (this.crosshair = new v(this.canvas, () => this.requestRender())), this.requestRender();
|
|
449
425
|
}
|
|
450
426
|
renderChart(e, t, n, r) {
|
|
451
427
|
let i = this.crosshair?.getPosition() ?? null;
|
|
452
|
-
|
|
428
|
+
Wr(e, t, n, this.options, r, i);
|
|
453
429
|
}
|
|
454
430
|
update(e) {
|
|
455
431
|
this.options = {
|
|
@@ -466,12 +442,12 @@ var V = {
|
|
|
466
442
|
destroy() {
|
|
467
443
|
this.crosshair?.destroy(), super.destroy();
|
|
468
444
|
}
|
|
469
|
-
},
|
|
470
|
-
function
|
|
445
|
+
}, Ni = 500;
|
|
446
|
+
function Pi(e) {
|
|
471
447
|
let t = 1 - e;
|
|
472
448
|
return 1 - t * t * t;
|
|
473
449
|
}
|
|
474
|
-
var
|
|
450
|
+
var Fi = class extends _ {
|
|
475
451
|
options;
|
|
476
452
|
currentValue;
|
|
477
453
|
targetValue;
|
|
@@ -482,7 +458,7 @@ var ji = class extends g {
|
|
|
482
458
|
super(e, t.theme), this.options = t, this.currentValue = t.value, this.targetValue = t.value, this.requestRender();
|
|
483
459
|
}
|
|
484
460
|
renderChart(e, t, n, r) {
|
|
485
|
-
|
|
461
|
+
Rr(e, t, n, this.options, r, this.currentValue);
|
|
486
462
|
}
|
|
487
463
|
setValue(e) {
|
|
488
464
|
if (this.options.animate === !1) {
|
|
@@ -512,7 +488,7 @@ var ji = class extends g {
|
|
|
512
488
|
if (this.animationFrameId !== null) return;
|
|
513
489
|
let e = () => {
|
|
514
490
|
if (this.animationFrameId = null, this.animationStart === null) return;
|
|
515
|
-
let t = this.options.animationDuration ??
|
|
491
|
+
let t = this.options.animationDuration ?? Ni, n = performance.now() - this.animationStart, r = Math.min(1, n / Math.max(1, t)), i = Pi(r);
|
|
516
492
|
this.currentValue = this.animationFrom + (this.targetValue - this.animationFrom) * i, this.requestRender(), r < 1 ? this.animationFrameId = requestAnimationFrame(e) : (this.currentValue = this.targetValue, this.animationStart = null);
|
|
517
493
|
};
|
|
518
494
|
this.animationFrameId = requestAnimationFrame(e);
|
|
@@ -523,7 +499,7 @@ var ji = class extends g {
|
|
|
523
499
|
destroy() {
|
|
524
500
|
this.cancelAnimation(), super.destroy();
|
|
525
501
|
}
|
|
526
|
-
}, W = class extends
|
|
502
|
+
}, W = class extends _ {
|
|
527
503
|
options;
|
|
528
504
|
layout = null;
|
|
529
505
|
layoutFor = null;
|
|
@@ -538,11 +514,11 @@ var ji = class extends g {
|
|
|
538
514
|
this.canvas.style.cursor = this.hits(this.layout, e.clientX - t.left, e.clientY - t.top) ? "pointer" : "";
|
|
539
515
|
};
|
|
540
516
|
constructor(e, t) {
|
|
541
|
-
super(e, t.theme), this.options = t, this.crosshair = new
|
|
517
|
+
super(e, t.theme), this.options = t, this.crosshair = new v(this.canvas, () => this.requestRender()), this.canvas.addEventListener("click", this.onClick), this.canvas.addEventListener("pointermove", this.onMove), this.applyLabel(), this.requestRender();
|
|
542
518
|
}
|
|
543
519
|
renderChart(e, t, n, r) {
|
|
544
520
|
let i = this.options.crosshair === !1 ? null : this.crosshair.getPosition(), a = this.layoutFor;
|
|
545
|
-
(!this.layout || !a || a.options !== this.options || a.width !== t || a.height !== n || a.theme !== r) && (this.layout = this.compute(t, n, r,
|
|
521
|
+
(!this.layout || !a || a.options !== this.options || a.width !== t || a.height !== n || a.theme !== r) && (this.layout = this.compute(t, n, r, er(e, r)), this.layoutFor = {
|
|
546
522
|
options: this.options,
|
|
547
523
|
width: t,
|
|
548
524
|
height: n,
|
|
@@ -561,12 +537,12 @@ var ji = class extends g {
|
|
|
561
537
|
destroy() {
|
|
562
538
|
this.crosshair.destroy(), this.canvas.removeEventListener("click", this.onClick), this.canvas.removeEventListener("pointermove", this.onMove), super.destroy();
|
|
563
539
|
}
|
|
564
|
-
},
|
|
540
|
+
}, Ii = class extends W {
|
|
565
541
|
compute(e, t, n, r) {
|
|
566
|
-
return
|
|
542
|
+
return tr(this.options, e, t, n, r);
|
|
567
543
|
}
|
|
568
544
|
draw(e, t, n, r, i, a) {
|
|
569
|
-
|
|
545
|
+
Mr(e, t, n, this.options, r, i, a);
|
|
570
546
|
}
|
|
571
547
|
describe() {
|
|
572
548
|
return `Bar chart of ${this.options.series.map((e) => e.name).join(", ")}, ${this.options.categories.length} categories`;
|
|
@@ -575,10 +551,10 @@ var ji = class extends g {
|
|
|
575
551
|
return this.options.onBarClick !== void 0;
|
|
576
552
|
}
|
|
577
553
|
hits(e, t, n) {
|
|
578
|
-
return
|
|
554
|
+
return x(e, t, n) !== null;
|
|
579
555
|
}
|
|
580
556
|
clickAt(e, t, n) {
|
|
581
|
-
let r =
|
|
557
|
+
let r = x(e, t, n);
|
|
582
558
|
r && this.options.onBarClick?.({
|
|
583
559
|
category: r.category,
|
|
584
560
|
series: r.series,
|
|
@@ -592,12 +568,12 @@ var ji = class extends g {
|
|
|
592
568
|
series: t
|
|
593
569
|
});
|
|
594
570
|
}
|
|
595
|
-
},
|
|
571
|
+
}, Li = class extends W {
|
|
596
572
|
compute(e, t, n, r) {
|
|
597
|
-
return
|
|
573
|
+
return ir(this.options, e, t, n, r);
|
|
598
574
|
}
|
|
599
575
|
draw(e, t, n, r, i, a) {
|
|
600
|
-
|
|
576
|
+
Ir(e, t, n, this.options, r, i, a);
|
|
601
577
|
}
|
|
602
578
|
describe() {
|
|
603
579
|
let e = this.options.data.filter((e) => Number.isFinite(e.value) && e.value > 0).map((e) => e.label).join(", ");
|
|
@@ -607,21 +583,21 @@ var ji = class extends g {
|
|
|
607
583
|
return this.options.onSliceClick !== void 0;
|
|
608
584
|
}
|
|
609
585
|
hits(e, t, n) {
|
|
610
|
-
return
|
|
586
|
+
return w(e, t, n) !== null;
|
|
611
587
|
}
|
|
612
588
|
clickAt(e, t, n) {
|
|
613
|
-
let r =
|
|
589
|
+
let r = w(e, t, n);
|
|
614
590
|
r && this.options.onSliceClick?.(r.slice);
|
|
615
591
|
}
|
|
616
592
|
update(e) {
|
|
617
593
|
this.setOptions({ data: e });
|
|
618
594
|
}
|
|
619
|
-
},
|
|
595
|
+
}, Ri = class extends W {
|
|
620
596
|
compute(e, t, n, r) {
|
|
621
|
-
return
|
|
597
|
+
return sr(this.options, e, t, n, r);
|
|
622
598
|
}
|
|
623
599
|
draw(e, t, n, r, i, a) {
|
|
624
|
-
|
|
600
|
+
Hr(e, t, n, this.options, r, i, a);
|
|
625
601
|
}
|
|
626
602
|
describe() {
|
|
627
603
|
let e = this.options.series.reduce((e, t) => e + t.points.length, 0);
|
|
@@ -631,21 +607,21 @@ var ji = class extends g {
|
|
|
631
607
|
return this.options.onPointClick !== void 0;
|
|
632
608
|
}
|
|
633
609
|
hits(e, t, n) {
|
|
634
|
-
return
|
|
610
|
+
return E(e, t, n) !== null;
|
|
635
611
|
}
|
|
636
612
|
clickAt(e, t, n) {
|
|
637
|
-
let r =
|
|
613
|
+
let r = E(e, t, n);
|
|
638
614
|
r && this.options.onPointClick?.(r.point, r.series);
|
|
639
615
|
}
|
|
640
616
|
update(e) {
|
|
641
617
|
this.setOptions({ series: e });
|
|
642
618
|
}
|
|
643
|
-
},
|
|
619
|
+
}, zi = class extends W {
|
|
644
620
|
compute(e, t, n, r) {
|
|
645
|
-
return
|
|
621
|
+
return ar(this.options, e, t, n, r);
|
|
646
622
|
}
|
|
647
623
|
draw(e, t, n, r, i, a) {
|
|
648
|
-
|
|
624
|
+
Br(e, t, n, this.options, r, i, a);
|
|
649
625
|
}
|
|
650
626
|
describe() {
|
|
651
627
|
return `Histogram of ${this.options.values.length} values`;
|
|
@@ -660,12 +636,12 @@ var ji = class extends g {
|
|
|
660
636
|
update(e) {
|
|
661
637
|
this.setOptions({ values: e });
|
|
662
638
|
}
|
|
663
|
-
},
|
|
639
|
+
}, Bi = class extends W {
|
|
664
640
|
compute(e, t, n, r) {
|
|
665
|
-
return
|
|
641
|
+
return nr(this.options, e, t, n, r);
|
|
666
642
|
}
|
|
667
643
|
draw(e, t, n, r, i, a) {
|
|
668
|
-
|
|
644
|
+
Nr(e, t, n, this.options, r, i, a);
|
|
669
645
|
}
|
|
670
646
|
describe() {
|
|
671
647
|
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];
|
|
@@ -675,21 +651,21 @@ var ji = class extends g {
|
|
|
675
651
|
return this.options.onDayClick !== void 0;
|
|
676
652
|
}
|
|
677
653
|
hits(e, t, n) {
|
|
678
|
-
return
|
|
654
|
+
return S(e, t, n)?.day !== void 0;
|
|
679
655
|
}
|
|
680
656
|
clickAt(e, t, n) {
|
|
681
|
-
let r =
|
|
657
|
+
let r = S(e, t, n)?.day;
|
|
682
658
|
r && this.options.onDayClick?.(r);
|
|
683
659
|
}
|
|
684
660
|
update(e) {
|
|
685
661
|
this.setOptions({ data: e });
|
|
686
662
|
}
|
|
687
|
-
}, G = 12,
|
|
663
|
+
}, G = 12, Vi = class extends W {
|
|
688
664
|
compute(e, t, n, r) {
|
|
689
|
-
return
|
|
665
|
+
return or(this.options, e, t, n, r);
|
|
690
666
|
}
|
|
691
667
|
draw(e, t, n, r, i, a) {
|
|
692
|
-
|
|
668
|
+
Vr(e, t, n, this.options, r, i, a);
|
|
693
669
|
}
|
|
694
670
|
describe() {
|
|
695
671
|
let { rows: e, columns: t } = this.options;
|
|
@@ -699,21 +675,21 @@ var ji = class extends g {
|
|
|
699
675
|
return this.options.onCellClick !== void 0;
|
|
700
676
|
}
|
|
701
677
|
hits(e, t, n) {
|
|
702
|
-
return
|
|
678
|
+
return C(e, t, n) !== null;
|
|
703
679
|
}
|
|
704
680
|
clickAt(e, t, n) {
|
|
705
|
-
let r =
|
|
681
|
+
let r = C(e, t, n);
|
|
706
682
|
r && this.options.onCellClick?.(r.cell);
|
|
707
683
|
}
|
|
708
684
|
update(e) {
|
|
709
685
|
this.setOptions({ values: e });
|
|
710
686
|
}
|
|
711
|
-
},
|
|
687
|
+
}, Hi = class extends W {
|
|
712
688
|
compute(e, t, n, r) {
|
|
713
|
-
return
|
|
689
|
+
return rr(this.options, e, t, n, r);
|
|
714
690
|
}
|
|
715
691
|
draw(e, t, n, r, i, a) {
|
|
716
|
-
|
|
692
|
+
Pr(e, t, n, this.options, r, i, a);
|
|
717
693
|
}
|
|
718
694
|
describe() {
|
|
719
695
|
return `Counter-clock chart of price against volume, ${this.options.period ?? 25}-bar averages`;
|
|
@@ -722,19 +698,19 @@ var ji = class extends g {
|
|
|
722
698
|
return this.options.onPointClick !== void 0;
|
|
723
699
|
}
|
|
724
700
|
hits(e, t, n) {
|
|
725
|
-
return
|
|
701
|
+
return T(e, t, n) !== null;
|
|
726
702
|
}
|
|
727
703
|
clickAt(e, t, n) {
|
|
728
|
-
let r =
|
|
704
|
+
let r = T(e, t, n);
|
|
729
705
|
r && this.options.onPointClick?.(r.point);
|
|
730
706
|
}
|
|
731
707
|
getPhase() {
|
|
732
|
-
return
|
|
708
|
+
return ur(fr(this.options.data, this.options.period ?? 25, qr(this.options)));
|
|
733
709
|
}
|
|
734
710
|
update(e) {
|
|
735
711
|
this.setOptions({ data: e });
|
|
736
712
|
}
|
|
737
|
-
},
|
|
713
|
+
}, Ui = [
|
|
738
714
|
"Jan",
|
|
739
715
|
"Feb",
|
|
740
716
|
"Mar",
|
|
@@ -769,7 +745,7 @@ function J(e) {
|
|
|
769
745
|
if (e.length === 0) return [];
|
|
770
746
|
let t = [];
|
|
771
747
|
for (let n of e) {
|
|
772
|
-
let e =
|
|
748
|
+
let e = Gt(n.time, "1M"), r = t[t.length - 1];
|
|
773
749
|
r && r.key === e ? r.close = n.equity : t.push({
|
|
774
750
|
key: e,
|
|
775
751
|
close: n.equity
|
|
@@ -782,7 +758,7 @@ function J(e) {
|
|
|
782
758
|
let a = new Date(e.key), o = a.getUTCFullYear(), s = a.getUTCMonth();
|
|
783
759
|
r.push({
|
|
784
760
|
id: `${o}-${String(s + 1).padStart(2, "0")}`,
|
|
785
|
-
label:
|
|
761
|
+
label: Ui[s],
|
|
786
762
|
group: String(o),
|
|
787
763
|
value: i
|
|
788
764
|
});
|
|
@@ -843,9 +819,9 @@ function Q(e) {
|
|
|
843
819
|
//#endregion
|
|
844
820
|
//#region src/finance/PerformanceDashboard.ts
|
|
845
821
|
function $(e) {
|
|
846
|
-
return !e || e === "dark" ?
|
|
822
|
+
return !e || e === "dark" ? ye : e === "light" ? Pe : e;
|
|
847
823
|
}
|
|
848
|
-
var
|
|
824
|
+
var Wi = class {
|
|
849
825
|
options;
|
|
850
826
|
theme;
|
|
851
827
|
root;
|
|
@@ -994,6 +970,6 @@ var Bi = class {
|
|
|
994
970
|
}
|
|
995
971
|
};
|
|
996
972
|
//#endregion
|
|
997
|
-
export {
|
|
973
|
+
export { $t as AlertManager, en as Animator, Ii as BarChart, tn as BarCountdown, nn as BinanceAdapter, rn as BybitAdapter, an as CANDLE_PATTERNS, he as CHART_STYLE_KEYS, di as CORRECTABLE_BARS, Bi as CalendarChart, f as Chart, ki as ChartGrid, on as ChartLegend, sn as ChartStateManager, cn as CoinbaseAdapter, ln as CompareRenderer, Hi as CounterClockChart, un as CrosshairTooltip, dn as CurrentPriceLine, ge as DARK_PRICE_LIMITS, _e as DARK_TERMINAL, ve as DARK_THEME, be as DEFAULT_DRAWING_STYLE, xe as DEFAULT_FONT_FAMILY, e as DEFAULT_HISTORY_PAGE_SIZE, fn as DEFAULT_LEGEND_CONFIG, pn as DEFAULT_MAX_WEBGL_CHARTS, Se as DEFAULT_RECONNECT, mn as DEFAULT_SESSION_HOURS, Ce as DEFAULT_SIGNAL_STYLE, we as DEFAULT_STREAM_CONFIG, Te as DEFAULT_TIMEFRAME_FAVORITES, Ee as DEFAULT_TRADE_ZONE_STYLE, De as DEFAULT_TRADING_CONFIG, hn as DataExporter, i as DataManager, ji as DepthChart, Li as DonutChart, ue as DragDropImporter, gn as DrawingBase, ie as EXCHANGE_TIMEZONE, u as EXCHANGE_TIME_ZONE, _n as Easing, H as EquityCurveChart, Fi as GaugeChart, oe as HISTORY_RETRY_MS, Oe as HNX_SESSIONS, ke as HOSE_SESSIONS, U as HeatmapChart, zi as HistogramChart, yn as INDICATOR_CATEGORIES, bn as IndicatorBase, xn as IndicatorValueMap, Sn as KEPT_BUCKETS, Ae as KRX_SESSIONS, je as KR_COLORS, Cn as KeyboardHandler, wn as KrakenAdapter, Me as LIGHT_PRICE_LIMITS, Ne as LIGHT_THEME, o as LayoutManager, fe as LayoutSession, Fe as MARKET_CRYPTO, Ie as MARKET_HNX, Le as MARKET_HOSE, h as MARKET_HOSE_ETF, g as MARKET_KRX, Re as MARKET_NXT, ze as MARKET_NYSE, Be as MARKET_UPBIT_KRW, Ve as MARKET_UPCOM, He as MARKET_VN30F, Tn as MAX_ALERT_BARS, le as MAX_LAYOUT_NAME, En as MIN_ALERT_BARS, Ue as MS_TIME_THRESHOLD, Dn as ManualFeed, Vi as MatrixChart, On as MockAdapter, We as NXT_SESSIONS, l as PLUGIN_API_VERSION, j as POWERED_BY_LABEL, Ge as PRICE_SOURCES, kn as PaperExecutionAdapter, Wi as PerformanceDashboard, te as PluginManager, An as PollingAdapter, jn as RANGE_PRESETS, Mn as ReconnectManager, Nn as ReplayController, Pn as ReplayManager, Fn as ResamplingAdapter, In as ReshapeMemo, Ke as SANS_FONT_FAMILY, Ri as ScatterChart, Ln as Screenshot, Rn as SessionBreaks, zn as SessionShading, Bn as SignalMarkerManager, Ai as SparklineChart, Vn as StreamManager, qe as TC_PALETTE, Je as TC_SERIES_COLORS, Ye as TIMEFRAMES_CRYPTO, Xe as TIMEFRAMES_FOREX, Ze as TIMEFRAMES_STOCK, M as TRADECANVAS_MARK_SVG, A as TRADECANVAS_URL, N as TRADECANVAS_WORDMARK_SVG, se as ThemeManager, Hn as TickAggregator, Un as TickBarAdapter, Wn as TickBarBuilder, Gn as TradeZoneManager, Qe as UPCOM_SESSIONS, y as UndoRedoManager, Kn as UpbitAdapter, $e as VN30F_SESSIONS, et as VN_COLORS, tt as VOLUME_ALPHA, qn as VolumeRenderer, Mi as WaterfallChart, Jn as Watermark, Yn as WebSocketAdapter, Xn as adapterFromFeed, Zn as axisTimes, $n as barIndexToX, nt as barTimeUnit, rt as barsAreDaily, de as cleanLayoutName, me as clearGlobalPlugins, q as computeDrawdownCurve, J as computeMonthlyReturns, it as computePriceLimits, at as contrastRatio, cr as correlationMatrix, lr as counterClockPhase, dr as counterClockPoints, ot as createMarketTheme, Di as createPoweredBy, st as createVNTheme, pr as describeInputs, mr as detectCandlePatterns, yi as feedBars, hr as feedFromAdapter, ct as formatFraction, lt as formatNumber, gr as formatTooltipTime, ut as formatVND, dt as formatVolumeLoc, ft as fractionTick, pt as getCurrentSession, c as getGlobalPlugins, mt as getLocale, _r as histogramBins, vr as indicatorCategory, ht as indicatorSource, gt as inkOn, yr as isDataFeed, xr as isPriceLevelAlert, _t as isPriceSource, vt as isTimeFrame, yt as isValidTimeZone, ae as localStorageLayouts, Tr as lttbDownsample, Er as lttbVisibleIndices, bt as marketStatus, ee as memoryLayouts, Dr as niceScale, xt as normalizeBar, St as normalizeBarTime, Ct as offsetAt, z as opensElsewhere, Oi as overlayScale, r as overlaysForLayer, wt as parseIndicatorSource, ce as parseOHLCV, Tt as parseTimeframe, Et as pickBaseTimeframe, n as pluginKey, V as poweredByHtml, F as poweredByLayout, Dt as priceFormatterFor, Ot as priceStepAt, Or as priceToY, kr as priceToYMapper, jr as rangePresetStart, kt as rankSymbols, At as readNews, jt as readQuote, Mt as readableOn, Nt as registerLocale, t as registerPlugin, Pt as resampleBars, Ft as roundToPriceStep, R as safeBadgeHref, It as scaleMarketPrices, Q as selectKeyStats, Gr as servesTimeframe, Lt as setLocale, Kr as setMaxWebGLCharts, Rt as sourcePrice, zt as stepDecimals, Bt as symbolTimeZone, ui as syncIndicators, Vt as t, Ht as tickBarCount, Ut as tickerOf, Jr as timeToX, Wt as timeframeBucketStart, Kt as timeframeToMs, Yr as timestampToBarIndex, K as toEquityPoints, Zr as toHeikinAshi, Qr as toKagi, $r as toLineBreak, ei as toPointAndFigure, ti as toRangeBars, ni as toRenko, pe as unregisterPlugin, qt as usesKoreanUnits, Jt as vn30fContracts, Yt as vn30fLastTradingDay, Xt as volumeColor, Zt as wallToUtc, ri as withResampling, ii as withTickBars, ai as xToBarIndex, oi as xToTime, si as yToPrice, Qt as zoneOffsetMinutes };
|
|
998
974
|
|
|
999
975
|
//# sourceMappingURL=index.js.map
|