@luxalgo/vela 0.9.0 → 0.9.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/{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-XIRSR3D6.js → chunk-3H6JO4VL.js} +48 -30
- package/dist/{chunk-4WAHYL7Y.js → chunk-BLVL7WXF.js} +33 -2
- package/dist/{chunk-YRCL3WMD.js → chunk-Q7POFYNE.js} +7 -1
- package/dist/{contributions-BjefWpxQ.d.ts → contributions-BfBaF6eE.d.ts} +3 -3
- package/dist/{contributions-CpCJisTC.d.cts → contributions-DupwEkzc.d.cts} +3 -3
- package/dist/index.cjs +40 -21
- 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-DpNp4aBi.d.cts → plugin-BGz-Vsdv.d.cts} +6 -6
- package/dist/{plugin-DTmulpKM.d.ts → plugin-BZHypj8h.d.ts} +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-C3yIY9WE.d.ts → statusline-model-Dfb_GD9u.d.ts} +7 -4
- package/dist/{statusline-model-pGs3Xvp-.d.cts → statusline-model-PHt0YhmI.d.cts} +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 +40 -21
- package/dist/vela.global.min.js +55 -55
- package/dist/widget.cjs +80 -25
- package/dist/widget.d.cts +10 -10
- package/dist/widget.d.ts +10 -10
- package/dist/widget.js +4 -4
- package/dist/workspace.cjs +80 -25
- 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { sanitizeShowOn, deserializeDrawing, chartTypes, chartType, rendererLayers, isLineLikeSeries, seriesShownOn, foldBaseModulation, registerChartType, rendererDefaults, drawingTypeEntry, normalizeTimezone, settingsRowVisible, normalizeSettingsRow, TIMEZONES, tzMenuLabel, Magnifier, TextLabel, Callout, shownOnTimeframe, getDrawingType, resetDrawingSettings, registerNativeIndicator, nativeIndicatorEntry, nativeIndicatorEntries, nativeInstanceChannel, drawingTypeEntries, settingsRowValueKeys, RegressionChannel, FixedRangeVolumeProfile, DEFAULT_DRAWING_COLOR, SegmentDrawing, ArrowMark, GlyphStamp, RadialFib, FibSpiral, DedekindTessellation, MachFigure, GannSquare, FibRatios, MeasureBox, PositionTool, AnchoredVwap, PriceActionZone, Liquidity, PatternDrawing, Comment, PriceNote, Signpost, Note, PriceLabel, TrendLine, GANN_SQUARE_ARCS, magnifierTimeframeLabel, lineSegmentIntersection, TEXT_SIZE_OPTIONS, LINE_STYLE_OPTIONS, GLYPH_OPTIONS, STAMP_SIZE_OPTIONS, magnifierTimeframesBelow, DEDEKIND_CURVATURE_OPTIONS, MACH_NUMBER_OPTIONS, MACH_WAVE_COUNT_OPTIONS, createDrawing, defaultText, inputVisible, seriesInScale, tickerModifierIds, CalloutBase, FibRetracement, FIB_PRESETS, matchFibPreset, FibLevels, timeframeBandOf, TIMEFRAME_BANDS, stableSeriesId, DIRECTION_OPTIONS } from './chunk-
|
|
1
|
+
import { sanitizeShowOn, deserializeDrawing, chartTypes, chartType, rendererLayers, isLineLikeSeries, seriesShownOn, foldBaseModulation, registerChartType, rendererDefaults, drawingTypeEntry, normalizeTimezone, settingsRowVisible, normalizeSettingsRow, TIMEZONES, tzMenuLabel, Magnifier, TextLabel, Callout, shownOnTimeframe, getDrawingType, resetDrawingSettings, registerNativeIndicator, nativeIndicatorEntry, nativeIndicatorEntries, nativeInstanceChannel, drawingTypeEntries, settingsRowValueKeys, RegressionChannel, FixedRangeVolumeProfile, DEFAULT_DRAWING_COLOR, SegmentDrawing, ArrowMark, GlyphStamp, RadialFib, FibSpiral, DedekindTessellation, MachFigure, GannSquare, FibRatios, MeasureBox, PositionTool, AnchoredVwap, PriceActionZone, Liquidity, PatternDrawing, Comment, PriceNote, Signpost, Note, PriceLabel, TrendLine, GANN_SQUARE_ARCS, magnifierTimeframeLabel, lineSegmentIntersection, TEXT_SIZE_OPTIONS, LINE_STYLE_OPTIONS, GLYPH_OPTIONS, STAMP_SIZE_OPTIONS, magnifierTimeframesBelow, DEDEKIND_CURVATURE_OPTIONS, MACH_NUMBER_OPTIONS, MACH_WAVE_COUNT_OPTIONS, createDrawing, defaultText, inputVisible, seriesInScale, tickerModifierIds, CalloutBase, FibRetracement, FIB_PRESETS, matchFibPreset, FibLevels, timeframeBandOf, TIMEFRAME_BANDS, stableSeriesId, DIRECTION_OPTIONS } from './chunk-Q7POFYNE.js';
|
|
2
2
|
import { themeTokens, Dialog, withKitTranslator, closeOpenPopovers, closeWidthPopover, fieldSection, buildFieldControl, fieldSeparator, fieldGrid, fieldRow, CALLOUT_STYLE_ID, CALLOUT_CSS, Popover, blendOver, splitColor, CalloutBubble, Menu, TextArea, NumberInput, buildColorPicker, isPopoverOpen, DatePicker, eventDismissedPopover, toggleSelectList, normalizeDateInput, openPopoverTrigger, fieldGridColumns, FIELD_GAP_PX, STATIC_TOKENS } from './chunk-PZN4RS4T.js';
|
|
3
3
|
import { msg, icon, iconAt, withValues, withAlpha, WARNING, ACCENT, NEUTRAL, INFO, BULLISH, BEARISH, textOf, announceSurface, upperCase, holdForExit, isDarkColor, englishTranslator, ENGLISH_FORMAT, LocaleState, pickLocalization, sourceText, injectStyles, zoneOffsetMs, SERIES_LINE, CHIP_PLATE, CROSSHAIR, TRADE_EXIT, TRADE_SHORT, TRADE_LONG, iconMarkup, localizeNumberText, sliceGraphemes, overlayScrollbarCss, toHex6, SLATE_DEEP, VALID, INVALID, SLATE, FIELD_FOCUS_CSS, FIELD_FOCUS_RING, svg24, textSegmenter, svg24Solid } from './chunk-O6L27KRB.js';
|
|
4
4
|
|
|
@@ -5923,6 +5923,7 @@ function mergeConfig(base, patch) {
|
|
|
5923
5923
|
mode: isScaleMode(ps.mode) ? ps.mode : base.priceScale.mode,
|
|
5924
5924
|
log: isBool(ps.log) ? ps.log : base.priceScale.log,
|
|
5925
5925
|
invert: isBool(ps.invert) ? ps.invert : base.priceScale.invert,
|
|
5926
|
+
priceOnly: isBool(ps.priceOnly) ? ps.priceOnly : base.priceScale.priceOnly,
|
|
5926
5927
|
borderColor: isColor(ps.borderColor) ? ps.borderColor : base.priceScale.borderColor,
|
|
5927
5928
|
labelsVisible: isBool(ps.labelsVisible) ? ps.labelsVisible : base.priceScale.labelsVisible,
|
|
5928
5929
|
currentPriceLine: isBool(ps.currentPriceLine) ? ps.currentPriceLine : base.priceScale.currentPriceLine,
|
|
@@ -8367,6 +8368,9 @@ var SceneGraph = class {
|
|
|
8367
8368
|
this.logScale = false;
|
|
8368
8369
|
/** Inverted price axis on the price pane (high at the bottom). Study panes carry their own. */
|
|
8369
8370
|
this.invertScale = false;
|
|
8371
|
+
/** The price pane's autoscale fits the bars alone: indicator plots, their price lines
|
|
8372
|
+
* and Pine drawings paint where they fall instead of widening the window. */
|
|
8373
|
+
this.scalePriceOnly = false;
|
|
8370
8374
|
/** Exchange tick size for the active symbol (e.g. 0.01), when known. Drives the
|
|
8371
8375
|
* price-axis decimals — the instrument's true precision instead of the zoom-derived
|
|
8372
8376
|
* formula. Undefined until symbol metadata loads (the formula is the fallback). */
|
|
@@ -10065,6 +10069,18 @@ var DrawingSceneRenderer = class {
|
|
|
10065
10069
|
}
|
|
10066
10070
|
};
|
|
10067
10071
|
|
|
10072
|
+
// src/renderers/native/chrome/tz.ts
|
|
10073
|
+
var DAY_MS = 864e5;
|
|
10074
|
+
function displayZone(timeZone, barIntervalMs) {
|
|
10075
|
+
return barIntervalMs >= DAY_MS ? "UTC" : timeZone;
|
|
10076
|
+
}
|
|
10077
|
+
function tzOffsetMs(ms, timeZone) {
|
|
10078
|
+
return zoneOffsetMs(ms, timeZone);
|
|
10079
|
+
}
|
|
10080
|
+
function zonedDate(ms, timeZone) {
|
|
10081
|
+
return new Date(ms + tzOffsetMs(ms, timeZone));
|
|
10082
|
+
}
|
|
10083
|
+
|
|
10068
10084
|
// src/renderers/native/chrome/ticks.ts
|
|
10069
10085
|
function priceTicks(min, max, target = 6) {
|
|
10070
10086
|
if (!(max > min) || !Number.isFinite(min) || !Number.isFinite(max)) return [];
|
|
@@ -10205,7 +10221,7 @@ var STEP_LADDER = [
|
|
|
10205
10221
|
YEAR
|
|
10206
10222
|
];
|
|
10207
10223
|
function formatTimeStamp(ms, timeZone, barIntervalMs, fmt = ENGLISH_FORMAT, surface = "crosshair") {
|
|
10208
|
-
return fmt.timeStamp(ms, { timeZone, withTime: barIntervalMs < DAY, surface });
|
|
10224
|
+
return fmt.timeStamp(ms, { timeZone: displayZone(timeZone, barIntervalMs), withTime: barIntervalMs < DAY, surface });
|
|
10209
10225
|
}
|
|
10210
10226
|
function pickStep(targetMs) {
|
|
10211
10227
|
for (const step of STEP_LADDER) if (step >= targetMs) return step;
|
|
@@ -10349,14 +10365,6 @@ var PriceAxisTickSource = class {
|
|
|
10349
10365
|
}
|
|
10350
10366
|
};
|
|
10351
10367
|
|
|
10352
|
-
// src/renderers/native/chrome/tz.ts
|
|
10353
|
-
function tzOffsetMs(ms, timeZone) {
|
|
10354
|
-
return zoneOffsetMs(ms, timeZone);
|
|
10355
|
-
}
|
|
10356
|
-
function zonedDate(ms, timeZone) {
|
|
10357
|
-
return new Date(ms + tzOffsetMs(ms, timeZone));
|
|
10358
|
-
}
|
|
10359
|
-
|
|
10360
10368
|
// src/renderers/native/chrome/countdown.ts
|
|
10361
10369
|
function countdownText(barOpen, barMs, now2, fmt = ENGLISH_FORMAT) {
|
|
10362
10370
|
if (!(barMs > 0)) return null;
|
|
@@ -11070,7 +11078,7 @@ var ChromeRenderer = class {
|
|
|
11070
11078
|
ctx.textAlign = "center";
|
|
11071
11079
|
const y = dataH + (fullH - dataH) / 2;
|
|
11072
11080
|
const tr = coords.visibleTimeRange();
|
|
11073
|
-
const offset = tzOffsetMs((tr.from + tr.to) / 2, scene.timezone);
|
|
11081
|
+
const offset = tzOffsetMs((tr.from + tr.to) / 2, displayZone(scene.timezone, coords.barInterval));
|
|
11074
11082
|
const target = Math.max(3, Math.min(8, Math.floor(dataW / 64)));
|
|
11075
11083
|
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);
|
|
11076
11084
|
const GAP = 12;
|
|
@@ -11570,6 +11578,7 @@ var TEXT6 = {
|
|
|
11570
11578
|
indexedTo100: msg("chart.settings.indexedTo100", "Indexed to 100"),
|
|
11571
11579
|
logarithmic: msg("chart.settings.logarithmic", "Logarithmic"),
|
|
11572
11580
|
invertScale: msg("chart.settings.invertScale", "Invert scale"),
|
|
11581
|
+
scalePriceOnly: msg("chart.settings.scalePriceOnly", "Scale price chart only"),
|
|
11573
11582
|
lastPriceLine: msg("chart.settings.lastPriceLine", "Last price line"),
|
|
11574
11583
|
lastPriceLabel: msg("chart.settings.lastPriceLabel", "Last price label"),
|
|
11575
11584
|
countdownToBarClose: msg("chart.settings.countdownToBarClose", "Countdown to bar close"),
|
|
@@ -12078,6 +12087,7 @@ var SettingsDialog = class {
|
|
|
12078
12087
|
), "scales.price-scale.mode")
|
|
12079
12088
|
);
|
|
12080
12089
|
body.append(sid(this.boolRow(TEXT6.invertScale, config.priceScale.invert, (v) => this.emit({ priceScale: { invert: v } })), "scales.price-scale.invert"));
|
|
12090
|
+
body.append(sid(this.boolRow(TEXT6.scalePriceOnly, config.priceScale.priceOnly, (v) => this.emit({ priceScale: { priceOnly: v } })), "scales.price-scale.price-only"));
|
|
12081
12091
|
body.append(sid(this.separator(), "scales.price-scale"));
|
|
12082
12092
|
body.append(sid(this.boolRow(TEXT6.lastPriceLine, config.priceScale.currentPriceLine, (v) => this.emit({ priceScale: { currentPriceLine: v } })), "scales.price-scale.last-price-line"));
|
|
12083
12093
|
body.append(sid(this.boolRow(TEXT6.lastPriceLabel, config.priceScale.priceLabel, (v) => this.emit({ priceScale: { priceLabel: v } })), "scales.price-scale.last-price-label"));
|
|
@@ -19521,7 +19531,7 @@ var BackdropRenderer = class {
|
|
|
19521
19531
|
ctx.globalAlpha = gridAlpha;
|
|
19522
19532
|
ctx.strokeStyle = vertColor;
|
|
19523
19533
|
const tr = coords.visibleTimeRange();
|
|
19524
|
-
const offset = tzOffsetMs((tr.from + tr.to) / 2, scene.timezone);
|
|
19534
|
+
const offset = tzOffsetMs((tr.from + tr.to) / 2, displayZone(scene.timezone, coords.barInterval));
|
|
19525
19535
|
ctx.beginPath();
|
|
19526
19536
|
for (const tick of timeTicks(tr.from, tr.to, 8, offset)) {
|
|
19527
19537
|
const x = Math.round(coords.timeToX(tick.time)) + 0.5;
|
|
@@ -20424,7 +20434,7 @@ var NativeRenderer = class {
|
|
|
20424
20434
|
this.priceStyleCbs = /* @__PURE__ */ new Set();
|
|
20425
20435
|
this.priceStyleWillChangeCbs = /* @__PURE__ */ new Set();
|
|
20426
20436
|
this.name = "native";
|
|
20427
|
-
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"];
|
|
20437
|
+
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"];
|
|
20428
20438
|
/** Track cursor proximity to the scroll button on the plot (bubbles from the button too,
|
|
20429
20439
|
* so moving onto the button doesn't count as leaving). */
|
|
20430
20440
|
this.onScrollProximityMove = (e) => {
|
|
@@ -20583,6 +20593,9 @@ var NativeRenderer = class {
|
|
|
20583
20593
|
}
|
|
20584
20594
|
this.scene.invertScale = Boolean(value);
|
|
20585
20595
|
break;
|
|
20596
|
+
case "scalePriceOnly":
|
|
20597
|
+
this.scene.scalePriceOnly = Boolean(value);
|
|
20598
|
+
break;
|
|
20586
20599
|
case "autoScale":
|
|
20587
20600
|
for (const pane of this.scene.panes.values()) {
|
|
20588
20601
|
pane.manualScale = value ? null : { ...pane.scale };
|
|
@@ -20709,6 +20722,8 @@ var NativeRenderer = class {
|
|
|
20709
20722
|
return this.scene.scaleMode;
|
|
20710
20723
|
case "invertScale":
|
|
20711
20724
|
return this.scene.invertScale;
|
|
20725
|
+
case "scalePriceOnly":
|
|
20726
|
+
return this.scene.scalePriceOnly;
|
|
20712
20727
|
case "paneScales":
|
|
20713
20728
|
return this.paneScaleInfos();
|
|
20714
20729
|
case "autoScale": {
|
|
@@ -20855,6 +20870,7 @@ var NativeRenderer = class {
|
|
|
20855
20870
|
mode: this.scene.scaleMode,
|
|
20856
20871
|
log: this.scene.logScale,
|
|
20857
20872
|
invert: this.scene.invertScale,
|
|
20873
|
+
priceOnly: this.scene.scalePriceOnly,
|
|
20858
20874
|
borderColor: s.borderColor ?? t.borderColor,
|
|
20859
20875
|
labelsVisible: this.scene.showAxisLabels,
|
|
20860
20876
|
currentPriceLine: this.scene.showPriceLine,
|
|
@@ -20969,6 +20985,7 @@ var NativeRenderer = class {
|
|
|
20969
20985
|
this.scene.scaleMode = next.priceScale.mode;
|
|
20970
20986
|
this.scene.logScale = next.priceScale.log;
|
|
20971
20987
|
this.scene.invertScale = next.priceScale.invert;
|
|
20988
|
+
this.scene.scalePriceOnly = next.priceScale.priceOnly;
|
|
20972
20989
|
s.borderColor = keepInherit(s.borderColor, next.priceScale.borderColor, prevTheme.borderColor);
|
|
20973
20990
|
this.scene.showAxisLabels = next.priceScale.labelsVisible;
|
|
20974
20991
|
this.scene.showPriceLine = next.priceScale.currentPriceLine;
|
|
@@ -22950,7 +22967,7 @@ var NativeRenderer = class {
|
|
|
22950
22967
|
const pricePane = this.dataWindowPricePane();
|
|
22951
22968
|
const ohlc = this.dataWindowOHLC(bar, pricePane);
|
|
22952
22969
|
const parts = [];
|
|
22953
|
-
if (bar) parts.push(formatStamp(bar.time, this.scene.timezone));
|
|
22970
|
+
if (bar) parts.push(formatStamp(bar.time, displayZone(this.scene.timezone, this.coords.barInterval)));
|
|
22954
22971
|
if (ohlc) parts.push(this.t(TEXT13.barSummary, { open: ohlc.o, high: ohlc.h, low: ohlc.l, close: ohlc.c }));
|
|
22955
22972
|
for (const group of this.dataWindowGroups(idx, pricePane)) {
|
|
22956
22973
|
for (const row2 of group.rows) parts.push(this.t(TEXT13.valueSummary, { name: row2.label, value: row2.value }));
|
|
@@ -22967,7 +22984,7 @@ var NativeRenderer = class {
|
|
|
22967
22984
|
const idx = this.hoverLogical != null ? this.hoverLogical : n - 1;
|
|
22968
22985
|
const bar = this.bars[idx];
|
|
22969
22986
|
const pricePane = this.dataWindowPricePane();
|
|
22970
|
-
const parts = bar ? formatStampParts(bar.time, this.scene.timezone) : { date: "", time: "" };
|
|
22987
|
+
const parts = bar ? formatStampParts(bar.time, displayZone(this.scene.timezone, this.coords.barInterval)) : { date: "", time: "" };
|
|
22971
22988
|
return { date: parts.date, time: parts.time, ohlc: this.dataWindowOHLC(bar, pricePane), groups: this.dataWindowGroups(idx, pricePane) };
|
|
22972
22989
|
}
|
|
22973
22990
|
dataWindowPricePane() {
|
|
@@ -23334,7 +23351,8 @@ var NativeRenderer = class {
|
|
|
23334
23351
|
if (or) dr = dr ? { min: Math.min(dr.min, or.min), max: Math.max(dr.max, or.max) } : or;
|
|
23335
23352
|
}
|
|
23336
23353
|
const includeCandles = pane.kind === "price" && (!this.scene.candlesHidden || this.priceLayersAnchoredToBars(masterModels) || !this.paneHasMeasurableContent(masterModels, dr));
|
|
23337
|
-
|
|
23354
|
+
const priceOnly = pane === pricePane && this.scene.scalePriceOnly && includeCandles;
|
|
23355
|
+
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);
|
|
23338
23356
|
pane.percentBaseline = pane.kind === "price" ? this.bars[i0]?.close ?? 0 : this.firstVisibleValue(masterModels, i0);
|
|
23339
23357
|
pane.axisFormat = void 0;
|
|
23340
23358
|
pane.axisBands = void 0;
|
|
@@ -24229,15 +24247,15 @@ function inspectModels(models) {
|
|
|
24229
24247
|
}
|
|
24230
24248
|
|
|
24231
24249
|
// src/core/visible-range.ts
|
|
24232
|
-
var
|
|
24250
|
+
var DAY_MS2 = 864e5;
|
|
24233
24251
|
var PRESET_SPAN_MS = {
|
|
24234
|
-
"1D":
|
|
24235
|
-
"1W": 7 *
|
|
24236
|
-
"1M": 30 *
|
|
24237
|
-
"3M": 90 *
|
|
24238
|
-
"6M": 180 *
|
|
24239
|
-
"1Y": 365 *
|
|
24240
|
-
"5Y": 5 * 365 *
|
|
24252
|
+
"1D": DAY_MS2,
|
|
24253
|
+
"1W": 7 * DAY_MS2,
|
|
24254
|
+
"1M": 30 * DAY_MS2,
|
|
24255
|
+
"3M": 90 * DAY_MS2,
|
|
24256
|
+
"6M": 180 * DAY_MS2,
|
|
24257
|
+
"1Y": 365 * DAY_MS2,
|
|
24258
|
+
"5Y": 5 * 365 * DAY_MS2
|
|
24241
24259
|
};
|
|
24242
24260
|
function presetToRange(preset, bars) {
|
|
24243
24261
|
if (bars.length === 0) return null;
|
|
@@ -30764,16 +30782,16 @@ var volumeSpecs = [
|
|
|
30764
30782
|
];
|
|
30765
30783
|
|
|
30766
30784
|
// src/core/native-indicators/classics/overlays.ts
|
|
30767
|
-
var
|
|
30785
|
+
var DAY_MS3 = 864e5;
|
|
30768
30786
|
function periodKey(anchor, time) {
|
|
30769
|
-
if (anchor === "Week") return Math.floor((Math.floor(time /
|
|
30787
|
+
if (anchor === "Week") return Math.floor((Math.floor(time / DAY_MS3) + 3) / 7);
|
|
30770
30788
|
if (anchor === "Month" || anchor === "Quarter" || anchor === "Year") {
|
|
30771
30789
|
const d = new Date(time);
|
|
30772
30790
|
if (anchor === "Year") return d.getUTCFullYear();
|
|
30773
30791
|
if (anchor === "Quarter") return d.getUTCFullYear() * 4 + Math.floor(d.getUTCMonth() / 3);
|
|
30774
30792
|
return d.getUTCFullYear() * 12 + d.getUTCMonth();
|
|
30775
30793
|
}
|
|
30776
|
-
return Math.floor(time /
|
|
30794
|
+
return Math.floor(time / DAY_MS3);
|
|
30777
30795
|
}
|
|
30778
30796
|
function barInterval(bars) {
|
|
30779
30797
|
if (bars.length < 2) return 0;
|
|
@@ -30875,7 +30893,7 @@ var vwap = {
|
|
|
30875
30893
|
const anchor = str3(inputs, "anchor", "Session");
|
|
30876
30894
|
const src = sourceValues(bars, str3(inputs, "source", "HLC3"));
|
|
30877
30895
|
const n = bars.length;
|
|
30878
|
-
const hidden = bool(inputs, "hideDwm", true) && barInterval(bars) >=
|
|
30896
|
+
const hidden = bool(inputs, "hideDwm", true) && barInterval(bars) >= DAY_MS3;
|
|
30879
30897
|
const values = new Array(n).fill(Number.NaN);
|
|
30880
30898
|
const bands = VWAP_BANDS.filter((b) => bool(inputs, b.show, b.defOn)).map((b) => ({
|
|
30881
30899
|
mult: Math.max(0, num3(inputs, b.mult, b.defMult)),
|
|
@@ -30949,7 +30967,7 @@ var pivotPoints = {
|
|
|
30949
30967
|
compute: (bars, inputs) => {
|
|
30950
30968
|
const interval = barInterval(bars);
|
|
30951
30969
|
const requested = str3(inputs, "anchor", PIVOT_AUTO);
|
|
30952
|
-
const auto = interval <= 15 * 6e4 ? "Session" : interval <
|
|
30970
|
+
const auto = interval <= 15 * 6e4 ? "Session" : interval < DAY_MS3 ? "Week" : interval <= DAY_MS3 ? "Month" : "Year";
|
|
30953
30971
|
const anchor = requested === "Daily" ? "Session" : requested === "Weekly" ? "Week" : requested === "Monthly" ? "Month" : requested === "Yearly" ? "Year" : auto;
|
|
30954
30972
|
const kind = str3(inputs, "kind", PIVOT_TRADITIONAL);
|
|
30955
30973
|
const aggs = /* @__PURE__ */ new Map();
|
|
@@ -31035,7 +31053,7 @@ var fiftyTwoWeek = {
|
|
|
31035
31053
|
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."))
|
|
31036
31054
|
],
|
|
31037
31055
|
compute: (bars, inputs) => {
|
|
31038
|
-
const span = num3(inputs, "weeks", 52) * 7 *
|
|
31056
|
+
const span = num3(inputs, "weeks", 52) * 7 * DAY_MS3;
|
|
31039
31057
|
const n = bars.length;
|
|
31040
31058
|
const hi = new Array(n).fill(Number.NaN);
|
|
31041
31059
|
const lo = new Array(n).fill(Number.NaN);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { priceStyleMessage, parseSymbol, priceStyleIds, BUILTIN_PRICE_STYLES, SecondClock, isGroupRow, defaultMemberOf, groupKeyOf, groupMembers, LEGEND_AT_TOP_ATTR, normalizeSession, Vela, TypedEventBus, timeframeToMs, MultiProviderFeed, registerBuiltinChartTypes, resolveTheme, buildToolbar, createCustomMark, createAttributionMark, DrawingToolbar, relabelAttributionMark, applyAttributionMarkTheme, sharedBarStore, CANDLE_OVERRIDE_KEYS } from './chunk-
|
|
2
|
-
import { resolveTopbarComposition, topbarActionOverride, TOPBAR_BUILTIN_IDS, widgetActions, tzButtonLabel, resolveTimezone, timezoneMenuRows, SidePanel, sidePanels, DEFAULT_PANEL_ORDER, symbolRanking, paneScaleAt, composeMenu, priceAxisItems, scaleChoiceOf, timeAxisItems, bodyItems, scaleWrites, invertWrite, settingsSectionOf, resolveEngines, legendActionsProviderFor, legendCalloutsProviderFor, normalizeTimezone, isExchangeTimezone, statePersistenceHandlers, topbarHas, rendererDefaults, mobilePlacement, widgetAttachments, chartType, getDrawingType, nativeIndicatorEntry, inputDeltas } from './chunk-
|
|
1
|
+
import { priceStyleMessage, parseSymbol, priceStyleIds, BUILTIN_PRICE_STYLES, SecondClock, isGroupRow, defaultMemberOf, groupKeyOf, groupMembers, LEGEND_AT_TOP_ATTR, normalizeSession, Vela, TypedEventBus, timeframeToMs, MultiProviderFeed, registerBuiltinChartTypes, resolveTheme, buildToolbar, createCustomMark, createAttributionMark, DrawingToolbar, relabelAttributionMark, applyAttributionMarkTheme, sharedBarStore, CANDLE_OVERRIDE_KEYS } from './chunk-3H6JO4VL.js';
|
|
2
|
+
import { resolveTopbarComposition, topbarActionOverride, TOPBAR_BUILTIN_IDS, widgetActions, tzButtonLabel, resolveTimezone, timezoneMenuRows, SidePanel, sidePanels, DEFAULT_PANEL_ORDER, symbolRanking, paneScaleAt, composeMenu, priceAxisItems, scaleChoiceOf, priceOnlyState, timeAxisItems, bodyItems, scaleWrites, invertWrite, settingsSectionOf, resolveEngines, legendActionsProviderFor, legendCalloutsProviderFor, normalizeTimezone, isExchangeTimezone, statePersistenceHandlers, topbarHas, rendererDefaults, mobilePlacement, widgetAttachments, chartType, getDrawingType, nativeIndicatorEntry, inputDeltas } from './chunk-Q7POFYNE.js';
|
|
3
3
|
import { Tooltip, KeymapManager, isEditableTarget, Drawer } from './chunk-WHPQQYH7.js';
|
|
4
4
|
import { Menu, Dialog, CalloutBubble, applyPlotOverlayTokens, ensureUIHost } from './chunk-PZN4RS4T.js';
|
|
5
5
|
import { msg, sourceText, registerIcon, svg16, textOf, localizeNumberText, injectStyles, iconEl, iconMarkup, englishTranslator, sliceGraphemes, iconAt, SESSION_OFF, SESSION_POST, SESSION_PRE, LocaleState, pickLocalization, eventTimeText, announceSurface, holdForExit, icon, withValues, categoricalColor } from './chunk-O6L27KRB.js';
|
|
@@ -4284,6 +4284,7 @@ function successorNative(entry) {
|
|
|
4284
4284
|
const hasInputs = Object.keys(inputs).length > 0;
|
|
4285
4285
|
return hasInputs || hidden ? { type: next, ...hasInputs ? { inputs } : {}, ...hidden ? { hidden } : {} } : next;
|
|
4286
4286
|
}
|
|
4287
|
+
var STATUSLINE_PART_KEYS = ["logo", "name", "market", "ohlc", "change"];
|
|
4287
4288
|
function sanitizeCell(raw) {
|
|
4288
4289
|
if (raw == null || typeof raw !== "object") return null;
|
|
4289
4290
|
const c = raw;
|
|
@@ -4298,6 +4299,12 @@ function sanitizeCell(raw) {
|
|
|
4298
4299
|
if (typeof c.replayWatermark === "boolean") out.replayWatermark = c.replayWatermark;
|
|
4299
4300
|
if (typeof c.indicatorTitles === "boolean") out.indicatorTitles = c.indicatorTitles;
|
|
4300
4301
|
if (typeof c.indicatorValues === "boolean") out.indicatorValues = c.indicatorValues;
|
|
4302
|
+
if (c.statuslineParts != null && typeof c.statuslineParts === "object") {
|
|
4303
|
+
const bag = c.statuslineParts;
|
|
4304
|
+
const parts = {};
|
|
4305
|
+
for (const key of STATUSLINE_PART_KEYS) if (typeof bag[key] === "boolean") parts[key] = bag[key];
|
|
4306
|
+
if (Object.keys(parts).length > 0) out.statuslineParts = parts;
|
|
4307
|
+
}
|
|
4301
4308
|
if (c.rendererConfig != null && typeof c.rendererConfig === "object") out.rendererConfig = c.rendererConfig;
|
|
4302
4309
|
if (c.drawings != null && typeof c.drawings === "object") out.drawings = c.drawings;
|
|
4303
4310
|
const ind = c.indicators;
|
|
@@ -5358,6 +5365,7 @@ var ChartContextMenu = class {
|
|
|
5358
5365
|
const pane = this.lastPane;
|
|
5359
5366
|
return priceAxisItems({
|
|
5360
5367
|
auto: this.chart?.renderer.get("autoScale") !== false,
|
|
5368
|
+
priceOnly: priceOnlyState(pane, this.flag("scalePriceOnly")),
|
|
5361
5369
|
invert: pane ? pane.invert : this.flag("invertScale"),
|
|
5362
5370
|
choice: scaleChoiceOf(pane ?? { mode: String(this.chart?.renderer.get("scaleMode") ?? "price"), log: this.flag("logScale") }),
|
|
5363
5371
|
axisLabels: this.flag("axisLabels"),
|
|
@@ -5396,6 +5404,8 @@ var ChartContextMenu = class {
|
|
|
5396
5404
|
else chart.renderer.set("timezone", resolveTimezone(zone, void 0));
|
|
5397
5405
|
} else if (id === "auto") {
|
|
5398
5406
|
chart.renderer.set("autoScale", chart.renderer.get("autoScale") === false);
|
|
5407
|
+
} else if (id === "price-only") {
|
|
5408
|
+
chart.renderer.set("scalePriceOnly", !this.flag("scalePriceOnly"));
|
|
5399
5409
|
} else if (id === "invert") {
|
|
5400
5410
|
const pane = this.lastPane;
|
|
5401
5411
|
const [feature, value] = invertWrite(!(pane ? pane.invert : this.flag("invertScale")), pane);
|
|
@@ -6085,6 +6095,9 @@ function instanceDeltas(handle) {
|
|
|
6085
6095
|
const props = inputDeltas(handle.props, handle.propValues());
|
|
6086
6096
|
return inputs || props ? { ...inputs ? { inputs } : {}, ...props ? { props } : {} } : void 0;
|
|
6087
6097
|
}
|
|
6098
|
+
function statuslinePartEntries(parts) {
|
|
6099
|
+
return Object.entries(parts ?? {}).filter((e) => typeof e[1] === "boolean");
|
|
6100
|
+
}
|
|
6088
6101
|
function nativeAliases(type, i18n) {
|
|
6089
6102
|
const entry = nativeIndicatorEntry(type);
|
|
6090
6103
|
if (!entry) return {};
|
|
@@ -6260,6 +6273,7 @@ var ChartCell = class {
|
|
|
6260
6273
|
this.inner.on("replay:end", () => this.watermark?.setReplaying(false));
|
|
6261
6274
|
this.statusline = deps.statusline ? new Statusline(this.host, symbol ?? "", (sym) => this.inner?.data.symbolIcon(sym)) : null;
|
|
6262
6275
|
this.statusline?.setMeta(seed.timeframe ?? "60", this.state.provider ?? "");
|
|
6276
|
+
for (const [part, visible] of statuslinePartEntries(seed.statuslineParts)) this.statusline?.setPartVisible(part, visible);
|
|
6263
6277
|
this.statusline?.onChart(this.inner);
|
|
6264
6278
|
this.statusline?.attachMenu({
|
|
6265
6279
|
setPart: (part, visible) => this.setStatuslinePart(part, visible),
|
|
@@ -6672,6 +6686,7 @@ var ChartCell = class {
|
|
|
6672
6686
|
/** Show/hide one status-line segment (the settings dialog's Status line tab). */
|
|
6673
6687
|
setStatuslinePart(part, visible) {
|
|
6674
6688
|
this.statusline?.setPartVisible(part, visible);
|
|
6689
|
+
this.deps.onStateDirty();
|
|
6675
6690
|
this.deps.onStatusPrefsChanged(this.id);
|
|
6676
6691
|
}
|
|
6677
6692
|
/** This cell's Status line tab and watermark prefs as one bundle (see {@link CellStatusPrefs}). */
|
|
@@ -7154,6 +7169,9 @@ var ChartCell = class {
|
|
|
7154
7169
|
if (cs.replayWatermark !== void 0 && cs.replayWatermark !== this.replayWatermarkOn) this.setReplayWatermarkVisible(cs.replayWatermark);
|
|
7155
7170
|
if (cs.indicatorTitles !== void 0 && cs.indicatorTitles !== this.indicatorTitlesOn) this.setIndicatorTitlesVisible(cs.indicatorTitles);
|
|
7156
7171
|
if (cs.indicatorValues !== void 0 && cs.indicatorValues !== this.indicatorValuesOn) this.setIndicatorValuesVisible(cs.indicatorValues);
|
|
7172
|
+
for (const [part, visible] of statuslinePartEntries(cs.statuslineParts)) {
|
|
7173
|
+
if (this.statusline && this.statusline.partVisible(part) !== visible) this.setStatuslinePart(part, visible);
|
|
7174
|
+
}
|
|
7157
7175
|
if (cs.rendererConfig != null) this.inner.renderer.applyConfig(cs.rendererConfig);
|
|
7158
7176
|
if (cs.drawings != null) this.inner.drawings.fromJSON(cs.drawings);
|
|
7159
7177
|
if (cs.indicators) this.applyIndicatorLedger(cs.indicators);
|
|
@@ -7181,6 +7199,7 @@ var ChartCell = class {
|
|
|
7181
7199
|
dehydrate() {
|
|
7182
7200
|
const live = this.inner?.market;
|
|
7183
7201
|
const ext = this.inner ? this.dehydrateExt() : Object.keys(this.extState).length > 0 ? { ...this.extState } : void 0;
|
|
7202
|
+
const statuslineParts = this.statusPrefs().parts;
|
|
7184
7203
|
return {
|
|
7185
7204
|
...this.state,
|
|
7186
7205
|
...live ? { symbol: live.symbol, provider: live.provider, timeframe: live.timeframe } : {},
|
|
@@ -7189,6 +7208,7 @@ var ChartCell = class {
|
|
|
7189
7208
|
replayWatermark: this.replayWatermarkOn,
|
|
7190
7209
|
indicatorTitles: this.indicatorTitlesOn,
|
|
7191
7210
|
indicatorValues: this.indicatorValuesOn,
|
|
7211
|
+
...statuslineParts ? { statuslineParts } : {},
|
|
7192
7212
|
rendererConfig: this.inner?.renderer.getConfig() ?? void 0,
|
|
7193
7213
|
drawings: this.inner ? this.inner.drawings.toJSON() : void 0,
|
|
7194
7214
|
// Natives from the chart's SYNC registry read — an async catalog mirror here
|
|
@@ -8919,6 +8939,7 @@ var PriceScaleDrawer = class {
|
|
|
8919
8939
|
const pane = this.pane;
|
|
8920
8940
|
const items = priceAxisItems({
|
|
8921
8941
|
auto: chart.renderer.get("autoScale") !== false,
|
|
8942
|
+
priceOnly: priceOnlyState(pane, this.flag("scalePriceOnly")),
|
|
8922
8943
|
invert: pane ? pane.invert : this.flag("invertScale"),
|
|
8923
8944
|
choice: scaleChoiceOf(pane ?? { mode: String(chart.renderer.get("scaleMode") ?? "price"), log: this.flag("logScale") }),
|
|
8924
8945
|
axisLabels: this.flag("axisLabels"),
|
|
@@ -8995,6 +9016,16 @@ var PriceScaleDrawer = class {
|
|
|
8995
9016
|
});
|
|
8996
9017
|
continue;
|
|
8997
9018
|
}
|
|
9019
|
+
if (item.id === "price-only") {
|
|
9020
|
+
row(item.label, {
|
|
9021
|
+
checked: item.checked,
|
|
9022
|
+
onClick: () => {
|
|
9023
|
+
chart.renderer.set("scalePriceOnly", !this.flag("scalePriceOnly"));
|
|
9024
|
+
this.render();
|
|
9025
|
+
}
|
|
9026
|
+
});
|
|
9027
|
+
continue;
|
|
9028
|
+
}
|
|
8998
9029
|
if (item.id === "invert") {
|
|
8999
9030
|
row(item.label, {
|
|
9000
9031
|
checked: item.checked,
|
|
@@ -6848,6 +6848,7 @@ var TEXT = {
|
|
|
6848
6848
|
indexed: msg("widget.contextMenu.scale.indexed", "Indexed to 100"),
|
|
6849
6849
|
log: msg("widget.contextMenu.scale.log", "Logarithmic"),
|
|
6850
6850
|
auto: msg("widget.contextMenu.auto", "Auto (fits data to screen)"),
|
|
6851
|
+
priceOnly: msg("widget.contextMenu.scalePriceOnly", "Scale price chart only"),
|
|
6851
6852
|
invert: msg("widget.contextMenu.invert", "Invert scale"),
|
|
6852
6853
|
labels: msg("widget.contextMenu.labels", "Labels"),
|
|
6853
6854
|
axisLabels: msg("widget.contextMenu.axisLabels", "Price axis labels"),
|
|
@@ -6905,6 +6906,9 @@ function scaleWrites(choice, pane) {
|
|
|
6905
6906
|
["logScale", { pane: pane.id, value: log }]
|
|
6906
6907
|
];
|
|
6907
6908
|
}
|
|
6909
|
+
function priceOnlyState(pane, flag) {
|
|
6910
|
+
return mainScale(pane) ? flag : void 0;
|
|
6911
|
+
}
|
|
6908
6912
|
function invertWrite(next, pane) {
|
|
6909
6913
|
return mainScale(pane) ? ["invertScale", next] : ["invertScale", { pane: pane.id, value: next }];
|
|
6910
6914
|
}
|
|
@@ -6912,6 +6916,7 @@ function priceAxisItems(s, i18n) {
|
|
|
6912
6916
|
const t = (m) => textOf(i18n, m);
|
|
6913
6917
|
return [
|
|
6914
6918
|
{ id: "auto", label: t(TEXT.auto), checked: s.auto },
|
|
6919
|
+
...s.priceOnly === void 0 ? [] : [{ id: "price-only", label: t(TEXT.priceOnly), checked: s.priceOnly }],
|
|
6915
6920
|
{ id: "invert", label: t(TEXT.invert), checked: s.invert },
|
|
6916
6921
|
...SCALE_CHOICES.map(([choice, label], i) => ({
|
|
6917
6922
|
id: `scale:${choice}`,
|
|
@@ -6960,6 +6965,7 @@ var CONTEXT_MENU_BUILTIN_ORDER = {
|
|
|
6960
6965
|
body: { "reset-view": -30, "remove-drawings": -20, "remove-indicators": -10, settings: 1e3 },
|
|
6961
6966
|
"price-axis": {
|
|
6962
6967
|
auto: -80,
|
|
6968
|
+
"price-only": -75,
|
|
6963
6969
|
invert: -70,
|
|
6964
6970
|
"scale:regular": -60,
|
|
6965
6971
|
"scale:percent": -50,
|
|
@@ -7385,4 +7391,4 @@ var SidePanel = class {
|
|
|
7385
7391
|
}
|
|
7386
7392
|
};
|
|
7387
7393
|
|
|
7388
|
-
export { AnchoredVwap, ArrowMark, CONTEXT_MENU_BUILTIN_ORDER, Callout, CalloutBase, Comment, DEDEKIND_CURVATURE_OPTIONS, DEFAULT_DRAWING_COLOR, DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_ORDER, DEFAULT_PANEL_WIDTH, DIRECTION_OPTIONS, DedekindTessellation, Drawing, FIB_PRESETS, FibLevels, FibRatios, FibRetracement, FibSpiral, FixedRangeVolumeProfile, GANN_SQUARE_ARCS, GLYPH_OPTIONS, GannSquare, GlyphStamp, LINE_STYLE_OPTIONS, Liquidity, MACH_NUMBER_OPTIONS, MACH_WAVE_COUNT_OPTIONS, MachFigure, Magnifier, MeasureBox, Note, OVERRIDABLE_TOPBAR_IDS, PatternDrawing, PositionTool, PriceActionZone, PriceLabel, PriceNote, RadialFib, RegressionChannel, STAMP_SIZE_OPTIONS, SegmentDrawing, SidePanel, Signpost, TEXT_SIZE_OPTIONS, TIMEFRAME_BANDS, TIMEZONES, TOPBAR_BUILTIN_IDS, TOPBAR_DEFAULT_LEFT, TOPBAR_DEFAULT_RIGHT, TextLabel, TrendLine, bodyItems, chartType, chartTypes, clampPanelWidth, composeMenu, createDrawing, defaultText, deserializeDrawing, drawingTypeEntries, drawingTypeEntry, drawingTypes, foldBaseModulation, getDrawingType, getNativeIndicator, inputDeltas, inputVisible, invertWrite, isExchangeTimezone, isLineLikeSeries, legendActions, legendActionsProviderFor, legendCallouts, legendCalloutsProviderFor, lineSegmentIntersection, magnifierTimeframeLabel, magnifierTimeframesBelow, matchFibPreset, mobilePlacement, nativeIndicatorDescriptors, nativeIndicatorEntries, nativeIndicatorEntry, nativeIndicatorTypes, nativeInstanceChannel, normalizeSettingsRow, normalizeTimezone, paneScaleAt, pinnedTopbarActionIds, priceAxisItems, registerChartType, registerDefaultEngine, registerDrawingType, registerLegendAction, registerLegendCallout, registerNativeIndicator, registerRendererDefaults, registerRendererLayer, registerSidePanel, registerStatePersistence, registerSymbolRanking, registerWidgetAction, registerWidgetAttachment, rendererDefaults, rendererLayers, resetDrawingSettings, resolveEngines, resolveTimezone, resolveTopbarComposition, sanitizeShowOn, scaleChoiceOf, scaleWrites, seriesInScale, seriesShownOn, settingsRowValueKeys, settingsRowVisible, settingsSectionOf, shownOnTimeframe, sidePanels, stableSeriesId, statePersistenceHandlers, symbolRanking, tickerModifierIds, timeAxisItems, timeframeBandOf, timezoneMenuRows, topbarActionOverride, topbarHas, tzButtonLabel, tzMenuLabel, tzOffset, unregisterChartType, unregisterDefaultEngine, unregisterLegendAction, unregisterLegendCallout, unregisterNativeIndicator, unregisterRendererDefaults, unregisterRendererLayer, unregisterSidePanel, unregisterStatePersistence, unregisterWidgetAction, unregisterWidgetAttachment, widgetActions, widgetAttachments };
|
|
7394
|
+
export { AnchoredVwap, ArrowMark, CONTEXT_MENU_BUILTIN_ORDER, Callout, CalloutBase, Comment, DEDEKIND_CURVATURE_OPTIONS, DEFAULT_DRAWING_COLOR, DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_ORDER, DEFAULT_PANEL_WIDTH, DIRECTION_OPTIONS, DedekindTessellation, Drawing, FIB_PRESETS, FibLevels, FibRatios, FibRetracement, FibSpiral, FixedRangeVolumeProfile, GANN_SQUARE_ARCS, GLYPH_OPTIONS, GannSquare, GlyphStamp, LINE_STYLE_OPTIONS, Liquidity, MACH_NUMBER_OPTIONS, MACH_WAVE_COUNT_OPTIONS, MachFigure, Magnifier, MeasureBox, Note, OVERRIDABLE_TOPBAR_IDS, PatternDrawing, PositionTool, PriceActionZone, PriceLabel, PriceNote, RadialFib, RegressionChannel, STAMP_SIZE_OPTIONS, SegmentDrawing, SidePanel, Signpost, TEXT_SIZE_OPTIONS, TIMEFRAME_BANDS, TIMEZONES, TOPBAR_BUILTIN_IDS, TOPBAR_DEFAULT_LEFT, TOPBAR_DEFAULT_RIGHT, TextLabel, TrendLine, bodyItems, chartType, chartTypes, clampPanelWidth, composeMenu, createDrawing, defaultText, deserializeDrawing, drawingTypeEntries, drawingTypeEntry, drawingTypes, foldBaseModulation, getDrawingType, getNativeIndicator, inputDeltas, inputVisible, invertWrite, isExchangeTimezone, isLineLikeSeries, legendActions, legendActionsProviderFor, legendCallouts, legendCalloutsProviderFor, lineSegmentIntersection, magnifierTimeframeLabel, magnifierTimeframesBelow, matchFibPreset, mobilePlacement, nativeIndicatorDescriptors, nativeIndicatorEntries, nativeIndicatorEntry, nativeIndicatorTypes, nativeInstanceChannel, normalizeSettingsRow, normalizeTimezone, paneScaleAt, pinnedTopbarActionIds, priceAxisItems, priceOnlyState, registerChartType, registerDefaultEngine, registerDrawingType, registerLegendAction, registerLegendCallout, registerNativeIndicator, registerRendererDefaults, registerRendererLayer, registerSidePanel, registerStatePersistence, registerSymbolRanking, registerWidgetAction, registerWidgetAttachment, rendererDefaults, rendererLayers, resetDrawingSettings, resolveEngines, resolveTimezone, resolveTopbarComposition, sanitizeShowOn, scaleChoiceOf, scaleWrites, seriesInScale, seriesShownOn, settingsRowValueKeys, settingsRowVisible, settingsSectionOf, shownOnTimeframe, sidePanels, stableSeriesId, statePersistenceHandlers, symbolRanking, tickerModifierIds, timeAxisItems, timeframeBandOf, timezoneMenuRows, topbarActionOverride, topbarHas, tzButtonLabel, tzMenuLabel, tzOffset, unregisterChartType, unregisterDefaultEngine, unregisterLegendAction, unregisterLegendCallout, unregisterNativeIndicator, unregisterRendererDefaults, unregisterRendererLayer, unregisterSidePanel, unregisterStatePersistence, unregisterWidgetAction, unregisterWidgetAttachment, widgetActions, widgetAttachments };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { y as Millis, aq as InputSchema, an as IndicatorMeta, P as PriceStyle, O as OHLCV, I as InputValue, m as IndicatorModel, l as MoveTarget, aJ as PaneAxis, b0 as SeriesSpec, al as Fill, J as Background, aS as PriceLine, a8 as DrawingLine, a4 as DrawingBox, a7 as DrawingLabel, ac as DrawingPolyline, a9 as DrawingLinefill, ah as DrawingTable, h as IndicatorStatus, a as VisibleRange, c as VelaTheme, S as SerializedDrawing, B as DrawingTypeKey, z as SnapMode, aa as DrawingMode, v as MarkClickEvent, e as IChartRenderer, R as RendererCapabilities, p as LegendActionView, q as LegendCalloutView, U as Unsubscribe, C as CrosshairEvent, s as ClickEvent, A as AxisLongPressEvent, w as DataWindowReadout, o as SymbolPickerFn, W as WallClock, bi as PaneInfo, ak as DrawingsOption, ae as DrawingSeriesGateway, bj as DrawingToolDefaults, bk as DrawingToolTemplate, D as Drawing, t as TimelineMark, u as MarkGroup, b as VelaOptions, G as AddIndicatorOptions, aI as MarketSwitch, F as MarketSnapshot, V as VisibleRangePreset, T as ThemeName } from './options-
|
|
2
|
-
import { S as SymbolInfo, B as BarRange, M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, b as ProviderCapabilities } from './DataProvider-
|
|
3
|
-
import { M as MessageLike, T as Translator, c as LocaleChangedEvent, b as LocalizationOptions } from './types-
|
|
1
|
+
import { y as Millis, aq as InputSchema, an as IndicatorMeta, P as PriceStyle, O as OHLCV, I as InputValue, m as IndicatorModel, l as MoveTarget, aJ as PaneAxis, b0 as SeriesSpec, al as Fill, J as Background, aS as PriceLine, a8 as DrawingLine, a4 as DrawingBox, a7 as DrawingLabel, ac as DrawingPolyline, a9 as DrawingLinefill, ah as DrawingTable, h as IndicatorStatus, a as VisibleRange, c as VelaTheme, S as SerializedDrawing, B as DrawingTypeKey, z as SnapMode, aa as DrawingMode, v as MarkClickEvent, e as IChartRenderer, R as RendererCapabilities, p as LegendActionView, q as LegendCalloutView, U as Unsubscribe, C as CrosshairEvent, s as ClickEvent, A as AxisLongPressEvent, w as DataWindowReadout, o as SymbolPickerFn, W as WallClock, bi as PaneInfo, ak as DrawingsOption, ae as DrawingSeriesGateway, bj as DrawingToolDefaults, bk as DrawingToolTemplate, D as Drawing, t as TimelineMark, u as MarkGroup, b as VelaOptions, G as AddIndicatorOptions, aI as MarketSwitch, F as MarketSnapshot, V as VisibleRangePreset, T as ThemeName } from './options-B7aL1pbf.js';
|
|
2
|
+
import { S as SymbolInfo, B as BarRange, M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, b as ProviderCapabilities } from './DataProvider-CPFgSyAm.js';
|
|
3
|
+
import { M as MessageLike, T as Translator, c as LocaleChangedEvent, b as LocalizationOptions } from './types-Bwf63xGI.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* A strategy's broker state at ONE bar — the flat summary a host reads while a script
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { y as Millis, aq as InputSchema, an as IndicatorMeta, P as PriceStyle, O as OHLCV, I as InputValue, m as IndicatorModel, l as MoveTarget, aJ as PaneAxis, b0 as SeriesSpec, al as Fill, J as Background, aS as PriceLine, a8 as DrawingLine, a4 as DrawingBox, a7 as DrawingLabel, ac as DrawingPolyline, a9 as DrawingLinefill, ah as DrawingTable, h as IndicatorStatus, a as VisibleRange, c as VelaTheme, S as SerializedDrawing, B as DrawingTypeKey, z as SnapMode, aa as DrawingMode, v as MarkClickEvent, e as IChartRenderer, R as RendererCapabilities, p as LegendActionView, q as LegendCalloutView, U as Unsubscribe, C as CrosshairEvent, s as ClickEvent, A as AxisLongPressEvent, w as DataWindowReadout, o as SymbolPickerFn, W as WallClock, bi as PaneInfo, ak as DrawingsOption, ae as DrawingSeriesGateway, bj as DrawingToolDefaults, bk as DrawingToolTemplate, D as Drawing, t as TimelineMark, u as MarkGroup, b as VelaOptions, G as AddIndicatorOptions, aI as MarketSwitch, F as MarketSnapshot, V as VisibleRangePreset, T as ThemeName } from './options-
|
|
2
|
-
import { S as SymbolInfo, B as BarRange, M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, b as ProviderCapabilities } from './DataProvider-
|
|
3
|
-
import { M as MessageLike, T as Translator, c as LocaleChangedEvent, b as LocalizationOptions } from './types-
|
|
1
|
+
import { y as Millis, aq as InputSchema, an as IndicatorMeta, P as PriceStyle, O as OHLCV, I as InputValue, m as IndicatorModel, l as MoveTarget, aJ as PaneAxis, b0 as SeriesSpec, al as Fill, J as Background, aS as PriceLine, a8 as DrawingLine, a4 as DrawingBox, a7 as DrawingLabel, ac as DrawingPolyline, a9 as DrawingLinefill, ah as DrawingTable, h as IndicatorStatus, a as VisibleRange, c as VelaTheme, S as SerializedDrawing, B as DrawingTypeKey, z as SnapMode, aa as DrawingMode, v as MarkClickEvent, e as IChartRenderer, R as RendererCapabilities, p as LegendActionView, q as LegendCalloutView, U as Unsubscribe, C as CrosshairEvent, s as ClickEvent, A as AxisLongPressEvent, w as DataWindowReadout, o as SymbolPickerFn, W as WallClock, bi as PaneInfo, ak as DrawingsOption, ae as DrawingSeriesGateway, bj as DrawingToolDefaults, bk as DrawingToolTemplate, D as Drawing, t as TimelineMark, u as MarkGroup, b as VelaOptions, G as AddIndicatorOptions, aI as MarketSwitch, F as MarketSnapshot, V as VisibleRangePreset, T as ThemeName } from './options-I1H2HDWw.cjs';
|
|
2
|
+
import { S as SymbolInfo, B as BarRange, M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, b as ProviderCapabilities } from './DataProvider-B5i0_yY4.cjs';
|
|
3
|
+
import { M as MessageLike, T as Translator, c as LocaleChangedEvent, b as LocalizationOptions } from './types-Bwf63xGI.cjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* A strategy's broker state at ONE bar — the flat summary a host reads while a script
|