@luxalgo/vela 0.6.16 → 0.6.17

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 (46) hide show
  1. package/README.md +4 -0
  2. package/dist/{DataProvider-XLdJB86x.d.ts → DataProvider-B-Jz59Rf.d.ts} +1 -1
  3. package/dist/{DataProvider-xH2VBcFT.d.cts → DataProvider-OfR3fXg9.d.cts} +1 -1
  4. package/dist/{chunk-6DPAYEGO.js → chunk-CAFCLMPF.js} +1 -0
  5. package/dist/{chunk-I77F2SVE.js → chunk-IFJJPXSV.js} +1 -1
  6. package/dist/{chunk-SEOO6YG7.js → chunk-OSZDSH7F.js} +5 -8
  7. package/dist/{chunk-MGU3USTP.js → chunk-T5Z5YUCF.js} +1 -1
  8. package/dist/{chunk-Q3TFJNJW.js → chunk-XCBJU674.js} +2 -2
  9. package/dist/{chunk-GIJYO4LO.js → chunk-YCD72KGK.js} +103 -40
  10. package/dist/{contributions-BEkxwA5F.d.cts → contributions-C3b0Sx5P.d.cts} +2 -2
  11. package/dist/{contributions-CoAX7_SF.d.ts → contributions-Swzz10fG.d.ts} +2 -2
  12. package/dist/index.cjs +99 -36
  13. package/dist/index.d.cts +15 -6
  14. package/dist/index.d.ts +15 -6
  15. package/dist/index.js +4 -4
  16. package/dist/{options-bdSAtp7y.d.ts → options-CX1lSYWA.d.cts} +12 -2
  17. package/dist/{options-bdSAtp7y.d.cts → options-CX1lSYWA.d.ts} +12 -2
  18. package/dist/{plugin-Dxyq35Zf.d.cts → plugin-BjnEE1zA.d.cts} +3 -3
  19. package/dist/{plugin-CNUgbRNq.d.ts → plugin-mvddudqd.d.ts} +3 -3
  20. package/dist/plugin.cjs +1 -0
  21. package/dist/plugin.d.cts +4 -4
  22. package/dist/plugin.d.ts +4 -4
  23. package/dist/plugin.js +2 -2
  24. package/dist/providers/binance.d.cts +2 -2
  25. package/dist/providers/binance.d.ts +2 -2
  26. package/dist/providers/coinbase.d.cts +2 -2
  27. package/dist/providers/coinbase.d.ts +2 -2
  28. package/dist/providers/hyperliquid.d.cts +2 -2
  29. package/dist/providers/hyperliquid.d.ts +2 -2
  30. package/dist/{statusline-model-CbPza-Wc.d.cts → statusline-model-D91cU2fF.d.cts} +3 -3
  31. package/dist/{statusline-model-D7cWkw8A.d.ts → statusline-model-IURCya0H.d.ts} +3 -3
  32. package/dist/ui.cjs +1 -0
  33. package/dist/ui.d.cts +1 -1
  34. package/dist/ui.d.ts +1 -1
  35. package/dist/ui.js +3 -3
  36. package/dist/vela.global.js +99 -36
  37. package/dist/vela.global.min.js +46 -49
  38. package/dist/widget.cjs +100 -39
  39. package/dist/widget.d.cts +6 -6
  40. package/dist/widget.d.ts +6 -6
  41. package/dist/widget.js +7 -7
  42. package/dist/workspace.cjs +100 -39
  43. package/dist/workspace.d.cts +5 -5
  44. package/dist/workspace.d.ts +5 -5
  45. package/dist/workspace.js +6 -6
  46. package/package.json +1 -1
