@luxalgo/vela 0.6.20 → 0.6.21

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.
package/dist/widget.cjs CHANGED
@@ -19188,6 +19188,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
19188
19188
  if (!record.native) continue;
19189
19189
  record.native.instance.stop();
19190
19190
  record.native.instance = record.native.descriptor.create();
19191
+ record.native.started = false;
19191
19192
  record.pendingStructural = true;
19192
19193
  if (record.hidden) {
19193
19194
  record.native.stale = true;
@@ -19683,7 +19684,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
19683
19684
  if (record.renderHandle) this.renderer.setIndicatorVisible?.(record.renderHandle, true);
19684
19685
  record.pendingStructural = true;
19685
19686
  if (record.native) {
19686
- if (record.native.stale) {
19687
+ if (record.native.stale || !record.native.started) {
19687
19688
  record.native.stale = false;
19688
19689
  const handle = this.handles.get(id);
19689
19690
  if (handle) void this.startNativeIndicator(id, handle);
@@ -19864,6 +19865,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
19864
19865
  }
19865
19866
  };
19866
19867
  record.native.instance.start(ctx, record.inputValues);
19868
+ record.native.started = true;
19867
19869
  } catch (err) {
19868
19870
  this.fail(id, handle, err);
19869
19871
  }
@@ -37704,6 +37706,8 @@ function volumeLayerData(inputs) {
37704
37706
  }
37705
37707
  var VolumeIndicator = class {
37706
37708
  constructor() {
37709
+ /** Null until start() — pre-start setInputs/resume must record without pushing. */
37710
+ this.ctx = null;
37707
37711
  this.inputs = {};
37708
37712
  }
37709
37713
  start(ctx, inputs) {
@@ -37720,13 +37724,13 @@ var VolumeIndicator = class {
37720
37724
  }
37721
37725
  setInputs(inputs) {
37722
37726
  this.inputs = inputs;
37723
- this.ctx.pushData(volumeLayerData(inputs));
37727
+ this.ctx?.pushData(volumeLayerData(inputs));
37724
37728
  }
37725
37729
  /** Hiding is a renderer-layer flag (set via `setIndicatorVisible`); no resources to free. */
37726
37730
  suspend() {
37727
37731
  }
37728
37732
  resume() {
37729
- this.ctx.pushData(volumeLayerData(this.inputs));
37733
+ this.ctx?.pushData(volumeLayerData(this.inputs));
37730
37734
  }
37731
37735
  stop() {
37732
37736
  }
@@ -37772,6 +37776,8 @@ function vpvrLayerData(inputs) {
37772
37776
  }
37773
37777
  var VpvrIndicator = class {
37774
37778
  constructor() {
37779
+ /** Null until start() — pre-start setInputs/resume must record without pushing. */
37780
+ this.ctx = null;
37775
37781
  this.inputs = {};
37776
37782
  }
37777
37783
  start(ctx, inputs) {
@@ -37788,13 +37794,13 @@ var VpvrIndicator = class {
37788
37794
  }
37789
37795
  setInputs(inputs) {
37790
37796
  this.inputs = inputs;
37791
- this.ctx.pushData(vpvrLayerData(inputs));
37797
+ this.ctx?.pushData(vpvrLayerData(inputs));
37792
37798
  }
37793
37799
  /** Hiding is a renderer-layer flag (set via `setIndicatorVisible`); no resources to free. */
37794
37800
  suspend() {
37795
37801
  }
37796
37802
  resume() {
37797
- this.ctx.pushData(vpvrLayerData(this.inputs));
37803
+ this.ctx?.pushData(vpvrLayerData(this.inputs));
37798
37804
  }
37799
37805
  stop() {
37800
37806
  }
@@ -41915,7 +41921,7 @@ var ChartCell = class {
41915
41921
  // A RESTORED ledger is authoritative for the auto-added volume too: a
41916
41922
  // slot persisted without it must come back without it (fresh slots
41917
41923
  // keep the workspace default).
41918
- volume: seed.indicators ? seed.indicators.natives.includes("volume") : deps.volume,
41924
+ volume: seed.indicators ? seed.indicators.natives.some((e) => ledgerNativeType(e) === "volume") : deps.volume,
41919
41925
  nativeBackend: deps.nativeBackend,
41920
41926
  // The user's drawings option minus its toolbar: one SHARED bar serves
41921
41927
  // the whole workspace (per-cell bars would cost a 44px gutter each).
package/dist/widget.js CHANGED
@@ -1,6 +1,6 @@
1
- import { VelaWorkspace } from './chunk-M6T5A733.js';
2
- export { Bottombar, ChartContextMenu, DataWindow, IndicatorPicker, ObjectTree, PanelDock, RANGE_PRESETS, ShortcutsHelp, Statusline, SymbolPicker, TimeframeQuick, Topbar, Watermark, dataWindowSections, decimalsFor, decodeState, encodeState, filterSymbols, fmtChange, fmtPrice, localStorageAdapter, parseTimeframe, priceStyleLabel, resolveIndicators, sanitizeState, timeframeLabel, timeframeMs } from './chunk-M6T5A733.js';
3
- export { TIMEZONES, normalizeTimezone, tzButtonLabel, tzMenuLabel, tzOffset } from './chunk-4Q4B5AO3.js';
1
+ import { VelaWorkspace } from './chunk-BRPFYKTT.js';
2
+ export { Bottombar, ChartContextMenu, DataWindow, IndicatorPicker, ObjectTree, PanelDock, RANGE_PRESETS, ShortcutsHelp, Statusline, SymbolPicker, TimeframeQuick, Topbar, Watermark, dataWindowSections, decimalsFor, decodeState, encodeState, filterSymbols, fmtChange, fmtPrice, localStorageAdapter, parseTimeframe, priceStyleLabel, resolveIndicators, sanitizeState, timeframeLabel, timeframeMs } from './chunk-BRPFYKTT.js';
3
+ export { TIMEZONES, normalizeTimezone, tzButtonLabel, tzMenuLabel, tzOffset } from './chunk-TRZQQUTR.js';
4
4
  export { DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_ORDER, DEFAULT_PANEL_WIDTH, OVERRIDABLE_TOPBAR_IDS, SidePanel, TOPBAR_BUILTIN_IDS, TOPBAR_DEFAULT_LEFT, TOPBAR_DEFAULT_RIGHT, clampPanelWidth, pinnedTopbarActionIds, registerSidePanel, registerStatePersistence, registerSymbolRanking, registerWidgetAction, registerWidgetAttachment, resolveTopbarComposition, sidePanels, statePersistenceHandlers, symbolRanking, topbarActionOverride, topbarHas, unregisterSidePanel, unregisterStatePersistence, unregisterWidgetAction, unregisterWidgetAttachment, widgetActions, widgetAttachments } from './chunk-IFJJPXSV.js';
5
5
  import './chunk-XCBJU674.js';
6
6
  import './chunk-T5Z5YUCF.js';
@@ -19120,6 +19120,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
19120
19120
  if (!record.native) continue;
19121
19121
  record.native.instance.stop();
19122
19122
  record.native.instance = record.native.descriptor.create();
19123
+ record.native.started = false;
19123
19124
  record.pendingStructural = true;
19124
19125
  if (record.hidden) {
19125
19126
  record.native.stale = true;
@@ -19615,7 +19616,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
19615
19616
  if (record.renderHandle) this.renderer.setIndicatorVisible?.(record.renderHandle, true);
19616
19617
  record.pendingStructural = true;
19617
19618
  if (record.native) {
19618
- if (record.native.stale) {
19619
+ if (record.native.stale || !record.native.started) {
19619
19620
  record.native.stale = false;
19620
19621
  const handle = this.handles.get(id);
19621
19622
  if (handle) void this.startNativeIndicator(id, handle);
@@ -19796,6 +19797,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
19796
19797
  }
19797
19798
  };
19798
19799
  record.native.instance.start(ctx, record.inputValues);
19800
+ record.native.started = true;
19799
19801
  } catch (err) {
19800
19802
  this.fail(id, handle, err);
19801
19803
  }
@@ -37636,6 +37638,8 @@ function volumeLayerData(inputs) {
37636
37638
  }
37637
37639
  var VolumeIndicator = class {
37638
37640
  constructor() {
37641
+ /** Null until start() — pre-start setInputs/resume must record without pushing. */
37642
+ this.ctx = null;
37639
37643
  this.inputs = {};
37640
37644
  }
37641
37645
  start(ctx, inputs) {
@@ -37652,13 +37656,13 @@ var VolumeIndicator = class {
37652
37656
  }
37653
37657
  setInputs(inputs) {
37654
37658
  this.inputs = inputs;
37655
- this.ctx.pushData(volumeLayerData(inputs));
37659
+ this.ctx?.pushData(volumeLayerData(inputs));
37656
37660
  }
37657
37661
  /** Hiding is a renderer-layer flag (set via `setIndicatorVisible`); no resources to free. */
37658
37662
  suspend() {
37659
37663
  }
37660
37664
  resume() {
37661
- this.ctx.pushData(volumeLayerData(this.inputs));
37665
+ this.ctx?.pushData(volumeLayerData(this.inputs));
37662
37666
  }
37663
37667
  stop() {
37664
37668
  }
@@ -37704,6 +37708,8 @@ function vpvrLayerData(inputs) {
37704
37708
  }
37705
37709
  var VpvrIndicator = class {
37706
37710
  constructor() {
37711
+ /** Null until start() — pre-start setInputs/resume must record without pushing. */
37712
+ this.ctx = null;
37707
37713
  this.inputs = {};
37708
37714
  }
37709
37715
  start(ctx, inputs) {
@@ -37720,13 +37726,13 @@ var VpvrIndicator = class {
37720
37726
  }
37721
37727
  setInputs(inputs) {
37722
37728
  this.inputs = inputs;
37723
- this.ctx.pushData(vpvrLayerData(inputs));
37729
+ this.ctx?.pushData(vpvrLayerData(inputs));
37724
37730
  }
37725
37731
  /** Hiding is a renderer-layer flag (set via `setIndicatorVisible`); no resources to free. */
37726
37732
  suspend() {
37727
37733
  }
37728
37734
  resume() {
37729
- this.ctx.pushData(vpvrLayerData(this.inputs));
37735
+ this.ctx?.pushData(vpvrLayerData(this.inputs));
37730
37736
  }
37731
37737
  stop() {
37732
37738
  }
@@ -41847,7 +41853,7 @@ var ChartCell = class {
41847
41853
  // A RESTORED ledger is authoritative for the auto-added volume too: a
41848
41854
  // slot persisted without it must come back without it (fresh slots
41849
41855
  // keep the workspace default).
41850
- volume: seed.indicators ? seed.indicators.natives.includes("volume") : deps.volume,
41856
+ volume: seed.indicators ? seed.indicators.natives.some((e) => ledgerNativeType(e) === "volume") : deps.volume,
41851
41857
  nativeBackend: deps.nativeBackend,
41852
41858
  // The user's drawings option minus its toolbar: one SHARED bar serves
41853
41859
  // the whole workspace (per-cell bars would cost a 44px gutter each).
package/dist/workspace.js CHANGED
@@ -1,5 +1,5 @@
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-M6T5A733.js';
2
- import './chunk-4Q4B5AO3.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-BRPFYKTT.js';
2
+ import './chunk-TRZQQUTR.js';
3
3
  import './chunk-IFJJPXSV.js';
4
4
  import './chunk-XCBJU674.js';
5
5
  import './chunk-T5Z5YUCF.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luxalgo/vela",
3
- "version": "0.6.20",
3
+ "version": "0.6.21",
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",
@@ -77,6 +77,7 @@
77
77
  },
78
78
  "devDependencies": {
79
79
  "eslint": "^9.0.0",
80
+ "jsdom": "^29.1.1",
80
81
  "tsup": "^8.0.0",
81
82
  "typescript": "~5.9.3",
82
83
  "typescript-eslint": "^8.0.0",