@luxalgo/vela 0.6.14 → 0.6.16

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 (51) hide show
  1. package/NOTICE +28 -28
  2. package/README.md +9 -2
  3. package/dist/{DataProvider-DhzstpQb.d.ts → DataProvider-XLdJB86x.d.ts} +1 -1
  4. package/dist/{DataProvider-DlMtrwqM.d.cts → DataProvider-xH2VBcFT.d.cts} +1 -1
  5. package/dist/{chunk-KG4YT3TI.js → chunk-6DPAYEGO.js} +8 -1
  6. package/dist/chunk-FE6V2YAQ.js +1 -0
  7. package/dist/{chunk-N2Q5EEFH.js → chunk-GIJYO4LO.js} +2596 -242
  8. package/dist/{chunk-F4M24ANM.js → chunk-I77F2SVE.js} +80 -4
  9. package/dist/{chunk-MHY7MVXH.js → chunk-MGU3USTP.js} +29 -16
  10. package/dist/{chunk-G77Y7LK2.js → chunk-Q3TFJNJW.js} +2 -2
  11. package/dist/{chunk-64TF7JAJ.js → chunk-SEOO6YG7.js} +408 -184
  12. package/dist/{contributions-lPojhTxI.d.cts → contributions-BEkxwA5F.d.cts} +40 -13
  13. package/dist/{contributions-37nni40G.d.ts → contributions-CoAX7_SF.d.ts} +40 -13
  14. package/dist/index.cjs +2755 -380
  15. package/dist/index.d.cts +20 -12
  16. package/dist/index.d.ts +20 -12
  17. package/dist/index.js +5 -5
  18. package/dist/{options-CYS5Wmlx.d.ts → options-bdSAtp7y.d.cts} +5 -0
  19. package/dist/{options-CYS5Wmlx.d.cts → options-bdSAtp7y.d.ts} +5 -0
  20. package/dist/{plugin-DHyaoMjW.d.ts → plugin-CNUgbRNq.d.ts} +11 -8
  21. package/dist/{plugin-Cwikpz1m.d.cts → plugin-Dxyq35Zf.d.cts} +11 -8
  22. package/dist/plugin.cjs +8 -0
  23. package/dist/plugin.d.cts +5 -5
  24. package/dist/plugin.d.ts +5 -5
  25. package/dist/plugin.js +3 -3
  26. package/dist/providers/binance.d.cts +2 -2
  27. package/dist/providers/binance.d.ts +2 -2
  28. package/dist/providers/coinbase.d.cts +2 -2
  29. package/dist/providers/coinbase.d.ts +2 -2
  30. package/dist/providers/hyperliquid.d.cts +2 -2
  31. package/dist/providers/hyperliquid.d.ts +2 -2
  32. package/dist/{side-panel-CT9ZwIGz.d.cts → side-panel-HF0IAzwf.d.cts} +17 -0
  33. package/dist/{side-panel-CT9ZwIGz.d.ts → side-panel-HF0IAzwf.d.ts} +17 -0
  34. package/dist/{statusline-model-D-q_OOx9.d.ts → statusline-model-CbPza-Wc.d.cts} +6 -4
  35. package/dist/{statusline-model-CiJm-riV.d.cts → statusline-model-D7cWkw8A.d.ts} +6 -4
  36. package/dist/ui.cjs +34 -15
  37. package/dist/ui.d.cts +1 -1
  38. package/dist/ui.d.ts +1 -1
  39. package/dist/ui.js +3 -3
  40. package/dist/vela.global.js +2675 -300
  41. package/dist/vela.global.min.js +58 -52
  42. package/dist/widget.cjs +3296 -622
  43. package/dist/widget.d.cts +15 -11
  44. package/dist/widget.d.ts +15 -11
  45. package/dist/widget.js +7 -7
  46. package/dist/workspace.cjs +3296 -622
  47. package/dist/workspace.d.cts +49 -19
  48. package/dist/workspace.d.ts +49 -19
  49. package/dist/workspace.js +6 -6
  50. package/package.json +1 -1
  51. package/dist/chunk-H26BEHF4.js +0 -7
