@luxalgo/vela 0.6.21 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/{DataProvider-Cb-2lC5O.d.ts → DataProvider-Bu9E5Zh5.d.ts} +1 -1
  2. package/dist/{DataProvider-UtWw2CgJ.d.cts → DataProvider-Ck2qyS_9.d.cts} +1 -1
  3. package/dist/{chunk-BRPFYKTT.js → chunk-A347YL2P.js} +30 -7
  4. package/dist/{chunk-TRZQQUTR.js → chunk-A4G64KVF.js} +1442 -126
  5. package/dist/{chunk-T5Z5YUCF.js → chunk-CZRNTHD6.js} +24 -2
  6. package/dist/{chunk-XCBJU674.js → chunk-UHXG5J7C.js} +1 -1
  7. package/dist/{contributions-D8HdlKmp.d.cts → contributions-BjQ7hyIx.d.ts} +108 -3
  8. package/dist/{contributions-FqIWhN4p.d.ts → contributions-Cv2Mutvn.d.cts} +108 -3
  9. package/dist/index.cjs +1465 -125
  10. package/dist/index.d.cts +76 -20
  11. package/dist/index.d.ts +76 -20
  12. package/dist/index.js +2 -2
  13. package/dist/{options-BCRmYALw.d.cts → options-ex2_gtKp.d.cts} +200 -12
  14. package/dist/{options-BCRmYALw.d.ts → options-ex2_gtKp.d.ts} +200 -12
  15. package/dist/{plugin-B4mnNAeh.d.ts → plugin-CiyhU7pi.d.ts} +3 -3
  16. package/dist/{plugin-Ccupy_BV.d.cts → plugin-absNH7Yn.d.cts} +3 -3
  17. package/dist/plugin.d.cts +4 -4
  18. package/dist/plugin.d.ts +4 -4
  19. package/dist/providers/binance.d.cts +2 -2
  20. package/dist/providers/binance.d.ts +2 -2
  21. package/dist/providers/coinbase.d.cts +2 -2
  22. package/dist/providers/coinbase.d.ts +2 -2
  23. package/dist/providers/hyperliquid.d.cts +2 -2
  24. package/dist/providers/hyperliquid.d.ts +2 -2
  25. package/dist/{statusline-model-CCP1zm_Z.d.ts → statusline-model-BXoU4Kua.d.ts} +8 -4
  26. package/dist/{statusline-model-E7CMw5pQ.d.cts → statusline-model-cRhPBLPO.d.cts} +8 -4
  27. package/dist/ui.cjs +24 -2
  28. package/dist/ui.d.cts +9 -3
  29. package/dist/ui.d.ts +9 -3
  30. package/dist/ui.js +2 -2
  31. package/dist/vela.global.js +1465 -125
  32. package/dist/vela.global.min.js +77 -53
  33. package/dist/widget.cjs +1490 -129
  34. package/dist/widget.d.cts +6 -6
  35. package/dist/widget.d.ts +6 -6
  36. package/dist/widget.js +5 -5
  37. package/dist/workspace.cjs +1490 -129
  38. package/dist/workspace.d.cts +8 -5
  39. package/dist/workspace.d.ts +8 -5
  40. package/dist/workspace.js +4 -4
  41. package/package.json +1 -1
