@luxalgo/vela 0.6.5 → 0.6.6

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/README.md +16 -16
  2. package/dist/{DataProvider-DrN7ZIou.d.cts → DataProvider-DDUYw2qP.d.cts} +1 -1
  3. package/dist/{DataProvider-BmHkcwvJ.d.ts → DataProvider-JJq7M2it.d.ts} +1 -1
  4. package/dist/{history-CvOtsjT5.d.ts → bottombar-COnL2Sk4.d.ts} +110 -127
  5. package/dist/{history-BmyjaVir.d.cts → bottombar-DeDXbF_K.d.cts} +110 -127
  6. package/dist/{chunk-FQBT4NFM.js → chunk-JQFO2WMU.js} +2768 -2534
  7. package/dist/{chunk-BEJ57HP4.js → chunk-OEUGUXL7.js} +14 -1
  8. package/dist/{chunk-N6MBJHMV.js → chunk-TMXK2SJR.js} +5838 -3346
  9. package/dist/{contributions-2bEmCF9S.d.cts → contributions-BqCIsbaP.d.ts} +108 -4
  10. package/dist/{contributions-DatoAzMx.d.ts → contributions-DNMqrAuw.d.cts} +108 -4
  11. package/dist/index.cjs +2761 -2511
  12. package/dist/index.d.cts +40 -16
  13. package/dist/index.d.ts +40 -16
  14. package/dist/index.js +2 -2
  15. package/dist/{options-YdiaaVjt.d.cts → options-BaVTMXaO.d.cts} +48 -2
  16. package/dist/{options-YdiaaVjt.d.ts → options-BaVTMXaO.d.ts} +48 -2
  17. package/dist/{plugin-DO_DX0gp.d.cts → plugin-CN8U2__Q.d.cts} +6 -4
  18. package/dist/{plugin-Bcone6Vh.d.ts → plugin-WnvNNJOp.d.ts} +6 -4
  19. package/dist/plugin.cjs +16 -0
  20. package/dist/plugin.d.cts +4 -4
  21. package/dist/plugin.d.ts +4 -4
  22. package/dist/plugin.js +1 -1
  23. package/dist/providers/binance.d.cts +2 -2
  24. package/dist/providers/binance.d.ts +2 -2
  25. package/dist/providers/coinbase.d.cts +2 -2
  26. package/dist/providers/coinbase.d.ts +2 -2
  27. package/dist/providers/hyperliquid.d.cts +2 -2
  28. package/dist/providers/hyperliquid.d.ts +2 -2
  29. package/dist/ui.d.cts +1 -1
  30. package/dist/ui.d.ts +1 -1
  31. package/dist/vela.global.js +2762 -2512
  32. package/dist/vela.global.min.js +48 -48
  33. package/dist/widget.cjs +35560 -34095
  34. package/dist/widget.d.cts +34 -271
  35. package/dist/widget.d.ts +34 -271
  36. package/dist/widget.js +60 -1313
  37. package/dist/workspace.cjs +1438 -933
  38. package/dist/workspace.d.cts +111 -15
  39. package/dist/workspace.d.ts +111 -15
  40. package/dist/workspace.js +6 -2281
  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-2bEmCF9S.cjs';
