@luxalgo/vela 0.9.0 → 0.9.2
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/{DataProvider-zJGp58kb.d.cts → DataProvider-B5i0_yY4.d.cts} +1 -1
- package/dist/{DataProvider-BGlB1zSc.d.ts → DataProvider-CPFgSyAm.d.ts} +1 -1
- package/dist/{chunk-4WAHYL7Y.js → chunk-4AMWSBOW.js} +33 -2
- package/dist/{chunk-YRCL3WMD.js → chunk-Q7POFYNE.js} +7 -1
- package/dist/{chunk-XIRSR3D6.js → chunk-W4WTHJFA.js} +50 -31
- package/dist/{contributions-BjefWpxQ.d.ts → contributions-BDx47Vk0.d.ts} +11 -3
- package/dist/{contributions-CpCJisTC.d.cts → contributions-BiF6lVvJ.d.cts} +11 -3
- package/dist/index.cjs +42 -22
- package/dist/index.d.cts +13 -11
- package/dist/index.d.ts +13 -11
- package/dist/index.js +2 -2
- package/dist/{keymap-UolhuXH1.d.ts → keymap-C48ughm6.d.ts} +1 -1
- package/dist/{keymap-B9_FLhfJ.d.cts → keymap-W0hiajU6.d.cts} +1 -1
- package/dist/locales/ar.cjs +2 -0
- package/dist/locales/ar.d.cts +1 -1
- package/dist/locales/ar.d.ts +1 -1
- package/dist/locales/ar.js +2 -0
- package/dist/locales/de.cjs +2 -0
- package/dist/locales/de.d.cts +1 -1
- package/dist/locales/de.d.ts +1 -1
- package/dist/locales/de.js +2 -0
- package/dist/locales/en.cjs +2 -0
- package/dist/locales/en.d.cts +1 -1
- package/dist/locales/en.d.ts +1 -1
- package/dist/locales/en.js +2 -0
- package/dist/locales/es.cjs +2 -0
- package/dist/locales/es.d.cts +1 -1
- package/dist/locales/es.d.ts +1 -1
- package/dist/locales/es.js +2 -0
- package/dist/locales/fr.cjs +2 -0
- package/dist/locales/fr.d.cts +1 -1
- package/dist/locales/fr.d.ts +1 -1
- package/dist/locales/fr.js +2 -0
- package/dist/locales/he.cjs +2 -0
- package/dist/locales/he.d.cts +1 -1
- package/dist/locales/he.d.ts +1 -1
- package/dist/locales/he.js +2 -0
- package/dist/locales/hi.cjs +2 -0
- package/dist/locales/hi.d.cts +1 -1
- package/dist/locales/hi.d.ts +1 -1
- package/dist/locales/hi.js +2 -0
- package/dist/locales/id.cjs +2 -0
- package/dist/locales/id.d.cts +1 -1
- package/dist/locales/id.d.ts +1 -1
- package/dist/locales/id.js +2 -0
- package/dist/locales/it.cjs +2 -0
- package/dist/locales/it.d.cts +1 -1
- package/dist/locales/it.d.ts +1 -1
- package/dist/locales/it.js +2 -0
- package/dist/locales/ja.cjs +2 -0
- package/dist/locales/ja.d.cts +1 -1
- package/dist/locales/ja.d.ts +1 -1
- package/dist/locales/ja.js +2 -0
- package/dist/locales/ko.cjs +2 -0
- package/dist/locales/ko.d.cts +1 -1
- package/dist/locales/ko.d.ts +1 -1
- package/dist/locales/ko.js +2 -0
- package/dist/locales/ms.cjs +2 -0
- package/dist/locales/ms.d.cts +1 -1
- package/dist/locales/ms.d.ts +1 -1
- package/dist/locales/ms.js +2 -0
- package/dist/locales/pl.cjs +2 -0
- package/dist/locales/pl.d.cts +1 -1
- package/dist/locales/pl.d.ts +1 -1
- package/dist/locales/pl.js +2 -0
- package/dist/locales/pt-BR.cjs +2 -0
- package/dist/locales/pt-BR.d.cts +1 -1
- package/dist/locales/pt-BR.d.ts +1 -1
- package/dist/locales/pt-BR.js +2 -0
- package/dist/locales/ru.cjs +2 -0
- package/dist/locales/ru.d.cts +1 -1
- package/dist/locales/ru.d.ts +1 -1
- package/dist/locales/ru.js +2 -0
- package/dist/locales/th.cjs +2 -0
- package/dist/locales/th.d.cts +1 -1
- package/dist/locales/th.d.ts +1 -1
- package/dist/locales/th.js +2 -0
- package/dist/locales/tr.cjs +2 -0
- package/dist/locales/tr.d.cts +1 -1
- package/dist/locales/tr.d.ts +1 -1
- package/dist/locales/tr.js +2 -0
- package/dist/locales/vi.cjs +2 -0
- package/dist/locales/vi.d.cts +1 -1
- package/dist/locales/vi.d.ts +1 -1
- package/dist/locales/vi.js +2 -0
- package/dist/locales/zh-Hans.cjs +2 -0
- package/dist/locales/zh-Hans.d.cts +1 -1
- package/dist/locales/zh-Hans.d.ts +1 -1
- package/dist/locales/zh-Hans.js +2 -0
- package/dist/locales/zh-Hant.cjs +2 -0
- package/dist/locales/zh-Hant.d.cts +1 -1
- package/dist/locales/zh-Hant.d.ts +1 -1
- package/dist/locales/zh-Hant.js +2 -0
- package/dist/{options-D4L3_hv_.d.ts → options-B7aL1pbf.d.ts} +1 -1
- package/dist/{options-CpegHml_.d.cts → options-I1H2HDWw.d.cts} +1 -1
- package/dist/{plugin-DTmulpKM.d.ts → plugin-CbSGKQLB.d.ts} +6 -6
- package/dist/{plugin-DpNp4aBi.d.cts → plugin-ZknmqQqo.d.cts} +6 -6
- package/dist/plugin.cjs +1 -0
- package/dist/plugin.d.cts +7 -7
- package/dist/plugin.d.ts +7 -7
- package/dist/plugin.js +1 -1
- package/dist/providers/binance.d.cts +3 -3
- package/dist/providers/binance.d.ts +3 -3
- package/dist/providers/coinbase.d.cts +3 -3
- package/dist/providers/coinbase.d.ts +3 -3
- package/dist/providers/hyperliquid.d.cts +3 -3
- package/dist/providers/hyperliquid.d.ts +3 -3
- package/dist/{side-panel-CYmH1Opm.d.ts → side-panel-BEQJqSjR.d.cts} +2 -1
- package/dist/{side-panel-BqUnpfev.d.cts → side-panel-Ud0SBAnE.d.ts} +2 -1
- package/dist/{statusline-model-pGs3Xvp-.d.cts → statusline-model-CwYMw_Yl.d.cts} +7 -4
- package/dist/{statusline-model-C3yIY9WE.d.ts → statusline-model-ny7GXRuS.d.ts} +7 -4
- package/dist/{types-BlrXRLIR.d.cts → types-Bwf63xGI.d.cts} +4 -1
- package/dist/{types-BlrXRLIR.d.ts → types-Bwf63xGI.d.ts} +4 -1
- package/dist/ui.d.cts +3 -3
- package/dist/ui.d.ts +3 -3
- package/dist/vela.global.js +42 -22
- package/dist/vela.global.min.js +55 -55
- package/dist/widget.cjs +82 -26
- package/dist/widget.d.cts +10 -10
- package/dist/widget.d.ts +10 -10
- package/dist/widget.js +4 -4
- package/dist/workspace.cjs +82 -26
- package/dist/workspace.d.cts +7 -7
- package/dist/workspace.d.ts +7 -7
- package/dist/workspace.js +3 -3
- package/package.json +1 -1
package/dist/widget.cjs
CHANGED
|
@@ -6971,6 +6971,7 @@ function mergeConfig(base, patch) {
|
|
|
6971
6971
|
mode: isScaleMode(ps.mode) ? ps.mode : base.priceScale.mode,
|
|
6972
6972
|
log: isBool(ps.log) ? ps.log : base.priceScale.log,
|
|
6973
6973
|
invert: isBool(ps.invert) ? ps.invert : base.priceScale.invert,
|
|
6974
|
+
priceOnly: isBool(ps.priceOnly) ? ps.priceOnly : base.priceScale.priceOnly,
|
|
6974
6975
|
borderColor: isColor(ps.borderColor) ? ps.borderColor : base.priceScale.borderColor,
|
|
6975
6976
|
labelsVisible: isBool(ps.labelsVisible) ? ps.labelsVisible : base.priceScale.labelsVisible,
|
|
6976
6977
|
currentPriceLine: isBool(ps.currentPriceLine) ? ps.currentPriceLine : base.priceScale.currentPriceLine,
|
|
@@ -18859,6 +18860,7 @@ var TEXT20 = {
|
|
|
18859
18860
|
indexed: msg("widget.contextMenu.scale.indexed", "Indexed to 100"),
|
|
18860
18861
|
log: msg("widget.contextMenu.scale.log", "Logarithmic"),
|
|
18861
18862
|
auto: msg("widget.contextMenu.auto", "Auto (fits data to screen)"),
|
|
18863
|
+
priceOnly: msg("widget.contextMenu.scalePriceOnly", "Scale price chart only"),
|
|
18862
18864
|
invert: msg("widget.contextMenu.invert", "Invert scale"),
|
|
18863
18865
|
labels: msg("widget.contextMenu.labels", "Labels"),
|
|
18864
18866
|
axisLabels: msg("widget.contextMenu.axisLabels", "Price axis labels"),
|
|
@@ -18916,6 +18918,9 @@ function scaleWrites(choice, pane) {
|
|
|
18916
18918
|
["logScale", { pane: pane.id, value: log }]
|
|
18917
18919
|
];
|
|
18918
18920
|
}
|
|
18921
|
+
function priceOnlyState(pane, flag) {
|
|
18922
|
+
return mainScale(pane) ? flag : void 0;
|
|
18923
|
+
}
|
|
18919
18924
|
function invertWrite(next, pane) {
|
|
18920
18925
|
return mainScale(pane) ? ["invertScale", next] : ["invertScale", { pane: pane.id, value: next }];
|
|
18921
18926
|
}
|
|
@@ -18923,6 +18928,7 @@ function priceAxisItems(s, i18n) {
|
|
|
18923
18928
|
const t = (m) => textOf(i18n, m);
|
|
18924
18929
|
return [
|
|
18925
18930
|
{ id: "auto", label: t(TEXT20.auto), checked: s.auto },
|
|
18931
|
+
...s.priceOnly === void 0 ? [] : [{ id: "price-only", label: t(TEXT20.priceOnly), checked: s.priceOnly }],
|
|
18926
18932
|
{ id: "invert", label: t(TEXT20.invert), checked: s.invert },
|
|
18927
18933
|
...SCALE_CHOICES.map(([choice, label], i) => ({
|
|
18928
18934
|
id: `scale:${choice}`,
|
|
@@ -18971,6 +18977,7 @@ var CONTEXT_MENU_BUILTIN_ORDER = {
|
|
|
18971
18977
|
body: { "reset-view": -30, "remove-drawings": -20, "remove-indicators": -10, settings: 1e3 },
|
|
18972
18978
|
"price-axis": {
|
|
18973
18979
|
auto: -80,
|
|
18980
|
+
"price-only": -75,
|
|
18974
18981
|
invert: -70,
|
|
18975
18982
|
"scale:regular": -60,
|
|
18976
18983
|
"scale:percent": -50,
|
|
@@ -19057,6 +19064,7 @@ var PriceScaleDrawer = class {
|
|
|
19057
19064
|
const pane = this.pane;
|
|
19058
19065
|
const items = priceAxisItems({
|
|
19059
19066
|
auto: chart.renderer.get("autoScale") !== false,
|
|
19067
|
+
priceOnly: priceOnlyState(pane, this.flag("scalePriceOnly")),
|
|
19060
19068
|
invert: pane ? pane.invert : this.flag("invertScale"),
|
|
19061
19069
|
choice: scaleChoiceOf(pane ?? { mode: String(chart.renderer.get("scaleMode") ?? "price"), log: this.flag("logScale") }),
|
|
19062
19070
|
axisLabels: this.flag("axisLabels"),
|
|
@@ -19133,6 +19141,16 @@ var PriceScaleDrawer = class {
|
|
|
19133
19141
|
});
|
|
19134
19142
|
continue;
|
|
19135
19143
|
}
|
|
19144
|
+
if (item.id === "price-only") {
|
|
19145
|
+
row2(item.label, {
|
|
19146
|
+
checked: item.checked,
|
|
19147
|
+
onClick: () => {
|
|
19148
|
+
chart.renderer.set("scalePriceOnly", !this.flag("scalePriceOnly"));
|
|
19149
|
+
this.render();
|
|
19150
|
+
}
|
|
19151
|
+
});
|
|
19152
|
+
continue;
|
|
19153
|
+
}
|
|
19136
19154
|
if (item.id === "invert") {
|
|
19137
19155
|
row2(item.label, {
|
|
19138
19156
|
checked: item.checked,
|
|
@@ -21452,6 +21470,7 @@ function successorNative(entry) {
|
|
|
21452
21470
|
const hasInputs = Object.keys(inputs).length > 0;
|
|
21453
21471
|
return hasInputs || hidden ? { type: next, ...hasInputs ? { inputs } : {}, ...hidden ? { hidden } : {} } : next;
|
|
21454
21472
|
}
|
|
21473
|
+
var STATUSLINE_PART_KEYS = ["logo", "name", "market", "ohlc", "change"];
|
|
21455
21474
|
function sanitizeCell(raw) {
|
|
21456
21475
|
if (raw == null || typeof raw !== "object") return null;
|
|
21457
21476
|
const c = raw;
|
|
@@ -21466,6 +21485,12 @@ function sanitizeCell(raw) {
|
|
|
21466
21485
|
if (typeof c.replayWatermark === "boolean") out.replayWatermark = c.replayWatermark;
|
|
21467
21486
|
if (typeof c.indicatorTitles === "boolean") out.indicatorTitles = c.indicatorTitles;
|
|
21468
21487
|
if (typeof c.indicatorValues === "boolean") out.indicatorValues = c.indicatorValues;
|
|
21488
|
+
if (c.statuslineParts != null && typeof c.statuslineParts === "object") {
|
|
21489
|
+
const bag = c.statuslineParts;
|
|
21490
|
+
const parts = {};
|
|
21491
|
+
for (const key of STATUSLINE_PART_KEYS) if (typeof bag[key] === "boolean") parts[key] = bag[key];
|
|
21492
|
+
if (Object.keys(parts).length > 0) out.statuslineParts = parts;
|
|
21493
|
+
}
|
|
21469
21494
|
if (c.rendererConfig != null && typeof c.rendererConfig === "object") out.rendererConfig = c.rendererConfig;
|
|
21470
21495
|
if (c.drawings != null && typeof c.drawings === "object") out.drawings = c.drawings;
|
|
21471
21496
|
const ind = c.indicators;
|
|
@@ -22458,7 +22483,8 @@ var EngineOrchestrator = class _EngineOrchestrator {
|
|
|
22458
22483
|
symbol: this.config.market.symbol ?? "TEST",
|
|
22459
22484
|
timeframe: this.config.market.timeframe ?? "60",
|
|
22460
22485
|
symbolInfo: this.feed.symbolInfo?.(this.config.market),
|
|
22461
|
-
chartStyle: this.priceStyle
|
|
22486
|
+
chartStyle: this.priceStyle,
|
|
22487
|
+
session: this.config.market.session
|
|
22462
22488
|
};
|
|
22463
22489
|
}
|
|
22464
22490
|
/**
|
|
@@ -30117,6 +30143,9 @@ var SceneGraph = class {
|
|
|
30117
30143
|
this.logScale = false;
|
|
30118
30144
|
/** Inverted price axis on the price pane (high at the bottom). Study panes carry their own. */
|
|
30119
30145
|
this.invertScale = false;
|
|
30146
|
+
/** The price pane's autoscale fits the bars alone: indicator plots, their price lines
|
|
30147
|
+
* and Pine drawings paint where they fall instead of widening the window. */
|
|
30148
|
+
this.scalePriceOnly = false;
|
|
30120
30149
|
/** Exchange tick size for the active symbol (e.g. 0.01), when known. Drives the
|
|
30121
30150
|
* price-axis decimals — the instrument's true precision instead of the zoom-derived
|
|
30122
30151
|
* formula. Undefined until symbol metadata loads (the formula is the fallback). */
|
|
@@ -31815,6 +31844,18 @@ var DrawingSceneRenderer = class {
|
|
|
31815
31844
|
}
|
|
31816
31845
|
};
|
|
31817
31846
|
|
|
31847
|
+
// src/renderers/native/chrome/tz.ts
|
|
31848
|
+
var DAY_MS3 = 864e5;
|
|
31849
|
+
function displayZone(timeZone, barIntervalMs) {
|
|
31850
|
+
return barIntervalMs >= DAY_MS3 ? "UTC" : timeZone;
|
|
31851
|
+
}
|
|
31852
|
+
function tzOffsetMs(ms, timeZone) {
|
|
31853
|
+
return zoneOffsetMs(ms, timeZone);
|
|
31854
|
+
}
|
|
31855
|
+
function zonedDate(ms, timeZone) {
|
|
31856
|
+
return new Date(ms + tzOffsetMs(ms, timeZone));
|
|
31857
|
+
}
|
|
31858
|
+
|
|
31818
31859
|
// src/renderers/native/chrome/ticks.ts
|
|
31819
31860
|
function priceTicks(min, max, target = 6) {
|
|
31820
31861
|
if (!(max > min) || !Number.isFinite(min) || !Number.isFinite(max)) return [];
|
|
@@ -31955,7 +31996,7 @@ var STEP_LADDER = [
|
|
|
31955
31996
|
YEAR
|
|
31956
31997
|
];
|
|
31957
31998
|
function formatTimeStamp2(ms, timeZone, barIntervalMs, fmt = ENGLISH_FORMAT, surface = "crosshair") {
|
|
31958
|
-
return fmt.timeStamp(ms, { timeZone, withTime: barIntervalMs < DAY2, surface });
|
|
31999
|
+
return fmt.timeStamp(ms, { timeZone: displayZone(timeZone, barIntervalMs), withTime: barIntervalMs < DAY2, surface });
|
|
31959
32000
|
}
|
|
31960
32001
|
function pickStep(targetMs) {
|
|
31961
32002
|
for (const step of STEP_LADDER) if (step >= targetMs) return step;
|
|
@@ -32099,14 +32140,6 @@ var PriceAxisTickSource = class {
|
|
|
32099
32140
|
}
|
|
32100
32141
|
};
|
|
32101
32142
|
|
|
32102
|
-
// src/renderers/native/chrome/tz.ts
|
|
32103
|
-
function tzOffsetMs(ms, timeZone) {
|
|
32104
|
-
return zoneOffsetMs(ms, timeZone);
|
|
32105
|
-
}
|
|
32106
|
-
function zonedDate(ms, timeZone) {
|
|
32107
|
-
return new Date(ms + tzOffsetMs(ms, timeZone));
|
|
32108
|
-
}
|
|
32109
|
-
|
|
32110
32143
|
// src/renderers/native/chrome/countdown.ts
|
|
32111
32144
|
function countdownText2(barOpen, barMs, now2, fmt = ENGLISH_FORMAT) {
|
|
32112
32145
|
if (!(barMs > 0)) return null;
|
|
@@ -32820,7 +32853,7 @@ var ChromeRenderer = class {
|
|
|
32820
32853
|
ctx.textAlign = "center";
|
|
32821
32854
|
const y = dataH + (fullH - dataH) / 2;
|
|
32822
32855
|
const tr = coords.visibleTimeRange();
|
|
32823
|
-
const offset = tzOffsetMs((tr.from + tr.to) / 2, scene.timezone);
|
|
32856
|
+
const offset = tzOffsetMs((tr.from + tr.to) / 2, displayZone(scene.timezone, coords.barInterval));
|
|
32824
32857
|
const target = Math.max(3, Math.min(8, Math.floor(dataW / 64)));
|
|
32825
32858
|
const ticks = timeTicks(tr.from, tr.to, target, offset, scene.format).map((tick) => ({ ...tick, x: coords.timeToX(tick.time), half: ctx.measureText(tick.label).width / 2 })).filter((tick) => tick.x >= 20 && tick.x <= dataW - 20);
|
|
32826
32859
|
const GAP = 12;
|
|
@@ -33308,6 +33341,7 @@ var TEXT28 = {
|
|
|
33308
33341
|
indexedTo100: msg("chart.settings.indexedTo100", "Indexed to 100"),
|
|
33309
33342
|
logarithmic: msg("chart.settings.logarithmic", "Logarithmic"),
|
|
33310
33343
|
invertScale: msg("chart.settings.invertScale", "Invert scale"),
|
|
33344
|
+
scalePriceOnly: msg("chart.settings.scalePriceOnly", "Scale price chart only"),
|
|
33311
33345
|
lastPriceLine: msg("chart.settings.lastPriceLine", "Last price line"),
|
|
33312
33346
|
lastPriceLabel: msg("chart.settings.lastPriceLabel", "Last price label"),
|
|
33313
33347
|
countdownToBarClose: msg("chart.settings.countdownToBarClose", "Countdown to bar close"),
|
|
@@ -33816,6 +33850,7 @@ var SettingsDialog = class {
|
|
|
33816
33850
|
), "scales.price-scale.mode")
|
|
33817
33851
|
);
|
|
33818
33852
|
body.append(sid(this.boolRow(TEXT28.invertScale, config.priceScale.invert, (v) => this.emit({ priceScale: { invert: v } })), "scales.price-scale.invert"));
|
|
33853
|
+
body.append(sid(this.boolRow(TEXT28.scalePriceOnly, config.priceScale.priceOnly, (v) => this.emit({ priceScale: { priceOnly: v } })), "scales.price-scale.price-only"));
|
|
33819
33854
|
body.append(sid(this.separator(), "scales.price-scale"));
|
|
33820
33855
|
body.append(sid(this.boolRow(TEXT28.lastPriceLine, config.priceScale.currentPriceLine, (v) => this.emit({ priceScale: { currentPriceLine: v } })), "scales.price-scale.last-price-line"));
|
|
33821
33856
|
body.append(sid(this.boolRow(TEXT28.lastPriceLabel, config.priceScale.priceLabel, (v) => this.emit({ priceScale: { priceLabel: v } })), "scales.price-scale.last-price-label"));
|
|
@@ -41247,7 +41282,7 @@ var BackdropRenderer = class {
|
|
|
41247
41282
|
ctx.globalAlpha = gridAlpha;
|
|
41248
41283
|
ctx.strokeStyle = vertColor;
|
|
41249
41284
|
const tr = coords.visibleTimeRange();
|
|
41250
|
-
const offset = tzOffsetMs((tr.from + tr.to) / 2, scene.timezone);
|
|
41285
|
+
const offset = tzOffsetMs((tr.from + tr.to) / 2, displayZone(scene.timezone, coords.barInterval));
|
|
41251
41286
|
ctx.beginPath();
|
|
41252
41287
|
for (const tick of timeTicks(tr.from, tr.to, 8, offset)) {
|
|
41253
41288
|
const x = Math.round(coords.timeToX(tick.time)) + 0.5;
|
|
@@ -42039,7 +42074,7 @@ var NativeRenderer = class {
|
|
|
42039
42074
|
this.priceStyleCbs = /* @__PURE__ */ new Set();
|
|
42040
42075
|
this.priceStyleWillChangeCbs = /* @__PURE__ */ new Set();
|
|
42041
42076
|
this.name = "native";
|
|
42042
|
-
this.features = ["logScale", "currentPriceLine", "priceLabel", "countdown", "upColor", "downColor", "glow", "animZoom", "animPan", "animScroll", "animAutoscale", "animLiveBar", "intro", "zoomAnchor", "axisDrag", "paneResize", "candleZOrder", "candleVisible", "seriesOrder", "highlights", "sessionZones", "gridlines", "axisLabels", "scaleMode", "invertScale", "paneScales", "autoScale", "timezone", "keyboard", "historyChords", "priceStyle", "priceBaseline", "baselinePrice", "settings", "attribution", "dialogHost", "tradeMarkers", "marks", "indicatorTitles", "indicatorValues", "crosshairOverride", "drawingsInteractive", "priceAxisTicks"];
|
|
42077
|
+
this.features = ["logScale", "currentPriceLine", "priceLabel", "countdown", "upColor", "downColor", "glow", "animZoom", "animPan", "animScroll", "animAutoscale", "animLiveBar", "intro", "zoomAnchor", "axisDrag", "paneResize", "candleZOrder", "candleVisible", "seriesOrder", "highlights", "sessionZones", "gridlines", "axisLabels", "scaleMode", "invertScale", "scalePriceOnly", "paneScales", "autoScale", "timezone", "keyboard", "historyChords", "priceStyle", "priceBaseline", "baselinePrice", "settings", "attribution", "dialogHost", "tradeMarkers", "marks", "indicatorTitles", "indicatorValues", "crosshairOverride", "drawingsInteractive", "priceAxisTicks"];
|
|
42043
42078
|
/** Track cursor proximity to the scroll button on the plot (bubbles from the button too,
|
|
42044
42079
|
* so moving onto the button doesn't count as leaving). */
|
|
42045
42080
|
this.onScrollProximityMove = (e) => {
|
|
@@ -42198,6 +42233,9 @@ var NativeRenderer = class {
|
|
|
42198
42233
|
}
|
|
42199
42234
|
this.scene.invertScale = Boolean(value);
|
|
42200
42235
|
break;
|
|
42236
|
+
case "scalePriceOnly":
|
|
42237
|
+
this.scene.scalePriceOnly = Boolean(value);
|
|
42238
|
+
break;
|
|
42201
42239
|
case "autoScale":
|
|
42202
42240
|
for (const pane of this.scene.panes.values()) {
|
|
42203
42241
|
pane.manualScale = value ? null : { ...pane.scale };
|
|
@@ -42324,6 +42362,8 @@ var NativeRenderer = class {
|
|
|
42324
42362
|
return this.scene.scaleMode;
|
|
42325
42363
|
case "invertScale":
|
|
42326
42364
|
return this.scene.invertScale;
|
|
42365
|
+
case "scalePriceOnly":
|
|
42366
|
+
return this.scene.scalePriceOnly;
|
|
42327
42367
|
case "paneScales":
|
|
42328
42368
|
return this.paneScaleInfos();
|
|
42329
42369
|
case "autoScale": {
|
|
@@ -42470,6 +42510,7 @@ var NativeRenderer = class {
|
|
|
42470
42510
|
mode: this.scene.scaleMode,
|
|
42471
42511
|
log: this.scene.logScale,
|
|
42472
42512
|
invert: this.scene.invertScale,
|
|
42513
|
+
priceOnly: this.scene.scalePriceOnly,
|
|
42473
42514
|
borderColor: s.borderColor ?? t.borderColor,
|
|
42474
42515
|
labelsVisible: this.scene.showAxisLabels,
|
|
42475
42516
|
currentPriceLine: this.scene.showPriceLine,
|
|
@@ -42584,6 +42625,7 @@ var NativeRenderer = class {
|
|
|
42584
42625
|
this.scene.scaleMode = next.priceScale.mode;
|
|
42585
42626
|
this.scene.logScale = next.priceScale.log;
|
|
42586
42627
|
this.scene.invertScale = next.priceScale.invert;
|
|
42628
|
+
this.scene.scalePriceOnly = next.priceScale.priceOnly;
|
|
42587
42629
|
s.borderColor = keepInherit(s.borderColor, next.priceScale.borderColor, prevTheme.borderColor);
|
|
42588
42630
|
this.scene.showAxisLabels = next.priceScale.labelsVisible;
|
|
42589
42631
|
this.scene.showPriceLine = next.priceScale.currentPriceLine;
|
|
@@ -44565,7 +44607,7 @@ var NativeRenderer = class {
|
|
|
44565
44607
|
const pricePane = this.dataWindowPricePane();
|
|
44566
44608
|
const ohlc = this.dataWindowOHLC(bar, pricePane);
|
|
44567
44609
|
const parts = [];
|
|
44568
|
-
if (bar) parts.push(formatStamp(bar.time, this.scene.timezone));
|
|
44610
|
+
if (bar) parts.push(formatStamp(bar.time, displayZone(this.scene.timezone, this.coords.barInterval)));
|
|
44569
44611
|
if (ohlc) parts.push(this.t(TEXT35.barSummary, { open: ohlc.o, high: ohlc.h, low: ohlc.l, close: ohlc.c }));
|
|
44570
44612
|
for (const group of this.dataWindowGroups(idx, pricePane)) {
|
|
44571
44613
|
for (const row2 of group.rows) parts.push(this.t(TEXT35.valueSummary, { name: row2.label, value: row2.value }));
|
|
@@ -44582,7 +44624,7 @@ var NativeRenderer = class {
|
|
|
44582
44624
|
const idx = this.hoverLogical != null ? this.hoverLogical : n - 1;
|
|
44583
44625
|
const bar = this.bars[idx];
|
|
44584
44626
|
const pricePane = this.dataWindowPricePane();
|
|
44585
|
-
const parts = bar ? formatStampParts(bar.time, this.scene.timezone) : { date: "", time: "" };
|
|
44627
|
+
const parts = bar ? formatStampParts(bar.time, displayZone(this.scene.timezone, this.coords.barInterval)) : { date: "", time: "" };
|
|
44586
44628
|
return { date: parts.date, time: parts.time, ohlc: this.dataWindowOHLC(bar, pricePane), groups: this.dataWindowGroups(idx, pricePane) };
|
|
44587
44629
|
}
|
|
44588
44630
|
dataWindowPricePane() {
|
|
@@ -44949,7 +44991,8 @@ var NativeRenderer = class {
|
|
|
44949
44991
|
if (or) dr = dr ? { min: Math.min(dr.min, or.min), max: Math.max(dr.max, or.max) } : or;
|
|
44950
44992
|
}
|
|
44951
44993
|
const includeCandles = pane.kind === "price" && (!this.scene.candlesHidden || this.priceLayersAnchoredToBars(masterModels) || !this.paneHasMeasurableContent(masterModels, dr));
|
|
44952
|
-
|
|
44994
|
+
const priceOnly = pane === pricePane && this.scene.scalePriceOnly && includeCandles;
|
|
44995
|
+
pane.scaleTarget = priceOnly ? computePaneScale([], this.bars, true, i0, s1, null, paneLogScale(this.scene, pane), (id) => this.scene.offsetOf(id), margins) : computePaneScale(masterModels, this.bars, includeCandles, i0, s1, dr, paneLogScale(this.scene, pane), (id) => this.scene.offsetOf(id), margins);
|
|
44953
44996
|
pane.percentBaseline = pane.kind === "price" ? this.bars[i0]?.close ?? 0 : this.firstVisibleValue(masterModels, i0);
|
|
44954
44997
|
pane.axisFormat = void 0;
|
|
44955
44998
|
pane.axisBands = void 0;
|
|
@@ -49245,16 +49288,16 @@ var volumeSpecs = [
|
|
|
49245
49288
|
];
|
|
49246
49289
|
|
|
49247
49290
|
// src/core/native-indicators/classics/overlays.ts
|
|
49248
|
-
var
|
|
49291
|
+
var DAY_MS4 = 864e5;
|
|
49249
49292
|
function periodKey(anchor, time) {
|
|
49250
|
-
if (anchor === "Week") return Math.floor((Math.floor(time /
|
|
49293
|
+
if (anchor === "Week") return Math.floor((Math.floor(time / DAY_MS4) + 3) / 7);
|
|
49251
49294
|
if (anchor === "Month" || anchor === "Quarter" || anchor === "Year") {
|
|
49252
49295
|
const d = new Date(time);
|
|
49253
49296
|
if (anchor === "Year") return d.getUTCFullYear();
|
|
49254
49297
|
if (anchor === "Quarter") return d.getUTCFullYear() * 4 + Math.floor(d.getUTCMonth() / 3);
|
|
49255
49298
|
return d.getUTCFullYear() * 12 + d.getUTCMonth();
|
|
49256
49299
|
}
|
|
49257
|
-
return Math.floor(time /
|
|
49300
|
+
return Math.floor(time / DAY_MS4);
|
|
49258
49301
|
}
|
|
49259
49302
|
function barInterval(bars) {
|
|
49260
49303
|
if (bars.length < 2) return 0;
|
|
@@ -49356,7 +49399,7 @@ var vwap = {
|
|
|
49356
49399
|
const anchor = str3(inputs, "anchor", "Session");
|
|
49357
49400
|
const src = sourceValues(bars, str3(inputs, "source", "HLC3"));
|
|
49358
49401
|
const n = bars.length;
|
|
49359
|
-
const hidden = bool(inputs, "hideDwm", true) && barInterval(bars) >=
|
|
49402
|
+
const hidden = bool(inputs, "hideDwm", true) && barInterval(bars) >= DAY_MS4;
|
|
49360
49403
|
const values = new Array(n).fill(Number.NaN);
|
|
49361
49404
|
const bands = VWAP_BANDS.filter((b) => bool(inputs, b.show, b.defOn)).map((b) => ({
|
|
49362
49405
|
mult: Math.max(0, num3(inputs, b.mult, b.defMult)),
|
|
@@ -49430,7 +49473,7 @@ var pivotPoints = {
|
|
|
49430
49473
|
compute: (bars, inputs) => {
|
|
49431
49474
|
const interval = barInterval(bars);
|
|
49432
49475
|
const requested = str3(inputs, "anchor", PIVOT_AUTO);
|
|
49433
|
-
const auto = interval <= 15 * 6e4 ? "Session" : interval <
|
|
49476
|
+
const auto = interval <= 15 * 6e4 ? "Session" : interval < DAY_MS4 ? "Week" : interval <= DAY_MS4 ? "Month" : "Year";
|
|
49434
49477
|
const anchor = requested === "Daily" ? "Session" : requested === "Weekly" ? "Week" : requested === "Monthly" ? "Month" : requested === "Yearly" ? "Year" : auto;
|
|
49435
49478
|
const kind = str3(inputs, "kind", PIVOT_TRADITIONAL);
|
|
49436
49479
|
const aggs = /* @__PURE__ */ new Map();
|
|
@@ -49516,7 +49559,7 @@ var fiftyTwoWeek = {
|
|
|
49516
49559
|
colorInput(NEUTRAL, msg("indicator.n52WeekHighLow.allTimeColor", "All-Time High/Low"), "allTimeColor", msg("indicator.n52WeekHighLow.allTimeColor.tooltip", "Color of the all-time high and all-time low levels."))
|
|
49517
49560
|
],
|
|
49518
49561
|
compute: (bars, inputs) => {
|
|
49519
|
-
const span = num3(inputs, "weeks", 52) * 7 *
|
|
49562
|
+
const span = num3(inputs, "weeks", 52) * 7 * DAY_MS4;
|
|
49520
49563
|
const n = bars.length;
|
|
49521
49564
|
const hi = new Array(n).fill(Number.NaN);
|
|
49522
49565
|
const lo = new Array(n).fill(Number.NaN);
|
|
@@ -50715,7 +50758,7 @@ var Statusline = class {
|
|
|
50715
50758
|
};
|
|
50716
50759
|
|
|
50717
50760
|
// src/widget/session-shading.ts
|
|
50718
|
-
var
|
|
50761
|
+
var DAY_MS5 = 864e5;
|
|
50719
50762
|
var MINUTE_MS = 6e4;
|
|
50720
50763
|
function parseWindow(text, allowOvernight = false) {
|
|
50721
50764
|
if (typeof text !== "string") return null;
|
|
@@ -50794,7 +50837,7 @@ function expandSessionZones(spec, from, to) {
|
|
|
50794
50837
|
const dtf = civilFormatter(spec.timezone);
|
|
50795
50838
|
if (!dtf || !Number.isFinite(from) || !Number.isFinite(to)) return { pre, post, extended };
|
|
50796
50839
|
const seen = /* @__PURE__ */ new Set();
|
|
50797
|
-
for (let cursor = from -
|
|
50840
|
+
for (let cursor = from - DAY_MS5; cursor < to + DAY_MS5; cursor += DAY_MS5) {
|
|
50798
50841
|
const civil = civilParts(dtf, cursor);
|
|
50799
50842
|
const key = civil.year * 1e4 + civil.month * 100 + civil.day;
|
|
50800
50843
|
if (!Number.isFinite(key) || seen.has(key)) continue;
|
|
@@ -50819,7 +50862,7 @@ function expandSessionZones(spec, from, to) {
|
|
|
50819
50862
|
}
|
|
50820
50863
|
return { pre, post, extended: mergeAbutting(extended) };
|
|
50821
50864
|
}
|
|
50822
|
-
var COVER_PAD_MIN_MS = 2 *
|
|
50865
|
+
var COVER_PAD_MIN_MS = 2 * DAY_MS5;
|
|
50823
50866
|
var SessionShadingTracker = class {
|
|
50824
50867
|
constructor(onZones) {
|
|
50825
50868
|
this.onZones = onZones;
|
|
@@ -50843,7 +50886,7 @@ var SessionShadingTracker = class {
|
|
|
50843
50886
|
this.covered = null;
|
|
50844
50887
|
this.session = opts.session;
|
|
50845
50888
|
const tfMs = timeframeMs(opts.timeframe);
|
|
50846
|
-
this.intraday = Number.isFinite(tfMs) && tfMs <
|
|
50889
|
+
this.intraday = Number.isFinite(tfMs) && tfMs < DAY_MS5;
|
|
50847
50890
|
this.lastRange = opts.range;
|
|
50848
50891
|
void data.symbolInfo(symbol).catch(() => void 0).then((si) => {
|
|
50849
50892
|
if (my !== this.epoch) return;
|
|
@@ -51405,6 +51448,7 @@ var ChartContextMenu = class {
|
|
|
51405
51448
|
const pane = this.lastPane;
|
|
51406
51449
|
return priceAxisItems({
|
|
51407
51450
|
auto: this.chart?.renderer.get("autoScale") !== false,
|
|
51451
|
+
priceOnly: priceOnlyState(pane, this.flag("scalePriceOnly")),
|
|
51408
51452
|
invert: pane ? pane.invert : this.flag("invertScale"),
|
|
51409
51453
|
choice: scaleChoiceOf(pane ?? { mode: String(this.chart?.renderer.get("scaleMode") ?? "price"), log: this.flag("logScale") }),
|
|
51410
51454
|
axisLabels: this.flag("axisLabels"),
|
|
@@ -51443,6 +51487,8 @@ var ChartContextMenu = class {
|
|
|
51443
51487
|
else chart.renderer.set("timezone", resolveTimezone(zone, void 0));
|
|
51444
51488
|
} else if (id === "auto") {
|
|
51445
51489
|
chart.renderer.set("autoScale", chart.renderer.get("autoScale") === false);
|
|
51490
|
+
} else if (id === "price-only") {
|
|
51491
|
+
chart.renderer.set("scalePriceOnly", !this.flag("scalePriceOnly"));
|
|
51446
51492
|
} else if (id === "invert") {
|
|
51447
51493
|
const pane = this.lastPane;
|
|
51448
51494
|
const [feature, value] = invertWrite(!(pane ? pane.invert : this.flag("invertScale")), pane);
|
|
@@ -51593,6 +51639,9 @@ function instanceDeltas(handle) {
|
|
|
51593
51639
|
const props = inputDeltas(handle.props, handle.propValues());
|
|
51594
51640
|
return inputs || props ? { ...inputs ? { inputs } : {}, ...props ? { props } : {} } : void 0;
|
|
51595
51641
|
}
|
|
51642
|
+
function statuslinePartEntries(parts) {
|
|
51643
|
+
return Object.entries(parts ?? {}).filter((e) => typeof e[1] === "boolean");
|
|
51644
|
+
}
|
|
51596
51645
|
function nativeAliases(type, i18n) {
|
|
51597
51646
|
const entry = nativeIndicatorEntry(type);
|
|
51598
51647
|
if (!entry) return {};
|
|
@@ -51768,6 +51817,7 @@ var ChartCell = class {
|
|
|
51768
51817
|
this.inner.on("replay:end", () => this.watermark?.setReplaying(false));
|
|
51769
51818
|
this.statusline = deps.statusline ? new Statusline(this.host, symbol ?? "", (sym) => this.inner?.data.symbolIcon(sym)) : null;
|
|
51770
51819
|
this.statusline?.setMeta(seed.timeframe ?? "60", this.state.provider ?? "");
|
|
51820
|
+
for (const [part, visible] of statuslinePartEntries(seed.statuslineParts)) this.statusline?.setPartVisible(part, visible);
|
|
51771
51821
|
this.statusline?.onChart(this.inner);
|
|
51772
51822
|
this.statusline?.attachMenu({
|
|
51773
51823
|
setPart: (part, visible) => this.setStatuslinePart(part, visible),
|
|
@@ -52180,6 +52230,7 @@ var ChartCell = class {
|
|
|
52180
52230
|
/** Show/hide one status-line segment (the settings dialog's Status line tab). */
|
|
52181
52231
|
setStatuslinePart(part, visible) {
|
|
52182
52232
|
this.statusline?.setPartVisible(part, visible);
|
|
52233
|
+
this.deps.onStateDirty();
|
|
52183
52234
|
this.deps.onStatusPrefsChanged(this.id);
|
|
52184
52235
|
}
|
|
52185
52236
|
/** This cell's Status line tab and watermark prefs as one bundle (see {@link CellStatusPrefs}). */
|
|
@@ -52662,6 +52713,9 @@ var ChartCell = class {
|
|
|
52662
52713
|
if (cs.replayWatermark !== void 0 && cs.replayWatermark !== this.replayWatermarkOn) this.setReplayWatermarkVisible(cs.replayWatermark);
|
|
52663
52714
|
if (cs.indicatorTitles !== void 0 && cs.indicatorTitles !== this.indicatorTitlesOn) this.setIndicatorTitlesVisible(cs.indicatorTitles);
|
|
52664
52715
|
if (cs.indicatorValues !== void 0 && cs.indicatorValues !== this.indicatorValuesOn) this.setIndicatorValuesVisible(cs.indicatorValues);
|
|
52716
|
+
for (const [part, visible] of statuslinePartEntries(cs.statuslineParts)) {
|
|
52717
|
+
if (this.statusline && this.statusline.partVisible(part) !== visible) this.setStatuslinePart(part, visible);
|
|
52718
|
+
}
|
|
52665
52719
|
if (cs.rendererConfig != null) this.inner.renderer.applyConfig(cs.rendererConfig);
|
|
52666
52720
|
if (cs.drawings != null) this.inner.drawings.fromJSON(cs.drawings);
|
|
52667
52721
|
if (cs.indicators) this.applyIndicatorLedger(cs.indicators);
|
|
@@ -52689,6 +52743,7 @@ var ChartCell = class {
|
|
|
52689
52743
|
dehydrate() {
|
|
52690
52744
|
const live = this.inner?.market;
|
|
52691
52745
|
const ext = this.inner ? this.dehydrateExt() : Object.keys(this.extState).length > 0 ? { ...this.extState } : void 0;
|
|
52746
|
+
const statuslineParts = this.statusPrefs().parts;
|
|
52692
52747
|
return {
|
|
52693
52748
|
...this.state,
|
|
52694
52749
|
...live ? { symbol: live.symbol, provider: live.provider, timeframe: live.timeframe } : {},
|
|
@@ -52697,6 +52752,7 @@ var ChartCell = class {
|
|
|
52697
52752
|
replayWatermark: this.replayWatermarkOn,
|
|
52698
52753
|
indicatorTitles: this.indicatorTitlesOn,
|
|
52699
52754
|
indicatorValues: this.indicatorValuesOn,
|
|
52755
|
+
...statuslineParts ? { statuslineParts } : {},
|
|
52700
52756
|
rendererConfig: this.inner?.renderer.getConfig() ?? void 0,
|
|
52701
52757
|
drawings: this.inner ? this.inner.drawings.toJSON() : void 0,
|
|
52702
52758
|
// Natives from the chart's SYNC registry read — an async catalog mirror here
|
package/dist/widget.d.cts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { V as Vela, W as WidgetContext, a1 as SidePanelButton } from './contributions-
|
|
2
|
-
export { C as CellStateContext, i as ContextMenuPointer, aJ as DEFAULT_PANEL_ORDER, E as ExternalIndicatorEntry, O as OVERRIDABLE_TOPBAR_IDS, a2 as SidePanelDescriptor, a3 as SidePanelHandle, a5 as StatePersistenceHandler, a9 as SymbolRankingHook, ad as WidgetActionDescriptor, ae as WidgetActionTarget, af as WidgetAttachment, ap as registerSidePanel, aq as registerStatePersistence, ar as registerSymbolRanking, as as registerWidgetAction, at as registerWidgetAttachment, av as sidePanels, aw as statePersistenceHandlers, ax as symbolRanking, ay as topbarActionOverride, aD as unregisterSidePanel, aE as unregisterStatePersistence, aF as unregisterWidgetAction, aG as unregisterWidgetAttachment, aH as widgetActions, aI as widgetAttachments } from './contributions-
|
|
3
|
-
import { b as VelaOptions, d as MarketSession, T as ThemeName, c as VelaTheme, w as DataWindowReadout } from './options-
|
|
4
|
-
import { c as VelaShellOptions, W as WidgetHistory, b as RangePreset, f as WorkspaceState, j as TopbarComposition, a as StatuslinePart, P as PanelsState } from './statusline-model-
|
|
5
|
-
export { B as Bottombar, k as BottombarOptions, C as CellState, g as ChartState, D as DrawingToolsState, I as IndicatorLoader, l as IndicatorManifest, m as IndicatorManifestEntry, n as RANGE_PRESETS, R as ResolvedIndicator, o as ResolvedTopbarComposition, p as TOPBAR_BUILTIN_IDS, q as TOPBAR_DEFAULT_LEFT, r as TOPBAR_DEFAULT_RIGHT, V as VelaStorage, t as WidgetStorage, h as decodeState, i as encodeState, u as localStorageAdapter, v as pinnedTopbarActionIds, w as resolveIndicators, x as resolveTopbarComposition, s as sanitizeState, y as topbarHas } from './statusline-model-
|
|
6
|
-
import { K as KeymapManager } from './keymap-
|
|
7
|
-
import { T as Translator, b as LocalizationOptions, c as LocaleChangedEvent, M as MessageLike, i as MessageDescriptor } from './types-
|
|
8
|
-
import { a as SymbolDescriptor } from './DataProvider-
|
|
9
|
-
import { d as SidePanel } from './side-panel-
|
|
10
|
-
export { C as CONTEXT_MENU_BUILTIN_ORDER, D as DEFAULT_PANEL_MAX_WIDTH, a as DEFAULT_PANEL_MIN_WIDTH, b as DEFAULT_PANEL_WIDTH, S as SidePanelOptions, c as clampPanelWidth } from './side-panel-
|
|
1
|
+
import { V as Vela, W as WidgetContext, a1 as SidePanelButton } from './contributions-BiF6lVvJ.cjs';
|
|
2
|
+
export { C as CellStateContext, i as ContextMenuPointer, aJ as DEFAULT_PANEL_ORDER, E as ExternalIndicatorEntry, O as OVERRIDABLE_TOPBAR_IDS, a2 as SidePanelDescriptor, a3 as SidePanelHandle, a5 as StatePersistenceHandler, a9 as SymbolRankingHook, ad as WidgetActionDescriptor, ae as WidgetActionTarget, af as WidgetAttachment, ap as registerSidePanel, aq as registerStatePersistence, ar as registerSymbolRanking, as as registerWidgetAction, at as registerWidgetAttachment, av as sidePanels, aw as statePersistenceHandlers, ax as symbolRanking, ay as topbarActionOverride, aD as unregisterSidePanel, aE as unregisterStatePersistence, aF as unregisterWidgetAction, aG as unregisterWidgetAttachment, aH as widgetActions, aI as widgetAttachments } from './contributions-BiF6lVvJ.cjs';
|
|
3
|
+
import { b as VelaOptions, d as MarketSession, T as ThemeName, c as VelaTheme, w as DataWindowReadout } from './options-I1H2HDWw.cjs';
|
|
4
|
+
import { c as VelaShellOptions, W as WidgetHistory, b as RangePreset, f as WorkspaceState, j as TopbarComposition, a as StatuslinePart, P as PanelsState } from './statusline-model-CwYMw_Yl.cjs';
|
|
5
|
+
export { B as Bottombar, k as BottombarOptions, C as CellState, g as ChartState, D as DrawingToolsState, I as IndicatorLoader, l as IndicatorManifest, m as IndicatorManifestEntry, n as RANGE_PRESETS, R as ResolvedIndicator, o as ResolvedTopbarComposition, p as TOPBAR_BUILTIN_IDS, q as TOPBAR_DEFAULT_LEFT, r as TOPBAR_DEFAULT_RIGHT, V as VelaStorage, t as WidgetStorage, h as decodeState, i as encodeState, u as localStorageAdapter, v as pinnedTopbarActionIds, w as resolveIndicators, x as resolveTopbarComposition, s as sanitizeState, y as topbarHas } from './statusline-model-CwYMw_Yl.cjs';
|
|
6
|
+
import { K as KeymapManager } from './keymap-W0hiajU6.cjs';
|
|
7
|
+
import { T as Translator, b as LocalizationOptions, c as LocaleChangedEvent, M as MessageLike, i as MessageDescriptor } from './types-Bwf63xGI.cjs';
|
|
8
|
+
import { a as SymbolDescriptor } from './DataProvider-B5i0_yY4.cjs';
|
|
9
|
+
import { d as SidePanel } from './side-panel-BEQJqSjR.cjs';
|
|
10
|
+
export { C as CONTEXT_MENU_BUILTIN_ORDER, D as DEFAULT_PANEL_MAX_WIDTH, a as DEFAULT_PANEL_MIN_WIDTH, b as DEFAULT_PANEL_WIDTH, S as SidePanelOptions, c as clampPanelWidth } from './side-panel-BEQJqSjR.cjs';
|
|
11
11
|
|
|
12
12
|
interface VelaWidgetOptions extends VelaOptions, VelaShellOptions {
|
|
13
13
|
/** @deprecated No longer supported — the option is ignored (a console warning
|
package/dist/widget.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { V as Vela, W as WidgetContext, a1 as SidePanelButton } from './contributions-
|
|
2
|
-
export { C as CellStateContext, i as ContextMenuPointer, aJ as DEFAULT_PANEL_ORDER, E as ExternalIndicatorEntry, O as OVERRIDABLE_TOPBAR_IDS, a2 as SidePanelDescriptor, a3 as SidePanelHandle, a5 as StatePersistenceHandler, a9 as SymbolRankingHook, ad as WidgetActionDescriptor, ae as WidgetActionTarget, af as WidgetAttachment, ap as registerSidePanel, aq as registerStatePersistence, ar as registerSymbolRanking, as as registerWidgetAction, at as registerWidgetAttachment, av as sidePanels, aw as statePersistenceHandlers, ax as symbolRanking, ay as topbarActionOverride, aD as unregisterSidePanel, aE as unregisterStatePersistence, aF as unregisterWidgetAction, aG as unregisterWidgetAttachment, aH as widgetActions, aI as widgetAttachments } from './contributions-
|
|
3
|
-
import { b as VelaOptions, d as MarketSession, T as ThemeName, c as VelaTheme, w as DataWindowReadout } from './options-
|
|
4
|
-
import { c as VelaShellOptions, W as WidgetHistory, b as RangePreset, f as WorkspaceState, j as TopbarComposition, a as StatuslinePart, P as PanelsState } from './statusline-model-
|
|
5
|
-
export { B as Bottombar, k as BottombarOptions, C as CellState, g as ChartState, D as DrawingToolsState, I as IndicatorLoader, l as IndicatorManifest, m as IndicatorManifestEntry, n as RANGE_PRESETS, R as ResolvedIndicator, o as ResolvedTopbarComposition, p as TOPBAR_BUILTIN_IDS, q as TOPBAR_DEFAULT_LEFT, r as TOPBAR_DEFAULT_RIGHT, V as VelaStorage, t as WidgetStorage, h as decodeState, i as encodeState, u as localStorageAdapter, v as pinnedTopbarActionIds, w as resolveIndicators, x as resolveTopbarComposition, s as sanitizeState, y as topbarHas } from './statusline-model-
|
|
6
|
-
import { K as KeymapManager } from './keymap-
|
|
7
|
-
import { T as Translator, b as LocalizationOptions, c as LocaleChangedEvent, M as MessageLike, i as MessageDescriptor } from './types-
|
|
8
|
-
import { a as SymbolDescriptor } from './DataProvider-
|
|
9
|
-
import { d as SidePanel } from './side-panel-
|
|
10
|
-
export { C as CONTEXT_MENU_BUILTIN_ORDER, D as DEFAULT_PANEL_MAX_WIDTH, a as DEFAULT_PANEL_MIN_WIDTH, b as DEFAULT_PANEL_WIDTH, S as SidePanelOptions, c as clampPanelWidth } from './side-panel-
|
|
1
|
+
import { V as Vela, W as WidgetContext, a1 as SidePanelButton } from './contributions-BDx47Vk0.js';
|
|
2
|
+
export { C as CellStateContext, i as ContextMenuPointer, aJ as DEFAULT_PANEL_ORDER, E as ExternalIndicatorEntry, O as OVERRIDABLE_TOPBAR_IDS, a2 as SidePanelDescriptor, a3 as SidePanelHandle, a5 as StatePersistenceHandler, a9 as SymbolRankingHook, ad as WidgetActionDescriptor, ae as WidgetActionTarget, af as WidgetAttachment, ap as registerSidePanel, aq as registerStatePersistence, ar as registerSymbolRanking, as as registerWidgetAction, at as registerWidgetAttachment, av as sidePanels, aw as statePersistenceHandlers, ax as symbolRanking, ay as topbarActionOverride, aD as unregisterSidePanel, aE as unregisterStatePersistence, aF as unregisterWidgetAction, aG as unregisterWidgetAttachment, aH as widgetActions, aI as widgetAttachments } from './contributions-BDx47Vk0.js';
|
|
3
|
+
import { b as VelaOptions, d as MarketSession, T as ThemeName, c as VelaTheme, w as DataWindowReadout } from './options-B7aL1pbf.js';
|
|
4
|
+
import { c as VelaShellOptions, W as WidgetHistory, b as RangePreset, f as WorkspaceState, j as TopbarComposition, a as StatuslinePart, P as PanelsState } from './statusline-model-ny7GXRuS.js';
|
|
5
|
+
export { B as Bottombar, k as BottombarOptions, C as CellState, g as ChartState, D as DrawingToolsState, I as IndicatorLoader, l as IndicatorManifest, m as IndicatorManifestEntry, n as RANGE_PRESETS, R as ResolvedIndicator, o as ResolvedTopbarComposition, p as TOPBAR_BUILTIN_IDS, q as TOPBAR_DEFAULT_LEFT, r as TOPBAR_DEFAULT_RIGHT, V as VelaStorage, t as WidgetStorage, h as decodeState, i as encodeState, u as localStorageAdapter, v as pinnedTopbarActionIds, w as resolveIndicators, x as resolveTopbarComposition, s as sanitizeState, y as topbarHas } from './statusline-model-ny7GXRuS.js';
|
|
6
|
+
import { K as KeymapManager } from './keymap-C48ughm6.js';
|
|
7
|
+
import { T as Translator, b as LocalizationOptions, c as LocaleChangedEvent, M as MessageLike, i as MessageDescriptor } from './types-Bwf63xGI.js';
|
|
8
|
+
import { a as SymbolDescriptor } from './DataProvider-CPFgSyAm.js';
|
|
9
|
+
import { d as SidePanel } from './side-panel-Ud0SBAnE.js';
|
|
10
|
+
export { C as CONTEXT_MENU_BUILTIN_ORDER, D as DEFAULT_PANEL_MAX_WIDTH, a as DEFAULT_PANEL_MIN_WIDTH, b as DEFAULT_PANEL_WIDTH, S as SidePanelOptions, c as clampPanelWidth } from './side-panel-Ud0SBAnE.js';
|
|
11
11
|
|
|
12
12
|
interface VelaWidgetOptions extends VelaOptions, VelaShellOptions {
|
|
13
13
|
/** @deprecated No longer supported — the option is ignored (a console warning
|
package/dist/widget.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { VelaWorkspace } from './chunk-
|
|
2
|
-
export { Bottombar, ChartContextMenu, DataWindow, IndicatorPicker, ObjectTree, PanelDock, RANGE_PRESETS, ShortcutsHelp, Statusline, SymbolPicker, TimeframeQuick, Topbar, Watermark, dataWindowSections, decimalsFor, decodeState, encodeState, filterSymbols, fmtChange, fmtPrice, localStorageAdapter, parseTimeframe, priceStyleLabel, resolveIndicators, sanitizeState, timeframeLabel, timeframeMs } from './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
export { CONTEXT_MENU_BUILTIN_ORDER, DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_ORDER, DEFAULT_PANEL_WIDTH, OVERRIDABLE_TOPBAR_IDS, SidePanel, TIMEZONES, TOPBAR_BUILTIN_IDS, TOPBAR_DEFAULT_LEFT, TOPBAR_DEFAULT_RIGHT, clampPanelWidth, normalizeTimezone, pinnedTopbarActionIds, registerSidePanel, registerStatePersistence, registerSymbolRanking, registerWidgetAction, registerWidgetAttachment, resolveTopbarComposition, sidePanels, statePersistenceHandlers, symbolRanking, topbarActionOverride, topbarHas, tzButtonLabel, tzMenuLabel, tzOffset, unregisterSidePanel, unregisterStatePersistence, unregisterWidgetAction, unregisterWidgetAttachment, widgetActions, widgetAttachments } from './chunk-
|
|
1
|
+
import { VelaWorkspace } from './chunk-4AMWSBOW.js';
|
|
2
|
+
export { Bottombar, ChartContextMenu, DataWindow, IndicatorPicker, ObjectTree, PanelDock, RANGE_PRESETS, ShortcutsHelp, Statusline, SymbolPicker, TimeframeQuick, Topbar, Watermark, dataWindowSections, decimalsFor, decodeState, encodeState, filterSymbols, fmtChange, fmtPrice, localStorageAdapter, parseTimeframe, priceStyleLabel, resolveIndicators, sanitizeState, timeframeLabel, timeframeMs } from './chunk-4AMWSBOW.js';
|
|
3
|
+
import './chunk-W4WTHJFA.js';
|
|
4
|
+
export { CONTEXT_MENU_BUILTIN_ORDER, DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_ORDER, DEFAULT_PANEL_WIDTH, OVERRIDABLE_TOPBAR_IDS, SidePanel, TIMEZONES, TOPBAR_BUILTIN_IDS, TOPBAR_DEFAULT_LEFT, TOPBAR_DEFAULT_RIGHT, clampPanelWidth, normalizeTimezone, pinnedTopbarActionIds, registerSidePanel, registerStatePersistence, registerSymbolRanking, registerWidgetAction, registerWidgetAttachment, resolveTopbarComposition, sidePanels, statePersistenceHandlers, symbolRanking, topbarActionOverride, topbarHas, tzButtonLabel, tzMenuLabel, tzOffset, unregisterSidePanel, unregisterStatePersistence, unregisterWidgetAction, unregisterWidgetAttachment, widgetActions, widgetAttachments } from './chunk-Q7POFYNE.js';
|
|
5
5
|
import './chunk-WHPQQYH7.js';
|
|
6
6
|
import './chunk-PZN4RS4T.js';
|
|
7
7
|
import './chunk-O6L27KRB.js';
|