package/dist/index.d.cts CHANGED
@@ -1,9 +1,9 @@
1
- import { D as DrawingsDocument, R as Resolved } from './contributions-D8HdlKmp.cjs';
2
- export { B as BarsChangeReason, C as CellStateContext, b as ContextSelect, c as DataControl, d as DrawingsControl, e as EngineAlert, f as EngineCapabilities, g as EngineContextSnapshot, h as EngineFactory, i as EngineWarning, j as ExecutionHandlers, k as ExecutionMarket, l as ExecutionRequest, m as ExecutionSession, E as ExternalIndicatorEntry, F as FetchSeries, n as IndicatorEventMap, I as IndicatorHandle, o as IndicatorSummary, L as LegendActionDescriptor, p as LegendCalloutContent, q as LegendCalloutDescriptor, r as LegendCalloutItem, s as LegendCalloutSpec, t as LegendIndicatorInfo, N as NativeIndicator, u as NativeIndicatorContext, v as NativeIndicatorDescriptor, w as NativeIndicatorInfo, x as NativeIndicatorOutput, O as OVERRIDABLE_TOPBAR_IDS, P as ParsedSymbol, y as PreparedScript, z as RendererControl, A as RunIndicatorResult, G as SceneInspection, a as ScriptRun, H as ScriptRunCause, J as ScriptRunResult, S as ScriptingEngine, K as SidePanelButton, M as SidePanelDescriptor, Q as SidePanelHandle, T as SidePanelHeader, U as StatePersistenceHandler, X as StrategyFill, Y as StrategyState, Z as StrategyTrade, _ as SymbolRankingHook, $ as TypedEventBus, V as Vela, a0 as VelaDeps, a1 as VelaEventMap, a2 as VisibleBarRange, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, W as WidgetContext, a6 as getNativeIndicator, a7 as legendActions, a8 as legendCallouts, a9 as nativeIndicatorDescriptors, aa as nativeIndicatorTypes, ab as registerDefaultEngine, ac as registerLegendAction, ad as registerLegendCallout, ae as registerNativeIndicator, af as registerSidePanel, ag as registerStatePersistence, ah as registerSymbolRanking, ai as registerWidgetAction, aj as registerWidgetAttachment, ak as resolveEngines, al as sidePanels, am as statePersistenceHandlers, an as symbolRanking, ao as topbarActionOverride, ap as unregisterDefaultEngine, aq as unregisterLegendAction, ar as unregisterLegendCallout, as as unregisterNativeIndicator, at as unregisterSidePanel, au as unregisterStatePersistence, av as unregisterWidgetAction, aw as unregisterWidgetAttachment, ax as widgetActions, ay as widgetAttachments } from './contributions-D8HdlKmp.cjs';
3
- import { D as Drawing, S as SerializedDrawing, U as Unsubscribe, L as LineStyle, P as PriceStyle, e as IChartRenderer, R as RendererCapabilities, f as RendererDisplayOptions, g as IndicatorRenderHandle, h as IndicatorStatus, c as VelaTheme, O as OHLCV, i as Pane, j as PaneAction, k as MoveTarget, l as IndicatorModel, m as ScenePatch, I as InputValue, n as SymbolPickerFn, o as LegendActionView, p as LegendCalloutView, q as InputChangeEvent, T as ThemeName, C as CrosshairEvent, r as ClickEvent, A as AxisLongPressEvent, a as VisibleRange, s as DataWindowReadout, t as IDrawingsRendererPort, u as Millis, v as SnapMode, w as DrawingTypeKey, x as ToolbarDefinition, M as MarketConfig } from './options-BCRmYALw.cjs';
4
- export { y as AddIndicatorOptions, z as AnimationConfig, B as Background, E as BoxFontFamily, F as BoxHAlign, G as BoxTextSize, H as BoxVAlign, J as CandleBarColor, K as CandleSeries, Q as CandleStyle, W as DataWindowGroup, X as DataWindowOHLC, Y as DataWindowRow, Z as DirtyRange, _ as DrawingBox, $ as DrawingExtend, a0 as DrawingIntent, a1 as DrawingLabel, a2 as DrawingLine, a3 as DrawingLinefill, a4 as DrawingMode, a5 as DrawingPoint, a6 as DrawingPolyline, a7 as DrawingSeriesBar, a8 as DrawingSeriesGateway, a9 as DrawingSeriesState, aa as DrawingStyle, ab as DrawingTable, ac as DrawingText, ad as DrawingXLoc, ae as DrawingsOption, af as Fill, ag as FillGradientStop, ah as IndicatorMeta, ai as InputCondition, aj as InputSchema, ak as InputType, al as InputWhen, am as LabelStyle, an as LabelYLoc, ao as LineLikeKind, ap as LineLikeSeries, aq as LineLikeStyle, ar as MarkerPoint, as as MarkerSeries, at as MarketSnapshot, au as MarketSwitch, av as PaneAxis, aw as PaneAxisBand, ax as PaneHint, ay as PaneKind, az as PolylinePoint, aA as PriceLine, aB as Projector, aC as ProviderName, aD as RendererConstructor, aE as Scene, aF as SchemaPatch, aG as SeriesKind, aH as SeriesPoint, aI as SeriesSpec, aJ as SeriesValueDelta, aK as SettingsField, aL as SettingsSchema, aM as SettingsVisibilityPolicy, aN as TableCell, aO as TableMerge, aP as TablePosition, aQ as ToolbarGroupConfig, aR as TradeExecution, aS as ValuePatch, b as VelaOptions, V as VisibleRangePreset, aT as buildToolbar, aU as defaultToolbar, aV as inputDeltas, aW as inputVisible } from './options-BCRmYALw.cjs';
5
- import { M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, S as SymbolInfo, b as ProviderCapabilities, B as BarRange } from './DataProvider-UtWw2CgJ.cjs';
6
- export { A as ACCENT, a as ACCENT_BRIGHT, B as BEARISH, b as BULLISH, c as BarTransform, d as BasePaintingModulation, C as CATEGORICAL, e as CHIP_PLATE, f as CROSSHAIR, g as ChartTypeDefinition, h as ChartTypeSettingsInstance, i as ChartTypeSettingsSection, j as ChartTypeSettingsSubsection, D as DrawingTypeMeta, H as HIGHLIGHT, I as INFO, k as INVALID, l as IdentifiableKind, M as MARKER, N as NEUTRAL, m as NormalizedSettingsRow, R as RendererLayerArgs, n as RendererLayerDefinition, o as RendererLayerInstance, S as SERIES_LINE, p as SESSION_OFF, q as SESSION_POST, r as SESSION_PRE, s as SLATE, t as SLATE_DEEP, u as SeriesDataEngine, v as SeriesDataEngineHost, w as SettingsInlineControl, x as SettingsRowCondition, y as SettingsRowDescriptor, z as SettingsRowInlineNumber, E as SettingsRowSwatch, F as SettingsRowValueKey, G as SettingsRowWhen, J as SettingsRowWidth, K as SettingsSelectOption, L as SettingsValueRow, T as TRADE_EXIT, O as TRADE_LONG, P as TRADE_SHORT, V as VALID, W as WARNING, Q as categoricalColor, U as chartType, X as chartTypes, Y as createDrawing, Z as deserializeDrawing, _ as drawingTypes, $ as getDrawingType, a0 as normalizeSettingsRow, a1 as registerChartType, a2 as registerDrawingType, a3 as registerRendererDefaults, a4 as registerRendererLayer, a5 as rendererDefaults, a6 as rendererLayers, a7 as settingsRowValueKeys, a8 as stableSeriesId, a9 as tickerModifierIds, aa as unregisterChartType, ab as unregisterRendererDefaults, ac as unregisterRendererLayer } from './plugin-Ccupy_BV.cjs';
1
+ import { D as DrawingsDocument, R as Resolved } from './contributions-Cv2Mutvn.cjs';
2
+ export { B as BarsChangeReason, C as CellStateContext, b as ContextSelect, c as DataControl, d as DrawingsControl, e as EngineAlert, f as EngineCapabilities, g as EngineContextSnapshot, h as EngineFactory, i as EngineWarning, j as ExecutionHandlers, k as ExecutionMarket, l as ExecutionRequest, m as ExecutionSession, E as ExternalIndicatorEntry, F as FetchSeries, n as IndicatorEventMap, I as IndicatorHandle, o as IndicatorSummary, L as LegendActionDescriptor, p as LegendCalloutContent, q as LegendCalloutDescriptor, r as LegendCalloutItem, s as LegendCalloutSpec, t as LegendIndicatorInfo, M as MarksControl, N as NativeIndicator, u as NativeIndicatorContext, v as NativeIndicatorDescriptor, w as NativeIndicatorInfo, x as NativeIndicatorOutput, O as OVERRIDABLE_TOPBAR_IDS, P as ParsedSymbol, y as PreparedScript, z as RendererControl, A as RunIndicatorResult, G as SceneInspection, a as ScriptRun, H as ScriptRunCause, J as ScriptRunResult, S as ScriptingEngine, K as SidePanelButton, Q as SidePanelDescriptor, T as SidePanelHandle, U as SidePanelHeader, X as StatePersistenceHandler, Y as StrategyFill, Z as StrategyState, _ as StrategyTrade, $ as SymbolRankingHook, a0 as TypedEventBus, V as Vela, a1 as VelaDeps, a2 as VelaEventMap, a3 as VisibleBarRange, a4 as WidgetActionDescriptor, a5 as WidgetActionTarget, a6 as WidgetAttachment, W as WidgetContext, a7 as getNativeIndicator, a8 as legendActions, a9 as legendCallouts, aa as nativeIndicatorDescriptors, ab as nativeIndicatorTypes, ac as registerDefaultEngine, ad as registerLegendAction, ae as registerLegendCallout, af as registerNativeIndicator, ag as registerSidePanel, ah as registerStatePersistence, ai as registerSymbolRanking, aj as registerWidgetAction, ak as registerWidgetAttachment, al as resolveEngines, am as sidePanels, an as statePersistenceHandlers, ao as symbolRanking, ap as topbarActionOverride, aq as unregisterDefaultEngine, ar as unregisterLegendAction, as as unregisterLegendCallout, at as unregisterNativeIndicator, au as unregisterSidePanel, av as unregisterStatePersistence, aw as unregisterWidgetAction, ax as unregisterWidgetAttachment, ay as widgetActions, az as widgetAttachments } from './contributions-Cv2Mutvn.cjs';
3
+ import { D as Drawing, S as SerializedDrawing, U as Unsubscribe, L as LineStyle, P as PriceStyle, e as IChartRenderer, R as RendererCapabilities, f as RendererDisplayOptions, g as IndicatorRenderHandle, h as IndicatorStatus, c as VelaTheme, W as WallClock, O as OHLCV, i as Pane, j as PaneAction, k as MoveTarget, l as IndicatorModel, m as ScenePatch, I as InputValue, n as SymbolPickerFn, o as LegendActionView, p as LegendCalloutView, q as InputChangeEvent, T as ThemeName, C as CrosshairEvent, r as ClickEvent, A as AxisLongPressEvent, s as TimelineMark, t as MarkGroup, u as MarkClickEvent, a as VisibleRange, v as DataWindowReadout, w as IDrawingsRendererPort, x as Millis, y as SnapMode, z as DrawingTypeKey, B as ToolbarDefinition, M as MarketConfig } from './options-ex2_gtKp.cjs';
4
+ export { E as AddIndicatorOptions, F as AnimationConfig, G as Background, H as BoxFontFamily, J as BoxHAlign, K as BoxTextSize, Q as BoxVAlign, X as CandleBarColor, Y as CandleSeries, Z as CandleStyle, _ as DataWindowGroup, $ as DataWindowOHLC, a0 as DataWindowRow, a1 as DirtyRange, a2 as DrawingBox, a3 as DrawingExtend, a4 as DrawingIntent, a5 as DrawingLabel, a6 as DrawingLine, a7 as DrawingLinefill, a8 as DrawingMode, a9 as DrawingPoint, aa as DrawingPolyline, ab as DrawingSeriesBar, ac as DrawingSeriesGateway, ad as DrawingSeriesState, ae as DrawingStyle, af as DrawingTable, ag as DrawingText, ah as DrawingXLoc, ai as DrawingsOption, aj as Fill, ak as FillGradientStop, al as IndicatorMeta, am as InputCondition, an as InputSchema, ao as InputType, ap as InputWhen, aq as IntroAnimation, ar as IntroConfig, as as IntroStyle, at as LabelStyle, au as LabelYLoc, av as LineLikeKind, aw as LineLikeSeries, ax as LineLikeStyle, ay as MarkContent, az as MarkContentSource, aA as MarkGlyph, aB as MarkPanelItem, aC as MarkShape, aD as MarkerPoint, aE as MarkerSeries, aF as MarketSnapshot, aG as MarketSwitch, aH as PaneAxis, aI as PaneAxisBand, aJ as PaneHint, aK as PaneKind, aL as PolylinePoint, aM as PriceLine, aN as Projector, aO as ProviderName, aP as RendererConstructor, aQ as Scene, aR as SchemaPatch, aS as SecondClock, aT as SeriesKind, aU as SeriesPoint, aV as SeriesSpec, aW as SeriesValueDelta, aX as SettingsField, aY as SettingsSchema, aZ as SettingsVisibilityPolicy, a_ as TableCell, a$ as TableMerge, b0 as TablePosition, b1 as ToolbarGroupConfig, b2 as TradeExecution, b3 as ValuePatch, b as VelaOptions, V as VisibleRangePreset, b4 as buildToolbar, b5 as defaultToolbar, b6 as inputDeltas, b7 as inputVisible } from './options-ex2_gtKp.cjs';
5
+ import { M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, S as SymbolInfo, b as ProviderCapabilities, B as BarRange } from './DataProvider-Ck2qyS_9.cjs';
6
+ export { A as ACCENT, a as ACCENT_BRIGHT, B as BEARISH, b as BULLISH, c as BarTransform, d as BasePaintingModulation, C as CATEGORICAL, e as CHIP_PLATE, f as CROSSHAIR, g as ChartTypeDefinition, h as ChartTypeSettingsInstance, i as ChartTypeSettingsSection, j as ChartTypeSettingsSubsection, D as DrawingTypeMeta, H as HIGHLIGHT, I as INFO, k as INVALID, l as IdentifiableKind, M as MARKER, N as NEUTRAL, m as NormalizedSettingsRow, R as RendererLayerArgs, n as RendererLayerDefinition, o as RendererLayerInstance, S as SERIES_LINE, p as SESSION_OFF, q as SESSION_POST, r as SESSION_PRE, s as SLATE, t as SLATE_DEEP, u as SeriesDataEngine, v as SeriesDataEngineHost, w as SettingsInlineControl, x as SettingsRowCondition, y as SettingsRowDescriptor, z as SettingsRowInlineNumber, E as SettingsRowSwatch, F as SettingsRowValueKey, G as SettingsRowWhen, J as SettingsRowWidth, K as SettingsSelectOption, L as SettingsValueRow, T as TRADE_EXIT, O as TRADE_LONG, P as TRADE_SHORT, V as VALID, W as WARNING, Q as categoricalColor, U as chartType, X as chartTypes, Y as createDrawing, Z as deserializeDrawing, _ as drawingTypes, $ as getDrawingType, a0 as normalizeSettingsRow, a1 as registerChartType, a2 as registerDrawingType, a3 as registerRendererDefaults, a4 as registerRendererLayer, a5 as rendererDefaults, a6 as rendererLayers, a7 as settingsRowValueKeys, a8 as stableSeriesId, a9 as tickerModifierIds, aa as unregisterChartType, ab as unregisterRendererDefaults, ac as unregisterRendererLayer } from './plugin-absNH7Yn.cjs';
7
7
  export { D as DEFAULT_PANEL_MAX_WIDTH, a as DEFAULT_PANEL_MIN_WIDTH, b as DEFAULT_PANEL_WIDTH, S as SidePanelOptions, c as clampPanelWidth } from './side-panel-HF0IAzwf.cjs';
