@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.
Files changed (126) hide show
  1. package/dist/{DataProvider-zJGp58kb.d.cts → DataProvider-B5i0_yY4.d.cts} +1 -1
  2. package/dist/{DataProvider-BGlB1zSc.d.ts → DataProvider-CPFgSyAm.d.ts} +1 -1
  3. package/dist/{chunk-XIRSR3D6.js → chunk-3H6JO4VL.js} +48 -30
  4. package/dist/{chunk-4WAHYL7Y.js → chunk-BLVL7WXF.js} +33 -2
  5. package/dist/{chunk-YRCL3WMD.js → chunk-Q7POFYNE.js} +7 -1
  6. package/dist/{contributions-BjefWpxQ.d.ts → contributions-BfBaF6eE.d.ts} +3 -3
  7. package/dist/{contributions-CpCJisTC.d.cts → contributions-DupwEkzc.d.cts} +3 -3
  8. package/dist/index.cjs +40 -21
  9. package/dist/index.d.cts +13 -11
  10. package/dist/index.d.ts +13 -11
  11. package/dist/index.js +2 -2
  12. package/dist/{keymap-UolhuXH1.d.ts → keymap-C48ughm6.d.ts} +1 -1
  13. package/dist/{keymap-B9_FLhfJ.d.cts → keymap-W0hiajU6.d.cts} +1 -1
  14. package/dist/locales/ar.cjs +2 -0
  15. package/dist/locales/ar.d.cts +1 -1
  16. package/dist/locales/ar.d.ts +1 -1
  17. package/dist/locales/ar.js +2 -0
  18. package/dist/locales/de.cjs +2 -0
  19. package/dist/locales/de.d.cts +1 -1
  20. package/dist/locales/de.d.ts +1 -1
  21. package/dist/locales/de.js +2 -0
  22. package/dist/locales/en.cjs +2 -0
  23. package/dist/locales/en.d.cts +1 -1
  24. package/dist/locales/en.d.ts +1 -1
  25. package/dist/locales/en.js +2 -0
  26. package/dist/locales/es.cjs +2 -0
  27. package/dist/locales/es.d.cts +1 -1
  28. package/dist/locales/es.d.ts +1 -1
  29. package/dist/locales/es.js +2 -0
  30. package/dist/locales/fr.cjs +2 -0
  31. package/dist/locales/fr.d.cts +1 -1
  32. package/dist/locales/fr.d.ts +1 -1
  33. package/dist/locales/fr.js +2 -0
  34. package/dist/locales/he.cjs +2 -0
  35. package/dist/locales/he.d.cts +1 -1
  36. package/dist/locales/he.d.ts +1 -1
  37. package/dist/locales/he.js +2 -0
  38. package/dist/locales/hi.cjs +2 -0
  39. package/dist/locales/hi.d.cts +1 -1
  40. package/dist/locales/hi.d.ts +1 -1
  41. package/dist/locales/hi.js +2 -0
  42. package/dist/locales/id.cjs +2 -0
  43. package/dist/locales/id.d.cts +1 -1
  44. package/dist/locales/id.d.ts +1 -1
  45. package/dist/locales/id.js +2 -0
  46. package/dist/locales/it.cjs +2 -0
  47. package/dist/locales/it.d.cts +1 -1
  48. package/dist/locales/it.d.ts +1 -1
  49. package/dist/locales/it.js +2 -0
  50. package/dist/locales/ja.cjs +2 -0
  51. package/dist/locales/ja.d.cts +1 -1
  52. package/dist/locales/ja.d.ts +1 -1
  53. package/dist/locales/ja.js +2 -0
  54. package/dist/locales/ko.cjs +2 -0
  55. package/dist/locales/ko.d.cts +1 -1
  56. package/dist/locales/ko.d.ts +1 -1
  57. package/dist/locales/ko.js +2 -0
  58. package/dist/locales/ms.cjs +2 -0
  59. package/dist/locales/ms.d.cts +1 -1
  60. package/dist/locales/ms.d.ts +1 -1
  61. package/dist/locales/ms.js +2 -0
  62. package/dist/locales/pl.cjs +2 -0
  63. package/dist/locales/pl.d.cts +1 -1
  64. package/dist/locales/pl.d.ts +1 -1
  65. package/dist/locales/pl.js +2 -0
  66. package/dist/locales/pt-BR.cjs +2 -0
  67. package/dist/locales/pt-BR.d.cts +1 -1
  68. package/dist/locales/pt-BR.d.ts +1 -1
  69. package/dist/locales/pt-BR.js +2 -0
  70. package/dist/locales/ru.cjs +2 -0
  71. package/dist/locales/ru.d.cts +1 -1
  72. package/dist/locales/ru.d.ts +1 -1
  73. package/dist/locales/ru.js +2 -0
  74. package/dist/locales/th.cjs +2 -0
  75. package/dist/locales/th.d.cts +1 -1
  76. package/dist/locales/th.d.ts +1 -1
  77. package/dist/locales/th.js +2 -0
  78. package/dist/locales/tr.cjs +2 -0
  79. package/dist/locales/tr.d.cts +1 -1
  80. package/dist/locales/tr.d.ts +1 -1
  81. package/dist/locales/tr.js +2 -0
  82. package/dist/locales/vi.cjs +2 -0
  83. package/dist/locales/vi.d.cts +1 -1
  84. package/dist/locales/vi.d.ts +1 -1
  85. package/dist/locales/vi.js +2 -0
  86. package/dist/locales/zh-Hans.cjs +2 -0
  87. package/dist/locales/zh-Hans.d.cts +1 -1
  88. package/dist/locales/zh-Hans.d.ts +1 -1
  89. package/dist/locales/zh-Hans.js +2 -0
  90. package/dist/locales/zh-Hant.cjs +2 -0
  91. package/dist/locales/zh-Hant.d.cts +1 -1
  92. package/dist/locales/zh-Hant.d.ts +1 -1
  93. package/dist/locales/zh-Hant.js +2 -0
  94. package/dist/{options-D4L3_hv_.d.ts → options-B7aL1pbf.d.ts} +1 -1
  95. package/dist/{options-CpegHml_.d.cts → options-I1H2HDWw.d.cts} +1 -1
  96. package/dist/{plugin-DpNp4aBi.d.cts → plugin-BGz-Vsdv.d.cts} +6 -6
  97. package/dist/{plugin-DTmulpKM.d.ts → plugin-BZHypj8h.d.ts} +6 -6
  98. package/dist/plugin.cjs +1 -0
  99. package/dist/plugin.d.cts +7 -7
  100. package/dist/plugin.d.ts +7 -7
  101. package/dist/plugin.js +1 -1
  102. package/dist/providers/binance.d.cts +3 -3
  103. package/dist/providers/binance.d.ts +3 -3
  104. package/dist/providers/coinbase.d.cts +3 -3
  105. package/dist/providers/coinbase.d.ts +3 -3
  106. package/dist/providers/hyperliquid.d.cts +3 -3
  107. package/dist/providers/hyperliquid.d.ts +3 -3
  108. package/dist/{side-panel-CYmH1Opm.d.ts → side-panel-BEQJqSjR.d.cts} +2 -1
  109. package/dist/{side-panel-BqUnpfev.d.cts → side-panel-Ud0SBAnE.d.ts} +2 -1
  110. package/dist/{statusline-model-C3yIY9WE.d.ts → statusline-model-Dfb_GD9u.d.ts} +7 -4
  111. package/dist/{statusline-model-pGs3Xvp-.d.cts → statusline-model-PHt0YhmI.d.cts} +7 -4
  112. package/dist/{types-BlrXRLIR.d.cts → types-Bwf63xGI.d.cts} +4 -1
  113. package/dist/{types-BlrXRLIR.d.ts → types-Bwf63xGI.d.ts} +4 -1
  114. package/dist/ui.d.cts +3 -3
  115. package/dist/ui.d.ts +3 -3
  116. package/dist/vela.global.js +40 -21
  117. package/dist/vela.global.min.js +55 -55
  118. package/dist/widget.cjs +80 -25
  119. package/dist/widget.d.cts +10 -10
  120. package/dist/widget.d.ts +10 -10
  121. package/dist/widget.js +4 -4
  122. package/dist/workspace.cjs +80 -25
  123. package/dist/workspace.d.cts +7 -7
  124. package/dist/workspace.d.ts +7 -7
  125. package/dist/workspace.js +3 -3
  126. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { M as MarketConfig, O as OHLCV, U as Unsubscribe } from './options-CpegHml_.cjs';