@@ -1,9 +1,9 @@
1
- import { O as OHLCV, V as VisibleRangePreset, a as VisibleRange, b as VelaOptions, I as InputValue, c as VelaTheme, N as NativeBackend, d as MarketSession } from './options-CYS5Wmlx.cjs';
2
- import { S as SyncSetting, V as VelaStorage, C as CellState, W as WidgetHistory, R as ResolvedIndicator, a as StatuslinePart, b as RangePreset, T as TrackSizes, c as VelaShellOptions, d as SyncOptions, e as SyncKind, f as WorkspaceState } from './statusline-model-CiJm-riV.cjs';
3
- export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-CiJm-riV.cjs';
1
+ import { O as OHLCV, V as VisibleRangePreset, a as VisibleRange, b as VelaOptions, I as InputValue, c as VelaTheme, N as NativeBackend, d as MarketSession } from './options-bdSAtp7y.cjs';
2
+ import { S as SyncSetting, V as VelaStorage, C as CellState, W as WidgetHistory, R as ResolvedIndicator, a as StatuslinePart, b as RangePreset, T as TrackSizes, c as VelaShellOptions, d as SyncOptions, e as SyncKind, f as WorkspaceState } from './statusline-model-CbPza-Wc.cjs';
3
+ export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-CbPza-Wc.cjs';
4
4
  import { K as KeymapManager } from './keymap-CGOz5F5f.cjs';
5
- import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-lPojhTxI.cjs';
6
- import { M as MarketDataFeed } from './DataProvider-DlMtrwqM.cjs';
5
+ import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-BEkxwA5F.cjs';
6
+ import { M as MarketDataFeed } from './DataProvider-xH2VBcFT.cjs';
7
7
 
8
8
  /** The cells that follow `originId` under `setting` — PURE (never includes the origin). */
9
9
  declare function syncTargets(originId: string, setting: SyncSetting | undefined, cellIds: readonly string[]): string[];