2
- export { B as BarsChangeReason, C as ContextSelect, b as DataControl, c as DrawingsControl, E as EngineAlert, d as EngineCapabilities, e as EngineContextSnapshot, f as EngineFactory, g as EngineWarning, h as ExecutionHandlers, i as ExecutionMarket, j as ExecutionRequest, k as ExecutionSession, F as FetchSeries, l as IndicatorEventMap, I as IndicatorHandle, m as IndicatorSummary, L as LegendActionDescriptor, n as LegendIndicatorInfo, N as NativeIndicator, o as NativeIndicatorContext, p as NativeIndicatorDescriptor, q as NativeIndicatorInfo, r as NativeIndicatorOutput, P as ParsedSymbol, s as PreparedScript, t as RendererControl, u as RunIndicatorResult, v as SceneInspection, a as ScriptRun, w as ScriptRunCause, x as ScriptRunResult, S as ScriptingEngine, y as SidePanelButton, z as SidePanelDescriptor, A as SidePanelHandle, G as SidePanelHeader, H as StrategyFill, J as StrategyState, K as StrategyTrade, T as TypedEventBus, V as Vela, M as VelaDeps, O as VelaEventMap, Q as VisibleBarRange, U as WidgetActionDescriptor, X as WidgetActionTarget, Y as WidgetAttachment, W as WidgetContext, Z as getNativeIndicator, _ as legendActions, $ as nativeIndicatorDescriptors, a0 as nativeIndicatorTypes, a1 as registerDefaultEngine, a2 as registerLegendAction, a3 as registerNativeIndicator, a4 as registerSidePanel, a5 as registerWidgetAction, a6 as registerWidgetAttachment, a7 as resolveEngines, a8 as sidePanels, a9 as unregisterDefaultEngine, aa as unregisterLegendAction, ab as unregisterNativeIndicator, ac as unregisterSidePanel, ad as unregisterWidgetAction, ae as unregisterWidgetAttachment, af as widgetActions, ag as widgetAttachments } from './contributions-2bEmCF9S.cjs';
3
- import { D as Drawing, S as SerializedDrawing, U as Unsubscribe, L as LineStyle, P as PriceStyle, I as IChartRenderer, R as RendererCapabilities, e as RendererDisplayOptions, f as IndicatorRenderHandle, g as IndicatorStatus, c as VelaTheme, O as OHLCV, h as Pane, i as PaneAction, j as MoveTarget, k as IndicatorModel, l as ScenePatch, m as InputValue, n as SymbolPickerFn, o as LegendActionView, p as InputChangeEvent, T as ThemeName, C as CrosshairEvent, q as ClickEvent, A as AxisLongPressEvent, a as VisibleRange, r as DataWindowReadout, s as IDrawingsRendererPort, t as Millis, u as SnapMode, v as DrawingTypeKey, w as ToolbarDefinition, M as MarketConfig } from './options-YdiaaVjt.cjs';
4
- export { x as AddIndicatorOptions, B as Background, y as BoxFontFamily, z as BoxHAlign, E as BoxTextSize, F as BoxVAlign, G as CandleBarColor, H as CandleSeries, J as CandleStyle, K as DataWindowGroup, Q as DataWindowOHLC, W as DataWindowRow, X as DirtyRange, Y as DrawingBox, Z as DrawingExtend, _ as DrawingIntent, $ as DrawingLabel, a0 as DrawingLine, a1 as DrawingLinefill, a2 as DrawingMode, a3 as DrawingPoint, a4 as DrawingPolyline, a5 as DrawingStyle, a6 as DrawingTable, a7 as DrawingText, a8 as DrawingXLoc, a9 as DrawingsOption, aa as Fill, ab as FillGradientStop, ac as IndicatorMeta, ad as InputCondition, ae as InputSchema, af as InputType, ag as InputWhen, ah as LabelStyle, ai as LabelYLoc, aj as LineLikeKind, ak as LineLikeSeries, al as LineLikeStyle, am as MarkerPoint, an as MarkerSeries, ao as MarketSnapshot, ap as MarketSwitch, aq as PaneHint, ar as PaneKind, as as PolylinePoint, at as PriceLine, au as Projector, av as ProviderName, aw as RendererConstructor, ax as Scene, ay as SchemaPatch, az as SeriesKind, aA as SeriesPoint, aB as SeriesSpec, aC as SeriesValueDelta, aD as SettingsField, aE as SettingsSchema, aF as TableCell, aG as TableMerge, aH as TablePosition, aI as ToolbarGroupConfig, aJ as TradeExecution, aK as ValuePatch, b as VelaOptions, V as VisibleRangePreset, aL as buildToolbar, aM as defaultToolbar, aN as inputVisible } from './options-YdiaaVjt.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-DrN7ZIou.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 CROSSHAIR, f as ChartTypeDefinition, g as ChartTypeSettingsInstance, h as ChartTypeSettingsSection, i as ChartTypeSettingsSubsection, D as DrawingTypeMeta, H as HIGHLIGHT, I as INFO, j as INVALID, k as IdentifiableKind, M as MARKER, N as NEUTRAL, l as NormalizedSettingsRow, R as RendererLayerArgs, m as RendererLayerDefinition, n as RendererLayerInstance, S as SERIES_LINE, o as SESSION_OFF, p as SESSION_POST, q as SESSION_PRE, r as SLATE, s as SLATE_DEEP, t as SeriesDataEngine, u as SeriesDataEngineHost, v as SettingsInlineControl, w as SettingsRowCondition, x as SettingsRowDescriptor, y as SettingsRowInlineNumber, z as SettingsRowSwatch, E as SettingsRowValueKey, F as SettingsRowWhen, G as SettingsRowWidth, J as SettingsSelectOption, K as SettingsValueRow, T as TRADE_EXIT, L as TRADE_LONG, O as TRADE_SHORT, V as VALID, W as WARNING, P as categoricalColor, Q as chartType, U as chartTypes, X as createDrawing, Y as deserializeDrawing, Z as drawingTypes, _ as getDrawingType, $ as normalizeSettingsRow, a0 as registerChartType, a1 as registerDrawingType, a2 as registerRendererDefaults, a3 as registerRendererLayer, a4 as rendererDefaults, a5 as rendererLayers, a6 as settingsRowValueKeys, a7 as stableSeriesId, a8 as tickerModifierIds, a9 as unregisterChartType, aa as unregisterRendererDefaults, ab as unregisterRendererLayer } from './plugin-DO_DX0gp.cjs';
1
+ import { D as DrawingsDocument, R as Resolved } from './contributions-DNMqrAuw.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 LegendIndicatorInfo, N as NativeIndicator, q as NativeIndicatorContext, r as NativeIndicatorDescriptor, s as NativeIndicatorInfo, t as NativeIndicatorOutput, P as ParsedSymbol, u as PreparedScript, v as RendererControl, w as RunIndicatorResult, x as SceneInspection, a as ScriptRun, y as ScriptRunCause, z as ScriptRunResult, S as ScriptingEngine, A as SidePanelButton, G as SidePanelDescriptor, H as SidePanelHandle, J as SidePanelHeader, K as StatePersistenceHandler, M as StrategyFill, O as StrategyState, Q as StrategyTrade, T as TypedEventBus, V as Vela, U as VelaDeps, X as VelaEventMap, Y as VisibleBarRange, Z as WidgetActionDescriptor, _ as WidgetActionTarget, $ as WidgetAttachment, W as WidgetContext, a0 as getNativeIndicator, a1 as legendActions, a2 as nativeIndicatorDescriptors, a3 as nativeIndicatorTypes, a4 as registerDefaultEngine, a5 as registerLegendAction, a6 as registerNativeIndicator, a7 as registerSidePanel, a8 as registerStatePersistence, a9 as registerWidgetAction, aa as registerWidgetAttachment, ab as resolveEngines, ac as sidePanels, ad as statePersistenceHandlers, ae as unregisterDefaultEngine, af as unregisterLegendAction, ag as unregisterNativeIndicator, ah as unregisterSidePanel, ai as unregisterStatePersistence, aj as unregisterWidgetAction, ak as unregisterWidgetAttachment, al as widgetActions, am as widgetAttachments } from './contributions-DNMqrAuw.cjs';
3
+ import { D as Drawing, S as SerializedDrawing, U as Unsubscribe, L as LineStyle, P as PriceStyle, I as IChartRenderer, R as RendererCapabilities, e as RendererDisplayOptions, f as IndicatorRenderHandle, g as IndicatorStatus, c as VelaTheme, O as OHLCV, h as Pane, i as PaneAction, j as MoveTarget, k as IndicatorModel, l as ScenePatch, m as InputValue, n as SymbolPickerFn, o as LegendActionView, p as InputChangeEvent, T as ThemeName, C as CrosshairEvent, q as ClickEvent, A as AxisLongPressEvent, a as VisibleRange, r as DataWindowReadout, s as IDrawingsRendererPort, t as Millis, u as SnapMode, v as DrawingTypeKey, w as ToolbarDefinition, M as MarketConfig } from './options-BaVTMXaO.cjs';
4
+ export { x as AddIndicatorOptions, B as Background, y as BoxFontFamily, z as BoxHAlign, E as BoxTextSize, F as BoxVAlign, G as CandleBarColor, H as CandleSeries, J as CandleStyle, K as DataWindowGroup, Q as DataWindowOHLC, W as DataWindowRow, X as DirtyRange, Y as DrawingBox, Z as DrawingExtend, _ as DrawingIntent, $ as DrawingLabel, a0 as DrawingLine, a1 as DrawingLinefill, a2 as DrawingMode, a3 as DrawingPoint, a4 as DrawingPolyline, a5 as DrawingStyle, a6 as DrawingTable, a7 as DrawingText, a8 as DrawingXLoc, a9 as DrawingsOption, aa as Fill, ab as FillGradientStop, ac as IndicatorMeta, ad as InputCondition, ae as InputSchema, af as InputType, ag as InputWhen, ah as LabelStyle, ai as LabelYLoc, aj as LineLikeKind, ak as LineLikeSeries, al as LineLikeStyle, am as MarkerPoint, an as MarkerSeries, ao as MarketSnapshot, ap as MarketSwitch, aq as PaneAxis, ar as PaneAxisBand, as as PaneHint, at as PaneKind, au as PolylinePoint, av as PriceLine, aw as Projector, ax as ProviderName, ay as RendererConstructor, az as Scene, aA as SchemaPatch, aB as SeriesKind, aC as SeriesPoint, aD as SeriesSpec, aE as SeriesValueDelta, aF as SettingsField, aG as SettingsSchema, aH as SettingsVisibilityPolicy, aI as TableCell, aJ as TableMerge, aK as TablePosition, aL as ToolbarGroupConfig, aM as TradeExecution, aN as ValuePatch, b as VelaOptions, V as VisibleRangePreset, aO as buildToolbar, aP as defaultToolbar, aQ as inputVisible } from './options-BaVTMXaO.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-DDUYw2qP.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 CROSSHAIR, f as ChartTypeDefinition, g as ChartTypeSettingsInstance, h as ChartTypeSettingsSection, i as ChartTypeSettingsSubsection, D as DrawingTypeMeta, H as HIGHLIGHT, I as INFO, j as INVALID, k as IdentifiableKind, M as MARKER, N as NEUTRAL, l as NormalizedSettingsRow, R as RendererLayerArgs, m as RendererLayerDefinition, n as RendererLayerInstance, S as SERIES_LINE, o as SESSION_OFF, p as SESSION_POST, q as SESSION_PRE, r as SLATE, s as SLATE_DEEP, t as SeriesDataEngine, u as SeriesDataEngineHost, v as SettingsInlineControl, w as SettingsRowCondition, x as SettingsRowDescriptor, y as SettingsRowInlineNumber, z as SettingsRowSwatch, E as SettingsRowValueKey, F as SettingsRowWhen, G as SettingsRowWidth, J as SettingsSelectOption, K as SettingsValueRow, T as TRADE_EXIT, L as TRADE_LONG, O as TRADE_SHORT, V as VALID, W as WARNING, P as categoricalColor, Q as chartType, U as chartTypes, X as createDrawing, Y as deserializeDrawing, Z as drawingTypes, _ as getDrawingType, $ as normalizeSettingsRow, a0 as registerChartType, a1 as registerDrawingType, a2 as registerRendererDefaults, a3 as registerRendererLayer, a4 as rendererDefaults, a5 as rendererLayers, a6 as settingsRowValueKeys, a7 as stableSeriesId, a8 as tickerModifierIds, a9 as unregisterChartType, aa as unregisterRendererDefaults, ab as unregisterRendererLayer } from './plugin-CN8U2__Q.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-CT9ZwIGz.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';
@@ -284,26 +284,32 @@ interface ChartConfig {
284
284
  */
285
285
  /** A host-contributed settings row: callback-based (the host owns the state).
286
286
  * `heading` opens a titled group inside the tab (an in-pane section title);
287
- * `color` is a swatch opening the themed picker (any CSS color, alpha included). */
287
+ * `color` is a swatch opening the themed picker (any CSS color, alpha included).
288
+ * `id` is the row's stable visibility id (defaults to the label's slug) — hiding a
289
+ * heading's id hides its whole group (see `settings-visibility.ts`). */
288
290
  type HostSettingsRow = {
289
291
  kind: 'heading';
290
292
  label: string;
293
+ id?: string;
291
294
  } | {
292
295
  kind: 'toggle';
293
296
  label: string;
294
297
  get: () => boolean;
295
298
  set: (v: boolean) => void;
299
+ id?: string;
296
300
  } | {
297
301
  kind: 'select';
298
302
  label: string;
299
303
  options: readonly string[];
300
304
  get: () => string;
301
305
  set: (v: string) => void;
306
+ id?: string;
302
307
  } | {
303
308
  kind: 'color';
304
309
  label: string;
305
310
  get: () => string;
306
311
  set: (v: string) => void;
312
+ id?: string;
307
313
  };
308
314
  /** A host-contributed settings tab (see `RendererControl.setSettingsSections`). */