package/dist/plugin.cjs CHANGED
@@ -337,6 +337,7 @@ registerIcon("star-filled", S('<path d="M8 2.2l1.75 3.55 3.9.55-2.8 2.75.65 3.9L
337
337
  registerIcon("grip", S('<circle cx="6" cy="3.5" r="1"/><circle cx="10" cy="3.5" r="1"/><circle cx="6" cy="8" r="1"/><circle cx="10" cy="8" r="1"/><circle cx="6" cy="12.5" r="1"/><circle cx="10" cy="12.5" r="1"/>', 'fill="currentColor" stroke="none"'));
338
338
  registerIcon("kebab", S('<circle cx="8" cy="3.2" r="1.2"/><circle cx="8" cy="8" r="1.2"/><circle cx="8" cy="12.8" r="1.2"/>', 'fill="currentColor" stroke="none"'));
339
339
  registerIcon("burger", S('<path d="M2.5 4.5h11M2.5 8h11M2.5 11.5h11"/>'));
340
+ registerIcon("info", S('<path d="M8 7.4v4.4"/><circle cx="8" cy="4.6" r="0.9" fill="currentColor" stroke="none"/>'));
340
341
  registerIcon("reset", S('<path d="M2 8a6 6 0 1 0 6-6 6.5 6.5 0 0 0-4.5 1.83L2 5.33"/><path d="M2 2v3.33h3.33"/>'));
341
342
  registerIcon("pane-collapse", S('<path d="M2.6 9.4h4v4M13.4 6.6h-4v-4"/><path d="m9.4 6.6 4.2-4.2M2.4 13.6l4.2-4.2"/>'));
342
343
  registerIcon("pane-expand", S('<path d="M9.8 2.4h3.8v3.8M6.2 13.6H2.4V9.8"/><path d="m13.6 2.4-4.4 4.4M2.4 13.6l4.4-4.4"/>'));
package/dist/plugin.d.cts CHANGED
@@ -1,7 +1,7 @@
1
- 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, _ as drawingTypes, $ as getDrawingType, a0 as normalizeSettingsRow, a1 as registerChartType, 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-Dxyq35Zf.cjs';
2
- export { B as BarsChangeReason, C as CellStateContext, b as ContextSelect, 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, 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, y as PreparedScript, 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, a2 as VisibleBarRange, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, W as WidgetContext, a6 as getNativeIndicator, a7 as legendActions, a8 as legendCallouts, 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-BEkxwA5F.cjs';
1
+ 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, _ as drawingTypes, $ as getDrawingType, a0 as normalizeSettingsRow, a1 as registerChartType, 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-BjnEE1zA.cjs';
2
+ export { B as BarsChangeReason, C as CellStateContext, b as ContextSelect, 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, 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, y as PreparedScript, 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, a2 as VisibleBarRange, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, W as WidgetContext, a6 as getNativeIndicator, a7 as legendActions, a8 as legendCallouts, 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-C3b0Sx5P.cjs';
3
3
  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';
4
- export { B as Background, z as BoxFontFamily, E as BoxHAlign, F as BoxTextSize, G as BoxVAlign, H as CandleBarColor, J as CandleSeries, K as CandleStyle, Y as DirtyRange, Z as DrawingBox, _ as DrawingExtend, a0 as DrawingLabel, a1 as DrawingLine, a2 as DrawingLinefill, a5 as DrawingPolyline, aa as DrawingTable, w as DrawingTypeKey, ac as DrawingXLoc, ae as Fill, af as FillGradientStop, ag as IndicatorMeta, l as IndicatorModel, ah as InputCondition, ai as InputSchema, aj as InputType, I as InputValue, ak as InputWhen, al as LabelStyle, am as LabelYLoc, an as LineLikeKind, ao as LineLikeSeries, ap as LineLikeStyle, L as LineStyle, aq as MarkerPoint, ar as MarkerSeries, u as Millis, O as OHLCV, i as Pane, au as PaneAxis, av as PaneAxisBand, aw as PaneHint, ax as PaneKind, ay as PolylinePoint, az as PriceLine, P as PriceStyle, aD as Scene, m as ScenePatch, aE as SchemaPatch, aF as SeriesKind, aG as SeriesPoint, aH as SeriesSpec, aI as SeriesValueDelta, aM as TableCell, aN as TableMerge, aO as TablePosition, aQ as TradeExecution, aR as ValuePatch, aU as inputDeltas, aV as inputVisible } from './options-bdSAtp7y.cjs';
4
+ export { B as Background, E as BoxFontFamily, F as BoxHAlign, G as BoxTextSize, H as BoxVAlign, J as CandleBarColor, K as CandleSeries, Q as CandleStyle, Z as DirtyRange, _ as DrawingBox, $ as DrawingExtend, a1 as DrawingLabel, a2 as DrawingLine, a3 as DrawingLinefill, a6 as DrawingPolyline, ab as DrawingTable, w as DrawingTypeKey, ad as DrawingXLoc, af as Fill, ag as FillGradientStop, ah as IndicatorMeta, l as IndicatorModel, ai as InputCondition, aj as InputSchema, ak as InputType, I as InputValue, al as InputWhen, am as LabelStyle, an as LabelYLoc, ao as LineLikeKind, ap as LineLikeSeries, aq as LineLikeStyle, L as LineStyle, ar as MarkerPoint, as as MarkerSeries, u as Millis, O as OHLCV, i as Pane, av as PaneAxis, aw as PaneAxisBand, ax as PaneHint, ay as PaneKind, az as PolylinePoint, aA as PriceLine, P as PriceStyle, aE as Scene, m as ScenePatch, aF as SchemaPatch, aG as SeriesKind, aH as SeriesPoint, aI as SeriesSpec, aJ as SeriesValueDelta, aN as TableCell, aO as TableMerge, aP as TablePosition, aR as TradeExecution, aS as ValuePatch, aV as inputDeltas, aW as inputVisible } from './options-CX1lSYWA.cjs';
5
5
  export { i as iconMarkup, r as registerIcon } from './icons-BZYbJXSV.cjs';
6
6
  export { a as KeyBindingDescriptor, R as ResolvedBinding } from './keymap-CGOz5F5f.cjs';
7
- export { B as BarRange, D as DataProvider, M as MarketDataFeed, b as ProviderCapabilities, P as ProviderInfo, a as SymbolDescriptor, S as SymbolInfo } from './DataProvider-xH2VBcFT.cjs';
7
+ export { B as BarRange, D as DataProvider, M as MarketDataFeed, b as ProviderCapabilities, P as ProviderInfo, a as SymbolDescriptor, S as SymbolInfo } from './DataProvider-OfR3fXg9.cjs';
package/dist/plugin.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- 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, _ as drawingTypes, $ as getDrawingType, a0 as normalizeSettingsRow, a1 as registerChartType, 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-CNUgbRNq.js';
2
- export { B as BarsChangeReason, C as CellStateContext, b as ContextSelect, 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, 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, y as PreparedScript, 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, a2 as VisibleBarRange, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, W as WidgetContext, a6 as getNativeIndicator, a7 as legendActions, a8 as legendCallouts, 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-CoAX7_SF.js';
1
+ 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, _ as drawingTypes, $ as getDrawingType, a0 as normalizeSettingsRow, a1 as registerChartType, 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-mvddudqd.js';
2
+ export { B as BarsChangeReason, C as CellStateContext, b as ContextSelect, 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, 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, y as PreparedScript, 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, a2 as VisibleBarRange, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, W as WidgetContext, a6 as getNativeIndicator, a7 as legendActions, a8 as legendCallouts, 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-Swzz10fG.js';
3
3
  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';
4
- export { B as Background, z as BoxFontFamily, E as BoxHAlign, F as BoxTextSize, G as BoxVAlign, H as CandleBarColor, J as CandleSeries, K as CandleStyle, Y as DirtyRange, Z as DrawingBox, _ as DrawingExtend, a0 as DrawingLabel, a1 as DrawingLine, a2 as DrawingLinefill, a5 as DrawingPolyline, aa as DrawingTable, w as DrawingTypeKey, ac as DrawingXLoc, ae as Fill, af as FillGradientStop, ag as IndicatorMeta, l as IndicatorModel, ah as InputCondition, ai as InputSchema, aj as InputType, I as InputValue, ak as InputWhen, al as LabelStyle, am as LabelYLoc, an as LineLikeKind, ao as LineLikeSeries, ap as LineLikeStyle, L as LineStyle, aq as MarkerPoint, ar as MarkerSeries, u as Millis, O as OHLCV, i as Pane, au as PaneAxis, av as PaneAxisBand, aw as PaneHint, ax as PaneKind, ay as PolylinePoint, az as PriceLine, P as PriceStyle, aD as Scene, m as ScenePatch, aE as SchemaPatch, aF as SeriesKind, aG as SeriesPoint, aH as SeriesSpec, aI as SeriesValueDelta, aM as TableCell, aN as TableMerge, aO as TablePosition, aQ as TradeExecution, aR as ValuePatch, aU as inputDeltas, aV as inputVisible } from './options-bdSAtp7y.js';
4
+ export { B as Background, E as BoxFontFamily, F as BoxHAlign, G as BoxTextSize, H as BoxVAlign, J as CandleBarColor, K as CandleSeries, Q as CandleStyle, Z as DirtyRange, _ as DrawingBox, $ as DrawingExtend, a1 as DrawingLabel, a2 as DrawingLine, a3 as DrawingLinefill, a6 as DrawingPolyline, ab as DrawingTable, w as DrawingTypeKey, ad as DrawingXLoc, af as Fill, ag as FillGradientStop, ah as IndicatorMeta, l as IndicatorModel, ai as InputCondition, aj as InputSchema, ak as InputType, I as InputValue, al as InputWhen, am as LabelStyle, an as LabelYLoc, ao as LineLikeKind, ap as LineLikeSeries, aq as LineLikeStyle, L as LineStyle, ar as MarkerPoint, as as MarkerSeries, u as Millis, O as OHLCV, i as Pane, av as PaneAxis, aw as PaneAxisBand, ax as PaneHint, ay as PaneKind, az as PolylinePoint, aA as PriceLine, P as PriceStyle, aE as Scene, m as ScenePatch, aF as SchemaPatch, aG as SeriesKind, aH as SeriesPoint, aI as SeriesSpec, aJ as SeriesValueDelta, aN as TableCell, aO as TableMerge, aP as TablePosition, aR as TradeExecution, aS as ValuePatch, aV as inputDeltas, aW as inputVisible } from './options-CX1lSYWA.js';
5
5
  export { i as iconMarkup, r as registerIcon } from './icons-BZYbJXSV.js';
6
6
  export { a as KeyBindingDescriptor, R as ResolvedBinding } from './keymap-CGOz5F5f.js';
7
- export { B as BarRange, D as DataProvider, M as MarketDataFeed, b as ProviderCapabilities, P as ProviderInfo, a as SymbolDescriptor, S as SymbolInfo } from './DataProvider-XLdJB86x.js';
7
+ export { B as BarRange, D as DataProvider, M as MarketDataFeed, b as ProviderCapabilities, P as ProviderInfo, a as SymbolDescriptor, S as SymbolInfo } from './DataProvider-B-Jz59Rf.js';
package/dist/plugin.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import './chunk-FE6V2YAQ.js';
2
- export { DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_WIDTH, OVERRIDABLE_TOPBAR_IDS, chartType, chartTypes, clampPanelWidth, drawingTypes, getDrawingType, getNativeIndicator, inputDeltas, inputVisible, legendActions, legendCallouts, nativeIndicatorTypes, normalizeSettingsRow, registerChartType, registerDefaultEngine, 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-I77F2SVE.js';
3
- 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-6DPAYEGO.js';
2
+ export { DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_WIDTH, OVERRIDABLE_TOPBAR_IDS, chartType, chartTypes, clampPanelWidth, drawingTypes, getDrawingType, getNativeIndicator, inputDeltas, inputVisible, legendActions, legendCallouts, nativeIndicatorTypes, normalizeSettingsRow, registerChartType, registerDefaultEngine, 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';
3
+ 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';
@@ -1,5 +1,5 @@
1
- import { O as OHLCV, U as Unsubscribe } from '../options-bdSAtp7y.cjs';
2
- import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-xH2VBcFT.cjs';
1
+ import { O as OHLCV, U as Unsubscribe } from '../options-CX1lSYWA.cjs';
2
+ import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-OfR3fXg9.cjs';
3
3
 
4
4
  /**
5
5
  * Binance market-data provider, built from scratch on the public REST + WebSocket
@@ -1,5 +1,5 @@
1
- import { O as OHLCV, U as Unsubscribe } from '../options-bdSAtp7y.js';
2
- import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-XLdJB86x.js';
1
+ import { O as OHLCV, U as Unsubscribe } from '../options-CX1lSYWA.js';
2
+ import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-B-Jz59Rf.js';
3
3
 
4
4
  /**
5
5
  * Binance market-data provider, built from scratch on the public REST + WebSocket
@@ -1,5 +1,5 @@
1
- import { O as OHLCV, U as Unsubscribe } from '../options-bdSAtp7y.cjs';
2
- import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-xH2VBcFT.cjs';
1
+ import { O as OHLCV, U as Unsubscribe } from '../options-CX1lSYWA.cjs';
2
+ import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-OfR3fXg9.cjs';
3
3
 
4
4
  /**
5
5
  * Coinbase market-data provider, built from scratch on the public Exchange REST + WebSocket APIs
@@ -1,5 +1,5 @@
1
- import { O as OHLCV, U as Unsubscribe } from '../options-bdSAtp7y.js';
2
- import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-XLdJB86x.js';
1
+ import { O as OHLCV, U as Unsubscribe } from '../options-CX1lSYWA.js';
2
+ import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-B-Jz59Rf.js';
3
3
 
4
4
  /**
5
5
  * Coinbase market-data provider, built from scratch on the public Exchange REST + WebSocket APIs
@@ -1,5 +1,5 @@
1
- import { O as OHLCV, U as Unsubscribe } from '../options-bdSAtp7y.cjs';
2
- import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-xH2VBcFT.cjs';
1
+ import { O as OHLCV, U as Unsubscribe } from '../options-CX1lSYWA.cjs';
2
+ import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-OfR3fXg9.cjs';
3
3
 
4
4
  /**
5
5
  * Hyperliquid market-data provider, built from scratch on the public info API — no
@@ -1,5 +1,5 @@
1
- import { O as OHLCV, U as Unsubscribe } from '../options-bdSAtp7y.js';
2
- import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-XLdJB86x.js';
1
+ import { O as OHLCV, U as Unsubscribe } from '../options-CX1lSYWA.js';
2
+ import { D as DataProvider, P as ProviderInfo, B as BarRange, S as SymbolInfo, a as SymbolDescriptor } from '../DataProvider-B-Jz59Rf.js';
3
3
 
4
4
  /**
5
5
  * Hyperliquid market-data provider, built from scratch on the public info API — no
@@ -1,6 +1,6 @@
1
- import { D as DataProvider } from './DataProvider-xH2VBcFT.cjs';
2
- import { S as ScriptingEngine, V as Vela } from './contributions-BEkxwA5F.cjs';
3
- import { V as VisibleRangePreset } from './options-bdSAtp7y.cjs';
1
+ import { D as DataProvider } from './DataProvider-OfR3fXg9.cjs';
2
+ import { S as ScriptingEngine, V as Vela } from './contributions-C3b0Sx5P.cjs';
3
+ import { V as VisibleRangePreset } from './options-CX1lSYWA.cjs';
4
4
 
5
5
  /** The linkable dimensions. `crosshair` mirrors the pointer time onto same-group
6
6
  * cells as GHOST crosshairs (renderers without the optional `setExternalCrosshair`
@@ -1,6 +1,6 @@
1
- import { D as DataProvider } from './DataProvider-XLdJB86x.js';
2
- import { S as ScriptingEngine, V as Vela } from './contributions-CoAX7_SF.js';
3
- import { V as VisibleRangePreset } from './options-bdSAtp7y.js';
1
+ import { D as DataProvider } from './DataProvider-B-Jz59Rf.js';
2
+ import { S as ScriptingEngine, V as Vela } from './contributions-Swzz10fG.js';
3
+ import { V as VisibleRangePreset } from './options-CX1lSYWA.js';
4
4
 
5
5
  /** The linkable dimensions. `crosshair` mirrors the pointer time onto same-group
6
6
  * cells as GHOST crosshairs (renderers without the optional `setExternalCrosshair`
package/dist/ui.cjs CHANGED
@@ -337,6 +337,7 @@ registerIcon("star-filled", S('<path d="M8 2.2l1.75 3.55 3.9.55-2.8 2.75.65 3.9L
337
337
  registerIcon("grip", S('<circle cx="6" cy="3.5" r="1"/><circle cx="10" cy="3.5" r="1"/><circle cx="6" cy="8" r="1"/><circle cx="10" cy="8" r="1"/><circle cx="6" cy="12.5" r="1"/><circle cx="10" cy="12.5" r="1"/>', 'fill="currentColor" stroke="none"'));
338
338
  registerIcon("kebab", S('<circle cx="8" cy="3.2" r="1.2"/><circle cx="8" cy="8" r="1.2"/><circle cx="8" cy="12.8" r="1.2"/>', 'fill="currentColor" stroke="none"'));
339
339
  registerIcon("burger", S('<path d="M2.5 4.5h11M2.5 8h11M2.5 11.5h11"/>'));
340
+ registerIcon("info", S('<path d="M8 7.4v4.4"/><circle cx="8" cy="4.6" r="0.9" fill="currentColor" stroke="none"/>'));
340
341
  registerIcon("reset", S('<path d="M2 8a6 6 0 1 0 6-6 6.5 6.5 0 0 0-4.5 1.83L2 5.33"/><path d="M2 2v3.33h3.33"/>'));
341
342
  registerIcon("pane-collapse", S('<path d="M2.6 9.4h4v4M13.4 6.6h-4v-4"/><path d="m9.4 6.6 4.2-4.2M2.4 13.6l4.2-4.2"/>'));
342
343
  registerIcon("pane-expand", S('<path d="M9.8 2.4h3.8v3.8M6.2 13.6H2.4V9.8"/><path d="m13.6 2.4-4.4 4.4M2.4 13.6l4.4-4.4"/>'));
package/dist/ui.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { c as VelaTheme } from './options-bdSAtp7y.cjs';
1
+ import { c as VelaTheme } from './options-CX1lSYWA.cjs';
2
2
  import { MachineSchema, Service, Machine } from '@zag-js/core';
3
3
  export { a as KeyBindingDescriptor, K as KeymapManager, b as KeymapOptions, R as ResolvedBinding } from './keymap-CGOz5F5f.cjs';
4
4
  import * as tooltip from '@zag-js/tooltip';
package/dist/ui.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { c as VelaTheme } from './options-bdSAtp7y.js';
1
+ import { c as VelaTheme } from './options-CX1lSYWA.js';
2
2
  import { MachineSchema, Service, Machine } from '@zag-js/core';
3
3
  export { a as KeyBindingDescriptor, K as KeymapManager, b as KeymapOptions, R as ResolvedBinding } from './keymap-CGOz5F5f.js';
4
4
  import * as tooltip from '@zag-js/tooltip';
package/dist/ui.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Drawer, KeymapManager, Tooltip, drawerController, tooltipController } from './chunk-Q3TFJNJW.js';
2
- export { CALLOUT_CSS, CALLOUT_STYLE_ID, CalloutBubble, ColorField, Dialog, FIELD_GAP_PX, GlyphSelect, Menu, NumberInput, Popover, Select, Switch, TextArea, TextField, WIDTH_FIELD_OPTIONS, applyPlotOverlayTokens, applyThemeTokens, blendOver, buildColorPicker, buildFieldControl, buildPalette, calloutPanelRows, clampNumber, closeColorPopover, closeOpenPopovers, closeWidthPopover, closesPanel, colorField, colorPickerController, combineColor, decorateSelectScroll, dialogController, ensureUIHost, eventDismissedPopover, fieldGrid, fieldGridColumns, fieldRow, fieldSection, fieldSeparator, fillSelectList, glyphSelectController, hslHex, insetRect, intersectRects, isPopoverOpen, lineWidthGlyph, menuController, nextUid, normalizeProps, numberInputController, openPopoverTrigger, openSelectList, placePopover, popoverController, runMachine, selectController, snapToStep, splitColor, spreadProps, switchController, textAreaController, textFieldController, toggleSelectList, transparencyChecker, viewportRect, widthField, widthFieldOptions } from './chunk-MGU3USTP.js';
3
- export { FIELD_FOCUS_CSS, FIELD_FOCUS_RING, iconEl, iconMarkup, injectStyles, overlayScrollbarCss, registerIcon, svg16, svg24, withAlpha } from './chunk-6DPAYEGO.js';
1
+ export { Drawer, KeymapManager, Tooltip, drawerController, tooltipController } from './chunk-XCBJU674.js';
2
+ export { CALLOUT_CSS, CALLOUT_STYLE_ID, CalloutBubble, ColorField, Dialog, FIELD_GAP_PX, GlyphSelect, Menu, NumberInput, Popover, Select, Switch, TextArea, TextField, WIDTH_FIELD_OPTIONS, applyPlotOverlayTokens, applyThemeTokens, blendOver, buildColorPicker, buildFieldControl, buildPalette, calloutPanelRows, clampNumber, closeColorPopover, closeOpenPopovers, closeWidthPopover, closesPanel, colorField, colorPickerController, combineColor, decorateSelectScroll, dialogController, ensureUIHost, eventDismissedPopover, fieldGrid, fieldGridColumns, fieldRow, fieldSection, fieldSeparator, fillSelectList, glyphSelectController, hslHex, insetRect, intersectRects, isPopoverOpen, lineWidthGlyph, menuController, nextUid, normalizeProps, numberInputController, openPopoverTrigger, openSelectList, placePopover, popoverController, runMachine, selectController, snapToStep, splitColor, spreadProps, switchController, textAreaController, textFieldController, toggleSelectList, transparencyChecker, viewportRect, widthField, widthFieldOptions } from './chunk-T5Z5YUCF.js';
3
+ export { FIELD_FOCUS_CSS, FIELD_FOCUS_RING, iconEl, iconMarkup, injectStyles, overlayScrollbarCss, registerIcon, svg16, svg24, withAlpha } from './chunk-CAFCLMPF.js';
@@ -1,6 +1,23 @@
1
1
  var Vela = (function (exports) {
2
2
  'use strict';
3
3
 
4
+ // src/core/options.ts
5
+ var LIVE_BAR_EASE_DEFAULT_MS = 90;
6
+ var LIVE_BAR_EASE_MAX_MS = 1e3;
7
+ function resolveLiveBarEaseMs(value) {
8
+ if (value === true) return LIVE_BAR_EASE_DEFAULT_MS;
9
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return 0;
10
+ return Math.min(value, LIVE_BAR_EASE_MAX_MS);
11
+ }
12
+ function resolveAnimations(animations) {
13
+ if (typeof animations === "boolean") return { animZoom: animations, animPan: animations, animLiveBar: 0 };
14
+ return {
15
+ animZoom: animations?.zoom ?? true,
16
+ animPan: animations?.pan ?? true,
17
+ animLiveBar: resolveLiveBarEaseMs(animations?.liveBar)
18
+ };
19
+ }
20
+
4
21
  // src/core/model/series.ts
5
22
  function isLineLikeSeries(spec) {
6
23
  return spec.kind !== "candle" && spec.kind !== "bar" && spec.kind !== "markers";
@@ -551,6 +568,7 @@ var Vela = (function (exports) {
551
568
  registerIcon("grip", S('<circle cx="6" cy="3.5" r="1"/><circle cx="10" cy="3.5" r="1"/><circle cx="6" cy="8" r="1"/><circle cx="10" cy="8" r="1"/><circle cx="6" cy="12.5" r="1"/><circle cx="10" cy="12.5" r="1"/>', 'fill="currentColor" stroke="none"'));
552
569
  registerIcon("kebab", S('<circle cx="8" cy="3.2" r="1.2"/><circle cx="8" cy="8" r="1.2"/><circle cx="8" cy="12.8" r="1.2"/>', 'fill="currentColor" stroke="none"'));
553
570
  registerIcon("burger", S('<path d="M2.5 4.5h11M2.5 8h11M2.5 11.5h11"/>'));
571
+ registerIcon("info", S('<path d="M8 7.4v4.4"/><circle cx="8" cy="4.6" r="0.9" fill="currentColor" stroke="none"/>'));
554
572
  registerIcon("reset", S('<path d="M2 8a6 6 0 1 0 6-6 6.5 6.5 0 0 0-4.5 1.83L2 5.33"/><path d="M2 2v3.33h3.33"/>'));
555
573
  registerIcon("pane-collapse", S('<path d="M2.6 9.4h4v4M13.4 6.6h-4v-4"/><path d="m9.4 6.6 4.2-4.2M2.4 13.6l4.2-4.2"/>'));
556
574
  registerIcon("pane-expand", S('<path d="M9.8 2.4h3.8v3.8M6.2 13.6H2.4V9.8"/><path d="m13.6 2.4-4.4 4.4M2.4 13.6l4.4-4.4"/>'));
@@ -10501,6 +10519,23 @@ var Vela = (function (exports) {
10501
10519
  clear();
10502
10520
  };
10503
10521
  }
10522
+ function chromeHint(text, opts) {
10523
+ const px = opts.size ?? 16;
10524
+ const el = document.createElement("span");
10525
+ el.className = "vela-hint";
10526
+ el.setAttribute("role", "img");
10527
+ el.setAttribute("aria-label", text);
10528
+ el.innerHTML = iconAt("info", px);
10529
+ el.style.cssText = `flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:${px}px;height:${px}px;border-radius:50%;cursor:help;user-select:none;background:var(--vela-hover);color:var(--vela-fg-muted);transition:background var(--vela-dur-fast) ease,color var(--vela-dur-fast) ease;`;
10530
+ const hover = (on) => {
10531
+ el.style.background = on ? "var(--vela-active)" : "var(--vela-hover)";
10532
+ el.style.color = on ? "var(--vela-fg-bright)" : "var(--vela-fg-muted)";
10533
+ };
10534
+ el.addEventListener("pointerenter", () => hover(true));
10535
+ el.addEventListener("pointerleave", () => hover(false));
10536
+ const dispose = attachChromeTooltip(el, { host: opts.host, theme: opts.theme, text: () => text, wrap: true, delayMs: 250 });
10537
+ return { el, dispose };
10538
+ }
10504
10539
 
10505
10540
  // node_modules/@zag-js/vanilla/dist/chunk-QZ7TP4HQ.mjs
10506
10541
  var __defProp = Object.defineProperty;
@@ -21082,14 +21117,11 @@ ${overlayScrollbarCss(".vela-dialog *")}
21082
21117
  buildTextField(id, current, emit) {
21083
21118
  return buildFieldControl({ kind: "text", id, value: current, onChange: emit }).el;
21084
21119
  }
21085
- /** A hoverable ⓘ affordance carrying an input's `tooltip` (themed chrome tip; wraps). */
21120
+ /** The shared ⓘ hint carrying an input's `tooltip` (see {@link chromeHint}). */
21086
21121
  infoButton(tooltip) {
21087
- const b = document.createElement("span");
21088
- b.textContent = "i";
21089
- this.dialogTips.push(attachChromeTooltip(b, { host: this.host.container, theme: () => this.host.theme(), text: () => tooltip, wrap: true, delayMs: 250 }));
21090
- b.className = "vela-ind-hint";
21091
- b.style.cssText = "flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-weight:600;font-size:11px;font-family:inherit;line-height:1;cursor:help;user-select:none;";
21092
- return b;
21122
+ const { el, dispose } = chromeHint(tooltip, { host: this.host.container, theme: () => this.host.theme(), size: 18 });
21123
+ this.dialogTips.push(dispose);
21124
+ return el;
21093
21125
  }
21094
21126
  /** A dropdown over plain string options (value === label) — a thin case of {@link selectPairs}. */
21095
21127
  select(id, options, current, emit) {
@@ -21526,8 +21558,6 @@ ${overlayScrollbarCss(".vela-dialog *")}
21526
21558
  ${overlayScrollbarCss(".vela-dialog.vela-ind-dialog *", 9)}
21527
21559
  .vela-ind-tab{font-weight:600;font-size:13px;line-height:20px;transition:color var(--vela-dur-fast) ease,border-color var(--vela-dur-fast) ease;}
21528
21560
  .vela-ind-tab:not(.vela-ind-tab-active):hover{color:var(--vela-fg-bright);}
21529
- .vela-ind-hint{background:var(--vela-hover);color:var(--vela-fg-muted);transition:background var(--vela-dur-fast) ease,color var(--vela-dur-fast) ease;}
21530
- .vela-ind-hint:hover{background:var(--vela-active);color:var(--vela-fg-bright);}
21531
21561
  .vela-ind-ctl,.vela-ind-close{background-color:transparent;color:inherit;transition:color var(--vela-dur-fast) ease,background-color var(--vela-dur-fast) ease;}
21532
21562
  .vela-ind-ctl svg,.vela-ind-close svg{width:${LEGEND_ICON_PX}px;height:${LEGEND_ICON_PX}px;display:block;flex:none;stroke-width:1;}
21533
21563
  .vela-ind-ctl:hover{background-color:var(--vela-hover-strong);}
@@ -23071,7 +23101,8 @@ ${overlayScrollbarCss(".vela-dialog.vela-ind-dialog *", 9)}
23071
23101
  labelsVisible: isBool(ps.labelsVisible) ? ps.labelsVisible : base.priceScale.labelsVisible,
23072
23102
  currentPriceLine: isBool(ps.currentPriceLine) ? ps.currentPriceLine : base.priceScale.currentPriceLine,
23073
23103
  priceLabel: isBool(ps.priceLabel) ? ps.priceLabel : base.priceScale.priceLabel,
23074
- countdown: isBool(ps.countdown) ? ps.countdown : base.priceScale.countdown
23104
+ countdown: isBool(ps.countdown) ? ps.countdown : base.priceScale.countdown,
23105
+ animateLastPrice: isBool(ps.animateLastPrice) ? ps.animateLastPrice : base.priceScale.animateLastPrice
23075
23106
  },
23076
23107
  panes: {
23077
23108
  separatorColor: isColor(panes.separatorColor) ? panes.separatorColor : base.panes.separatorColor
@@ -27935,6 +27966,8 @@ void main() {
27935
27966
  "symbol.style.baseline.fill-bottom",
27936
27967
  "symbol.style.baseline.base-level",
27937
27968
  "symbol.style.baseline.width",
27969
+ "symbol.animation",
27970
+ "symbol.animation.price-changes",
27938
27971
  "symbol.timezone",
27939
27972
  "scales",
27940
27973
  "scales.price-scale",
@@ -28077,8 +28110,7 @@ ${overlayScrollbarCss(".vela-sd-pane")}
28077
28110
  .vela-sd-mobile .vela-select-trigger,.vela-sd-mobile .vela-num input,.vela-sd-mobile .vela-width-field{height:34px;}
28078
28111
  .vela-sd-mobile .vela-sd-close{width:40px;height:40px;}
28079
28112
  .vela-sd-mobile .vela-sd-btn{height:38px;}
28080
- .vela-sd-mobile .vela-sd-row span,.vela-sd-mobile .vela-sd-bool span,.vela-sd-mobile .vela-field-label{white-space:normal !important;}
28081
- `;
28113
+ .vela-sd-mobile .vela-sd-row span,.vela-sd-mobile .vela-sd-bool span,.vela-sd-mobile .vela-field-label{white-space:normal !important;}`;
28082
28114
  if (!existing) document.head.appendChild(st);
28083
28115
  }
28084
28116
  var SettingsDialog = class {
@@ -28099,6 +28131,8 @@ ${overlayScrollbarCss(".vela-sd-pane")}
28099
28131
  this.themeControl = null;
28100
28132
  /** The built tabs, by title — how `showSection` reaches a pane while the dialog is open. */
28101
28133
  this.tabs = [];
28134
+ this.hintTips = [];
28135
+ // ⓘ tooltip disposers of the open build (see hint)
28102
28136
  /** Active instance-strip tab per chart type — remembered across dialog rebuilds. */
28103
28137
  this.typeActiveInstance = /* @__PURE__ */ new Map();
28104
28138
  /** Active TOC group per structured pane (`<typeId>/<pane>` → group label). */
@@ -28287,6 +28321,13 @@ ${overlayScrollbarCss(".vela-sd-pane")}
28287
28321
  body.append(g);
28288
28322
  }
28289
28323
  showActive(config.series.style);
28324
+ body.append(sid(this.sectionTitle("Animation"), "symbol.animation"));
28325
+ body.append(sid(this.boolRow(
28326
+ "Animate price changes",
28327
+ config.priceScale.animateLastPrice,
28328
+ (v) => this.emit({ priceScale: { animateLastPrice: v } }),
28329
+ this.hint("Glide the live bar to each new price instead of snapping.")
28330
+ ), "symbol.animation.price-changes"));
28290
28331
  body.append(sid(this.sectionTitle("Time zone"), "symbol.timezone"));
28291
28332
  body.append(sid(this.selectRowLabeled("Time zone", normalizeTimezone(config.timeScale.timezone), timezoneOptions(config.timeScale.timezone), (v) => this.emit({ timeScale: { timezone: v } })), "symbol.timezone"));
28292
28333
  const renderHostSections = (placement) => {
@@ -28494,6 +28535,8 @@ ${overlayScrollbarCss(".vela-sd-pane")}
28494
28535
  this.ui = null;
28495
28536
  this.root = null;
28496
28537
  this.tabs = [];
28538
+ for (const dispose of this.hintTips) dispose();
28539
+ this.hintTips = [];
28497
28540
  ui?.destroy();
28498
28541
  }
28499
28542
  destroy() {
@@ -28907,23 +28950,31 @@ ${overlayScrollbarCss(".vela-sd-pane")}
28907
28950
  }).el
28908
28951
  });
28909
28952
  }
28910
- /** A toggle row: the checkbox sits to the LEFT of its label (never in the control area). */
28911
- boolRow(label, value, onChange) {
28912
- return this.toggleRow(label, value, onChange, []);
28953
+ /** A toggle row: the checkbox sits to the LEFT of its label (never in the control area).
28954
+ * `info` (see {@link hint}) rides after the label. */
28955
+ boolRow(label, value, onChange, info) {
28956
+ return this.toggleRow(label, value, onChange, [], void 0, info);
28913
28957
  }
28914
28958
  /** An enable row: checkbox + label in the label column, dependent controls in the
28915
28959
  * shared control column; the control group dims and ignores input while the toggle
28916
28960
  * is off. With `get`, the row re-reads its state on a 'vela-sync' event. */
28917
- toggleRow(label, value, onToggle, controls, get) {
28961
+ toggleRow(label, value, onToggle, controls, get, info) {
28918
28962
  return fieldRow({
28919
28963
  label,
28920
28964
  labelSize: "sm",
28921
28965
  bool: controls.length === 0,
28922
28966
  toggle: { checked: value, onChange: onToggle, get },
28923
28967
  control: controls,
28968
+ info,
28924
28969
  className: controls.length === 0 ? "vela-sd-bool" : "vela-sd-row"
28925
28970
  });
28926
28971
  }
28972
+ /** The shared ⓘ hint after a row label (see {@link chromeHint}). Disposed with the dialog. */
28973
+ hint(text) {
28974
+ const { el, dispose } = chromeHint(text, { host: this.container, theme: () => this.theme });
28975
+ this.hintTips.push(dispose);
28976
+ return el;
28977
+ }
28927
28978
  numberRow(label, value, min2, max2, step, onChange) {
28928
28979
  return fieldRow({
28929
28980
  label,
@@ -34936,7 +34987,6 @@ ${overlayScrollbarCss(".vela-sd-pane")}
34936
34987
  var ZOOM_TAU_MS = 70;
34937
34988
  var SCALE_TAU_MS = 80;
34938
34989
  var FLING_TAU_MS = 110;
34939
- var LIVE_BAR_TAU_MS = 90;
34940
34990
  var SCROLL_TO_TAU_MS = 130;
34941
34991
  var FLING_STOP_PX = 0.02;
34942
34992
  var PRICE_SCALE_K = 4e-3;
@@ -35007,9 +35057,13 @@ ${overlayScrollbarCss(".vela-sd-pane")}
35007
35057
  /** Drawings layer self-serves Ctrl+Z/Y (see the `historyChords` feature). */
35008
35058
  this.historyChordsEnabled = true;
35009
35059
  this.liveRegion = null;
35010
- // ── animation state (eased zoom + inertial pan) ──
35060
+ // ── animation state (eased zoom + inertial pan + live-bar glide) ──
35011
35061
  this.animZoom = true;
35012
35062
  this.animPan = true;
35063
+ this.animLiveBarMs = 0;
35064
+ // forming-bar OHLC glide time-constant; 0 = each tick snaps
35065
+ this.animLiveBarOnMs = LIVE_BAR_EASE_DEFAULT_MS;
35066
+ // the duration the settings-dialog on/off toggle restores (last non-zero value configured)
35013
35067
  // Brand default candles.
35014
35068
  this.candleUp = BULLISH;
35015
35069
  this.candleDown = BEARISH;
@@ -35134,7 +35188,7 @@ ${overlayScrollbarCss(".vela-sd-pane")}
35134
35188
  this.moveIndicatorCbs = /* @__PURE__ */ new Set();
35135
35189
  this.priceStyleCbs = /* @__PURE__ */ new Set();
35136
35190
  this.name = "native";
35137
- this.features = ["logScale", "currentPriceLine", "priceLabel", "countdown", "upColor", "downColor", "glow", "animZoom", "animPan", "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", "indicatorTitles", "indicatorValues"];
35191
+ this.features = ["logScale", "currentPriceLine", "priceLabel", "countdown", "upColor", "downColor", "glow", "animZoom", "animPan", "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", "indicatorTitles", "indicatorValues"];
35138
35192
  /** Track cursor proximity to the scroll button on the plot (bubbles from the button too,
35139
35193
  * so moving onto the button doesn't count as leaving). */
35140
35194
  this.onScrollProximityMove = (e) => {
@@ -35168,6 +35222,7 @@ ${overlayScrollbarCss(".vela-sd-pane")}
35168
35222
  this.backendMode = opts.nativeBackend;
35169
35223
  this.animZoom = opts.animZoom;
35170
35224
  this.animPan = opts.animPan;
35225
+ this.setLiveBarEase(resolveLiveBarEaseMs(opts.animLiveBar));
35171
35226
  this.glowAmount = opts.glow;
35172
35227
  this.candleUp = opts.upColor;
35173
35228
  this.candleDown = opts.downColor;
@@ -35217,6 +35272,10 @@ ${overlayScrollbarCss(".vela-sd-pane")}
35217
35272
  case "animPan":
35218
35273
  this.animPan = Boolean(value);
35219
35274
  return;
35275
+ case "animLiveBar":
35276
+ this.setLiveBarEase(resolveLiveBarEaseMs(value));
35277
+ return;
35278
+ // affects the next tick only; a glide in flight finishes at the new rate (or snaps at 0)
35220
35279
  case "intro": {
35221
35280
  const s = value === false || value === "none" || value === "off" || value == null ? "" : String(value);
35222
35281
  this.introStyle = s;
@@ -35353,6 +35412,8 @@ ${overlayScrollbarCss(".vela-sd-pane")}
35353
35412
  return this.animZoom;
35354
35413
  case "animPan":
35355
35414
  return this.animPan;
35415
+ case "animLiveBar":
35416
+ return this.animLiveBarMs;
35356
35417
  case "intro":
35357
35418
  return this.introStyle;
35358
35419
  case "zoomAnchor":
@@ -35521,7 +35582,8 @@ ${overlayScrollbarCss(".vela-sd-pane")}
35521
35582
  labelsVisible: this.scene.showAxisLabels,
35522
35583
  currentPriceLine: this.scene.showPriceLine,
35523
35584
  priceLabel: this.scene.showPriceLabel,
35524
- countdown: this.scene.showCountdown
35585
+ countdown: this.scene.showCountdown,
35586
+ animateLastPrice: this.animLiveBarMs > 0
35525
35587
  },
35526
35588
  panes: { separatorColor: s.separatorColor ?? t.borderColor },
35527
35589
  trades: {
@@ -35628,6 +35690,7 @@ ${overlayScrollbarCss(".vela-sd-pane")}
35628
35690
  this.scene.showPriceLabel = next2.priceScale.priceLabel;
35629
35691
  this.scene.showCountdown = next2.priceScale.countdown;
35630
35692
  this.syncCountdownTimer();
35693
+ this.animLiveBarMs = next2.priceScale.animateLastPrice ? this.animLiveBarOnMs : 0;
35631
35694
  s.separatorColor = keepInherit(s.separatorColor, next2.panes.separatorColor, prevTheme.borderColor);
35632
35695
  this.scene.tradeMarkers = {
35633
35696
  visible: next2.trades.visible,
@@ -36444,8 +36507,11 @@ ${overlayScrollbarCss(".vela-sd-pane")}
36444
36507
  const last2 = this.bars[n - 1];
36445
36508
  if (last2 && bar.time === last2.time) {
36446
36509
  this.bars[n - 1] = bar;
36447
- if (this.liveEaseTime !== bar.time) this.syncLiveEase(bar);
36448
- this.animator.start();
36510
+ if (this.animLiveBarMs <= 0 || this.liveEaseTime !== bar.time) {
36511
+ this.syncLiveEase(bar);
36512
+ } else {
36513
+ this.animator.start();
36514
+ }
36449
36515
  } else if (!last2 || bar.time > last2.time) {
36450
36516
  this.bars.push(bar);
36451
36517
  this.syncLiveEase(bar);
@@ -36457,6 +36523,12 @@ ${overlayScrollbarCss(".vela-sd-pane")}
36457
36523
  this.scene.bars = this.bars;
36458
36524
  this.scheduler.invalidate(4 /* Full */);
36459
36525
  }
36526
+ /** Set the live-bar glide duration (0 = off). A non-zero value is also remembered as
36527
+ * what the config's on/off toggle (`priceScale.animateLastPrice`) switches back on to. */
36528
+ setLiveBarEase(ms) {
36529
+ this.animLiveBarMs = ms;
36530
+ if (ms > 0) this.animLiveBarOnMs = ms;
36531
+ }
36460
36532
  /** Snap the eased forming-bar state to `bar` — no glide (a fresh bar or the first tick of one). */
36461
36533
  syncLiveEase(bar) {
36462
36534
  this.liveEaseTime = bar.time;
@@ -36469,9 +36541,10 @@ ${overlayScrollbarCss(".vela-sd-pane")}
36469
36541
  const target = this.bars[this.bars.length - 1];
36470
36542
  if (!target || this.liveEaseTime !== target.time) return false;
36471
36543
  const eps = Math.max(1e-9, Math.abs(target.close) * 1e-6);
36472
- const nh = easeToward(this.liveEaseHigh, target.high, dtMs, LIVE_BAR_TAU_MS);
36473
- const nl = easeToward(this.liveEaseLow, target.low, dtMs, LIVE_BAR_TAU_MS);
36474
- const nc = easeToward(this.liveEaseClose, target.close, dtMs, LIVE_BAR_TAU_MS);
36544
+ const tau = this.animLiveBarMs;
36545
+ const nh = easeToward(this.liveEaseHigh, target.high, dtMs, tau);
36546
+ const nl = easeToward(this.liveEaseLow, target.low, dtMs, tau);
36547
+ const nc = easeToward(this.liveEaseClose, target.close, dtMs, tau);
36475
36548
  const active = Math.abs(nh - target.high) > eps || Math.abs(nl - target.low) > eps || Math.abs(nc - target.close) > eps;
36476
36549
  this.liveEaseHigh = active ? nh : target.high;
36477
36550
  this.liveEaseLow = active ? nl : target.low;
@@ -40755,21 +40828,11 @@ ${overlayScrollbarCss(".vela-sd-pane")}
40755
40828
  registerClassicIndicators();
40756
40829
  const element = resolveElement(container);
40757
40830
  const theme = resolveTheme(options.theme);
40758
- let animZoom = true;
40759
- let animPan = true;
40760
- if (typeof options.animations === "boolean") {
40761
- animZoom = options.animations;
40762
- animPan = options.animations;
40763
- } else if (options.animations) {
40764
- animZoom = options.animations.zoom ?? true;
40765
- animPan = options.animations.pan ?? true;
40766
- }
40767
40831
  const display = {
40768
40832
  currentPriceLine: options.currentPriceLine ?? true,
40769
40833
  logScale: options.logScale ?? false,
40770
40834
  nativeBackend: options.nativeBackend ?? "auto",
40771
- animZoom,
40772
- animPan,
40835
+ ...resolveAnimations(options.animations),
40773
40836
  glow: options.glow ?? 0,
40774
40837
  upColor: options.upColor ?? BULLISH,
40775
40838
  downColor: options.downColor ?? BEARISH,