8
8
  export { i as iconMarkup, r as registerIcon } from './icons-BZYbJXSV.cjs';
9
9
  export { a as KeyBindingDescriptor, R as ResolvedBinding } from './keymap-CGOz5F5f.cjs';
@@ -197,6 +197,18 @@ interface ChartConfig {
197
197
  * `animLiveBar` feature; this is only the on/off switch the settings dialog shows. */
198
198
  animateLastPrice: boolean;
199
199
  };
200
+ /** Motion on/off switches (the settings dialog's Animation group). On/off only — each
201
+ * motion's duration stays what the host configured (`animations` option / renderer
202
+ * features); switching one back on restores that duration. `pan` covers both the
203
+ * drag-release inertia and the programmatic scroll glide. The live-bar glide's switch
204
+ * is `priceScale.animateLastPrice` (it predates this block). */
205
+ animations: {
206
+ zoom: boolean;
207
+ pan: boolean;
208
+ autoscale: boolean;
209
+ /** The first-paint candle reveal — takes effect on the next load. */
210
+ intro: boolean;
211
+ };
200
212
  /** Stacked-pane chrome — the draggable line between an indicator's pane and the one above it. */
201
213
  panes: {
202
214
  separatorColor: string;
@@ -215,6 +227,12 @@ interface ChartConfig {
215
227
  timeScale: {
216
228
  timezone: string;
217
229
  };
230
+ /** Timeline marks (the `marks` feature): the lane's master toggle + per-group visibility
231
+ * (the Events tab's checkboxes). `groups` merges additively, like `stacking.series`. */
232
+ marks: {
233
+ visible: boolean;
234
+ groups: Record<string, boolean>;
235
+ };
218
236
  /** Per-chart-type settings (plugin SDK sections), keyed by type id then row key. */
219
237
  chartTypes: Record<string, Record<string, unknown>>;
220
238
  candles: {
@@ -386,10 +404,21 @@ declare class NativeRenderer implements IChartRenderer {
386
404
  private readonly indicatorSlices;
387
405
  /** Hover tooltips for Pine labels (canvas hit-rects collected by the chrome layer). */
388
406
  private labelTooltip;
407
+ /** The timeline-mark popup (a kit Popover anchored on a lane glyph); null before mount. */
408
+ private markPopover;
409
+ /** How the fanned mark stack was opened: a hover folds when the pointer leaves, a tap only on a tap elsewhere. */
410
+ private marksExpandedBy;
411
+ /** The rAF loop keeping the chrome repainting while a lane glyph pulses (hover) or flashes (click); null when idle. */
412
+ private markPulseRaf;
413
+ private readonly markClickCbs;
389
414
  private readonly crosshairLayer;
390
415
  private scheduler;
391
- /** 1 Hz repaint pump so the price-axis countdown-to-bar-close ticks; null when off. */
392
- private countdownTimer;
416
+ /** The second pulse the countdown-to-bar-close chip ticks on: the host's (`setWallClock`)
417
+ * when one is wired, else the renderer's own second-aligned clock. */
418
+ private hostClock;
419
+ private ownClock;
420
+ /** Live subscription to the pulse while the countdown is on; null when off. */
421
+ private countdownUnsub;
393
422
  private animator;
394
423
  private input;
395
424
  private inputsUI;
@@ -409,13 +438,15 @@ declare class NativeRenderer implements IChartRenderer {
409
438
  /** Drawings layer self-serves Ctrl+Z/Y (see the `historyChords` feature). */
410
439
  private historyChordsEnabled;
411
440
  private liveRegion;
412
- private animZoom;
413
- private animPan;
414
- private animLiveBarMs;
415
- private animLiveBarOnMs;
441
+ private readonly animZoom;
442
+ private readonly animPan;
443
+ private readonly animScroll;
444
+ private readonly animAutoscale;
445
+ private readonly animLiveBar;
416
446
  private candleUp;
417
447
  private candleDown;
418
- private introStyle;
448
+ private intro;
449
+ private introOnStyle;
419
450
  private introPlayed;
420
451
  private introRaf;
421
452
  /** The load affordance (three pulsing dots) — up while the host reports a bar load in
@@ -571,7 +602,7 @@ declare class NativeRenderer implements IChartRenderer {
571
602
  /** Glide the view back to the most recent bars, keeping the current zoom (barSpacing). */
572
603
  private scrollToRealtime;
573
604
  /** Ease rightOffset to `target` at constant zoom (see animTick's scroll glide);
574
- * instant when pan animation is off. Shared by scroll-to-latest and panBy. */
605
+ * instant when the scroll glide is off. Shared by scroll-to-latest and panBy. */
575
606
  private glideRightOffset;
576
607
  /**
577
608
  * Export the current chart as a PNG data URL by compositing EVERY plot canvas onto
@@ -598,6 +629,7 @@ declare class NativeRenderer implements IChartRenderer {
598
629
  * full size, eased, with a left→right stagger so the chart draws itself; `settle`
599
630
  * adds an ease-out-back overshoot. Autoscale stays on the real bars so the frame
600
631
  * never moves. Re-callable, so styles can be compared live from the console.
632
+ * Style and sweep duration come from the resolved `intro` setting.
601
633
  */
602
634
  private playIntro;
603
635
  /** After the candle reveal, fade the indicator models (series/fills/…) from hidden to full. */
@@ -644,8 +676,10 @@ declare class NativeRenderer implements IChartRenderer {
644
676
  private readonly onDprChange;
645
677
  setTheme(theme: VelaTheme): void;
646
678
  resize(): void;
647
- /** Run a 1 Hz repaint pump while the countdown chip is on (so it ticks); stop it otherwise.
648
- * Chrome tier: only the chip's wall-clock text moves — an idle chart must not recompute
679
+ /** Drive the countdown chip from the host's second pulse (`null` the renderer's own). */
680
+ setWallClock(clock: WallClock | null): void;
681
+ /** Subscribe to the second pulse while the countdown chip is on (so it ticks); unsubscribe
682
+ * otherwise. Chrome tier: only the chip's text moves — an idle chart must not recompute
649
683
  * scales or repaint the geometry/volume/VPVR/SDK layers once a second (that cost
650
684
  * multiplies by the cell count in a multi-chart workspace). */
651
685
  private syncCountdownTimer;
@@ -654,9 +688,9 @@ declare class NativeRenderer implements IChartRenderer {
654
688
  preserveView?: boolean;
655
689
  }): void;
656
690
  updateBar(bar: OHLCV): void;
657
- /** Set the live-bar glide duration (0 = off). A non-zero value is also remembered as
658
- * what the config's on/off toggle (`priceScale.animateLastPrice`) switches back on to. */
659
- private setLiveBarEase;
691
+ /** Set the reveal (style + duration). A non-off style is also remembered as what the
692
+ * config's on/off toggle (`animations.intro`) switches back on to. */
693
+ private setIntro;
660
694
  /** Snap the eased forming-bar state to `bar` — no glide (a fresh bar or the first tick of one). */
661
695
  private syncLiveEase;
662
696
  /** Glide the forming bar's displayed high/low/close toward the actual latest. Returns true while easing. */
@@ -727,6 +761,10 @@ declare class NativeRenderer implements IChartRenderer {
727
761
  onCrosshairMove(cb: (e: CrosshairEvent) => void): Unsubscribe;
728
762
  onClick(cb: (e: ClickEvent) => void): Unsubscribe;
729
763
  onAxisLongPress(cb: (e: AxisLongPressEvent) => void): Unsubscribe;
764
+ setTimelineMarks(marks: readonly TimelineMark[], groups: readonly MarkGroup[]): void;
765
+ onMarkClick(cb: (e: MarkClickEvent) => void): Unsubscribe;
766
+ /** Every group the lane knows: the defined ones, then those marks name without a definition. */
767
+ private markGroupsInUse;
730
768
  onViewportChange(cb: (range: VisibleRange) => void): Unsubscribe;
731
769
  getVisibleRange(): VisibleRange | null;
732
770
  setVisibleRange(range: VisibleRange): void;
@@ -761,6 +799,24 @@ declare class NativeRenderer implements IChartRenderer {
761
799
  private emitViewportChange;
762
800
  private handlePointerMove;
763
801
  private handleClick;
802
+ /**
803
+ * Fan out (or collapse, with null) a multi-group mark stack; repaints the chrome tier when
804
+ * it changes. A stack whose glyph holds the open popup stays fanned — the pointer leaving
805
+ * the plot for the popup must not bury the glyph under the deck (which would close it).
806
+ */
807
+ private setMarksExpanded;
808
+ /**
809
+ * A click on the mark lane: a collapsed deck fans out (the touch path — a mouse already
810
+ * fanned it by hovering), a glyph reports its cluster (`onMarkClick`) and opens the popup
811
+ * when any of its marks carries content. True when the click landed on the lane.
812
+ */
813
+ private handleMarkClick;
814
+ /** After a chrome frame: keep the open mark popup on its glyph, or close it once the glyph is gone. */
815
+ private trackMarkPopover;
816
+ /** The lane glyph under the pointer — it swells once as the pointer lands (a rAF-driven chrome repaint for the pulse's duration). */
817
+ private setMarkHover;
818
+ /** Run a chrome-tier repaint loop while a glyph's hover pulse or click flash plays; it stops itself once both are over. */
819
+ private syncMarkPulse;
764
820
  private paneAtY;
765
821
  /** The pane node whose vertical bounds contain `y` (linear scan; panes don't overlap). */
766
822
  private paneNodeAtY;
@@ -1389,4 +1445,4 @@ declare const DARK_THEME: VelaTheme;
1389
1445
  declare const LIGHT_THEME: VelaTheme;
1390
1446
  declare function resolveTheme(theme?: ThemeName | VelaTheme): VelaTheme;
1391
1447
 
1392
- export { AxisLongPressEvent, BarRange, BarStore, CachingDataFeed, type ChartConfig, type ChartStyle, ClickEvent, CrosshairEvent, DARK_THEME, DataProvider, DataWindowReadout, Drawing, DrawingStore, DrawingToolbar, type DrawingToolbarOptions, DrawingTypeKey, DrawingsDocument, IChartRenderer, IDrawingsRendererPort, IndicatorModel, IndicatorRenderHandle, InputChangeEvent, InputValue, LIGHT_THEME, LineStyle, MarketConfig, MarketDataFeed, Millis, MultiProviderFeed, NativeRenderer, OHLCV, Pane, PriceStyle, ProviderCapabilities, ProviderInfo, RendererCapabilities, RendererDisplayOptions, Resolved, ScenePatch, SerializedDrawing, SnapMode, SymbolDescriptor, SymbolInfo, ThemeName, ToolbarDefinition, VelaTheme, VisibleRange, resolveTheme, sharedBarStore, timeframeToMs };
1448
+ export { AxisLongPressEvent, BarRange, BarStore, CachingDataFeed, type ChartConfig, type ChartStyle, ClickEvent, CrosshairEvent, DARK_THEME, DataProvider, DataWindowReadout, Drawing, DrawingStore, DrawingToolbar, type DrawingToolbarOptions, DrawingTypeKey, DrawingsDocument, IChartRenderer, IDrawingsRendererPort, IndicatorModel, IndicatorRenderHandle, InputChangeEvent, InputValue, LIGHT_THEME, LineStyle, MarkClickEvent, MarkGroup, MarketConfig, MarketDataFeed, Millis, MultiProviderFeed, NativeRenderer, OHLCV, Pane, PriceStyle, ProviderCapabilities, ProviderInfo, RendererCapabilities, RendererDisplayOptions, Resolved, ScenePatch, SerializedDrawing, SnapMode, SymbolDescriptor, SymbolInfo, ThemeName, TimelineMark, ToolbarDefinition, VelaTheme, VisibleRange, WallClock, resolveTheme, sharedBarStore, timeframeToMs };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { D as DrawingsDocument, R as Resolved } from './contributions-FqIWhN4p.js';
2
- export { B as BarsChangeReason, C as CellStateContext, b as ContextSelect, c as DataControl, d as DrawingsControl, e as EngineAlert, f as EngineCapabilities, g as EngineContextSnapshot, h as EngineFactory, i as EngineWarning, j as ExecutionHandlers, k as ExecutionMarket, l as ExecutionRequest, m as ExecutionSession, E as ExternalIndicatorEntry, F as FetchSeries, n as IndicatorEventMap, I as IndicatorHandle, o as IndicatorSummary, L as LegendActionDescriptor, p as LegendCalloutContent, q as LegendCalloutDescriptor, r as LegendCalloutItem, s as LegendCalloutSpec, t as LegendIndicatorInfo, N as NativeIndicator, u as NativeIndicatorContext, v as NativeIndicatorDescriptor, w as NativeIndicatorInfo, x as NativeIndicatorOutput, O as OVERRIDABLE_TOPBAR_IDS, P as ParsedSymbol, y as PreparedScript, z as RendererControl, A as RunIndicatorResult, G as SceneInspection, a as ScriptRun, H as ScriptRunCause, J as ScriptRunResult, S as ScriptingEngine, K as SidePanelButton, M as SidePanelDescriptor, Q as SidePanelHandle, T as SidePanelHeader, U as StatePersistenceHandler, X as StrategyFill, Y as StrategyState, Z as StrategyTrade, _ as SymbolRankingHook, $ as TypedEventBus, V as Vela, a0 as VelaDeps, a1 as VelaEventMap, a2 as VisibleBarRange, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, W as WidgetContext, a6 as getNativeIndicator, a7 as legendActions, a8 as legendCallouts, a9 as nativeIndicatorDescriptors, aa as nativeIndicatorTypes, ab as registerDefaultEngine, ac as registerLegendAction, ad as registerLegendCallout, ae as registerNativeIndicator, af as registerSidePanel, ag as registerStatePersistence, ah as registerSymbolRanking, ai as registerWidgetAction, aj as registerWidgetAttachment, ak as resolveEngines, al as sidePanels, am as statePersistenceHandlers, an as symbolRanking, ao as topbarActionOverride, ap as unregisterDefaultEngine, aq as unregisterLegendAction, ar as unregisterLegendCallout, as as unregisterNativeIndicator, at as unregisterSidePanel, au as unregisterStatePersistence, av as unregisterWidgetAction, aw as unregisterWidgetAttachment, ax as widgetActions, ay as widgetAttachments } from './contributions-FqIWhN4p.js';
3
- import { D as Drawing, S as SerializedDrawing, U as Unsubscribe, L as LineStyle, P as PriceStyle, e as IChartRenderer, R as RendererCapabilities, f as RendererDisplayOptions, g as IndicatorRenderHandle, h as IndicatorStatus, c as VelaTheme, O as OHLCV, i as Pane, j as PaneAction, k as MoveTarget, l as IndicatorModel, m as ScenePatch, I as InputValue, n as SymbolPickerFn, o as LegendActionView, p as LegendCalloutView, q as InputChangeEvent, T as ThemeName, C as CrosshairEvent, r as ClickEvent, A as AxisLongPressEvent, a as VisibleRange, s as DataWindowReadout, t as IDrawingsRendererPort, u as Millis, v as SnapMode, w as DrawingTypeKey, x as ToolbarDefinition, M as MarketConfig } from './options-BCRmYALw.js';
4
- export { y as AddIndicatorOptions, z as AnimationConfig, B as Background, E as BoxFontFamily, F as BoxHAlign, G as BoxTextSize, H as BoxVAlign, J as CandleBarColor, K as CandleSeries, Q as CandleStyle, W as DataWindowGroup, X as DataWindowOHLC, Y as DataWindowRow, Z as DirtyRange, _ as DrawingBox, $ as DrawingExtend, a0 as DrawingIntent, a1 as DrawingLabel, a2 as DrawingLine, a3 as DrawingLinefill, a4 as DrawingMode, a5 as DrawingPoint, a6 as DrawingPolyline, a7 as DrawingSeriesBar, a8 as DrawingSeriesGateway, a9 as DrawingSeriesState, aa as DrawingStyle, ab as DrawingTable, ac as DrawingText, ad as DrawingXLoc, ae as DrawingsOption, af as Fill, ag as FillGradientStop, ah as IndicatorMeta, ai as InputCondition, aj as InputSchema, ak as InputType, al as InputWhen, am as LabelStyle, an as LabelYLoc, ao as LineLikeKind, ap as LineLikeSeries, aq as LineLikeStyle, ar as MarkerPoint, as as MarkerSeries, at as MarketSnapshot, au as MarketSwitch, av as PaneAxis, aw as PaneAxisBand, ax as PaneHint, ay as PaneKind, az as PolylinePoint, aA as PriceLine, aB as Projector, aC as ProviderName, aD as RendererConstructor, aE as Scene, aF as SchemaPatch, aG as SeriesKind, aH as SeriesPoint, aI as SeriesSpec, aJ as SeriesValueDelta, aK as SettingsField, aL as SettingsSchema, aM as SettingsVisibilityPolicy, aN as TableCell, aO as TableMerge, aP as TablePosition, aQ as ToolbarGroupConfig, aR as TradeExecution, aS as ValuePatch, b as VelaOptions, V as VisibleRangePreset, aT as buildToolbar, aU as defaultToolbar, aV as inputDeltas, aW as inputVisible } from './options-BCRmYALw.js';
5
- import { M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, S as SymbolInfo, b as ProviderCapabilities, B as BarRange } from './DataProvider-Cb-2lC5O.js';
6
- export { A as ACCENT, a as ACCENT_BRIGHT, B as BEARISH, b as BULLISH, c as BarTransform, d as BasePaintingModulation, C as CATEGORICAL, e as CHIP_PLATE, f as CROSSHAIR, g as ChartTypeDefinition, h as ChartTypeSettingsInstance, i as ChartTypeSettingsSection, j as ChartTypeSettingsSubsection, D as DrawingTypeMeta, H as HIGHLIGHT, I as INFO, k as INVALID, l as IdentifiableKind, M as MARKER, N as NEUTRAL, m as NormalizedSettingsRow, R as RendererLayerArgs, n as RendererLayerDefinition, o as RendererLayerInstance, S as SERIES_LINE, p as SESSION_OFF, q as SESSION_POST, r as SESSION_PRE, s as SLATE, t as SLATE_DEEP, u as SeriesDataEngine, v as SeriesDataEngineHost, w as SettingsInlineControl, x as SettingsRowCondition, y as SettingsRowDescriptor, z as SettingsRowInlineNumber, E as SettingsRowSwatch, F as SettingsRowValueKey, G as SettingsRowWhen, J as SettingsRowWidth, K as SettingsSelectOption, L as SettingsValueRow, T as TRADE_EXIT, O as TRADE_LONG, P as TRADE_SHORT, V as VALID, W as WARNING, Q as categoricalColor, U as chartType, X as chartTypes, Y as createDrawing, Z as deserializeDrawing, _ as drawingTypes, $ as getDrawingType, a0 as normalizeSettingsRow, a1 as registerChartType, a2 as registerDrawingType, a3 as registerRendererDefaults, a4 as registerRendererLayer, a5 as rendererDefaults, a6 as rendererLayers, a7 as settingsRowValueKeys, a8 as stableSeriesId, a9 as tickerModifierIds, aa as unregisterChartType, ab as unregisterRendererDefaults, ac as unregisterRendererLayer } from './plugin-B4mnNAeh.js';
1
+ import { D as DrawingsDocument, R as Resolved } from './contributions-BjQ7hyIx.js';
2
+ export { B as BarsChangeReason, C as CellStateContext, b as ContextSelect, c as DataControl, d as DrawingsControl, e as EngineAlert, f as EngineCapabilities, g as EngineContextSnapshot, h as EngineFactory, i as EngineWarning, j as ExecutionHandlers, k as ExecutionMarket, l as ExecutionRequest, m as ExecutionSession, E as ExternalIndicatorEntry, F as FetchSeries, n as IndicatorEventMap, I as IndicatorHandle, o as IndicatorSummary, L as LegendActionDescriptor, p as LegendCalloutContent, q as LegendCalloutDescriptor, r as LegendCalloutItem, s as LegendCalloutSpec, t as LegendIndicatorInfo, M as MarksControl, N as NativeIndicator, u as NativeIndicatorContext, v as NativeIndicatorDescriptor, w as NativeIndicatorInfo, x as NativeIndicatorOutput, O as OVERRIDABLE_TOPBAR_IDS, P as ParsedSymbol, y as PreparedScript, z as RendererControl, A as RunIndicatorResult, G as SceneInspection, a as ScriptRun, H as ScriptRunCause, J as ScriptRunResult, S as ScriptingEngine, K as SidePanelButton, Q as SidePanelDescriptor, T as SidePanelHandle, U as SidePanelHeader, X as StatePersistenceHandler, Y as StrategyFill, Z as StrategyState, _ as StrategyTrade, $ as SymbolRankingHook, a0 as TypedEventBus, V as Vela, a1 as VelaDeps, a2 as VelaEventMap, a3 as VisibleBarRange, a4 as WidgetActionDescriptor, a5 as WidgetActionTarget, a6 as WidgetAttachment, W as WidgetContext, a7 as getNativeIndicator, a8 as legendActions, a9 as legendCallouts, aa as nativeIndicatorDescriptors, ab as nativeIndicatorTypes, ac as registerDefaultEngine, ad as registerLegendAction, ae as registerLegendCallout, af as registerNativeIndicator, ag as registerSidePanel, ah as registerStatePersistence, ai as registerSymbolRanking, aj as registerWidgetAction, ak as registerWidgetAttachment, al as resolveEngines, am as sidePanels, an as statePersistenceHandlers, ao as symbolRanking, ap as topbarActionOverride, aq as unregisterDefaultEngine, ar as unregisterLegendAction, as as unregisterLegendCallout, at as unregisterNativeIndicator, au as unregisterSidePanel, av as unregisterStatePersistence, aw as unregisterWidgetAction, ax as unregisterWidgetAttachment, ay as widgetActions, az as widgetAttachments } from './contributions-BjQ7hyIx.js';
3
+ import { D as Drawing, S as SerializedDrawing, U as Unsubscribe, L as LineStyle, P as PriceStyle, e as IChartRenderer, R as RendererCapabilities, f as RendererDisplayOptions, g as IndicatorRenderHandle, h as IndicatorStatus, c as VelaTheme, W as WallClock, O as OHLCV, i as Pane, j as PaneAction, k as MoveTarget, l as IndicatorModel, m as ScenePatch, I as InputValue, n as SymbolPickerFn, o as LegendActionView, p as LegendCalloutView, q as InputChangeEvent, T as ThemeName, C as CrosshairEvent, r as ClickEvent, A as AxisLongPressEvent, s as TimelineMark, t as MarkGroup, u as MarkClickEvent, a as VisibleRange, v as DataWindowReadout, w as IDrawingsRendererPort, x as Millis, y as SnapMode, z as DrawingTypeKey, B as ToolbarDefinition, M as MarketConfig } from './options-ex2_gtKp.js';
4
+ export { E as AddIndicatorOptions, F as AnimationConfig, G as Background, H as BoxFontFamily, J as BoxHAlign, K as BoxTextSize, Q as BoxVAlign, X as CandleBarColor, Y as CandleSeries, Z as CandleStyle, _ as DataWindowGroup, $ as DataWindowOHLC, a0 as DataWindowRow, a1 as DirtyRange, a2 as DrawingBox, a3 as DrawingExtend, a4 as DrawingIntent, a5 as DrawingLabel, a6 as DrawingLine, a7 as DrawingLinefill, a8 as DrawingMode, a9 as DrawingPoint, aa as DrawingPolyline, ab as DrawingSeriesBar, ac as DrawingSeriesGateway, ad as DrawingSeriesState, ae as DrawingStyle, af as DrawingTable, ag as DrawingText, ah as DrawingXLoc, ai as DrawingsOption, aj as Fill, ak as FillGradientStop, al as IndicatorMeta, am as InputCondition, an as InputSchema, ao as InputType, ap as InputWhen, aq as IntroAnimation, ar as IntroConfig, as as IntroStyle, at as LabelStyle, au as LabelYLoc, av as LineLikeKind, aw as LineLikeSeries, ax as LineLikeStyle, ay as MarkContent, az as MarkContentSource, aA as MarkGlyph, aB as MarkPanelItem, aC as MarkShape, aD as MarkerPoint, aE as MarkerSeries, aF as MarketSnapshot, aG as MarketSwitch, aH as PaneAxis, aI as PaneAxisBand, aJ as PaneHint, aK as PaneKind, aL as PolylinePoint, aM as PriceLine, aN as Projector, aO as ProviderName, aP as RendererConstructor, aQ as Scene, aR as SchemaPatch, aS as SecondClock, aT as SeriesKind, aU as SeriesPoint, aV as SeriesSpec, aW as SeriesValueDelta, aX as SettingsField, aY as SettingsSchema, aZ as SettingsVisibilityPolicy, a_ as TableCell, a$ as TableMerge, b0 as TablePosition, b1 as ToolbarGroupConfig, b2 as TradeExecution, b3 as ValuePatch, b as VelaOptions, V as VisibleRangePreset, b4 as buildToolbar, b5 as defaultToolbar, b6 as inputDeltas, b7 as inputVisible } from './options-ex2_gtKp.js';
5
+ import { M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, S as SymbolInfo, b as ProviderCapabilities, B as BarRange } from './DataProvider-Bu9E5Zh5.js';
6
+ export { A as ACCENT, a as ACCENT_BRIGHT, B as BEARISH, b as BULLISH, c as BarTransform, d as BasePaintingModulation, C as CATEGORICAL, e as CHIP_PLATE, f as CROSSHAIR, g as ChartTypeDefinition, h as ChartTypeSettingsInstance, i as ChartTypeSettingsSection, j as ChartTypeSettingsSubsection, D as DrawingTypeMeta, H as HIGHLIGHT, I as INFO, k as INVALID, l as IdentifiableKind, M as MARKER, N as NEUTRAL, m as NormalizedSettingsRow, R as RendererLayerArgs, n as RendererLayerDefinition, o as RendererLayerInstance, S as SERIES_LINE, p as SESSION_OFF, q as SESSION_POST, r as SESSION_PRE, s as SLATE, t as SLATE_DEEP, u as SeriesDataEngine, v as SeriesDataEngineHost, w as SettingsInlineControl, x as SettingsRowCondition, y as SettingsRowDescriptor, z as SettingsRowInlineNumber, E as SettingsRowSwatch, F as SettingsRowValueKey, G as SettingsRowWhen, J as SettingsRowWidth, K as SettingsSelectOption, L as SettingsValueRow, T as TRADE_EXIT, O as TRADE_LONG, P as TRADE_SHORT, V as VALID, W as WARNING, Q as categoricalColor, U as chartType, X as chartTypes, Y as createDrawing, Z as deserializeDrawing, _ as drawingTypes, $ as getDrawingType, a0 as normalizeSettingsRow, a1 as registerChartType, a2 as registerDrawingType, a3 as registerRendererDefaults, a4 as registerRendererLayer, a5 as rendererDefaults, a6 as rendererLayers, a7 as settingsRowValueKeys, a8 as stableSeriesId, a9 as tickerModifierIds, aa as unregisterChartType, ab as unregisterRendererDefaults, ac as unregisterRendererLayer } from './plugin-CiyhU7pi.js';
7
7
  export { D as DEFAULT_PANEL_MAX_WIDTH, a as DEFAULT_PANEL_MIN_WIDTH, b as DEFAULT_PANEL_WIDTH, S as SidePanelOptions, c as clampPanelWidth } from './side-panel-HF0IAzwf.js';
8
8
  export { i as iconMarkup, r as registerIcon } from './icons-BZYbJXSV.js';
9
9
  export { a as KeyBindingDescriptor, R as ResolvedBinding } from './keymap-CGOz5F5f.js';
@@ -197,6 +197,18 @@ interface ChartConfig {
197
197
  * `animLiveBar` feature; this is only the on/off switch the settings dialog shows. */
198
198
  animateLastPrice: boolean;
199
199
  };
200
+ /** Motion on/off switches (the settings dialog's Animation group). On/off only — each
201
+ * motion's duration stays what the host configured (`animations` option / renderer
202
+ * features); switching one back on restores that duration. `pan` covers both the
203
+ * drag-release inertia and the programmatic scroll glide. The live-bar glide's switch
204
+ * is `priceScale.animateLastPrice` (it predates this block). */
205
+ animations: {
206
+ zoom: boolean;
207
+ pan: boolean;
208
+ autoscale: boolean;
209
+ /** The first-paint candle reveal — takes effect on the next load. */
210
+ intro: boolean;
211
+ };
200
212
  /** Stacked-pane chrome — the draggable line between an indicator's pane and the one above it. */
201
213
  panes: {
202
214
  separatorColor: string;
@@ -215,6 +227,12 @@ interface ChartConfig {
215
227
  timeScale: {
216
228
  timezone: string;
217
229
  };
230
+ /** Timeline marks (the `marks` feature): the lane's master toggle + per-group visibility
231
+ * (the Events tab's checkboxes). `groups` merges additively, like `stacking.series`. */
232
+ marks: {
233
+ visible: boolean;
234
+ groups: Record<string, boolean>;
235
+ };
218
236
  /** Per-chart-type settings (plugin SDK sections), keyed by type id then row key. */
219
237
  chartTypes: Record<string, Record<string, unknown>>;
220
238
  candles: {
@@ -386,10 +404,21 @@ declare class NativeRenderer implements IChartRenderer {
386
404
  private readonly indicatorSlices;
387
405
  /** Hover tooltips for Pine labels (canvas hit-rects collected by the chrome layer). */
388
406
  private labelTooltip;
407
+ /** The timeline-mark popup (a kit Popover anchored on a lane glyph); null before mount. */
408
+ private markPopover;
409
+ /** How the fanned mark stack was opened: a hover folds when the pointer leaves, a tap only on a tap elsewhere. */
410
+ private marksExpandedBy;
411
+ /** The rAF loop keeping the chrome repainting while a lane glyph pulses (hover) or flashes (click); null when idle. */
412
+ private markPulseRaf;
413
+ private readonly markClickCbs;
389
414
  private readonly crosshairLayer;
390
415
  private scheduler;
391
- /** 1 Hz repaint pump so the price-axis countdown-to-bar-close ticks; null when off. */
392
- private countdownTimer;
416
+ /** The second pulse the countdown-to-bar-close chip ticks on: the host's (`setWallClock`)
417
+ * when one is wired, else the renderer's own second-aligned clock. */
418
+ private hostClock;
419
+ private ownClock;
420
+ /** Live subscription to the pulse while the countdown is on; null when off. */
421
+ private countdownUnsub;
393
422
  private animator;
394
423
  private input;
395
424
  private inputsUI;
@@ -409,13 +438,15 @@ declare class NativeRenderer implements IChartRenderer {
409
438
  /** Drawings layer self-serves Ctrl+Z/Y (see the `historyChords` feature). */
410
439
  private historyChordsEnabled;
411
440
  private liveRegion;
412
- private animZoom;
413
- private animPan;
414
- private animLiveBarMs;
415
- private animLiveBarOnMs;
441
+ private readonly animZoom;
442
+ private readonly animPan;
443
+ private readonly animScroll;
444
+ private readonly animAutoscale;
445
+ private readonly animLiveBar;
416
446
  private candleUp;
417
447
  private candleDown;
418
- private introStyle;
448
+ private intro;
449
+ private introOnStyle;
419
450
  private introPlayed;
420
451
  private introRaf;
421
452
  /** The load affordance (three pulsing dots) — up while the host reports a bar load in
@@ -571,7 +602,7 @@ declare class NativeRenderer implements IChartRenderer {
571
602
  /** Glide the view back to the most recent bars, keeping the current zoom (barSpacing). */
572
603
  private scrollToRealtime;
573
604
  /** Ease rightOffset to `target` at constant zoom (see animTick's scroll glide);
574
- * instant when pan animation is off. Shared by scroll-to-latest and panBy. */
605
+ * instant when the scroll glide is off. Shared by scroll-to-latest and panBy. */
575
606
  private glideRightOffset;
576
607
  /**
577
608
  * Export the current chart as a PNG data URL by compositing EVERY plot canvas onto
@@ -598,6 +629,7 @@ declare class NativeRenderer implements IChartRenderer {
598
629
  * full size, eased, with a left→right stagger so the chart draws itself; `settle`
599
630
  * adds an ease-out-back overshoot. Autoscale stays on the real bars so the frame
600
631
  * never moves. Re-callable, so styles can be compared live from the console.
632
+ * Style and sweep duration come from the resolved `intro` setting.
601
633
  */
602
634
  private playIntro;
603
635
  /** After the candle reveal, fade the indicator models (series/fills/…) from hidden to full. */
@@ -644,8 +676,10 @@ declare class NativeRenderer implements IChartRenderer {
644
676
  private readonly onDprChange;
645
677
  setTheme(theme: VelaTheme): void;
646
678
  resize(): void;
647
- /** Run a 1 Hz repaint pump while the countdown chip is on (so it ticks); stop it otherwise.
648
- * Chrome tier: only the chip's wall-clock text moves — an idle chart must not recompute
679
+ /** Drive the countdown chip from the host's second pulse (`null` the renderer's own). */
680
+ setWallClock(clock: WallClock | null): void;
681
+ /** Subscribe to the second pulse while the countdown chip is on (so it ticks); unsubscribe
682
+ * otherwise. Chrome tier: only the chip's text moves — an idle chart must not recompute
649
683
  * scales or repaint the geometry/volume/VPVR/SDK layers once a second (that cost
650
684
  * multiplies by the cell count in a multi-chart workspace). */
651
685
  private syncCountdownTimer;
@@ -654,9 +688,9 @@ declare class NativeRenderer implements IChartRenderer {
654
688
  preserveView?: boolean;
655
689
  }): void;
656
690
  updateBar(bar: OHLCV): void;
657
- /** Set the live-bar glide duration (0 = off). A non-zero value is also remembered as
658
- * what the config's on/off toggle (`priceScale.animateLastPrice`) switches back on to. */
659
- private setLiveBarEase;
691
+ /** Set the reveal (style + duration). A non-off style is also remembered as what the
692
+ * config's on/off toggle (`animations.intro`) switches back on to. */
693
+ private setIntro;
660
694
  /** Snap the eased forming-bar state to `bar` — no glide (a fresh bar or the first tick of one). */
661
695
  private syncLiveEase;
662
696
  /** Glide the forming bar's displayed high/low/close toward the actual latest. Returns true while easing. */
@@ -727,6 +761,10 @@ declare class NativeRenderer implements IChartRenderer {
727
761
  onCrosshairMove(cb: (e: CrosshairEvent) => void): Unsubscribe;
728
762
  onClick(cb: (e: ClickEvent) => void): Unsubscribe;
729
763
  onAxisLongPress(cb: (e: AxisLongPressEvent) => void): Unsubscribe;
764
+ setTimelineMarks(marks: readonly TimelineMark[], groups: readonly MarkGroup[]): void;
765
+ onMarkClick(cb: (e: MarkClickEvent) => void): Unsubscribe;
766
+ /** Every group the lane knows: the defined ones, then those marks name without a definition. */
767
+ private markGroupsInUse;
730
768
  onViewportChange(cb: (range: VisibleRange) => void): Unsubscribe;
731
769
  getVisibleRange(): VisibleRange | null;
732
770
  setVisibleRange(range: VisibleRange): void;
@@ -761,6 +799,24 @@ declare class NativeRenderer implements IChartRenderer {
761
799
  private emitViewportChange;
762
800
  private handlePointerMove;
763
801
  private handleClick;
802
+ /**
803
+ * Fan out (or collapse, with null) a multi-group mark stack; repaints the chrome tier when
804
+ * it changes. A stack whose glyph holds the open popup stays fanned — the pointer leaving
805
+ * the plot for the popup must not bury the glyph under the deck (which would close it).
806
+ */
807
+ private setMarksExpanded;
808
+ /**
809
+ * A click on the mark lane: a collapsed deck fans out (the touch path — a mouse already
810
+ * fanned it by hovering), a glyph reports its cluster (`onMarkClick`) and opens the popup
811
+ * when any of its marks carries content. True when the click landed on the lane.
812
+ */
813
+ private handleMarkClick;
814
+ /** After a chrome frame: keep the open mark popup on its glyph, or close it once the glyph is gone. */
815
+ private trackMarkPopover;
816
+ /** The lane glyph under the pointer — it swells once as the pointer lands (a rAF-driven chrome repaint for the pulse's duration). */
817
+ private setMarkHover;
818
+ /** Run a chrome-tier repaint loop while a glyph's hover pulse or click flash plays; it stops itself once both are over. */
819
+ private syncMarkPulse;
764
820
  private paneAtY;
765
821
  /** The pane node whose vertical bounds contain `y` (linear scan; panes don't overlap). */
766
822
  private paneNodeAtY;
@@ -1389,4 +1445,4 @@ declare const DARK_THEME: VelaTheme;
1389
1445
  declare const LIGHT_THEME: VelaTheme;
1390
1446
  declare function resolveTheme(theme?: ThemeName | VelaTheme): VelaTheme;
1391
1447
 
1392
- export { AxisLongPressEvent, BarRange, BarStore, CachingDataFeed, type ChartConfig, type ChartStyle, ClickEvent, CrosshairEvent, DARK_THEME, DataProvider, DataWindowReadout, Drawing, DrawingStore, DrawingToolbar, type DrawingToolbarOptions, DrawingTypeKey, DrawingsDocument, IChartRenderer, IDrawingsRendererPort, IndicatorModel, IndicatorRenderHandle, InputChangeEvent, InputValue, LIGHT_THEME, LineStyle, MarketConfig, MarketDataFeed, Millis, MultiProviderFeed, NativeRenderer, OHLCV, Pane, PriceStyle, ProviderCapabilities, ProviderInfo, RendererCapabilities, RendererDisplayOptions, Resolved, ScenePatch, SerializedDrawing, SnapMode, SymbolDescriptor, SymbolInfo, ThemeName, ToolbarDefinition, VelaTheme, VisibleRange, resolveTheme, sharedBarStore, timeframeToMs };
1448
+ export { AxisLongPressEvent, BarRange, BarStore, CachingDataFeed, type ChartConfig, type ChartStyle, ClickEvent, CrosshairEvent, DARK_THEME, DataProvider, DataWindowReadout, Drawing, DrawingStore, DrawingToolbar, type DrawingToolbarOptions, DrawingTypeKey, DrawingsDocument, IChartRenderer, IDrawingsRendererPort, IndicatorModel, IndicatorRenderHandle, InputChangeEvent, InputValue, LIGHT_THEME, LineStyle, MarkClickEvent, MarkGroup, MarketConfig, MarketDataFeed, Millis, MultiProviderFeed, NativeRenderer, OHLCV, Pane, PriceStyle, ProviderCapabilities, ProviderInfo, RendererCapabilities, RendererDisplayOptions, Resolved, ScenePatch, SerializedDrawing, SnapMode, SymbolDescriptor, SymbolInfo, ThemeName, TimelineMark, ToolbarDefinition, VelaTheme, VisibleRange, WallClock, resolveTheme, sharedBarStore, timeframeToMs };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import './chunk-FE6V2YAQ.js';
2
- export { BarStore, CachingDataFeed, DARK_THEME, DataControl, DrawingStore, DrawingToolbar, DrawingsControl, LIGHT_THEME, MultiProviderFeed, NativeRenderer, RendererControl, TypedEventBus, Vela, buildToolbar, defaultToolbar, resolveTheme, sharedBarStore, timeframeToMs } from './chunk-TRZQQUTR.js';
2
+ export { BarStore, CachingDataFeed, DARK_THEME, DataControl, DrawingStore, DrawingToolbar, DrawingsControl, LIGHT_THEME, MarksControl, MultiProviderFeed, NativeRenderer, RendererControl, SecondClock, TypedEventBus, Vela, buildToolbar, defaultToolbar, resolveTheme, sharedBarStore, timeframeToMs } from './chunk-A4G64KVF.js';
3
3
  export { DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_WIDTH, Drawing, OVERRIDABLE_TOPBAR_IDS, chartType, chartTypes, clampPanelWidth, createDrawing, deserializeDrawing, drawingTypes, getDrawingType, getNativeIndicator, inputDeltas, inputVisible, legendActions, legendCallouts, nativeIndicatorDescriptors, nativeIndicatorTypes, normalizeSettingsRow, registerChartType, registerDefaultEngine, registerDrawingType, registerLegendAction, registerLegendCallout, registerNativeIndicator, registerRendererDefaults, registerRendererLayer, registerSidePanel, registerStatePersistence, registerSymbolRanking, registerWidgetAction, registerWidgetAttachment, rendererDefaults, rendererLayers, resolveEngines, settingsRowValueKeys, sidePanels, stableSeriesId, statePersistenceHandlers, symbolRanking, tickerModifierIds, topbarActionOverride, unregisterChartType, unregisterDefaultEngine, unregisterLegendAction, unregisterLegendCallout, unregisterNativeIndicator, unregisterRendererDefaults, unregisterRendererLayer, unregisterSidePanel, unregisterStatePersistence, unregisterWidgetAction, unregisterWidgetAttachment, widgetActions, widgetAttachments } from './chunk-IFJJPXSV.js';
4
- import './chunk-T5Z5YUCF.js';
4
+ import './chunk-CZRNTHD6.js';
5
5
  export { ACCENT, ACCENT_BRIGHT, BEARISH, BULLISH, CATEGORICAL, CHIP_PLATE, CROSSHAIR, HIGHLIGHT, INFO, INVALID, MARKER, NEUTRAL, SERIES_LINE, SESSION_OFF, SESSION_POST, SESSION_PRE, SLATE, SLATE_DEEP, TRADE_EXIT, TRADE_LONG, TRADE_SHORT, VALID, WARNING, categoricalColor, iconMarkup, registerIcon } from './chunk-CAFCLMPF.js';