309
315
  interface HostSettingsSection {
@@ -312,6 +318,8 @@ interface HostSettingsSection {
312
318
  /** Tab position: own tab after Symbol (default), end of the rail, or rows INSIDE
313
319
  * the Symbol tab itself (`'symbol'` — e.g. the widget's watermark toggle). */
314
320
  placement?: 'after-symbol' | 'end' | 'symbol';
321
+ /** Stable visibility id (defaults to the title's slug). Row ids scope under it. */
322
+ id?: string;
315
323
  }
316
324
 
317
325
  /**
@@ -331,6 +339,7 @@ declare class NativeRenderer implements IChartRenderer {
331
339
  private plot;
332
340
  private toolbarGutter;
333
341
  private mountContainer;
342
+ private backdropCanvas;
334
343
  private dataCanvas;
335
344
  private volumeCanvas;
336
345
  private vpvrCanvas;
@@ -339,6 +348,7 @@ declare class NativeRenderer implements IChartRenderer {
339
348
  private cursorCanvas;
340
349
  private overlayRoot;
341
350
  private userDrawings;
351
+ private readonly backdropRenderer;
342
352
  private readonly volumeRenderer;
343
353
  /** SDK renderer layers instantiated at mount ({@link registerRendererLayer}). */
344
354
  private extLayers;
@@ -428,6 +438,9 @@ declare class NativeRenderer implements IChartRenderer {
428
438
  private readonly paneActionCbs;
429
439
  private hoverLogical;
430
440
  private settingsDialog;
441
+ /** The host's visibility policy (setting ids hidden from the dialog) — instance
442
+ * state, never part of the persisted config. */
443
+ private hiddenSettings;
431
444
  /** Where modal dialogs mount — a HOST override (multi-chart shells pass their root
432
445
  * so dialogs center globally instead of clipping inside one cell). Null = the plot. */
433
446
  private dialogHost;
@@ -676,6 +689,10 @@ declare class NativeRenderer implements IChartRenderer {
676
689
  * whenever the latest bars are off-screen (touch has no cursor proximity). */
677
690
  setLayoutMode(mode: 'mobile' | 'desktop'): void;
678
691
  setSettingsSections(sections: HostSettingsSection[]): void;
692
+ setSettingsVisibility(policy: {
693
+ hidden?: readonly string[];
694
+ }): void;
695
+ listSettingsIds(): string[];
679
696
  onChartTypeSettingsChange(cb: (typeId: string, values: Record<string, unknown>) => void): Unsubscribe;
680
697
  onConfigChanged(cb: () => void): Unsubscribe;
681
698
  onThemeSelect(cb: (theme: ThemeName) => void): Unsubscribe;
@@ -872,8 +889,8 @@ declare class NativeRenderer implements IChartRenderer {
872
889
  * owned layers by their owner's z key against the candles' (an indicator restacked
873
890
  * below the candles takes its layer canvas along), unowned by declared placement. */
874
891
  private orderedLayerCanvases;
875
- /** The full canvas pile in paint order (layers + data/volume/vpvr) — what the DOM
876
- * stacking and the screenshot compositor must both follow. */
892
+ /** The full canvas pile in paint order (backdrop + layers + data/volume/vpvr) — what
893
+ * the DOM stacking and the screenshot compositor must both follow. */
877
894
  private canvasPile;
878
895
  /** Re-slot the SDK layer canvases in the plot when the computed order changed (a z
879
896
  * write, a restored config, an indicator mount/remove/restack). Runs at the top of
@@ -1142,8 +1159,12 @@ declare class BarStore {
1142
1159
  /** Earliest bar-open time fetched for a series — what the cache actually covers. */
1143
1160
  private readonly coveredFrom;
1144
1161
  private currentSymbol?;
1145
- /** Symbols protected from the current-symbol purge (multi-chart cells). Empty = legacy single-chart behavior. */
1162
+ /** Symbols protected from the current-symbol purge (multi-chart cells) the UNION
1163
+ * of every owner's declaration. Empty = legacy single-chart behavior. */
1146
1164
  private retained;
1165
+ /** Per-owner declarations behind {@link retained} — several shells on one page must
1166
+ * not clobber (or, on destroy, evict) each other's protected symbols. */
1167
+ private readonly retainedByOwner;
1147
1168
  get(key: string): OHLCV[] | undefined;
1148
1169
  /**
1149
1170
  * Record that the series is covered back to `from`. Tracks the EARLIEST such
@@ -1168,13 +1189,16 @@ declare class BarStore {
1168
1189
  * Declare the set of symbols a multi-chart workspace is displaying (CANONICAL
1169
1190
  * tickers, post-registry resolution — `chart.data.resolve(sym).ticker`). These
1170
1191
  * survive every {@link retainSymbol} purge, so cells loading different symbols
1171
- * stop evicting each other's history. Replaces the previous set and purges
1172
- * anything now outside `symbols {currentSymbol}` immediately. An empty set
1173
- * restores the legacy single-chart policy. Note: SECONDARY symbols a script
1174
- * fetches (`request.security` cross-symbol) are not in this set and still drop
1175
- * on cross-cell loads correctness is unaffected (they re-fetch on demand).
1192
+ * stop evicting each other's history. Replaces the previous set FOR THAT OWNER
1193
+ * (pass the shell instance as `owner`; several shells on one page keep separate
1194
+ * declarations, the effective set is their union) and purges anything now outside
1195
+ * the union {currentSymbol} immediately. An empty set releases the owner's
1196
+ * declaration with no owners left, the legacy single-chart policy is back.
1197
+ * Note: SECONDARY symbols a script fetches (`request.security` cross-symbol) are
1198
+ * not in this set and still drop on cross-cell loads — correctness is unaffected
1199
+ * (they re-fetch on demand).
1176
1200
  */
1177
- retain(symbols: ReadonlySet<string>): void;
1201
+ retain(symbols: ReadonlySet<string>, owner?: unknown): void;
1178
1202
  /** Drop every series whose symbol is neither `current` nor retained. */
1179
1203
  private purgeOutside;
1180
1204
  clear(): void;
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { D as DrawingsDocument, R as Resolved } from './contributions-DatoAzMx.js';
2
- export { B as BarsChangeReason, C as ContextSelect, b as DataControl, c as DrawingsControl, E as EngineAlert, d as EngineCapabilities, e as EngineContextSnapshot, f as EngineFactory, g as EngineWarning, h as ExecutionHandlers, i as ExecutionMarket, j as ExecutionRequest, k as ExecutionSession, F as FetchSeries, l as IndicatorEventMap, I as IndicatorHandle, m as IndicatorSummary, L as LegendActionDescriptor, n as LegendIndicatorInfo, N as NativeIndicator, o as NativeIndicatorContext, p as NativeIndicatorDescriptor, q as NativeIndicatorInfo, r as NativeIndicatorOutput, P as ParsedSymbol, s as PreparedScript, t as RendererControl, u as RunIndicatorResult, v as SceneInspection, a as ScriptRun, w as ScriptRunCause, x as ScriptRunResult, S as ScriptingEngine, y as SidePanelButton, z as SidePanelDescriptor, A as SidePanelHandle, G as SidePanelHeader, H as StrategyFill, J as StrategyState, K as StrategyTrade, T as TypedEventBus, V as Vela, M as VelaDeps, O as VelaEventMap, Q as VisibleBarRange, U as WidgetActionDescriptor, X as WidgetActionTarget, Y as WidgetAttachment, W as WidgetContext, Z as getNativeIndicator, _ as legendActions, $ as nativeIndicatorDescriptors, a0 as nativeIndicatorTypes, a1 as registerDefaultEngine, a2 as registerLegendAction, a3 as registerNativeIndicator, a4 as registerSidePanel, a5 as registerWidgetAction, a6 as registerWidgetAttachment, a7 as resolveEngines, a8 as sidePanels, a9 as unregisterDefaultEngine, aa as unregisterLegendAction, ab as unregisterNativeIndicator, ac as unregisterSidePanel, ad as unregisterWidgetAction, ae as unregisterWidgetAttachment, af as widgetActions, ag as widgetAttachments } from './contributions-DatoAzMx.js';
3
- import { D as Drawing, S as SerializedDrawing, U as Unsubscribe, L as LineStyle, P as PriceStyle, I as IChartRenderer, R as RendererCapabilities, e as RendererDisplayOptions, f as IndicatorRenderHandle, g as IndicatorStatus, c as VelaTheme, O as OHLCV, h as Pane, i as PaneAction, j as MoveTarget, k as IndicatorModel, l as ScenePatch, m as InputValue, n as SymbolPickerFn, o as LegendActionView, p as InputChangeEvent, T as ThemeName, C as CrosshairEvent, q as ClickEvent, A as AxisLongPressEvent, a as VisibleRange, r as DataWindowReadout, s as IDrawingsRendererPort, t as Millis, u as SnapMode, v as DrawingTypeKey, w as ToolbarDefinition, M as MarketConfig } from './options-YdiaaVjt.js';
4
- export { x as AddIndicatorOptions, B as Background, y as BoxFontFamily, z as BoxHAlign, E as BoxTextSize, F as BoxVAlign, G as CandleBarColor, H as CandleSeries, J as CandleStyle, K as DataWindowGroup, Q as DataWindowOHLC, W as DataWindowRow, X as DirtyRange, Y as DrawingBox, Z as DrawingExtend, _ as DrawingIntent, $ as DrawingLabel, a0 as DrawingLine, a1 as DrawingLinefill, a2 as DrawingMode, a3 as DrawingPoint, a4 as DrawingPolyline, a5 as DrawingStyle, a6 as DrawingTable, a7 as DrawingText, a8 as DrawingXLoc, a9 as DrawingsOption, aa as Fill, ab as FillGradientStop, ac as IndicatorMeta, ad as InputCondition, ae as InputSchema, af as InputType, ag as InputWhen, ah as LabelStyle, ai as LabelYLoc, aj as LineLikeKind, ak as LineLikeSeries, al as LineLikeStyle, am as MarkerPoint, an as MarkerSeries, ao as MarketSnapshot, ap as MarketSwitch, aq as PaneHint, ar as PaneKind, as as PolylinePoint, at as PriceLine, au as Projector, av as ProviderName, aw as RendererConstructor, ax as Scene, ay as SchemaPatch, az as SeriesKind, aA as SeriesPoint, aB as SeriesSpec, aC as SeriesValueDelta, aD as SettingsField, aE as SettingsSchema, aF as TableCell, aG as TableMerge, aH as TablePosition, aI as ToolbarGroupConfig, aJ as TradeExecution, aK as ValuePatch, b as VelaOptions, V as VisibleRangePreset, aL as buildToolbar, aM as defaultToolbar, aN as inputVisible } from './options-YdiaaVjt.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-BmHkcwvJ.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 CROSSHAIR, f as ChartTypeDefinition, g as ChartTypeSettingsInstance, h as ChartTypeSettingsSection, i as ChartTypeSettingsSubsection, D as DrawingTypeMeta, H as HIGHLIGHT, I as INFO, j as INVALID, k as IdentifiableKind, M as MARKER, N as NEUTRAL, l as NormalizedSettingsRow, R as RendererLayerArgs, m as RendererLayerDefinition, n as RendererLayerInstance, S as SERIES_LINE, o as SESSION_OFF, p as SESSION_POST, q as SESSION_PRE, r as SLATE, s as SLATE_DEEP, t as SeriesDataEngine, u as SeriesDataEngineHost, v as SettingsInlineControl, w as SettingsRowCondition, x as SettingsRowDescriptor, y as SettingsRowInlineNumber, z as SettingsRowSwatch, E as SettingsRowValueKey, F as SettingsRowWhen, G as SettingsRowWidth, J as SettingsSelectOption, K as SettingsValueRow, T as TRADE_EXIT, L as TRADE_LONG, O as TRADE_SHORT, V as VALID, W as WARNING, P as categoricalColor, Q as chartType, U as chartTypes, X as createDrawing, Y as deserializeDrawing, Z as drawingTypes, _ as getDrawingType, $ as normalizeSettingsRow, a0 as registerChartType, a1 as registerDrawingType, a2 as registerRendererDefaults, a3 as registerRendererLayer, a4 as rendererDefaults, a5 as rendererLayers, a6 as settingsRowValueKeys, a7 as stableSeriesId, a8 as tickerModifierIds, a9 as unregisterChartType, aa as unregisterRendererDefaults, ab as unregisterRendererLayer } from './plugin-Bcone6Vh.js';
1
+ import { D as DrawingsDocument, R as Resolved } from './contributions-BqCIsbaP.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 LegendIndicatorInfo, N as NativeIndicator, q as NativeIndicatorContext, r as NativeIndicatorDescriptor, s as NativeIndicatorInfo, t as NativeIndicatorOutput, P as ParsedSymbol, u as PreparedScript, v as RendererControl, w as RunIndicatorResult, x as SceneInspection, a as ScriptRun, y as ScriptRunCause, z as ScriptRunResult, S as ScriptingEngine, A as SidePanelButton, G as SidePanelDescriptor, H as SidePanelHandle, J as SidePanelHeader, K as StatePersistenceHandler, M as StrategyFill, O as StrategyState, Q as StrategyTrade, T as TypedEventBus, V as Vela, U as VelaDeps, X as VelaEventMap, Y as VisibleBarRange, Z as WidgetActionDescriptor, _ as WidgetActionTarget, $ as WidgetAttachment, W as WidgetContext, a0 as getNativeIndicator, a1 as legendActions, a2 as nativeIndicatorDescriptors, a3 as nativeIndicatorTypes, a4 as registerDefaultEngine, a5 as registerLegendAction, a6 as registerNativeIndicator, a7 as registerSidePanel, a8 as registerStatePersistence, a9 as registerWidgetAction, aa as registerWidgetAttachment, ab as resolveEngines, ac as sidePanels, ad as statePersistenceHandlers, ae as unregisterDefaultEngine, af as unregisterLegendAction, ag as unregisterNativeIndicator, ah as unregisterSidePanel, ai as unregisterStatePersistence, aj as unregisterWidgetAction, ak as unregisterWidgetAttachment, al as widgetActions, am as widgetAttachments } from './contributions-BqCIsbaP.js';
3
+ import { D as Drawing, S as SerializedDrawing, U as Unsubscribe, L as LineStyle, P as PriceStyle, I as IChartRenderer, R as RendererCapabilities, e as RendererDisplayOptions, f as IndicatorRenderHandle, g as IndicatorStatus, c as VelaTheme, O as OHLCV, h as Pane, i as PaneAction, j as MoveTarget, k as IndicatorModel, l as ScenePatch, m as InputValue, n as SymbolPickerFn, o as LegendActionView, p as InputChangeEvent, T as ThemeName, C as CrosshairEvent, q as ClickEvent, A as AxisLongPressEvent, a as VisibleRange, r as DataWindowReadout, s as IDrawingsRendererPort, t as Millis, u as SnapMode, v as DrawingTypeKey, w as ToolbarDefinition, M as MarketConfig } from './options-BaVTMXaO.js';
4
+ export { x as AddIndicatorOptions, B as Background, y as BoxFontFamily, z as BoxHAlign, E as BoxTextSize, F as BoxVAlign, G as CandleBarColor, H as CandleSeries, J as CandleStyle, K as DataWindowGroup, Q as DataWindowOHLC, W as DataWindowRow, X as DirtyRange, Y as DrawingBox, Z as DrawingExtend, _ as DrawingIntent, $ as DrawingLabel, a0 as DrawingLine, a1 as DrawingLinefill, a2 as DrawingMode, a3 as DrawingPoint, a4 as DrawingPolyline, a5 as DrawingStyle, a6 as DrawingTable, a7 as DrawingText, a8 as DrawingXLoc, a9 as DrawingsOption, aa as Fill, ab as FillGradientStop, ac as IndicatorMeta, ad as InputCondition, ae as InputSchema, af as InputType, ag as InputWhen, ah as LabelStyle, ai as LabelYLoc, aj as LineLikeKind, ak as LineLikeSeries, al as LineLikeStyle, am as MarkerPoint, an as MarkerSeries, ao as MarketSnapshot, ap as MarketSwitch, aq as PaneAxis, ar as PaneAxisBand, as as PaneHint, at as PaneKind, au as PolylinePoint, av as PriceLine, aw as Projector, ax as ProviderName, ay as RendererConstructor, az as Scene, aA as SchemaPatch, aB as SeriesKind, aC as SeriesPoint, aD as SeriesSpec, aE as SeriesValueDelta, aF as SettingsField, aG as SettingsSchema, aH as SettingsVisibilityPolicy, aI as TableCell, aJ as TableMerge, aK as TablePosition, aL as ToolbarGroupConfig, aM as TradeExecution, aN as ValuePatch, b as VelaOptions, V as VisibleRangePreset, aO as buildToolbar, aP as defaultToolbar, aQ as inputVisible } from './options-BaVTMXaO.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-JJq7M2it.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 CROSSHAIR, f as ChartTypeDefinition, g as ChartTypeSettingsInstance, h as ChartTypeSettingsSection, i as ChartTypeSettingsSubsection, D as DrawingTypeMeta, H as HIGHLIGHT, I as INFO, j as INVALID, k as IdentifiableKind, M as MARKER, N as NEUTRAL, l as NormalizedSettingsRow, R as RendererLayerArgs, m as RendererLayerDefinition, n as RendererLayerInstance, S as SERIES_LINE, o as SESSION_OFF, p as SESSION_POST, q as SESSION_PRE, r as SLATE, s as SLATE_DEEP, t as SeriesDataEngine, u as SeriesDataEngineHost, v as SettingsInlineControl, w as SettingsRowCondition, x as SettingsRowDescriptor, y as SettingsRowInlineNumber, z as SettingsRowSwatch, E as SettingsRowValueKey, F as SettingsRowWhen, G as SettingsRowWidth, J as SettingsSelectOption, K as SettingsValueRow, T as TRADE_EXIT, L as TRADE_LONG, O as TRADE_SHORT, V as VALID, W as WARNING, P as categoricalColor, Q as chartType, U as chartTypes, X as createDrawing, Y as deserializeDrawing, Z as drawingTypes, _ as getDrawingType, $ as normalizeSettingsRow, a0 as registerChartType, a1 as registerDrawingType, a2 as registerRendererDefaults, a3 as registerRendererLayer, a4 as rendererDefaults, a5 as rendererLayers, a6 as settingsRowValueKeys, a7 as stableSeriesId, a8 as tickerModifierIds, a9 as unregisterChartType, aa as unregisterRendererDefaults, ab as unregisterRendererLayer } from './plugin-WnvNNJOp.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-CT9ZwIGz.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';
@@ -284,26 +284,32 @@ interface ChartConfig {
284
284
  */
285
285
  /** A host-contributed settings row: callback-based (the host owns the state).
286
286
  * `heading` opens a titled group inside the tab (an in-pane section title);
287
- * `color` is a swatch opening the themed picker (any CSS color, alpha included). */
287
+ * `color` is a swatch opening the themed picker (any CSS color, alpha included).
288
+ * `id` is the row's stable visibility id (defaults to the label's slug) — hiding a
289
+ * heading's id hides its whole group (see `settings-visibility.ts`). */
288
290
  type HostSettingsRow = {
289
291
  kind: 'heading';
290
292
  label: string;
293
+ id?: string;
291
294
  } | {
292
295
  kind: 'toggle';
293
296
  label: string;
294
297
  get: () => boolean;
295
298
  set: (v: boolean) => void;
299
+ id?: string;
296
300
  } | {
297
301
  kind: 'select';
298
302
  label: string;
299
303
  options: readonly string[];
300
304
  get: () => string;
301
305
  set: (v: string) => void;
306
+ id?: string;
302
307
  } | {
303
308
  kind: 'color';
304
309
  label: string;
305
310
  get: () => string;
306
311
  set: (v: string) => void;
312
+ id?: string;
307
313
  };
308
314
  /** A host-contributed settings tab (see `RendererControl.setSettingsSections`). */
309
315
  interface HostSettingsSection {
@@ -312,6 +318,8 @@ interface HostSettingsSection {
312
318
  /** Tab position: own tab after Symbol (default), end of the rail, or rows INSIDE
313
319
  * the Symbol tab itself (`'symbol'` — e.g. the widget's watermark toggle). */
314
320
  placement?: 'after-symbol' | 'end' | 'symbol';
321
+ /** Stable visibility id (defaults to the title's slug). Row ids scope under it. */
322
+ id?: string;
315
323
  }
316
324
 
317
325
  /**
@@ -331,6 +339,7 @@ declare class NativeRenderer implements IChartRenderer {
331
339
  private plot;
332
340
  private toolbarGutter;
333
341
  private mountContainer;
342
+ private backdropCanvas;
334
343
  private dataCanvas;
335
344
  private volumeCanvas;
336
345
  private vpvrCanvas;
@@ -339,6 +348,7 @@ declare class NativeRenderer implements IChartRenderer {
339
348
  private cursorCanvas;
340
349
  private overlayRoot;
341
350
  private userDrawings;
351
+ private readonly backdropRenderer;
342
352
  private readonly volumeRenderer;
343
353
  /** SDK renderer layers instantiated at mount ({@link registerRendererLayer}). */
344
354
  private extLayers;
@@ -428,6 +438,9 @@ declare class NativeRenderer implements IChartRenderer {
428
438
  private readonly paneActionCbs;
429
439
  private hoverLogical;
430
440
  private settingsDialog;
441
+ /** The host's visibility policy (setting ids hidden from the dialog) — instance
442
+ * state, never part of the persisted config. */
443
+ private hiddenSettings;
431
444
  /** Where modal dialogs mount — a HOST override (multi-chart shells pass their root
432
445
  * so dialogs center globally instead of clipping inside one cell). Null = the plot. */
433
446
  private dialogHost;
@@ -676,6 +689,10 @@ declare class NativeRenderer implements IChartRenderer {
676
689
  * whenever the latest bars are off-screen (touch has no cursor proximity). */
677
690
  setLayoutMode(mode: 'mobile' | 'desktop'): void;
678
691
  setSettingsSections(sections: HostSettingsSection[]): void;
692
+ setSettingsVisibility(policy: {
693
+ hidden?: readonly string[];
694
+ }): void;
695
+ listSettingsIds(): string[];
679
696
  onChartTypeSettingsChange(cb: (typeId: string, values: Record<string, unknown>) => void): Unsubscribe;
680
697
  onConfigChanged(cb: () => void): Unsubscribe;
681
698
  onThemeSelect(cb: (theme: ThemeName) => void): Unsubscribe;
@@ -872,8 +889,8 @@ declare class NativeRenderer implements IChartRenderer {
872
889
  * owned layers by their owner's z key against the candles' (an indicator restacked
873
890
  * below the candles takes its layer canvas along), unowned by declared placement. */
874
891
  private orderedLayerCanvases;
875
- /** The full canvas pile in paint order (layers + data/volume/vpvr) — what the DOM
876
- * stacking and the screenshot compositor must both follow. */
892
+ /** The full canvas pile in paint order (backdrop + layers + data/volume/vpvr) — what
893
+ * the DOM stacking and the screenshot compositor must both follow. */
877
894
  private canvasPile;
878
895
  /** Re-slot the SDK layer canvases in the plot when the computed order changed (a z
879
896
  * write, a restored config, an indicator mount/remove/restack). Runs at the top of
@@ -1142,8 +1159,12 @@ declare class BarStore {
1142
1159
  /** Earliest bar-open time fetched for a series — what the cache actually covers. */
1143
1160
  private readonly coveredFrom;
1144
1161
  private currentSymbol?;
1145
- /** Symbols protected from the current-symbol purge (multi-chart cells). Empty = legacy single-chart behavior. */
1162
+ /** Symbols protected from the current-symbol purge (multi-chart cells) the UNION
1163
+ * of every owner's declaration. Empty = legacy single-chart behavior. */
1146
1164
  private retained;
1165
+ /** Per-owner declarations behind {@link retained} — several shells on one page must
1166
+ * not clobber (or, on destroy, evict) each other's protected symbols. */
1167
+ private readonly retainedByOwner;
1147
1168
  get(key: string): OHLCV[] | undefined;
1148
1169
  /**
1149
1170
  * Record that the series is covered back to `from`. Tracks the EARLIEST such
@@ -1168,13 +1189,16 @@ declare class BarStore {
1168
1189
  * Declare the set of symbols a multi-chart workspace is displaying (CANONICAL
1169
1190
  * tickers, post-registry resolution — `chart.data.resolve(sym).ticker`). These
1170
1191
  * survive every {@link retainSymbol} purge, so cells loading different symbols
1171
- * stop evicting each other's history. Replaces the previous set and purges
1172
- * anything now outside `symbols {currentSymbol}` immediately. An empty set
1173
- * restores the legacy single-chart policy. Note: SECONDARY symbols a script
1174
- * fetches (`request.security` cross-symbol) are not in this set and still drop
1175
- * on cross-cell loads correctness is unaffected (they re-fetch on demand).
1192
+ * stop evicting each other's history. Replaces the previous set FOR THAT OWNER
1193
+ * (pass the shell instance as `owner`; several shells on one page keep separate
1194
+ * declarations, the effective set is their union) and purges anything now outside
1195
+ * the union {currentSymbol} immediately. An empty set releases the owner's
1196
+ * declaration with no owners left, the legacy single-chart policy is back.
1197
+ * Note: SECONDARY symbols a script fetches (`request.security` cross-symbol) are
1198
+ * not in this set and still drop on cross-cell loads — correctness is unaffected
1199
+ * (they re-fetch on demand).
1176
1200
  */
1177
- retain(symbols: ReadonlySet<string>): void;
1201
+ retain(symbols: ReadonlySet<string>, owner?: unknown): void;
1178
1202
  /** Drop every series whose symbol is neither `current` nor retained. */
1179
1203
  private purgeOutside;
1180
1204
  clear(): void;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { stableSeriesId } from './chunk-AOGZBKUE.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-FQBT4NFM.js';
3
- export { DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_WIDTH, Drawing, chartType, chartTypes, clampPanelWidth, createDrawing, deserializeDrawing, drawingTypes, getDrawingType, getNativeIndicator, inputVisible, legendActions, nativeIndicatorDescriptors, nativeIndicatorTypes, normalizeSettingsRow, registerChartType, registerDefaultEngine, registerDrawingType, registerLegendAction, registerNativeIndicator, registerRendererDefaults, registerRendererLayer, registerSidePanel, registerWidgetAction, registerWidgetAttachment, rendererDefaults, rendererLayers, resolveEngines, settingsRowValueKeys, sidePanels, tickerModifierIds, unregisterChartType, unregisterDefaultEngine, unregisterLegendAction, unregisterNativeIndicator, unregisterRendererDefaults, unregisterRendererLayer, unregisterSidePanel, unregisterWidgetAction, unregisterWidgetAttachment, widgetActions, widgetAttachments } from './chunk-BEJ57HP4.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-JQFO2WMU.js';
3
+ export { DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_WIDTH, Drawing, chartType, chartTypes, clampPanelWidth, createDrawing, deserializeDrawing, drawingTypes, getDrawingType, getNativeIndicator, inputVisible, legendActions, nativeIndicatorDescriptors, nativeIndicatorTypes, normalizeSettingsRow, registerChartType, registerDefaultEngine, registerDrawingType, registerLegendAction, registerNativeIndicator, registerRendererDefaults, registerRendererLayer, registerSidePanel, registerStatePersistence, registerWidgetAction, registerWidgetAttachment, rendererDefaults, rendererLayers, resolveEngines, settingsRowValueKeys, sidePanels, statePersistenceHandlers, tickerModifierIds, unregisterChartType, unregisterDefaultEngine, unregisterLegendAction, unregisterNativeIndicator, unregisterRendererDefaults, unregisterRendererLayer, unregisterSidePanel, unregisterStatePersistence, unregisterWidgetAction, unregisterWidgetAttachment, widgetActions, widgetAttachments } from './chunk-OEUGUXL7.js';
4
4
  import './chunk-OICPLNU7.js';
5
5
  export { ACCENT, ACCENT_BRIGHT, BEARISH, BULLISH, CATEGORICAL, 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-PN5KWFZ4.js';
@@ -434,6 +434,17 @@ interface IndicatorMeta {
434
434
  }
435
435
  /** Where an indicator's plots are placed. */
436
436
  type PaneHint = 'price' | 'new';
437
+ /** One label of a categorical pane axis: `frac` is the label's center as a fraction of
438
+ * the pane's height (0 = top, 1 = bottom). */
439
+ interface PaneAxisBand {
440
+ frac: number;
441
+ label: string;
442
+ }
443
+ /** A pane's value-axis override (see {@link IndicatorModel.paneAxis}): `'none'` = a
444
+ * blank axis; band labels = a categorical axis, one label per content band/row. */
445
+ type PaneAxis = 'none' | {
446
+ bands: PaneAxisBand[];
447
+ };
437
448
  /**
438
449
  * Everything one `addIndicator()` produces — the unit the orchestrator mounts
439
450
  * on the renderer. Renderer-neutral.
@@ -458,6 +469,17 @@ interface IndicatorModel {
458
469
  native?: {
459
470
  type: string;
460
471
  };
472
+ /**
473
+ * Value-axis override for the pane this indicator OWNS — declared by content that is
474
+ * not value-mapped (e.g. a bespoke renderer layer painting in pixel bands), where a
475
+ * derived price scale would label meaningless numbers. `'none'` leaves the axis blank;
476
+ * band labels place text at fractions of the pane's height (a categorical axis — one
477
+ * label per band/row, e.g. `frac: 0.25` centers a label in the top quarter). Either way
478
+ * the renderer draws no price ticks, no horizontal gridlines, and no crosshair value
479
+ * chip in that pane. Only honored while such indicators are the pane's sole content —
480
+ * any real series merged into the pane takes the scale (and its labels) back over.
481
+ */
482
+ paneAxis?: PaneAxis;
461
483
  /** Resolved pane id, filled in by the orchestrator after routing. */
462
484
  paneId?: string;
463
485
  /**
@@ -1417,11 +1439,22 @@ interface IChartRenderer {
1417
1439
  /** A chart type's SDK settings changed (dialog edit / applyConfig) — the core forwards
1418
1440
  * them to the type's data engine. */
1419
1441
  onChartTypeSettingsChange?(cb: (typeId: string, values: Record<string, unknown>) => void): Unsubscribe;
1420
- /** Host-app settings tabs (callback rows) shown by the renderer's settings dialog. */
1442
+ /** Host-app settings tabs (callback rows) shown by the renderer's settings dialog.
1443
+ * `id` names a section for the visibility policy (defaults to the title's slug). */
1421
1444
  setSettingsSections?(sections: ReadonlyArray<{
1422
1445
  title: string;
1423
1446
  rows: readonly unknown[];
1447
+ id?: string;
1424
1448
  }>): void;
1449
+ /** Settings-dialog visibility policy: `hidden` lists setting ids to hide (a tab, a
1450
+ * group, or a row — subtree semantics). Presentation-only: hidden values keep
1451
+ * being stored and applied. Optional — a renderer without a settings dialog omits it. */
1452
+ setSettingsVisibility?(policy: {
1453
+ hidden?: readonly string[];
1454
+ }): void;
1455
+ /** Every addressable setting id of this chart (built-ins, chart-type sections,
1456
+ * host sections) — the discovery surface for the visibility policy. */
1457
+ listSettingsIds?(): string[];
1425
1458
  /**
1426
1459
  * The host shell's chrome size class. `'mobile'` asks the renderer's own chrome
1427
1460
  * (dialogs, toolbars, buttons) for its touch-first presentation — fullscreen
@@ -1562,6 +1595,19 @@ interface VelaOptions extends MarketConfig {
1562
1595
  * price pane, on their own scale (they never affect the price autoscale). Added
1563
1596
  * automatically on chart creation (native renderer) — pass `false` to opt out. */
1564
1597
  volume?: boolean;
1598
+ /** Settings-dialog visibility policy. Default: everything visible. `hidden` lists
1599
+ * setting ids to hide — a tab (`'canvas'`), a group (`'canvas.grid'`), or a single
1600
+ * row (`'canvas.grid.vertical'`); an id hides its whole subtree, and a tab with
1601
+ * nothing left disappears from the rail. Hiding is presentation-only: hidden
1602
+ * values keep being stored and applied. Enumerate the addressable ids of a live
1603
+ * chart with `chart.renderer.listSettingsIds()`; the catalog is documented in
1604
+ * docs/user/options.md. */
1605
+ settings?: SettingsVisibilityPolicy;
1606
+ }
1607
+ /** Settings-dialog visibility policy (see `VelaOptions.settings`). */
1608
+ interface SettingsVisibilityPolicy {
1609
+ /** Setting ids to hide — a tab, a group, or a row; an id hides its subtree. */
1610
+ hidden?: readonly string[];
1565
1611
  }
1566
1612
  /** Per-feature native-renderer animation toggles. */
1567
1613
  interface AnimationConfig {
@@ -1637,4 +1683,4 @@ interface AddIndicatorOptions {
1637
1683
  title?: string;
1638
1684
  }
1639
1685
 
1640
- export { type DrawingLabel as $, type AxisLongPressEvent as A, type Background as B, type CrosshairEvent as C, Drawing as D, type BoxTextSize as E, type BoxVAlign as F, type CandleBarColor as G, type CandleSeries as H, type IChartRenderer as I, type CandleStyle as J, type DataWindowGroup as K, type LineStyle as L, type MarketConfig as M, type NativeBackend as N, type OHLCV as O, type PriceStyle as P, type DataWindowOHLC as Q, type RendererCapabilities as R, type SerializedDrawing as S, type ThemeName as T, type Unsubscribe as U, type VisibleRangePreset as V, type DataWindowRow as W, type DirtyRange as X, type DrawingBox as Y, type DrawingExtend as Z, type DrawingIntent as _, type VisibleRange as a, type DrawingLine as a0, type DrawingLinefill as a1, type DrawingMode as a2, type DrawingPoint as a3, type DrawingPolyline as a4, type DrawingStyle as a5, type DrawingTable as a6, type DrawingText as a7, type DrawingXLoc as a8, type DrawingsOption as a9, type SeriesPoint as aA, type SeriesSpec as aB, type SeriesValueDelta as aC, type SettingsField as aD, type SettingsSchema as aE, type TableCell as aF, type TableMerge as aG, type TablePosition as aH, type ToolbarGroupConfig as aI, type TradeExecution as aJ, type ValuePatch as aK, buildToolbar as aL, defaultToolbar as aM, inputVisible as aN, type PaneInfo as aO, type Fill as aa, type FillGradientStop as ab, type IndicatorMeta as ac, type InputCondition as ad, type InputSchema as ae, type InputType as af, type InputWhen as ag, type LabelStyle as ah, type LabelYLoc as ai, type LineLikeKind as aj, type LineLikeSeries as ak, type LineLikeStyle as al, type MarkerPoint as am, type MarkerSeries as an, type MarketSnapshot as ao, type MarketSwitch as ap, type PaneHint as aq, type PaneKind as ar, type PolylinePoint as as, type PriceLine as at, type Projector as au, type ProviderName as av, type RendererConstructor as aw, type Scene as ax, type SchemaPatch as ay, type SeriesKind as az, type VelaOptions as b, type VelaTheme as c, type MarketSession as d, type RendererDisplayOptions as e, type IndicatorRenderHandle as f, type IndicatorStatus as g, type Pane as h, type PaneAction as i, type MoveTarget as j, type IndicatorModel as k, type ScenePatch as l, type InputValue as m, type SymbolPickerFn as n, type LegendActionView as o, type InputChangeEvent as p, type ClickEvent as q, type DataWindowReadout as r, type IDrawingsRendererPort as s, type Millis as t, type SnapMode as u, type DrawingTypeKey as v, type ToolbarDefinition as w, type AddIndicatorOptions as x, type BoxFontFamily as y, type BoxHAlign as z };
1686
+ export { type DrawingLabel as $, type AxisLongPressEvent as A, type Background as B, type CrosshairEvent as C, Drawing as D, type BoxTextSize as E, type BoxVAlign as F, type CandleBarColor as G, type CandleSeries as H, type IChartRenderer as I, type CandleStyle as J, type DataWindowGroup as K, type LineStyle as L, type MarketConfig as M, type NativeBackend as N, type OHLCV as O, type PriceStyle as P, type DataWindowOHLC as Q, type RendererCapabilities as R, type SerializedDrawing as S, type ThemeName as T, type Unsubscribe as U, type VisibleRangePreset as V, type DataWindowRow as W, type DirtyRange as X, type DrawingBox as Y, type DrawingExtend as Z, type DrawingIntent as _, type VisibleRange as a, type DrawingLine as a0, type DrawingLinefill as a1, type DrawingMode as a2, type DrawingPoint as a3, type DrawingPolyline as a4, type DrawingStyle as a5, type DrawingTable as a6, type DrawingText as a7, type DrawingXLoc as a8, type DrawingsOption as a9, type SchemaPatch as aA, type SeriesKind as aB, type SeriesPoint as aC, type SeriesSpec as aD, type SeriesValueDelta as aE, type SettingsField as aF, type SettingsSchema as aG, type SettingsVisibilityPolicy as aH, type TableCell as aI, type TableMerge as aJ, type TablePosition as aK, type ToolbarGroupConfig as aL, type TradeExecution as aM, type ValuePatch as aN, buildToolbar as aO, defaultToolbar as aP, inputVisible as aQ, type PaneInfo as aR, type Fill as aa, type FillGradientStop as ab, type IndicatorMeta as ac, type InputCondition as ad, type InputSchema as ae, type InputType as af, type InputWhen as ag, type LabelStyle as ah, type LabelYLoc as ai, type LineLikeKind as aj, type LineLikeSeries as ak, type LineLikeStyle as al, type MarkerPoint as am, type MarkerSeries as an, type MarketSnapshot as ao, type MarketSwitch as ap, type PaneAxis as aq, type PaneAxisBand as ar, type PaneHint as as, type PaneKind as at, type PolylinePoint as au, type PriceLine as av, type Projector as aw, type ProviderName as ax, type RendererConstructor as ay, type Scene as az, type VelaOptions as b, type VelaTheme as c, type MarketSession as d, type RendererDisplayOptions as e, type IndicatorRenderHandle as f, type IndicatorStatus as g, type Pane as h, type PaneAction as i, type MoveTarget as j, type IndicatorModel as k, type ScenePatch as l, type InputValue as m, type SymbolPickerFn as n, type LegendActionView as o, type InputChangeEvent as p, type ClickEvent as q, type DataWindowReadout as r, type IDrawingsRendererPort as s, type Millis as t, type SnapMode as u, type DrawingTypeKey as v, type ToolbarDefinition as w, type AddIndicatorOptions as x, type BoxFontFamily as y, type BoxHAlign as z };
@@ -434,6 +434,17 @@ interface IndicatorMeta {
434
434
  }
435
435
  /** Where an indicator's plots are placed. */
436
436
  type PaneHint = 'price' | 'new';
437
+ /** One label of a categorical pane axis: `frac` is the label's center as a fraction of
438
+ * the pane's height (0 = top, 1 = bottom). */
439
+ interface PaneAxisBand {
440
+ frac: number;
441
+ label: string;
442
+ }
443
+ /** A pane's value-axis override (see {@link IndicatorModel.paneAxis}): `'none'` = a
444
+ * blank axis; band labels = a categorical axis, one label per content band/row. */
445
+ type PaneAxis = 'none' | {
446
+ bands: PaneAxisBand[];
447
+ };
437
448
  /**
438
449
  * Everything one `addIndicator()` produces — the unit the orchestrator mounts
439
450
  * on the renderer. Renderer-neutral.
@@ -458,6 +469,17 @@ interface IndicatorModel {
458
469
  native?: {
459
470
  type: string;
460
471
  };
472
+ /**
473
+ * Value-axis override for the pane this indicator OWNS — declared by content that is
474
+ * not value-mapped (e.g. a bespoke renderer layer painting in pixel bands), where a
475
+ * derived price scale would label meaningless numbers. `'none'` leaves the axis blank;
476
+ * band labels place text at fractions of the pane's height (a categorical axis — one
477
+ * label per band/row, e.g. `frac: 0.25` centers a label in the top quarter). Either way
478
+ * the renderer draws no price ticks, no horizontal gridlines, and no crosshair value
479
+ * chip in that pane. Only honored while such indicators are the pane's sole content —
480
+ * any real series merged into the pane takes the scale (and its labels) back over.
481
+ */
482
+ paneAxis?: PaneAxis;
461
483
  /** Resolved pane id, filled in by the orchestrator after routing. */
462
484
  paneId?: string;
463
485
  /**
@@ -1417,11 +1439,22 @@ interface IChartRenderer {
1417
1439
  /** A chart type's SDK settings changed (dialog edit / applyConfig) — the core forwards
1418
1440
  * them to the type's data engine. */
1419
1441
  onChartTypeSettingsChange?(cb: (typeId: string, values: Record<string, unknown>) => void): Unsubscribe;
1420
- /** Host-app settings tabs (callback rows) shown by the renderer's settings dialog. */
1442
+ /** Host-app settings tabs (callback rows) shown by the renderer's settings dialog.
1443
+ * `id` names a section for the visibility policy (defaults to the title's slug). */
1421
1444
  setSettingsSections?(sections: ReadonlyArray<{
1422
1445
  title: string;
1423
1446
  rows: readonly unknown[];
1447
+ id?: string;
1424
1448
  }>): void;
1449
+ /** Settings-dialog visibility policy: `hidden` lists setting ids to hide (a tab, a
1450
+ * group, or a row — subtree semantics). Presentation-only: hidden values keep
1451
+ * being stored and applied. Optional — a renderer without a settings dialog omits it. */
1452
+ setSettingsVisibility?(policy: {
1453
+ hidden?: readonly string[];
1454
+ }): void;
1455
+ /** Every addressable setting id of this chart (built-ins, chart-type sections,
1456
+ * host sections) — the discovery surface for the visibility policy. */
1457
+ listSettingsIds?(): string[];
1425
1458
  /**
1426
1459
  * The host shell's chrome size class. `'mobile'` asks the renderer's own chrome
1427
1460
  * (dialogs, toolbars, buttons) for its touch-first presentation — fullscreen
@@ -1562,6 +1595,19 @@ interface VelaOptions extends MarketConfig {
1562
1595
  * price pane, on their own scale (they never affect the price autoscale). Added
1563
1596
  * automatically on chart creation (native renderer) — pass `false` to opt out. */
1564
1597
  volume?: boolean;
1598
+ /** Settings-dialog visibility policy. Default: everything visible. `hidden` lists
1599
+ * setting ids to hide — a tab (`'canvas'`), a group (`'canvas.grid'`), or a single
1600
+ * row (`'canvas.grid.vertical'`); an id hides its whole subtree, and a tab with
1601
+ * nothing left disappears from the rail. Hiding is presentation-only: hidden
1602
+ * values keep being stored and applied. Enumerate the addressable ids of a live
1603
+ * chart with `chart.renderer.listSettingsIds()`; the catalog is documented in
1604
+ * docs/user/options.md. */
1605
+ settings?: SettingsVisibilityPolicy;
1606
+ }
1607
+ /** Settings-dialog visibility policy (see `VelaOptions.settings`). */
1608
+ interface SettingsVisibilityPolicy {
1609
+ /** Setting ids to hide — a tab, a group, or a row; an id hides its subtree. */
1610
+ hidden?: readonly string[];
1565
1611
  }
1566
1612
  /** Per-feature native-renderer animation toggles. */
1567
1613
  interface AnimationConfig {
@@ -1637,4 +1683,4 @@ interface AddIndicatorOptions {
1637
1683
  title?: string;
1638
1684
  }
1639
1685
 
1640
- export { type DrawingLabel as $, type AxisLongPressEvent as A, type Background as B, type CrosshairEvent as C, Drawing as D, type BoxTextSize as E, type BoxVAlign as F, type CandleBarColor as G, type CandleSeries as H, type IChartRenderer as I, type CandleStyle as J, type DataWindowGroup as K, type LineStyle as L, type MarketConfig as M, type NativeBackend as N, type OHLCV as O, type PriceStyle as P, type DataWindowOHLC as Q, type RendererCapabilities as R, type SerializedDrawing as S, type ThemeName as T, type Unsubscribe as U, type VisibleRangePreset as V, type DataWindowRow as W, type DirtyRange as X, type DrawingBox as Y, type DrawingExtend as Z, type DrawingIntent as _, type VisibleRange as a, type DrawingLine as a0, type DrawingLinefill as a1, type DrawingMode as a2, type DrawingPoint as a3, type DrawingPolyline as a4, type DrawingStyle as a5, type DrawingTable as a6, type DrawingText as a7, type DrawingXLoc as a8, type DrawingsOption as a9, type SeriesPoint as aA, type SeriesSpec as aB, type SeriesValueDelta as aC, type SettingsField as aD, type SettingsSchema as aE, type TableCell as aF, type TableMerge as aG, type TablePosition as aH, type ToolbarGroupConfig as aI, type TradeExecution as aJ, type ValuePatch as aK, buildToolbar as aL, defaultToolbar as aM, inputVisible as aN, type PaneInfo as aO, type Fill as aa, type FillGradientStop as ab, type IndicatorMeta as ac, type InputCondition as ad, type InputSchema as ae, type InputType as af, type InputWhen as ag, type LabelStyle as ah, type LabelYLoc as ai, type LineLikeKind as aj, type LineLikeSeries as ak, type LineLikeStyle as al, type MarkerPoint as am, type MarkerSeries as an, type MarketSnapshot as ao, type MarketSwitch as ap, type PaneHint as aq, type PaneKind as ar, type PolylinePoint as as, type PriceLine as at, type Projector as au, type ProviderName as av, type RendererConstructor as aw, type Scene as ax, type SchemaPatch as ay, type SeriesKind as az, type VelaOptions as b, type VelaTheme as c, type MarketSession as d, type RendererDisplayOptions as e, type IndicatorRenderHandle as f, type IndicatorStatus as g, type Pane as h, type PaneAction as i, type MoveTarget as j, type IndicatorModel as k, type ScenePatch as l, type InputValue as m, type SymbolPickerFn as n, type LegendActionView as o, type InputChangeEvent as p, type ClickEvent as q, type DataWindowReadout as r, type IDrawingsRendererPort as s, type Millis as t, type SnapMode as u, type DrawingTypeKey as v, type ToolbarDefinition as w, type AddIndicatorOptions as x, type BoxFontFamily as y, type BoxHAlign as z };
1686
+ export { type DrawingLabel as $, type AxisLongPressEvent as A, type Background as B, type CrosshairEvent as C, Drawing as D, type BoxTextSize as E, type BoxVAlign as F, type CandleBarColor as G, type CandleSeries as H, type IChartRenderer as I, type CandleStyle as J, type DataWindowGroup as K, type LineStyle as L, type MarketConfig as M, type NativeBackend as N, type OHLCV as O, type PriceStyle as P, type DataWindowOHLC as Q, type RendererCapabilities as R, type SerializedDrawing as S, type ThemeName as T, type Unsubscribe as U, type VisibleRangePreset as V, type DataWindowRow as W, type DirtyRange as X, type DrawingBox as Y, type DrawingExtend as Z, type DrawingIntent as _, type VisibleRange as a, type DrawingLine as a0, type DrawingLinefill as a1, type DrawingMode as a2, type DrawingPoint as a3, type DrawingPolyline as a4, type DrawingStyle as a5, type DrawingTable as a6, type DrawingText as a7, type DrawingXLoc as a8, type DrawingsOption as a9, type SchemaPatch as aA, type SeriesKind as aB, type SeriesPoint as aC, type SeriesSpec as aD, type SeriesValueDelta as aE, type SettingsField as aF, type SettingsSchema as aG, type SettingsVisibilityPolicy as aH, type TableCell as aI, type TableMerge as aJ, type TablePosition as aK, type ToolbarGroupConfig as aL, type TradeExecution as aM, type ValuePatch as aN, buildToolbar as aO, defaultToolbar as aP, inputVisible as aQ, type PaneInfo as aR, type Fill as aa, type FillGradientStop as ab, type IndicatorMeta as ac, type InputCondition as ad, type InputSchema as ae, type InputType as af, type InputWhen as ag, type LabelStyle as ah, type LabelYLoc as ai, type LineLikeKind as aj, type LineLikeSeries as ak, type LineLikeStyle as al, type MarkerPoint as am, type MarkerSeries as an, type MarketSnapshot as ao, type MarketSwitch as ap, type PaneAxis as aq, type PaneAxisBand as ar, type PaneHint as as, type PaneKind as at, type PolylinePoint as au, type PriceLine as av, type Projector as aw, type ProviderName as ax, type RendererConstructor as ay, type Scene as az, type VelaOptions as b, type VelaTheme as c, type MarketSession as d, type RendererDisplayOptions as e, type IndicatorRenderHandle as f, type IndicatorStatus as g, type Pane as h, type PaneAction as i, type MoveTarget as j, type IndicatorModel as k, type ScenePatch as l, type InputValue as m, type SymbolPickerFn as n, type LegendActionView as o, type InputChangeEvent as p, type ClickEvent as q, type DataWindowReadout as r, type IDrawingsRendererPort as s, type Millis as t, type SnapMode as u, type DrawingTypeKey as v, type ToolbarDefinition as w, type AddIndicatorOptions as x, type BoxFontFamily as y, type BoxHAlign as z };
@@ -1,9 +1,9 @@
1
- import { v as DrawingTypeKey, a5 as DrawingStyle, S as SerializedDrawing, D as Drawing, az as SeriesKind, O as OHLCV, c as VelaTheme } from './options-YdiaaVjt.cjs';
2
- import { b as DataControl } from './contributions-2bEmCF9S.cjs';
1
+ import { v as DrawingTypeKey, a5 as DrawingStyle, S as SerializedDrawing, D as Drawing, aB as SeriesKind, O as OHLCV, c as VelaTheme } from './options-BaVTMXaO.cjs';
2
+ import { c as DataControl } from './contributions-DNMqrAuw.cjs';
3
3
  import './side-panel-CT9ZwIGz.cjs';
4
4
  import './icons-BZYbJXSV.cjs';
5
5
  import './keymap-CGOz5F5f.cjs';
6
- import './DataProvider-DrN7ZIou.cjs';
6
+ import './DataProvider-DDUYw2qP.cjs';
7
7
 
8
8
  /** What a drawing type contributes to the toolbar + factory (renderer-neutral). */
9
9
  interface DrawingTypeMeta {
@@ -643,7 +643,9 @@ interface RendererLayerDefinition {
643
643
  /** Stacking: `'below-data'` = behind the candles (reveal-under styles); `'above-data'` =
644
644
  * over the candles, under the chrome/axes. Default `'above-data'`. A layer owned by a
645
645
  * native indicator (its type equals the layer id) follows that indicator's z key in
646
- * the pane stacking instead (`seriesOrder` / the object tree), mounting in front. */
646
+ * the pane stacking instead (`seriesOrder` / the object tree), mounting in front.
647
+ * Either way the gridlines stay BELOW every layer (they live on the backdrop canvas
648
+ * at the bottom of the pile) — no stacking puts a layer behind the grid. */
647
649
  placement?: 'below-data' | 'above-data';
648
650
  /** Repaint this layer when the pointer moves (hover hit-testing UIs). Off by default:
649
651
  * pointer moves normally repaint only the crosshair overlay, not the layers. */
@@ -1,9 +1,9 @@
1
- import { v as DrawingTypeKey, a5 as DrawingStyle, S as SerializedDrawing, D as Drawing, az as SeriesKind, O as OHLCV, c as VelaTheme } from './options-YdiaaVjt.js';
2
- import { b as DataControl } from './contributions-DatoAzMx.js';
1
+ import { v as DrawingTypeKey, a5 as DrawingStyle, S as SerializedDrawing, D as Drawing, aB as SeriesKind, O as OHLCV, c as VelaTheme } from './options-BaVTMXaO.js';
2
+ import { c as DataControl } from './contributions-BqCIsbaP.js';
3
3
  import './side-panel-CT9ZwIGz.js';
4
4
  import './icons-BZYbJXSV.js';
5
5
  import './keymap-CGOz5F5f.js';
6
- import './DataProvider-BmHkcwvJ.js';
6
+ import './DataProvider-JJq7M2it.js';
7
7
 
8
8
  /** What a drawing type contributes to the toolbar + factory (renderer-neutral). */
9
9
  interface DrawingTypeMeta {
@@ -643,7 +643,9 @@ interface RendererLayerDefinition {
643
643
  /** Stacking: `'below-data'` = behind the candles (reveal-under styles); `'above-data'` =
644
644
  * over the candles, under the chrome/axes. Default `'above-data'`. A layer owned by a
645
645
  * native indicator (its type equals the layer id) follows that indicator's z key in
646
- * the pane stacking instead (`seriesOrder` / the object tree), mounting in front. */
646
+ * the pane stacking instead (`seriesOrder` / the object tree), mounting in front.
647
+ * Either way the gridlines stay BELOW every layer (they live on the backdrop canvas
648
+ * at the bottom of the pile) — no stacking puts a layer behind the grid. */
647
649
  placement?: 'below-data' | 'above-data';
648
650
  /** Repaint this layer when the pointer moves (hover hit-testing UIs). Off by default:
649
651
  * pointer moves normally repaint only the crosshair overlay, not the layers. */