1
+ import { M as MarketConfig, O as OHLCV, U as Unsubscribe } from './options-I1H2HDWw.cjs';
2
2
 
3
3
  /**
4
4
  * Symbol metadata an engine may need (e.g. Pine `syminfo.*`). Free-form beyond
@@ -1,4 +1,4 @@
1
- import { M as MarketConfig, O as OHLCV, U as Unsubscribe } from './options-D4L3_hv_.js';
1
+ import { M as MarketConfig, O as OHLCV, U as Unsubscribe } from './options-B7aL1pbf.js';
2
2
 
3
3
  /**
4
4
  * Symbol metadata an engine may need (e.g. Pine `syminfo.*`). Free-form beyond
@@ -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-YRCL3WMD.js';
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
- pane.scaleTarget = computePaneScale(masterModels, this.bars, includeCandles, i0, s1, dr, paneLogScale(this.scene, pane), (id) => this.scene.offsetOf(id), margins);
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 DAY_MS = 864e5;
24250
+ var DAY_MS2 = 864e5;
24233
24251
  var PRESET_SPAN_MS = {
24234
- "1D": DAY_MS,
24235
- "1W": 7 * DAY_MS,
24236
- "1M": 30 * DAY_MS,
24237
- "3M": 90 * DAY_MS,
24238
- "6M": 180 * DAY_MS,
24239
- "1Y": 365 * DAY_MS,
24240
- "5Y": 5 * 365 * DAY_MS
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 DAY_MS2 = 864e5;
30785
+ var DAY_MS3 = 864e5;
30768
30786
  function periodKey(anchor, time) {
30769
- if (anchor === "Week") return Math.floor((Math.floor(time / DAY_MS2) + 3) / 7);
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 / DAY_MS2);
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) >= DAY_MS2;
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 < DAY_MS2 ? "Week" : interval <= DAY_MS2 ? "Month" : "Year";
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 * DAY_MS2;
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-XIRSR3D6.js';
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-YRCL3WMD.js';
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-D4L3_hv_.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-BGlB1zSc.js';
3
- import { M as MessageLike, T as Translator, c as LocaleChangedEvent, b as LocalizationOptions } from './types-BlrXRLIR.js';
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-CpegHml_.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-zJGp58kb.cjs';
3
- import { M as MessageLike, T as Translator, c as LocaleChangedEvent, b as LocalizationOptions } from './types-BlrXRLIR.cjs';
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