@@ -161,6 +161,9 @@ declare class ChartCell {
161
161
  activeRangeId: string | null;
162
162
  /** Latched verdict of {@link sessionAvailable} (async metadata, sticky per symbol). */
163
163
  private sessionAvailableFlag;
164
+ /** Latched: the symbol's extended tape wraps midnight (an overnight roll market) —
165
+ * one extended-hours shading phase instead of the pre/post split. */
166
+ private sessionOvernightFlag;
164
167
  private inner;
165
168
  /** The live app theme — seeded from deps, updated on `theme:changed` (the base the
166
169
  * plot-overlay tokens re-derive from). */
@@ -168,7 +171,7 @@ declare class ChartCell {
168
171
  private readonly statusline;
169
172
  /** Keeps this cell's market badge on the symbol's real calendar (see {@link MarketStatusTracker}). */
170
173
  private readonly marketStatus;
171
- /** Keeps the pre/post-market shading on the symbol's real calendar (see {@link SessionShadingTracker}). */
174
+ /** Keeps the session shading on the symbol's real calendar (see {@link SessionShadingTracker}). */
172
175
  private readonly sessionShading;
173
176
  private readonly watermark;
174
177
  /** Bottom-center hover cluster, pinned to the price plot: drag handle, zoom in/out, maximize/restore, reset view. */
@@ -188,8 +191,8 @@ declare class ChartCell {
188
191
  /** Volume intent: the seed's ledger, else the workspace `volume` option — a
189
192
  * rehydrated ledger overwrites it (see {@link applyIndicatorLedger}). */
190
193
  private volumeIntent;
191
- /** Sync mirror of the chart's present native types — the removal handler diffs
192
- * against it to identify (and record) whichever type was just removed. */
194
+ /** Sync mirror of the chart's native instances (id + type) — the removal handler
195
+ * looks the removed id up here to learn which type an undo must re-add. */
193
196
  private presentNatives;
194
197
  private rangeBars;
195
198
  private pendingRange;
@@ -238,10 +241,11 @@ declare class ChartCell {
238
241
  /**
239
242
  * (Re)contribute this cell's settings-dialog sections: status line parts, the
240
243
  * per-cell fetch depth, the watermark toggle, and — only while the cell's symbol
241
- * HAS sessions — the Trading session group (RTH/ETH switch + the pre/post-market
242
- * shading colors) inside the Symbol tab. Bars/watermark/titles are persistable
243
- * cell state; a depth-only reload is silent, so mark dirty here. Re-run whenever
244
- * a gate changes (the dialog reads the sections on open).
244
+ * HAS sessions — the Trading session group (RTH/ETH switch + the session shading
245
+ * colors: pre/post-market on day-split tapes, one extended-hours swatch on
246
+ * overnight roll markets) inside the Symbol tab. Bars/watermark/titles are
247
+ * persistable cell state; a depth-only reload is silent, so mark dirty here.
248
+ * Re-run whenever a gate changes (the dialog reads the sections on open).
245
249
  */
246
250
  private pushSettingsSections;
247
251
  /** Show/hide this cell's symbol watermark (persisted per cell). */
@@ -264,7 +268,7 @@ declare class ChartCell {
264
268
  get symbol(): string;
265
269
  get timeframe(): string;
266
270
  get priceStyle(): string;
267
- /** Manifest instances + present natives — the topbar indicator count. */
271
+ /** Manifest instances + native instances — the topbar indicator count. */
268
272
  get indicatorCount(): number;
269
273
  /** Switch this cell's market in place (the chart instance survives). The projection
270
274
  * is OPTIMISTIC — labels and chrome show the pick before the bars load; it follows
@@ -297,6 +301,8 @@ declare class ChartCell {
297
301
  setControlsSuspended(on: boolean): void;
298
302
  /** Make this cell the active one and put keyboard focus on its chart surface. */
299
303
  focus(): void;
304
+ /** Raster of this cell's chart (same pixels as the PNG download), or null. */
305
+ screenshotCanvas(): HTMLCanvasElement | null;
300
306
  /** Download this cell's chart as a PNG (named after its market). */
301
307
  downloadScreenshot(): void;
302
308
  /**
@@ -314,7 +320,13 @@ declare class ChartCell {
314
320
  * undo timeline.
315
321
  */
316
322
  private applyIndicatorLedger;
317
- /** The picker's library rows: supported natives first, then the manifest. */
323
+ /** The supported natives in picker order: A→Z by title — registration order follows
324
+ * the catalog's families, which is meaningless to the reader. This is the library
325
+ * index space the picker hands back, so `libraryRows` and `addFromLibrary` MUST both
326
+ * read it — indexing the unsorted catalog on add would land on a different study. */
327
+ private supportedNatives;
328
+ /** The picker's library rows: supported natives first (see {@link supportedNatives}),
329
+ * then the manifest in the host's own order. */
318
330
  libraryRows(): Array<{
319
331
  name: string;
320
332
  language?: string;
@@ -323,7 +335,7 @@ declare class ChartCell {
323
335
  nativeType?: string;
324
336
  beta?: boolean;
325
337
  }>;
326
- /** The picker's on-chart rows: present natives first, then live instances. */
338
+ /** The picker's on-chart rows: native instances first, then live script instances. */
327
339
  onChartRows(): Array<{
328
340
  name: string;
329
341
  language?: string;
@@ -332,7 +344,7 @@ declare class ChartCell {
332
344
  }>;
333
345
  /** Add by picker LIBRARY index (natives precede the manifest — mirrors libraryRows). */
334
346
  addFromLibrary(index: number): void;
335
- /** Remove by picker ON-CHART index (present natives precede instances). */
347
+ /** Remove by picker ON-CHART index (native instances precede script instances — mirrors onChartRows). */
336
348
  removeFromChart(index: number): void;
337
349
  /**
338
350
  * Add a script indicator through the PUBLIC seam (`ctx.addIndicator`) — same undo/
@@ -351,11 +363,16 @@ declare class ChartCell {
351
363
  }): void;
352
364
  private removeInstance;
353
365
  private dropInstance;
354
- /** Add a native indicator (single-instance per type — the core dedupes). */
366
+ /** Add a native indicator. A multi-instance type gets a fresh instance every time; a
367
+ * single-instance type already on the chart hands back its existing one — nothing
368
+ * changed, so nothing enters the undo timeline. */
355
369
  addNative(type: string): void;
356
370
  private removeNative;
357
- /** Sync mirror of the chart's present native types — the removal handler diffs
358
- * against it to identify (and record) whichever type was just removed. */
371
+ /** The chart's native instances, insertion order — the picker's on-chart rows and
372
+ * the removal index space (script instances follow them). */
373
+ private nativeHandles;
374
+ /** Sync mirror of the chart's native instances — the removal handler looks the
375
+ * removed id up here (the registry has already forgotten it) to record its type. */
359
376
  private syncPresentNatives;
360
377
  /** Refresh the native catalog (supported/present flags) for this cell's market. */
361
378
  refreshNativeCatalog(): void;
@@ -693,6 +710,19 @@ declare class VelaWorkspace {
693
710
  /** Shortcut for `active.chart` — the same habit as `widget.chart`. LIVE: read it at
694
711
  * the point of use; the durable identity to hold is the cell (or its id). */
695
712
  get chart(): Vela;
713
+ /**
714
+ * PNG data URL of the visible layout: every live cell in its grid slot, or the
715
+ * maximized cell alone. Same pixels the screenshot button downloads. A single
716
+ * visible cell returns that cell's own chart export (the one-chart case).
717
+ */
718
+ screenshot(): string | null;
719
+ /** Download {@link screenshot} as a PNG. A multi-cell layout is named
720
+ * `vela-layout.png`; one visible cell keeps `${symbol}-${timeframe}.png`. */
721
+ downloadScreenshot(): void;
722
+ /** Live cells the screenshot should include — maximized siblings are `hidden`. */
723
+ private shotCells;
724
+ /** Place every cell's raster onto one canvas the size of the grid. */
725
+ private compositeLayoutShot;
696
726
  setActiveCell(id: string | null): void;
697
727
  on<K extends keyof WorkspaceEventMap>(event: K, handler: (payload: WorkspaceEventMap[K]) => void): () => void;
698
728
  /** The context handed to contributed actions/attachments (rebuilt per invocation). */
@@ -1,9 +1,9 @@
1
- import { O as OHLCV, V as VisibleRangePreset, a as VisibleRange, b as VelaOptions, I as InputValue, c as VelaTheme, N as NativeBackend, d as MarketSession } from './options-CYS5Wmlx.js';
2
- import { S as SyncSetting, V as VelaStorage, C as CellState, W as WidgetHistory, R as ResolvedIndicator, a as StatuslinePart, b as RangePreset, T as TrackSizes, c as VelaShellOptions, d as SyncOptions, e as SyncKind, f as WorkspaceState } from './statusline-model-D-q_OOx9.js';
3
- export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-D-q_OOx9.js';
1
+ import { O as OHLCV, V as VisibleRangePreset, a as VisibleRange, b as VelaOptions, I as InputValue, c as VelaTheme, N as NativeBackend, d as MarketSession } from './options-bdSAtp7y.js';
2
+ import { S as SyncSetting, V as VelaStorage, C as CellState, W as WidgetHistory, R as ResolvedIndicator, a as StatuslinePart, b as RangePreset, T as TrackSizes, c as VelaShellOptions, d as SyncOptions, e as SyncKind, f as WorkspaceState } from './statusline-model-D7cWkw8A.js';
3
+ export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-D7cWkw8A.js';
4
4
  import { K as KeymapManager } from './keymap-CGOz5F5f.js';
5
- import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-37nni40G.js';
6
- import { M as MarketDataFeed } from './DataProvider-DhzstpQb.js';
5
+ import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-CoAX7_SF.js';
6
+ import { M as MarketDataFeed } from './DataProvider-XLdJB86x.js';
7
7
 
8
8
  /** The cells that follow `originId` under `setting` — PURE (never includes the origin). */
9
9
  declare function syncTargets(originId: string, setting: SyncSetting | undefined, cellIds: readonly string[]): string[];
@@ -161,6 +161,9 @@ declare class ChartCell {
161
161
  activeRangeId: string | null;
162
162
  /** Latched verdict of {@link sessionAvailable} (async metadata, sticky per symbol). */
163
163
  private sessionAvailableFlag;
164
+ /** Latched: the symbol's extended tape wraps midnight (an overnight roll market) —
165
+ * one extended-hours shading phase instead of the pre/post split. */
166
+ private sessionOvernightFlag;
164
167
  private inner;
165
168
  /** The live app theme — seeded from deps, updated on `theme:changed` (the base the
166
169
  * plot-overlay tokens re-derive from). */
@@ -168,7 +171,7 @@ declare class ChartCell {
168
171
  private readonly statusline;
169
172
  /** Keeps this cell's market badge on the symbol's real calendar (see {@link MarketStatusTracker}). */
170
173
  private readonly marketStatus;
171
- /** Keeps the pre/post-market shading on the symbol's real calendar (see {@link SessionShadingTracker}). */
174
+ /** Keeps the session shading on the symbol's real calendar (see {@link SessionShadingTracker}). */
172
175
  private readonly sessionShading;
173
176
  private readonly watermark;
174
177
  /** Bottom-center hover cluster, pinned to the price plot: drag handle, zoom in/out, maximize/restore, reset view. */
@@ -188,8 +191,8 @@ declare class ChartCell {
188
191
  /** Volume intent: the seed's ledger, else the workspace `volume` option — a
189
192
  * rehydrated ledger overwrites it (see {@link applyIndicatorLedger}). */
190
193
  private volumeIntent;
191
- /** Sync mirror of the chart's present native types — the removal handler diffs
192
- * against it to identify (and record) whichever type was just removed. */
194
+ /** Sync mirror of the chart's native instances (id + type) — the removal handler
195
+ * looks the removed id up here to learn which type an undo must re-add. */
193
196
  private presentNatives;
194
197
  private rangeBars;
195
198
  private pendingRange;
@@ -238,10 +241,11 @@ declare class ChartCell {
238
241
  /**
239
242
  * (Re)contribute this cell's settings-dialog sections: status line parts, the
240
243
  * per-cell fetch depth, the watermark toggle, and — only while the cell's symbol
241
- * HAS sessions — the Trading session group (RTH/ETH switch + the pre/post-market
242
- * shading colors) inside the Symbol tab. Bars/watermark/titles are persistable
243
- * cell state; a depth-only reload is silent, so mark dirty here. Re-run whenever
244
- * a gate changes (the dialog reads the sections on open).
244
+ * HAS sessions — the Trading session group (RTH/ETH switch + the session shading
245
+ * colors: pre/post-market on day-split tapes, one extended-hours swatch on
246
+ * overnight roll markets) inside the Symbol tab. Bars/watermark/titles are
247
+ * persistable cell state; a depth-only reload is silent, so mark dirty here.
248
+ * Re-run whenever a gate changes (the dialog reads the sections on open).
245
249
  */
246
250
  private pushSettingsSections;
247
251
  /** Show/hide this cell's symbol watermark (persisted per cell). */
@@ -264,7 +268,7 @@ declare class ChartCell {
264
268
  get symbol(): string;
265
269
  get timeframe(): string;
266
270
  get priceStyle(): string;
267
- /** Manifest instances + present natives — the topbar indicator count. */
271
+ /** Manifest instances + native instances — the topbar indicator count. */
268
272
  get indicatorCount(): number;
269
273
  /** Switch this cell's market in place (the chart instance survives). The projection
270
274
  * is OPTIMISTIC — labels and chrome show the pick before the bars load; it follows
@@ -297,6 +301,8 @@ declare class ChartCell {
297
301
  setControlsSuspended(on: boolean): void;
298
302
  /** Make this cell the active one and put keyboard focus on its chart surface. */
299
303
  focus(): void;
304
+ /** Raster of this cell's chart (same pixels as the PNG download), or null. */
305
+ screenshotCanvas(): HTMLCanvasElement | null;
300
306
  /** Download this cell's chart as a PNG (named after its market). */
301
307
  downloadScreenshot(): void;
302
308
  /**
@@ -314,7 +320,13 @@ declare class ChartCell {
314
320
  * undo timeline.
315
321
  */
316
322
  private applyIndicatorLedger;
317
- /** The picker's library rows: supported natives first, then the manifest. */
323
+ /** The supported natives in picker order: A→Z by title — registration order follows
324
+ * the catalog's families, which is meaningless to the reader. This is the library
325
+ * index space the picker hands back, so `libraryRows` and `addFromLibrary` MUST both
326
+ * read it — indexing the unsorted catalog on add would land on a different study. */
327
+ private supportedNatives;
328
+ /** The picker's library rows: supported natives first (see {@link supportedNatives}),
329
+ * then the manifest in the host's own order. */
318
330
  libraryRows(): Array<{
319
331
  name: string;
320
332
  language?: string;
@@ -323,7 +335,7 @@ declare class ChartCell {
323
335
  nativeType?: string;
324
336
  beta?: boolean;
325
337
  }>;
326
- /** The picker's on-chart rows: present natives first, then live instances. */
338
+ /** The picker's on-chart rows: native instances first, then live script instances. */
327
339
  onChartRows(): Array<{
328
340
  name: string;
329
341
  language?: string;
@@ -332,7 +344,7 @@ declare class ChartCell {
332
344
  }>;
333
345
  /** Add by picker LIBRARY index (natives precede the manifest — mirrors libraryRows). */
334
346
  addFromLibrary(index: number): void;
335
- /** Remove by picker ON-CHART index (present natives precede instances). */
347
+ /** Remove by picker ON-CHART index (native instances precede script instances — mirrors onChartRows). */
336
348
  removeFromChart(index: number): void;
337
349
  /**
338
350
  * Add a script indicator through the PUBLIC seam (`ctx.addIndicator`) — same undo/
@@ -351,11 +363,16 @@ declare class ChartCell {
351
363
  }): void;
352
364
  private removeInstance;
353
365
  private dropInstance;
354
- /** Add a native indicator (single-instance per type — the core dedupes). */
366
+ /** Add a native indicator. A multi-instance type gets a fresh instance every time; a
367
+ * single-instance type already on the chart hands back its existing one — nothing
368
+ * changed, so nothing enters the undo timeline. */
355
369
  addNative(type: string): void;
356
370
  private removeNative;
357
- /** Sync mirror of the chart's present native types — the removal handler diffs
358
- * against it to identify (and record) whichever type was just removed. */
371
+ /** The chart's native instances, insertion order — the picker's on-chart rows and
372
+ * the removal index space (script instances follow them). */
373
+ private nativeHandles;
374
+ /** Sync mirror of the chart's native instances — the removal handler looks the
375
+ * removed id up here (the registry has already forgotten it) to record its type. */
359
376
  private syncPresentNatives;
360
377
  /** Refresh the native catalog (supported/present flags) for this cell's market. */
361
378
  refreshNativeCatalog(): void;
@@ -693,6 +710,19 @@ declare class VelaWorkspace {
693
710
  /** Shortcut for `active.chart` — the same habit as `widget.chart`. LIVE: read it at
694
711
  * the point of use; the durable identity to hold is the cell (or its id). */
695
712
  get chart(): Vela;
713
+ /**
714
+ * PNG data URL of the visible layout: every live cell in its grid slot, or the
715
+ * maximized cell alone. Same pixels the screenshot button downloads. A single
716
+ * visible cell returns that cell's own chart export (the one-chart case).
717
+ */
718
+ screenshot(): string | null;
719
+ /** Download {@link screenshot} as a PNG. A multi-cell layout is named
720
+ * `vela-layout.png`; one visible cell keeps `${symbol}-${timeframe}.png`. */
721
+ downloadScreenshot(): void;
722
+ /** Live cells the screenshot should include — maximized siblings are `hidden`. */
723
+ private shotCells;
724
+ /** Place every cell's raster onto one canvas the size of the grid. */
725
+ private compositeLayoutShot;
696
726
  setActiveCell(id: string | null): void;
697
727
  on<K extends keyof WorkspaceEventMap>(event: K, handler: (payload: WorkspaceEventMap[K]) => void): () => void;
698
728
  /** The context handed to contributed actions/attachments (rebuilt per invocation). */
package/dist/workspace.js CHANGED
@@ -1,7 +1,7 @@
1
- export { ChartCell, GRID_PICKER_MAX, VelaWorkspace, activeAfterLayout, decodeState, encodeState, ensureLayout, evenTracks, gridStyles, layoutDefinition, layoutForGrid, layoutShape, layouts, memoryStorageAdapter, rangesWithin, registerBuiltinLayouts, registerLayout, resizeTracks, sanitizeState, syncTargets, trackOffsets, unregisterLayout } from './chunk-64TF7JAJ.js';
2
- import './chunk-N2Q5EEFH.js';
3
- import './chunk-F4M24ANM.js';
4
- import './chunk-G77Y7LK2.js';
5
- import './chunk-MHY7MVXH.js';
6
- import './chunk-KG4YT3TI.js';
1
+ export { ChartCell, GRID_PICKER_MAX, VelaWorkspace, activeAfterLayout, decodeState, encodeState, ensureLayout, evenTracks, gridStyles, layoutDefinition, layoutForGrid, layoutShape, layouts, memoryStorageAdapter, rangesWithin, registerBuiltinLayouts, registerLayout, resizeTracks, sanitizeState, syncTargets, trackOffsets, unregisterLayout } from './chunk-SEOO6YG7.js';
2
+ import './chunk-GIJYO4LO.js';
3
+ import './chunk-I77F2SVE.js';
4
+ import './chunk-Q3TFJNJW.js';
5
+ import './chunk-MGU3USTP.js';
6
+ import './chunk-6DPAYEGO.js';
7
7
  import './chunk-W4EJWLEO.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luxalgo/vela",
3
- "version": "0.6.14",
3
+ "version": "0.6.16",
4
4
  "description": "Open-source charting library with a native high-performance renderer, drawing tools, pluggable chart types and pluggable scripting engines.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://luxalgo.com/vela",
@@ -1,7 +0,0 @@
1
- // src/core/model/identity.ts
2
- function stableSeriesId(parts) {
3
- const normTitle = parts.title.trim().toLowerCase().replace(/\s+/g, "-");
4
- return `${parts.instanceId}:${parts.kind}:${normTitle}#${parts.ordinal}`;
5
- }
6
-
7
- export { stableSeriesId };