@tradecanvas/chart 0.14.0 → 1.0.1

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/README.md CHANGED
@@ -410,12 +410,19 @@ chart.setTheme({
410
410
  ```typescript
411
411
  chart.on('crosshairMove', (e) => { /* { point, bar, barIndex, indicatorValues } */ })
412
412
  chart.on('barClick', (e) => { /* { bar, barIndex, point } */ })
413
- chart.on('visibleRangeChange', (e) => { /* { from, to } */ })
413
+ chart.on('visibleRangeChange', (e) => { /* { from, to } — bar indices, not timestamps */ })
414
+ chart.on('priceRangeChange', (e) => { /* { min, max } — visible price bounds */ })
415
+ chart.on('zoomChange', (e) => { /* { barWidth } — pixels per bar */ })
414
416
  chart.on('drawingCreate', (e) => { /* ... */ })
415
417
  chart.on('orderModify', (e) => { /* ... */ })
416
418
  chart.on('positionModify', (e) => { /* ... */ })
417
419
  ```
418
420
 
421
+ `visibleRangeChange`, `priceRangeChange`, and `zoomChange` fire on every pan,
422
+ zoom, resize, and data update — but only when that piece of viewport state
423
+ actually changed. Resolve a `visibleRangeChange` index to time with
424
+ `chart.getData()[e.payload.from].time`.
425
+
419
426
  ### Replay Mode
420
427
 
421
428
  `ReplayController` plays a historical `DataSeries` forward at controlled speed. Decoupled from `Chart` — wire it into any sink (chart for UI playback, or a strategy fn for headless backtests).
package/dist/Chart.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- import { ChartOptions, ChartType, OHLCBar, DataSeries, Theme, ThemeName, ChartEventType, ChartEvent, ChartEventMap, TauriBridgeOptions, IndicatorPlugin, IndicatorDescriptor, IndicatorOutput, DrawingToolType, DrawingState, DrawingStyle, DrawingPlugin, PanelPosition, TradingOrder, TradingPosition, DepthData, TradingConfig, MarketConfig, Locale, StreamConfig, ConnectionState, ConnectionInfo, TimeFrame, FeaturesConfig } from '@tradecanvas/commons';
1
+ import { ChartOptions, ChartType, OHLCBar, DataSeries, Theme, ThemeName, ChartEventType, ChartEvent, ChartEventMap, TauriBridgeOptions, IndicatorPlugin, IndicatorDescriptor, IndicatorOutput, DrawingToolType, DrawingState, DrawingStyle, DrawingPlugin, PanelPosition, TradingOrder, TradingPosition, DepthData, TradingConfig, MarketConfig, Locale, StreamConfig, ConnectionState, ConnectionInfo, TimeFrame, FeaturesConfig, ExecutionAdapter, ExecutionConfig } from '@tradecanvas/commons';
2
+ import { PluginManager } from './plugins/PluginManager.js';
3
+ import { ChartPlugin } from './plugins/contracts.js';
2
4
  export declare class Chart {
3
5
  static version: string;
4
6
  private engine;
@@ -14,6 +16,8 @@ export declare class Chart {
14
16
  private tradingRenderer;
15
17
  private eventBus;
16
18
  private streamManager;
19
+ private executionAdapter;
20
+ private execTeardown;
17
21
  private autoScrollOnNewBar;
18
22
  private displayDataCache;
19
23
  private resolvedLayoutCache;
@@ -21,6 +25,9 @@ export declare class Chart {
21
25
  private renderScheduled;
22
26
  private containerSizeCache;
23
27
  private containerSizeCacheTime;
28
+ private lastEmittedRange;
29
+ private lastEmittedPriceRange;
30
+ private lastEmittedBarWidth;
24
31
  private chartLegend;
25
32
  private watermark;
26
33
  private barCountdown;
@@ -59,7 +66,9 @@ export declare class Chart {
59
66
  private keyboardHandler;
60
67
  private onWindowKeyDown;
61
68
  private currentSymbol;
62
- constructor(container: HTMLElement, options: ChartOptions);
69
+ constructor(container: HTMLElement, options: ChartOptions & {
70
+ plugins?: ChartPlugin[];
71
+ });
63
72
  setData(data: DataSeries): void;
64
73
  appendBar(bar: OHLCBar): void;
65
74
  /**
@@ -75,12 +84,14 @@ export declare class Chart {
75
84
  volume?: number;
76
85
  time: number;
77
86
  }): void;
78
- setChartType(type: ChartType): void;
87
+ setChartType(type: ChartType | (string & {})): void;
79
88
  addIndicator(id: string, params?: Record<string, number | string | boolean>, position?: PanelPosition): string | null;
80
89
  updateIndicator(instanceId: string, params: Record<string, number | string | boolean>): void;
81
90
  removeIndicator(instanceId: string): void;
82
91
  getIndicatorOutput(instanceId: string): IndicatorOutput | null;
83
92
  registerIndicator(plugin: IndicatorPlugin): void;
93
+ /** The chart's plugin registry — register custom indicators / drawings / chart types / overlays. */
94
+ get plugins(): PluginManager;
84
95
  static indicators(): IndicatorDescriptor[];
85
96
  setPanelPosition(instanceId: string, position: PanelPosition): void;
86
97
  setPanelSize(instanceId: string, size: number): void;
@@ -167,6 +178,17 @@ export declare class Chart {
167
178
  cancelBracket(): void;
168
179
  confirmBracket(): boolean;
169
180
  isBracketActive(): boolean;
181
+ /**
182
+ * Begin a drag-to-create single order at `price` (default: latest close) for
183
+ * `side`. Drag the line to a level — the order type (limit/stop) is inferred
184
+ * from the level vs the current price. Confirm with `confirmOrderDraft()`
185
+ * (emits `orderPlace`) or cancel with `cancelOrderDraft()`. Returns false if
186
+ * trading is disabled or no price is available.
187
+ */
188
+ startOrderDraft(side: import('@tradecanvas/commons').OrderSide, price?: number): boolean;
189
+ cancelOrderDraft(): void;
190
+ confirmOrderDraft(): boolean;
191
+ isOrderDraftActive(): boolean;
170
192
  /**
171
193
  * Emit an `orderPlace` intent (e.g. from a depth-ladder click). The chart
172
194
  * does not create the order itself — the host listens via
@@ -212,6 +234,19 @@ export declare class Chart {
212
234
  * Disconnect the real-time stream.
213
235
  */
214
236
  disconnectStream(): void;
237
+ /**
238
+ * Connect an execution adapter, turning the trading overlay into a live
239
+ * trading surface. The adapter is the source of truth: the chart routes its
240
+ * emitted order/position intents into the adapter and renders the
241
+ * `orders` / `positions` the adapter emits back. With no adapter connected,
242
+ * those intents remain plain events (the default). Listen for failures via
243
+ * `chart.on('executionError', …)`.
244
+ */
245
+ connectExecution(adapter: ExecutionAdapter, config?: ExecutionConfig): void;
246
+ /** Tear down the active execution adapter (if any) and stop routing intents. */
247
+ disconnectExecution(): void;
248
+ /** The connected execution adapter, or null (e.g. for adapter-specific calls). */
249
+ getExecutionAdapter(): ExecutionAdapter | null;
215
250
  setBarCountdownVisible(visible: boolean): void;
216
251
  setSessionBreaksVisible(visible: boolean): void;
217
252
  addCompareSymbol(id: string, label: string, data: DataSeries, color: string): void;
@@ -355,7 +390,7 @@ export declare class Chart {
355
390
  setTradeZones(zones: import('@tradecanvas/commons').TradeZone[]): void;
356
391
  clearTradeZones(): void;
357
392
  setTradeZoneStyle(style: Partial<import('@tradecanvas/commons').TradeZoneStyle>): void;
358
- replay(config?: Partial<import('@tradecanvas/core').ReplayConfig>): void;
393
+ replayStart(config?: Partial<import('@tradecanvas/core').ReplayConfig>): void;
359
394
  replayPause(): void;
360
395
  replayResume(): void;
361
396
  replayStop(): void;
@@ -396,11 +431,20 @@ export declare class Chart {
396
431
  private scheduleRender;
397
432
  /** Full update: resolve layout, update viewport, sync context, request render. */
398
433
  private updateViewportAndRender;
434
+ /**
435
+ * Fire the public viewport events (`visibleRangeChange`, `priceRangeChange`,
436
+ * `zoomChange`) whenever the corresponding piece of viewport state changed
437
+ * since the last render. Called at the end of every updateViewportAndRender,
438
+ * so panning, zooming, resizing, and data updates all surface to consumers.
439
+ */
440
+ private emitViewportEvents;
399
441
  private getResolvedLayout;
400
442
  /** Cache container size for 500ms to avoid layout thrashing on rapid calls */
401
443
  private cachedContainerSize;
402
444
  private buildPanelRenderInfos;
403
445
  private syncRenderContext;
446
+ /** Draw registered overlay plugins for a layer (called by the engine). */
447
+ private drawOverlayPlugins;
404
448
  private buildPriceLimits;
405
449
  }
406
450
  //# sourceMappingURL=Chart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ let e=require(`@tradecanvas/commons`),t=require(`@tradecanvas/core`);function n(e){switch(e){case`candlestick`:case`heikinAshi`:case`lineBreak`:case`rangeBars`:return new t.CandlestickRenderer;case`line`:return new t.LineRenderer;case`area`:return new t.AreaRenderer;case`bar`:return new t.BarRenderer;case`hollowCandle`:return new t.HollowCandleRenderer;case`baseline`:return new t.BaselineRenderer;case`renko`:return new t.RenkoRenderer;case`kagi`:return new t.KagiRenderer;case`pointAndFigure`:return new t.PointAndFigureRenderer;case`volumeCandles`:return new t.VolumeCandleRenderer;case`equivolume`:return new t.EquivolumeRenderer;case`hlcArea`:return new t.HLCAreaRenderer;case`stepLine`:return new t.StepLineRenderer;case`lineWithMarkers`:return new t.LineWithMarkersRenderer;default:return new t.CandlestickRenderer}}function r(e,n){if(n.length===0)return n;switch(e){case`heikinAshi`:return(0,t.toHeikinAshi)(n);case`renko`:return(0,t.toRenko)(n,{brickSize:0,useATR:!0,atrPeriod:14});case`lineBreak`:return(0,t.toLineBreak)(n,3);case`kagi`:return(0,t.toKagi)(n,4);case`pointAndFigure`:return(0,t.toPointAndFigure)(n,i(n)*.01,3);case`rangeBars`:return(0,t.toRangeBars)(n,{rangeSize:i(n)*.005});default:return n}}function i(e){let t=0;for(let n of e)t+=n.close;return t/e.length}function a(e,t){let r=t?.(e);return r?r.createRenderer():n(e)}function o(e,t,n){if(t.length===0)return t;let i=n?.(e);return i?.transform?i.transform(t):r(e,t)}var s={min:0,max:100},c=.1;function l(e,t,n){if(!e)return{...s};let r=1/0,i=-1/0,a=0;for(let[,o]of e.values){if(a>=t&&a<=n)for(let e in o){let t=o[e];t!==void 0&&Number.isFinite(t)&&(t<r&&(r=t),t>i&&(i=t))}a++}if(r===1/0)return{...s};let o=i-r||1;return{min:r-o*c,max:i+o*c}}var u=class{timer=null;delayMs=0;key=null;constructor(e){this.save=e}enable(e,t){this.key=e,this.delayMs=t}disable(){this.key=null,this.delayMs=0,this.cancel()}schedule(){this.delayMs<=0||!this.key||(this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.key&&this.save(this.key)},this.delayMs))}cancel(){this.timer&&=(clearTimeout(this.timer),null)}isEnabled(){return this.delayMs>0&&this.key!==null}hasPending(){return this.timer!==null}};function d(e){if(!e||typeof e.time!=`number`)return!1;let{open:t,high:n,low:r,close:i}=e;return!(!isFinite(t)||!isFinite(n)||!isFinite(r)||!isFinite(i)||t<0||n<0||r<0||i<0||n<r||e.volume!==void 0&&(!isFinite(e.volume)||e.volume<0))}function f(e){return{...e,high:Math.max(e.open,e.high,e.low,e.close),low:Math.min(e.open,e.high,e.low,e.close),volume:e.volume===void 0?0:Math.max(0,e.volume)}}var p=class{data=[];getData(){return this.data}setData(e){this.data=e.filter(d).map(f)}appendBar(e){d(e)&&this.data.push(f(e))}updateLastBar(e){if(!d(e))return;let t=f(e);if(this.data.length===0){this.data.push(t);return}this.data[this.data.length-1]=t}updateLastBarFromTick(t){this.data.length!==0&&(!isFinite(t.price)||t.price<0||t.volume!==void 0&&(!isFinite(t.volume)||t.volume<0)||(this.data[this.data.length-1]=(0,e.mergeBar)(this.data[this.data.length-1],t)))}getLength(){return this.data.length}clear(){this.data=[]}},m=class{theme;constructor(t){!t||t===`dark`?this.theme={...e.DARK_THEME}:t===`light`?this.theme={...e.LIGHT_THEME}:this.theme={...t}}getTheme(){return this.theme}setTheme(t){t===`dark`?this.theme={...e.DARK_THEME}:t===`light`?this.theme={...e.LIGHT_THEME}:this.theme={...t}}},h=200,g=80,_=class{panels=[];containerWidth=0;containerHeight=0;resize(e,t){this.containerWidth=e,this.containerHeight=t}addPanel(t,n=`bottom`,r){let i=n===`left`||n===`right`;this.panels.push({id:t,position:n,size:r??(i?h:e.DEFAULT_PANEL_HEIGHT),minSize:i?g:e.MIN_PANEL_HEIGHT,content:{type:`indicator`,indicatorInstanceId:t}})}removePanel(e){this.panels=this.panels.filter(t=>t.id!==e)}setPanelPosition(t,n){let r=this.panels.find(e=>e.id===t);if(r){let t=r.position===`left`||r.position===`right`,i=n===`left`||n===`right`;r.position=n,t!==i&&(r.size=i?h:e.DEFAULT_PANEL_HEIGHT,r.minSize=i?g:e.MIN_PANEL_HEIGHT)}}setPanelSize(e,t){let n=this.panels.find(t=>t.id===e);n&&(n.size=Math.max(n.minSize,t))}getPanels(){return this.panels}resolve(){let t=this.panels.filter(e=>e.position===`left`),n=this.panels.filter(e=>e.position===`right`),r=this.panels.filter(e=>e.position===`top`),i=this.panels.filter(e=>e.position===`bottom`),a=t.reduce((e,t)=>e+t.size,0),o=n.reduce((e,t)=>e+t.size,0),s=r.reduce((e,t)=>e+t.size,0),c=i.reduce((e,t)=>e+t.size,0),l={x:a,y:s,width:Math.max(0,this.containerWidth-a-o-e.PRICE_AXIS_WIDTH),height:Math.max(0,this.containerHeight-s-c-e.TIME_AXIS_HEIGHT)},u=[],d=[],f=0;for(let n of t)u.push({config:n,rect:{x:f,y:0,width:n.size,height:this.containerHeight-e.TIME_AXIS_HEIGHT}}),d.push({panelId:n.id,rect:{x:f+n.size-2,y:0,width:4,height:this.containerHeight},orientation:`vertical`}),f+=n.size;let p=0;for(let e of r)u.push({config:e,rect:{x:a,y:p,width:l.width,height:e.size}}),d.push({panelId:e.id,rect:{x:a,y:p+e.size-2,width:l.width,height:4},orientation:`horizontal`}),p+=e.size;p=l.y+l.height;for(let e of i)u.push({config:e,rect:{x:a,y:p,width:l.width,height:e.size}}),d.push({panelId:e.id,rect:{x:a,y:p-2,width:l.width,height:4},orientation:`horizontal`}),p+=e.size;f=a+l.width+e.PRICE_AXIS_WIDTH;for(let t of n)u.push({config:t,rect:{x:f,y:0,width:t.size,height:this.containerHeight-e.TIME_AXIS_HEIGHT}}),d.push({panelId:t.id,rect:{x:f-2,y:0,width:4,height:this.containerHeight},orientation:`vertical`}),f+=t.size;return{mainChartRect:l,panels:u,dividers:d}}getMainChartRect(){return this.resolve().mainChartRect}},v=1;function y(e,t){return e.filter(e=>(e.descriptor.layer??`overlay`)===t)}function b(e){switch(e.kind){case`indicator`:return`indicator:${e.plugin.descriptor.id}`;case`drawing`:return`drawing:${e.plugin.descriptor.type}`;case`chartType`:return`chartType:${e.plugin.descriptor.type}`;case`overlay`:return`overlay:${e.plugin.descriptor.id}`}}var x=new Map;function S(e){x.set(b(e),e)}function C(e){return x.delete(e)}function w(){return[...x.values()]}function T(){x.clear()}var E=class{plugins=new Map;constructor(e,t={}){if(this.indicatorEngine=e,t.inheritGlobal!==!1)for(let e of w())this.add(e);for(let e of t.plugins??[])this.add(e)}register(e){this.add(e)}unregister(e){return this.plugins.delete(e)}list(){return[...this.plugins.values()]}registerIndicator(e){this.add({kind:`indicator`,plugin:e})}getChartType(e){let t=this.plugins.get(`chartType:${e}`);return t?.kind===`chartType`?t.plugin:void 0}getOverlays(){let e=[];for(let t of this.plugins.values())t.kind===`overlay`&&e.push(t.plugin);return e}add(e){this.plugins.set(b(e),e),e.kind===`indicator`&&this.indicatorEngine.register(e.plugin)}},D={orderPlace:(e,t)=>e.placeOrder(t),orderModify:(e,t)=>e.modifyOrder(t),orderCancel:(e,t)=>e.cancelOrder(t),positionModify:(e,t)=>e.modifyPosition(t),positionClose:(e,t)=>e.closePosition(t)};function O(e,t){let n=[],r=e=>t.setOrders(e.data??[]),i=e=>t.setPositions(e.data??[]),a=e=>t.onError(e.data??{message:`Execution error`});e.on(`orders`,r),e.on(`positions`,i),e.on(`error`,a),n.push(()=>e.off(`orders`,r),()=>e.off(`positions`,i),()=>e.off(`error`,a));for(let r of Object.keys(D)){let i=D[r],a=t.onIntent(r,n=>{Promise.resolve(i(e,n)).catch(e=>t.onError({message:`Execution command failed: ${r}`,cause:e}))});n.push(a)}return()=>{for(let e of n)e()}}var k=class{static version=`1.0.1`;engine;viewport;dataManager;themeManager;layoutManager;pluginManager;indicatorEngine;drawingManager;drawingRenderer;tradingManager;tradingRenderer;eventBus;streamManager=null;executionAdapter=null;execTeardown=null;autoScrollOnNewBar=!0;displayDataCache=null;resolvedLayoutCache=null;panelInfoCache=null;renderScheduled=!1;containerSizeCache=null;containerSizeCacheTime=0;lastEmittedRange=null;lastEmittedPriceRange=null;lastEmittedBarWidth=null;chartLegend;watermark;barCountdown;sessionBreaks;sessionShading;compareRenderer;countdownInterval=null;volumeRenderer;volumeProfile;marketProfile;depthHeatmap;periodLevels;pivotMarkers;alertManager;signalMarkerManager;tradeZoneManager;measureOverlay;replayManager;undoRedoManager;autoSaveScheduler=new u(e=>this.saveState(e));animator;crosshairTooltip;pinnedTooltip;interactionManager;crosshairHandler;chartRenderer;gridRenderer;priceAxis;timeAxis;options;features;marketConfig=null;container;currentPriceLine;numberLocale;keyboardHandler=null;onWindowKeyDown=null;currentSymbol=``;constructor(n,r){this.container=n,this.options=r,this.numberLocale=r.numberLocale??`en-US`;let i=r.features??{};this.features={drawings:i.drawings??!0,drawingTools:i.drawingTools??[],drawingMagnet:i.drawingMagnet??!0,drawingUndoRedo:i.drawingUndoRedo??!0,trading:i.trading??!0,tradingContextMenu:i.tradingContextMenu??!0,indicators:i.indicators??!0,indicatorIds:i.indicatorIds??[],panning:i.panning??!0,zooming:i.zooming??!0,crosshair:i.crosshair??!0,keyboard:i.keyboard??!0,priceAxis:i.priceAxis??!0,timeAxis:i.timeAxis??!0,grid:i.grid??r.grid?.visible??!0,legend:i.legend??!0,volume:i.volume??!0,watermark:i.watermark??!0,saveLoad:i.saveLoad??!0,screenshot:i.screenshot??!0,alerts:i.alerts??!0,replay:i.replay??!0,sessionBreaks:i.sessionBreaks??!0,barCountdown:i.barCountdown??!0,compareSymbols:i.compareSymbols??!0,dataExport:i.dataExport??!0,logScale:i.logScale??!0,timeframes:i.timeframes??[],defaultTimeframeFavorites:i.defaultTimeframeFavorites??[]},n.style.position=`relative`,n.style.overflow=`hidden`,n.tabIndex=0,n.style.outline=`none`,this.dataManager=new p,this.themeManager=new m(r.theme),this.layoutManager=new _,this.indicatorEngine=new t.IndicatorEngine,this.pluginManager=new E(this.indicatorEngine,{plugins:r.plugins}),this.eventBus=new t.EventBus,(0,t.registerBuiltInIndicators)(this.indicatorEngine),this.drawingManager=new t.DrawingManager,(0,t.registerBuiltInDrawingTools)(this.drawingManager),this.drawingRenderer=new t.DrawingRenderer(this.drawingManager),this.drawingManager.setRequestRender(()=>{this.syncRenderContext(),this.engine.requestRender(e.LayerType.Overlay),this.scheduleAutoSave()}),this.drawingManager.setEventCallback((e,t)=>{this.eventBus.emit(e,t)}),this.undoRedoManager=new t.UndoRedoManager,this.drawingManager.setUndoRedoManager(this.undoRedoManager),this.drawingManager.setDataGetter(()=>this.dataManager.getData()),this.drawingManager.setDisplayDataGetter(()=>this.getDisplayData()),r.crosshair?.mode===`magnet`&&this.drawingManager.setMagnetMode(`magnet`),this.tradingManager=new t.TradingManager({enabled:this.features.trading,contextMenu:{enabled:this.features.tradingContextMenu}}),this.tradingRenderer=new t.TradingRenderer(this.tradingManager),this.tradingManager.setContainer(n),this.tradingManager.setRequestRender(()=>this.engine.requestRender(e.LayerType.Overlay)),this.tradingManager.setEventCallback((e,t)=>{this.eventBus.emit(e,t)}),this.engine=new t.RenderEngine(n);let a=this.engine.dprManager.getContainerSize();if(this.viewport=new t.Viewport(a.width,a.height,r.minBarSpacing??2,r.maxBarSpacing??30,r.rightMargin??5),this.layoutManager.resize(a.width,a.height),this.engine.onContainerResize=e=>{if(e.width<=0||e.height<=0)return;let t=this.viewport.isAtEnd();this.viewport.resize(e.width,e.height),this.layoutManager.resize(e.width,e.height),this.updateViewportAndRender(t)},this.chartRenderer=this.createChartRenderer(r.chartType),this.gridRenderer=new t.GridRenderer,r.grid?.visible===!1&&this.gridRenderer.setVisible(!1),this.priceAxis=new t.PriceAxis,this.priceAxis.setLocale(this.numberLocale),this.timeAxis=new t.TimeAxis,this.crosshairHandler=new t.CrosshairHandler,this.crosshairHandler.setLocale(this.numberLocale),r.crosshair?.mode&&this.crosshairHandler.setMode(r.crosshair.mode),this.crosshairHandler.setCallback((e,t)=>{if(e!==null&&t){let n=this.dataManager.getData(),r=e<n.length?n[e]:void 0;this.chartLegend.setHoverBar(r??null),r&&this.crosshairTooltip.show(t,r,this.themeManager.getTheme(),this.cachedContainerSize()),this.pinnedTooltip.isPinned()&&this.pinnedTooltip.reposition(this.viewport.getState(),r??null,e,this.themeManager.getTheme()),this.eventBus.emit(`crosshairMove`,{point:t,bar:r,barIndex:e})}else this.crosshairTooltip.hide(),this.chartLegend.setHoverBar(null)}),this.chartLegend=new t.ChartLegend,this.chartLegend.setChartType(r.chartType),this.watermark=new t.Watermark,r.watermark&&this.watermark.setConfig(r.watermark),this.volumeRenderer=new t.VolumeRenderer,this.volumeProfile=new t.VolumeProfileRenderer,this.marketProfile=new t.MarketProfileRenderer,this.depthHeatmap=new t.DepthHeatmapRenderer,this.periodLevels=new t.PeriodLevelsRenderer,this.pivotMarkers=new t.PivotMarkersRenderer,this.barCountdown=new t.BarCountdown,this.sessionBreaks=new t.SessionBreaks,this.sessionShading=new t.SessionShading,this.compareRenderer=new t.CompareRenderer,r.sessionBreaks?this.sessionBreaks.setConfig({visible:r.sessionBreaks.visible??!0,color:r.sessionBreaks.color,lineStyle:r.sessionBreaks.lineStyle,lineWidth:r.sessionBreaks.lineWidth}):r.features?.sessionBreaks!==!1&&this.sessionBreaks.setVisible(!0),r.logScale&&this.viewport.setLogScale(!0),this.animator=new t.Animator,this.crosshairTooltip=new t.CrosshairTooltip,this.crosshairTooltip.create(n),this.pinnedTooltip=new t.PinnedTooltip,this.pinnedTooltip.create(n),this.keyboardHandler=new t.KeyboardHandler({scrollBars:e=>{let t=this.viewport.getState().barWidth+this.viewport.getState().barSpacing;this.viewport.scrollBy(e*t),this.updateViewportAndRender()},zoom:e=>{let t=this.viewport.getState().chartRect.width;this.viewport.zoom(e,t/2),this.updateViewportAndRender()},goToStart:()=>{this.viewport.scrollBy(-1/0),this.updateViewportAndRender()},goToEnd:()=>{this.viewport.scrollToEnd(),this.updateViewportAndRender()},fitContent:()=>this.fitContent()}),this.keyboardHandler.setEnabled(this.features.keyboard),this.onWindowKeyDown=e=>{if(!this.keyboardHandler)return;let t=document.activeElement;t&&t!==this.container&&!this.container.contains(t)||t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||this.keyboardHandler.handleKey(e)&&e.preventDefault()},window.addEventListener(`keydown`,this.onWindowKeyDown),this.currentPriceLine=new t.CurrentPriceLine,this.alertManager=new t.AlertManager,this.alertManager.setRequestRender(()=>this.engine.requestRender(e.LayerType.Overlay)),this.alertManager.on(`triggered`,e=>{let t={id:e.id,price:e.price,condition:e.condition,message:e.message,triggered:e.triggered};this.eventBus.emit(`alertTriggered`,t),this.eventBus.emit(`dataUpdate`,{alert:`triggered`,alertId:e.id,price:e.price,message:e.message})}),this.alertManager.on(`added`,e=>{this.eventBus.emit(`alertAdd`,{id:e.id,price:e.price,condition:e.condition,message:e.message,triggered:e.triggered})}),this.alertManager.on(`removed`,e=>{this.eventBus.emit(`alertRemove`,{id:e})}),this.alertManager.on(`updated`,e=>{this.eventBus.emit(`alertUpdate`,{id:e.id,price:e.price,condition:e.condition,message:e.message,triggered:e.triggered})}),this.signalMarkerManager=new t.SignalMarkerManager,this.signalMarkerManager.setRequestRender(()=>this.engine.requestRender(e.LayerType.Overlay)),this.signalMarkerManager.setDataGetter(()=>this.dataManager.getData()),this.signalMarkerManager.on(`added`,e=>{this.eventBus.emit(`signalMarkerAdd`,{id:e.id,source:e.source,direction:e.direction})}),this.signalMarkerManager.on(`removed`,e=>{this.eventBus.emit(`signalMarkerRemove`,{id:e})}),this.tradeZoneManager=new t.TradeZoneManager,this.tradeZoneManager.setRequestRender(()=>this.engine.requestRender(e.LayerType.Overlay)),this.tradeZoneManager.setDataGetter(()=>this.dataManager.getData()),this.tradeZoneManager.on(`added`,e=>{this.eventBus.emit(`tradeZoneAdd`,{id:e.id,direction:e.direction})}),this.tradeZoneManager.on(`removed`,e=>{this.eventBus.emit(`tradeZoneRemove`,{id:e})}),this.replayManager=new t.ReplayManager,this.measureOverlay=new t.MeasureOverlay,this.interactionManager=new t.InteractionManager(n),this.features.panning&&this.interactionManager.setPanHandler(new t.PanHandler(e=>{this.viewport.scrollBy(e),this.updateViewportAndRender()})),this.features.zooming){this.interactionManager.setZoomHandler(new t.ZoomHandler((e,t)=>{this.viewport.zoom(e,t),this.updateViewportAndRender()}));let e=new t.AxisDragHandler(e=>{this.options.autoScale=!1,this.viewport.scalePriceRange(e),this.syncRenderContext(),this.engine.requestRender(),this.emitViewportEvents()},e=>{let t=this.viewport.getState().chartRect.width;this.viewport.zoom(1/e-1,t/2),this.updateViewportAndRender()});this.interactionManager.setAxisDragHandler(e,()=>this.viewport.getState(),e=>{e===`price`?(this.options.autoScale=!0,this.updateViewportAndRender()):this.fitContent()})}if(this.features.crosshair&&this.interactionManager.setCrosshairHandler(this.crosshairHandler),this.features.drawings&&this.interactionManager.setDrawingManager(this.drawingManager,()=>({...this.viewport.getState(),data:this.getDisplayData()})),this.features.trading&&this.interactionManager.setTradingManager(this.tradingManager,()=>({...this.viewport.getState(),data:this.getDisplayData()})),this.features.alerts){let e=new t.AlertDragHandler(this.alertManager,()=>this.viewport.getState());this.interactionManager.setAlertDragHandler(e)}let o=new t.PaneResizeHandler;o.configure(()=>this.getResolvedLayout(),(e,t)=>this.setPanelSize(e,t)),this.interactionManager.setPaneResizeHandler(o),this.interactionManager.setAltClickHandler(t=>{let n=this.getDisplayData();if(n.length===0)return;let r=this.viewport.getState(),i=r.barWidth+r.barSpacing,a=Math.round((r.offset+t.x)/i);a<0||a>=n.length||(this.pinnedTooltip.isPinned()&&this.pinnedTooltip.getPinnedIndex()===a?this.pinnedTooltip.unpin():this.pinnedTooltip.pin(n[a],a,this.themeManager.getTheme()),this.pinnedTooltip.reposition(this.viewport.getState(),this.dataManager.getData()[a]??null,a,this.themeManager.getTheme()),this.engine.requestRender(e.LayerType.Overlay))}),this.interactionManager.setClickHandler(e=>{let n=this.getDisplayData();if(this.eventBus.emit(`click`,{x:e.x,y:e.y}),n.length===0)return;let r=(0,t.xToBarIndex)(e.x,this.viewport.getState());r<0||r>=n.length||this.eventBus.emit(`barClick`,{bar:n[r],barIndex:r,point:e})}),this.interactionManager.setEscapeHandler(()=>{if(this.features.trading&&this.tradingManager.isBracketActive()){this.tradingManager.cancelBracket(),this.eventBus.emit(`dataUpdate`,{bracket:`cancelled`});return}this.pinnedTooltip.isPinned()&&(this.pinnedTooltip.unpin(),this.engine.requestRender(e.LayerType.Overlay))}),this.interactionManager.setConfirmHandler(()=>this.features.trading&&this.tradingManager.isBracketActive()?(this.tradingManager.confirmBracket(),!0):!1),this.interactionManager.setMeasureHandlers({begin:e=>{this.measureOverlay.begin(e,this.viewport.getState(),this.getDisplayData())},move:e=>{this.measureOverlay.update(e,this.viewport.getState(),this.getDisplayData())},end:()=>{this.measureOverlay.end()}}),this.interactionManager.setOverlayDirtyCallback(()=>{this.engine.requestRender(e.LayerType.Overlay),this.engine.requestRender(e.LayerType.UI)}),this.interactionManager.attach(),this.syncRenderContext(),this.engine.start()}setData(e){this.dataManager.setData(e),this.crosshairHandler.setData(this.dataManager.getData()),this.displayDataCache=null,this.sessionBreaks.invalidateCache(),this.alertManager.clearLastValues(),this.indicatorEngine.recalculateAll(this.dataManager.getData()),e.length>0&&this.currentPriceLine.setPrice(e[e.length-1].close),this.updateViewportAndRender(!0),this.eventBus.emit(`dataUpdate`,{length:e.length})}appendBar(e){this.dataManager.appendBar(e),this.crosshairHandler.setData(this.dataManager.getData()),this.displayDataCache=null,this.autoScrollOnNewBar&&this.viewport.scrollToEnd(),this.indicatorEngine.recalculateAll(this.dataManager.getData()),this.updateViewportAndRender()}appendBars(e){if(e.length!==0){for(let t of e)this.dataManager.appendBar(t);this.displayDataCache=null,this.indicatorEngine.recalculateAll(this.dataManager.getData()),this.crosshairHandler.setData(this.dataManager.getData()),this.updateViewportAndRender(this.viewport.isAtEnd())}}updateLastBar(e){this.dataManager.updateLastBar(e),this.currentPriceLine.setPrice(e.close),this.options.chartType!==`candlestick`&&this.options.chartType!==`line`&&this.options.chartType!==`area`&&this.options.chartType!==`bar`&&this.options.chartType!==`hollowCandle`&&(this.displayDataCache=null),this.indicatorEngine.recalculateAll(this.dataManager.getData()),this.scheduleRender()}updateLastBarFromTick(e){this.dataManager.updateLastBarFromTick(e),this.currentPriceLine.setPrice(e.price),this.options.chartType!==`candlestick`&&this.options.chartType!==`line`&&this.options.chartType!==`area`&&this.options.chartType!==`bar`&&this.options.chartType!==`hollowCandle`&&(this.displayDataCache=null),this.indicatorEngine.recalculateAll(this.dataManager.getData()),this.scheduleRender()}setChartType(e){this.options.chartType=e,this.chartRenderer=this.createChartRenderer(e),this.chartLegend.setChartType(e),this.displayDataCache=null,this.updateViewportAndRender(!0)}addIndicator(e,t={},n=`bottom`){if(!this.features.indicators||this.features.indicatorIds.length>0&&!this.features.indicatorIds.includes(e))return null;let r=this.indicatorEngine.addIndicator(e,t,this.dataManager.getData());return this.indicatorEngine.getAvailableIndicators().find(t=>t.id===e)?.placement===`panel`?(this.layoutManager.addPanel(r,n),this.updateViewportAndRender()):this.engine.requestRender(),this.eventBus.emit(`indicatorAdd`,{instanceId:r,id:e}),r}updateIndicator(e,t){this.indicatorEngine.updateIndicator(e,t,this.dataManager.getData()),this.engine.requestRender()}removeIndicator(e){let t=this.layoutManager.getPanels().some(t=>t.id===e);this.indicatorEngine.removeIndicator(e),this.layoutManager.removePanel(e),this.eventBus.emit(`indicatorRemove`,{instanceId:e}),t?this.updateViewportAndRender():this.engine.requestRender()}getIndicatorOutput(e){return this.indicatorEngine.getOutput(e)}registerIndicator(e){this.pluginManager.registerIndicator(e)}get plugins(){return this.pluginManager}static indicators(){let e=new t.IndicatorEngine;return(0,t.registerBuiltInIndicators)(e),e.getAvailableIndicators()}setPanelPosition(e,t){this.layoutManager.setPanelPosition(e,t),this.engine.requestRender()}setPanelSize(e,t){this.layoutManager.setPanelSize(e,t),this.updateViewportAndRender()}setDrawingTool(e){this.features.drawings&&(e&&this.features.drawingTools.length>0&&!this.features.drawingTools.includes(e)||this.drawingManager.setActiveTool(e))}getDrawingTool(){return this.drawingManager.getActiveTool()}setDrawingStyle(e){this.drawingManager.setStyle(e)}getDrawingStyle(){return this.drawingManager.getActiveStyle()}getSelectedDrawingId(){return this.drawingManager.getSelectedDrawingId()}setSelectedDrawingStyle(e,t){return this.drawingManager.setSelectedDrawingStyle(e,t)}getDrawings(){return this.drawingManager.getDrawings()}setDrawings(e){this.drawingManager.setDrawings(e)}addDrawing(e){if(!this.features.drawings)return null;let t=this.drawingManager.addDrawing(e);return this.scheduleAutoSave(),t}autoFib(){if(!this.features.drawings)return null;let e=this.getDisplayData(),n=this.viewport.getState(),r=(0,t.findDominantSwing)(e,n.visibleRange.from,n.visibleRange.to);return r?this.addDrawing({type:`fibRetracement`,anchors:[r[0],r[1]]}):null}removeDrawing(e){this.drawingManager.removeDrawing(e)}setDrawingVisible(e,t){this.drawingManager.setDrawingVisible(e,t)}setDrawingLocked(e,t){this.drawingManager.setDrawingLocked(e,t)}clearDrawings(){this.drawingManager.clearDrawings()}registerDrawingTool(e){this.drawingManager.register(e)}undo(){return this.features.drawingUndoRedo?this.drawingManager.undo():!1}redo(){return this.features.drawingUndoRedo?this.drawingManager.redo():!1}getUndoRedoState(){return this.undoRedoManager.getState()}setDrawingMagnet(e){this.drawingManager.setMagnetMode(e?`magnet`:`none`)}getDrawingMagnet(){return this.drawingManager.getMagnetMode()===`magnet`}lockAllDrawings(){this.drawingManager.lockAllDrawings()}unlockAllDrawings(){this.drawingManager.unlockAllDrawings()}hideAllDrawings(){this.drawingManager.hideAllDrawings()}showAllDrawings(){this.drawingManager.showAllDrawings()}duplicateDrawing(e){let t=e??this.drawingManager.getSelectedDrawingId();return t?this.drawingManager.duplicateDrawing(t):null}exportVisibleData(e=`csv`,n){let r=this.viewport.getState(),i=this.dataManager.getData(),a=Math.max(0,r.visibleRange.from),o=Math.min(i.length-1,r.visibleRange.to),s=i.slice(a,o+1);if(e===`json`){let e=t.DataExporter.toJSON(s);t.DataExporter.download(e,n??`chart-data.json`,`application/json`)}else{let e=t.DataExporter.toCSV(s);t.DataExporter.download(e,n??`chart-data.csv`,`text/csv`)}}exportAllData(e=`csv`,n){let r=this.dataManager.getData();if(e===`json`){let e=t.DataExporter.toJSON(r);t.DataExporter.download(e,n??`chart-data.json`,`application/json`)}else{let e=t.DataExporter.toCSV(r);t.DataExporter.download(e,n??`chart-data.csv`,`text/csv`)}}setAutoSave(e,t=5e3){this.autoSaveScheduler.enable(e,t)}disableAutoSave(){this.autoSaveScheduler.disable()}scheduleAutoSave(){this.autoSaveScheduler.schedule()}getAvailableIndicators(){return this.indicatorEngine.getAvailableIndicators()}getIndicatorInputs(e){let t=this.indicatorEngine.getAvailableIndicators().find(t=>t.id===e);return t?{id:t.id,params:t.defaultConfig}:null}getActiveIndicators(){return this.indicatorEngine.getActiveIndicators()}setIndicatorVisible(e,t){this.indicatorEngine.setVisible(e,t)!==null&&this.updateViewportAndRender()}getIndicatorConfig(e){let t=this.indicatorEngine.getIndicatorConfig(e);return t?{id:t.id,params:{...t.params}}:null}updateIndicatorStyle(e,t){this.indicatorEngine.updateIndicatorStyle(e,t),this.engine.requestRender()}setOrders(e){this.features.trading&&this.tradingManager.setOrders(e)}startBracket(e,t){if(!this.features.trading)return!1;let n=this.dataManager.getData(),r=t??(n.length>0?n[n.length-1].close:null);return r===null?!1:(this.tradingManager.startBracket(e,r),!0)}cancelBracket(){this.features.trading&&this.tradingManager.cancelBracket()}confirmBracket(){return this.features.trading?this.tradingManager.confirmBracket():!1}isBracketActive(){return this.features.trading&&this.tradingManager.isBracketActive()}startOrderDraft(e,t){if(!this.features.trading)return!1;let n=this.dataManager.getData(),r=t??(n.length>0?n[n.length-1].close:null);return r===null?!1:(this.tradingManager.startOrderDraft(e,r),!0)}cancelOrderDraft(){this.features.trading&&this.tradingManager.cancelOrderDraft()}confirmOrderDraft(){return this.features.trading?this.tradingManager.confirmOrderDraft():!1}isOrderDraftActive(){return this.features.trading&&this.tradingManager.isOrderDraftActive()}placeOrderIntent(e){this.features.trading&&this.eventBus.emit(`orderPlace`,e)}setPositions(e){this.features.trading&&this.tradingManager.setPositions(e)}setDepthData(e){this.features.trading&&this.tradingManager.setDepthData(e)}setCurrentPrice(e,t){this.tradingManager.setCurrentPrice(e),this.currentPriceLine.setPrice(e),this.scheduleRender(),this.features.alerts&&(this.alertManager.checkPrice(e),this.feedIndicatorAlerts())}feedIndicatorAlerts(){let e=this.alertManager.getAlerts(),t=this.dataManager.getData();if(t.length===0)return;let n=t.length-1,r=new Set;for(let t of e){if(t.channel===`price`||r.has(t.channel))continue;r.add(t.channel);let e=t.channel.indexOf(`:`);if(e<0)continue;let i=t.channel.slice(0,e),a=t.channel.slice(e+1),o=this.indicatorEngine.getOutput(i)?.series?.[n]?.[a];typeof o==`number`&&Number.isFinite(o)&&this.alertManager.checkChannel(t.channel,o)}}setTradingConfig(e){this.features.trading&&this.tradingManager.setConfig(e)}async connect(n){this.disconnectStream(),this.streamManager=new t.StreamManager,this.streamManager.on(`snapshot`,e=>{this.setData(e)}),this.streamManager.on(`barClose`,e=>{this.dataManager.appendBar(e),this.crosshairHandler.setData(this.dataManager.getData()),this.autoScrollOnNewBar&&this.viewport.scrollToEnd(),this.indicatorEngine.recalculateAll(this.dataManager.getData()),this.updateViewportAndRender()}),this.streamManager.on(`barUpdate`,e=>{this.dataManager.updateLastBar(e),this.currentPriceLine.setPrice(e.close),this.indicatorEngine.recalculateAll(this.dataManager.getData()),this.scheduleRender()}),this.streamManager.on(`priceChange`,({price:t})=>{this.tradingManager.setCurrentPrice(t),this.currentPriceLine.setPrice(t),this.engine.requestRender(e.LayerType.Overlay),this.engine.requestRender(e.LayerType.UI)}),this.streamManager.on(`connectionChange`,e=>{this.eventBus.emit(`dataUpdate`,{connection:e})}),this.streamManager.on(`error`,e=>{this.eventBus.emit(`dataUpdate`,{error:e.message})}),this.autoScrollOnNewBar=n.autoScroll!==!1,this.currentSymbol=n.symbol,await this.streamManager.connect(n);let r=(0,e.timeframeToMs)(n.timeframe);this.barCountdown.setTimeframeMs(r),this.countdownInterval&&clearInterval(this.countdownInterval),this.countdownInterval=setInterval(()=>{this.barCountdown.isVisible()&&this.engine.requestRender(e.LayerType.UI)},1e3)}async switchStream(e,t){this.streamManager&&(this.currentSymbol=e,await this.streamManager.switchTo(e,t))}async setTimeframe(e){if(!this.streamManager)throw Error(`No active stream. Call connect() first.`);await this.switchStream(this.currentSymbol,e)}disconnectStream(){this.streamManager&&=(this.streamManager.dispose(),null)}connectExecution(e,t={}){if(!this.features.trading)throw Error(`connectExecution requires features.trading to be enabled`);this.disconnectExecution(),this.executionAdapter=e,this.execTeardown=O(e,{onIntent:(e,t)=>{let n=e=>t(e.payload);return this.eventBus.on(e,n),()=>this.eventBus.off(e,n)},setOrders:e=>this.setOrders(e),setPositions:e=>this.setPositions(e),onError:e=>this.eventBus.emit(`executionError`,e)}),Promise.resolve(e.connect(t)).catch(e=>this.eventBus.emit(`executionError`,{message:`Execution connect failed`,cause:e}))}disconnectExecution(){this.execTeardown&&=(this.execTeardown(),null),this.executionAdapter&&=(this.executionAdapter.disconnect(),null)}getExecutionAdapter(){return this.executionAdapter}setBarCountdownVisible(t){this.barCountdown.setVisible(t),this.engine.requestRender(e.LayerType.UI)}setSessionBreaksVisible(t){this.sessionBreaks.setVisible(t),this.engine.requestRender(e.LayerType.Background)}addCompareSymbol(t,n,r,i){this.compareRenderer.addSymbol({id:t,label:n,data:r,color:i,visible:!0}),this.engine.requestRender(e.LayerType.Main)}removeCompareSymbol(t){this.compareRenderer.removeSymbol(t),this.engine.requestRender(e.LayerType.Main)}updateCompareData(t,n){this.compareRenderer.setSymbolData(t,n),this.engine.requestRender(e.LayerType.Main)}setCompareMode(t){this.compareRenderer.setMode(t),this.engine.requestRender(e.LayerType.Main)}clearCompareSymbols(){this.compareRenderer.clear(),this.engine.requestRender(e.LayerType.Main)}setLogScale(e){this.viewport.setLogScale(e),this.updateViewportAndRender()}isLogScale(){return this.viewport.isLogScale()}setScaleMode(e){this.viewport.setScaleMode(e),this.updateViewportAndRender()}getScaleMode(){return this.viewport.getScaleMode()}setSessionBreaksConfig(t){this.sessionBreaks.setConfig(t),this.engine.requestRender(e.LayerType.Background)}getConnectionState(){return this.streamManager?.getConnectionState()??`disconnected`}getConnectionInfo(){return this.streamManager?.getConnectionInfo()??{state:`disconnected`}}setAutoScroll(e){this.autoScrollOnNewBar=e}scrollTo(e){let t=this.dataManager.getData();for(let n=0;n<t.length;n++)if(t[n].time>=e){let e=this.viewport.getState().barWidth+this.viewport.getState().barSpacing;this.viewport.scrollBy(n*e-this.viewport.getState().offset),this.updateViewportAndRender();return}}scrollToEnd(){this.viewport.scrollToEnd(),this.updateViewportAndRender()}setVisibleRange(e,t){let n=this.dataManager.getData(),r=0,i=n.length-1;for(let t=0;t<n.length;t++)if(n[t].time>=e){r=t;break}for(let e=n.length-1;e>=0;e--)if(n[e].time<=t){i=e;break}let a=i-r+1;if(a>0){let e=this.viewport.getState().chartRect.width,t=e/a,n=Math.max(2,t-this.viewport.getState().barSpacing);this.viewport.zoom((n-this.viewport.getState().barWidth)/this.viewport.getState().barWidth,e/2)}this.updateViewportAndRender()}zoomIn(){let e=this.viewport.getState().chartRect.width;this.viewport.zoom(.2,e/2),this.updateViewportAndRender()}zoomOut(){let e=this.viewport.getState().chartRect.width;this.viewport.zoom(-.2,e/2),this.updateViewportAndRender()}fitContent(){let e=this.dataManager.getData();e.length!==0&&this.setVisibleRange(e[0].time,e[e.length-1].time)}on(e,t){this.eventBus.on(e,t)}off(e,t){this.eventBus.off(e,t)}enableTauriBridge(e){this.eventBus.enableTauriBridge({enabled:!0,...e})}disableTauriBridge(){this.eventBus.disableTauriBridge()}setTheme(e){this.themeManager.setTheme(e),this.syncRenderContext(),this.container.style.backgroundColor=this.themeManager.getTheme().background,this.engine.requestRender(),this.eventBus.emit(`themeChange`,{theme:e})}getTheme(){return this.themeManager.getTheme()}setWatermark(t,n){this.watermark.setConfig({text:t,...n}),this.engine.requestRender(e.LayerType.Background)}setAutoScale(e){this.options.autoScale=e,this.updateViewportAndRender()}isAutoScale(){return this.options.autoScale!==!1}setCrosshairMode(t){this.crosshairHandler.setMode(t),this.engine.requestRender(e.LayerType.Overlay)}getCrosshairMode(){return this.crosshairHandler.getMode()}setCrosshairPosition(t){t&&this.crosshairHandler.onPointerMove(t),this.engine.requestRender(e.LayerType.Overlay)}getData(){return this.dataManager.getData()}setGridVisible(t){this.gridRenderer.setVisible(t),this.engine.requestRender(e.LayerType.Background)}isGridVisible(){return this.gridRenderer.isVisible()}setVolumeVisible(t){this.volumeRenderer.setVisible(t),this.engine.requestRender(e.LayerType.Main)}setVolumeProfileVisible(t){this.volumeProfile.setVisible(t),this.engine.requestRender(e.LayerType.Main)}isVolumeProfileVisible(){return this.volumeProfile.isVisible()}setVolumeProfileConfig(t){t.buckets!==void 0&&this.volumeProfile.setBuckets(t.buckets),t.widthRatio!==void 0&&this.volumeProfile.setWidthRatio(t.widthRatio),t.opacity!==void 0&&this.volumeProfile.setOpacity(t.opacity),t.highlightPoC!==void 0&&this.volumeProfile.setHighlightPoC(t.highlightPoC),this.engine.requestRender(e.LayerType.Main)}setMarketProfileVisible(t){this.marketProfile.setVisible(t),this.engine.requestRender(e.LayerType.Main)}isMarketProfileVisible(){return this.marketProfile.isVisible()}setMarketProfileConfig(t){t.buckets!==void 0&&this.marketProfile.setBuckets(t.buckets),t.widthRatio!==void 0&&this.marketProfile.setWidthRatio(t.widthRatio),t.opacity!==void 0&&this.marketProfile.setOpacity(t.opacity),t.valueAreaPct!==void 0&&this.marketProfile.setValueAreaPct(t.valueAreaPct),t.highlightPoC!==void 0&&this.marketProfile.setHighlightPoC(t.highlightPoC),t.showStats!==void 0&&this.marketProfile.setShowStats(t.showStats),t.splitBySession!==void 0&&this.marketProfile.setSplitBySession(t.splitBySession),t.letters!==void 0&&this.marketProfile.setLetters(t.letters),this.engine.requestRender(e.LayerType.Main)}getMarketProfileStats(){return this.marketProfile.getStats()}setDepthHeatmapVisible(t){this.depthHeatmap.setVisible(t),this.engine.requestRender(e.LayerType.Main)}isDepthHeatmapVisible(){return this.depthHeatmap.isVisible()}setDepthHeatmapConfig(t){t.opacity!==void 0&&this.depthHeatmap.setOpacity(t.opacity),t.capacity!==void 0&&this.depthHeatmap.setCapacity(t.capacity),this.engine.requestRender(e.LayerType.Main)}pushDepthSnapshot(t){let n=this.dataManager.getData();n.length!==0&&(this.depthHeatmap.push(n[n.length-1].time,t),this.depthHeatmap.isVisible()&&this.engine.requestRender(e.LayerType.Main))}clearDepthHeatmap(){this.depthHeatmap.clear(),this.engine.requestRender(e.LayerType.Main)}setPeriodLevelsVisible(t){this.periodLevels.setVisible(t),this.engine.requestRender(e.LayerType.Main)}isPeriodLevelsVisible(){return this.periodLevels.isVisible()}setPeriodLevelsPeriod(t){this.periodLevels.setPeriod(t),this.engine.requestRender(e.LayerType.Main)}setTimezoneOffset(t){this.timeAxis.setTimezoneOffset(t),this.crosshairHandler.setTimezoneOffset(t),this.engine.requestRender(e.LayerType.UI),this.engine.requestRender(e.LayerType.Overlay)}setPivotMarkersVisible(t){this.pivotMarkers.setVisible(t),this.engine.requestRender(e.LayerType.Overlay)}isPivotMarkersVisible(){return this.pivotMarkers.isVisible()}setPivotMarkersConfig(t){(t.left!==void 0||t.right!==void 0)&&this.pivotMarkers.setStrength(t.left??5,t.right??t.left??5),t.showLabels!==void 0&&this.pivotMarkers.setShowLabels(t.showLabels),t.structureLabels!==void 0&&this.pivotMarkers.setStructureLabels(t.structureLabels),this.engine.requestRender(e.LayerType.Overlay)}setSessionShadingVisible(t){this.sessionShading.setVisible(t),this.engine.requestRender(e.LayerType.Background)}isSessionShadingVisible(){return this.sessionShading.isVisible()}setSessionShadingConfig(t){this.sessionShading.setConfig(t),this.engine.requestRender(e.LayerType.Background)}setTooltipVisible(e){e||this.crosshairTooltip.hide()}setLegend(t){this.chartLegend.setConfig(t),this.engine.requestRender(e.LayerType.UI)}setSymbolName(t){this.chartLegend.setSymbol(t),this.engine.requestRender(e.LayerType.UI)}setStatusText(t){this.chartLegend.setStatusText(t),this.engine.requestRender(e.LayerType.UI)}screenshot(e){this.features.screenshot&&t.Screenshot.download(this.container,e,this.themeManager.getTheme().background)}async copyScreenshot(){if(!this.features.screenshot)return!1;try{let e=await t.Screenshot.toBlob(this.container,this.themeManager.getTheme().background),n=globalThis.ClipboardItem;return!e||!navigator.clipboard?.write||!n?!1:(await navigator.clipboard.write([new n({"image/png":e})]),!0)}catch{return!1}}screenshotDataURL(){return this.features.screenshot?t.Screenshot.toDataURL(this.container,this.themeManager.getTheme().background):null}async screenshotBlob(){return this.features.screenshot?t.Screenshot.toBlob(this.container,this.themeManager.getTheme().background):null}addAlert(e,t=`crossing`,n,r=`price`,i){if(!this.features.alerts)return null;let a=this.alertManager.addAlert(e,t,n,!1,r,i);return this.scheduleAutoSave(),a}removeAlert(e){this.alertManager.removeAlert(e),this.scheduleAutoSave()}getAlerts(){return this.alertManager.getAlerts()}clearAlerts(){this.alertManager.clearAlerts(),this.scheduleAutoSave()}saveAlerts(e){this.alertManager.saveToStorage(e)}loadAlerts(t){this.alertManager.loadFromStorage(t),this.engine.requestRender(e.LayerType.Overlay)}addSignalMarker(e){return this.signalMarkerManager.addMarker(e)}removeSignalMarker(e){this.signalMarkerManager.removeMarker(e)}getSignalMarkers(){return this.signalMarkerManager.getMarkers()}setSignalMarkers(e){this.signalMarkerManager.setMarkers(e)}clearSignalMarkers(){this.signalMarkerManager.clearMarkers()}setSignalMarkerStyle(e){this.signalMarkerManager.setStyle(e)}addTradeZone(e){return this.tradeZoneManager.addZone(e)}updateTradeZone(e,t){this.tradeZoneManager.updateZone(e,t)}removeTradeZone(e){this.tradeZoneManager.removeZone(e)}getTradeZones(){return this.tradeZoneManager.getZones()}setTradeZones(e){this.tradeZoneManager.setZones(e)}clearTradeZones(){this.tradeZoneManager.clearZones()}setTradeZoneStyle(e){this.tradeZoneManager.setStyle(e)}replayStart(e){if(!this.features.replay)return;let t=this.dataManager.getData();this.replayManager.load(t),this.replayManager.on(`bar`,({bar:e,index:n})=>{let r=t.slice(0,n+1);this.dataManager.setData(r),this.crosshairHandler.setData(r),this.indicatorEngine.recalculateAll(r),this.updateViewportAndRender()}),this.replayManager.play(e)}replayPause(){this.replayManager.pause()}replayResume(){this.replayManager.resume()}replayStop(){this.replayManager.stop()}replaySeek(e){this.replayManager.seekTo(e)}setReplaySpeed(e){this.replayManager.setSpeed(e)}getReplayState(){return this.replayManager.getState()}getReplayProgress(){return this.replayManager.getProgress()}saveState(e){if(!this.features.saveLoad)return null;let n=t.ChartStateManager.capture({getDrawings:()=>this.getDrawings(),getTheme:()=>this.getTheme(),getAlerts:()=>this.getAlerts()},{chartType:this.options.chartType}),r=t.ChartStateManager.serialize(n);return e&&t.ChartStateManager.saveToStorage(e,n),r}loadState(e){if(!this.features.saveLoad)return;let n=t.ChartStateManager.deserialize(e);if(n.chartType&&this.setChartType(n.chartType),n.drawings&&this.setDrawings(n.drawings),n.theme&&this.setTheme(n.theme),n.alerts){this.clearAlerts();for(let e of n.alerts)this.addAlert(e.price,e.condition,e.message)}}loadStateFromStorage(e){if(!this.features.saveLoad)return!1;let n=t.ChartStateManager.loadFromStorage(e);return n?(this.loadState(t.ChartStateManager.serialize(n)),!0):!1}downloadState(e){if(!this.features.saveLoad)return;let n=t.ChartStateManager.capture({getDrawings:()=>this.getDrawings(),getTheme:()=>this.getTheme(),getAlerts:()=>this.getAlerts()},{chartType:this.options.chartType});t.ChartStateManager.downloadFile(n,e)}async loadStateFromFile(){if(!this.features.saveLoad)return;let e=await t.ChartStateManager.loadFromFile();this.loadState(t.ChartStateManager.serialize(e))}setLocale(t){(0,e.setLocale)(t),this.engine.requestRender()}setNumberLocale(e){this.numberLocale=e,this.priceAxis.setLocale(e),this.crosshairHandler.setLocale(e),this.syncRenderContext(),this.engine.requestRender()}getNumberLocale(){return this.numberLocale}setMarket(e){if(this.marketConfig=e,e.colorScheme){let t={...this.themeManager.getTheme(),candleUp:e.colorScheme.up,candleDown:e.colorScheme.down,candleUpWick:e.colorScheme.up,candleDownWick:e.colorScheme.down,volumeUp:e.colorScheme.up.replace(`)`,`, 0.3)`).replace(`rgb(`,`rgba(`)||`${e.colorScheme.up}4D`,volumeDown:e.colorScheme.down.replace(`)`,`, 0.3)`).replace(`rgb(`,`rgba(`)||`${e.colorScheme.down}4D`};this.themeManager.setTheme(t)}e.pricePrecision!==void 0&&(this.tradingManager.setConfig({pricePrecision:e.pricePrecision}),this.alertManager.setPricePrecision(e.pricePrecision),this.streamManager?.priceLine.setPricePrecision(e.pricePrecision),this.crosshairHandler.setPricePrecision(e.pricePrecision)),this.syncRenderContext(),this.engine.requestRender()}getMarket(){return this.marketConfig}setPriceLimits(t){this.marketConfig&&((0,e.computePriceLimits)(t,this.marketConfig)&&(this.marketConfig.priceLimits={...this.marketConfig.priceLimits,referencePrice:t}),this.engine.requestRender())}getFeatures(){return this.features}setFeatures(t){Object.assign(this.features,t),t.crosshair===!1&&this.crosshairTooltip.hide(),t.grid!==void 0&&this.engine.requestRender(e.LayerType.Background),t.volume!==void 0&&(this.volumeRenderer.setVisible(t.volume),this.engine.requestRender(e.LayerType.Main)),t.drawings===!1&&this.drawingManager.setActiveTool(null),t.trading===!1&&(this.tradingManager.setOrders([]),this.tradingManager.setPositions([])),t.keyboard!==void 0&&this.keyboardHandler?.setEnabled(t.keyboard),this.engine.requestRender()}resize(){let e=this.engine.dprManager.readContainerSize();if(e.width<=0||e.height<=0)return;this.containerSizeCache=e,this.containerSizeCacheTime=Date.now();let t=this.engine.dprManager.getDpr();this.engine.layerManager.resize(e,t);let n=this.viewport.isAtEnd();this.viewport.resize(e.width,e.height),this.layoutManager.resize(e.width,e.height),this.updateViewportAndRender(n),this.eventBus.emit(`resize`,e)}destroy(){this.countdownInterval&&clearInterval(this.countdownInterval),this.disableAutoSave(),this.disconnectStream(),this.disconnectExecution(),this.onWindowKeyDown&&=(window.removeEventListener(`keydown`,this.onWindowKeyDown),null),this.keyboardHandler=null,this.interactionManager.detach(),this.tradingManager.destroy(),this.animator.dispose(),this.crosshairTooltip.destroy(),this.pinnedTooltip.destroy(),this.replayManager.dispose(),this.undoRedoManager.clear(),this.engine.destroy(),this.eventBus.destroy(),this.container.innerHTML=``}createChartRenderer(e){return a(e,e=>this.pluginManager.getChartType(e))}getDisplayData(){if(this.displayDataCache)return this.displayDataCache;let e=this.dataManager.getData();if(e.length===0)return e;let t=o(this.options.chartType,e,e=>this.pluginManager.getChartType(e));return this.displayDataCache=t,t}scheduleRender(){this.renderScheduled||(this.renderScheduled=!0,requestAnimationFrame(()=>{this.renderScheduled=!1;let e=this.getDisplayData();this.viewport.updateData(e,this.options.autoScale!==!1),this.syncRenderContext(),this.engine.requestRender()}))}updateViewportAndRender(e=!1){this.resolvedLayoutCache=null,this.panelInfoCache=null;let t=this.getResolvedLayout();this.viewport.setChartRect(t.mainChartRect);let n=this.getDisplayData();if(this.viewport.updateData(n,this.options.autoScale!==!1),n.length>0){let e=this.viewport.getState(),t=Math.max(0,Math.min(e.visibleRange.from,n.length-1));this.viewport.setScaleBaseline(n[t]?.close)}if(this.options.autoScale!==!1){let e=this.viewport.getState(),t=this.indicatorEngine.getOverlayPriceRange(e.visibleRange.from,Math.min(e.visibleRange.to,n.length-1));if(t){let n=e.priceRange,r=Math.min(n.min,t.min),i=Math.max(n.max,t.max);if(r<n.min||i>n.max){let e=i-r||1;this.viewport.setPriceRange(r-e*.02,i+e*.02)}}}e&&this.viewport.scrollToEnd(),this.syncRenderContext(),this.engine.requestRender(),this.emitViewportEvents()}emitViewportEvents(){let e=this.viewport.getState(),t=Math.max(0,Math.floor(e.visibleRange.from)),n=Math.max(t,Math.ceil(e.visibleRange.to));(!this.lastEmittedRange||this.lastEmittedRange.from!==t||this.lastEmittedRange.to!==n)&&(this.lastEmittedRange={from:t,to:n},this.eventBus.emit(`visibleRangeChange`,{from:t,to:n}));let{min:r,max:i}=e.priceRange;(!this.lastEmittedPriceRange||this.lastEmittedPriceRange.min!==r||this.lastEmittedPriceRange.max!==i)&&(this.lastEmittedPriceRange={min:r,max:i},this.eventBus.emit(`priceRangeChange`,{min:r,max:i})),this.lastEmittedBarWidth!==e.barWidth&&(this.lastEmittedBarWidth=e.barWidth,this.eventBus.emit(`zoomChange`,{barWidth:e.barWidth}))}getResolvedLayout(){return this.resolvedLayoutCache||=this.layoutManager.resolve(),this.resolvedLayoutCache}cachedContainerSize(){let e=Date.now();return(!this.containerSizeCache||e-this.containerSizeCacheTime>500)&&(this.containerSizeCache=this.engine.dprManager.getContainerSize(),this.containerSizeCacheTime=e),this.containerSizeCache}buildPanelRenderInfos(){if(this.panelInfoCache)return this.panelInfoCache;let e=this.getResolvedLayout(),t=this.viewport.getState(),{from:n,to:r}=t.visibleRange,i=e.panels.map(e=>{let i=l(this.indicatorEngine.getOutput(e.config.id),n,r),a={x:e.rect.x,y:e.rect.y+20,width:e.rect.width,height:Math.max(0,e.rect.height-20)};return{instanceId:e.config.id,rect:e.rect,viewport:{...t,chartRect:a,priceRange:i}}});return this.panelInfoCache=i,i}syncRenderContext(){this.pinnedTooltip.isPinned()&&this.pinnedTooltip.reposition(this.viewport.getState(),null,null,this.themeManager.getTheme());let e=this.getResolvedLayout(),t=this.features.indicators?this.buildPanelRenderInfos():[],n=e.panels.filter(e=>e.config.position===`bottom`).reduce((e,t)=>e+t.rect.height,0),r=e.mainChartRect.y+e.mainChartRect.height+n,i=this.getDisplayData();this.engine.setRenderContext({chartRenderer:this.chartRenderer,gridRenderer:this.features.grid?this.gridRenderer:null,priceAxis:this.features.priceAxis?this.priceAxis:null,timeAxis:this.features.timeAxis?this.timeAxis:null,crosshairHandler:this.features.crosshair?this.crosshairHandler:null,indicatorEngine:this.features.indicators?this.indicatorEngine:null,drawingRenderer:this.features.drawings?this.drawingRenderer:null,tradingRenderer:this.features.trading?this.tradingRenderer:null,currentPriceLine:this.streamManager?.priceLine??this.currentPriceLine,chartLegend:this.features.legend?this.chartLegend:null,volumeRenderer:this.features.volume?this.volumeRenderer:null,volumeProfile:this.volumeProfile,marketProfile:this.marketProfile,depthHeatmap:this.depthHeatmap,periodLevels:this.periodLevels,pivotMarkers:this.pivotMarkers,watermark:this.features.watermark?this.watermark:null,barCountdown:this.barCountdown,sessionBreaks:this.sessionBreaks,sessionShading:this.sessionShading,compareRenderer:this.compareRenderer,alertManager:this.features.alerts?this.alertManager:null,measureOverlay:this.measureOverlay,signalMarkerManager:this.signalMarkerManager,tradeZoneManager:this.tradeZoneManager,panels:t,priceLimits:this.buildPriceLimits(),timeAxisY:r,viewport:{...this.viewport.getState(),data:i},theme:this.themeManager.getTheme(),data:i,numberLocale:this.numberLocale,renderOverlayPlugins:(e,t)=>this.drawOverlayPlugins(e,t)})}drawOverlayPlugins(e,t){let n=y(this.pluginManager.getOverlays(),t);if(n.length===0)return;let r={viewport:this.viewport.getState(),data:this.getDisplayData(),theme:this.themeManager.getTheme()};for(let t of n)t.render(e,r)}buildPriceLimits(){if(!this.marketConfig?.priceLimits?.enabled||!this.marketConfig.priceLimits.referencePrice)return null;let t=(0,e.computePriceLimits)(this.marketConfig.priceLimits.referencePrice,this.marketConfig);return t?{...t,colors:this.marketConfig.colorScheme?{ceiling:this.marketConfig.colorScheme.ceiling,floor:this.marketConfig.colorScheme.floor,reference:this.marketConfig.colorScheme.reference}:void 0}:null}},A=[`time`,`timestamp`,`date`,`datetime`,`t`],j=[`open`,`o`],M=[`high`,`h`],N=[`low`,`l`],P=[`close`,`c`],F=[`volume`,`vol`,`v`];function I(e){let t=e.trim();return t?t[0]===`[`||t[0]===`{`?L(t):R(t):{data:[],rowCount:0,skipped:0}}function L(e){let t;try{t=JSON.parse(e)}catch(e){throw Error(`Invalid JSON: ${e.message}`)}if(!Array.isArray(t))throw Error(`Expected a JSON array of OHLCV rows`);let n=[],r=0;for(let e of t){let t=Array.isArray(e)?U(e):H(e);t?n.push(t):r++}return K(n,t.length,r)}function R(e){let t=e.split(/\r?\n/).filter(e=>e.trim().length>0);if(t.length===0)return{data:[],rowCount:0,skipped:0};let n=z(t[0]),r=B(t[0],n).map(e=>e.trim().toLowerCase()),i=r.some(e=>isNaN(Number(e))&&e.length>0),a=i?V(r):{time:0,open:1,high:2,low:3,close:4,volume:5};if(a.time<0||a.open<0||a.high<0||a.low<0||a.close<0)throw Error(`CSV is missing required column(s): time, open, high, low, close`);let o=[],s=0;for(let e=+!!i;e<t.length;e++){let r=B(t[e],n),i=G(r[a.time]),c=W(r[a.open]),l=W(r[a.high]),u=W(r[a.low]),d=W(r[a.close]),f=a.volume>=0?Number(r[a.volume]):0;if(i===null||![c,l,u,d].every(Number.isFinite)){s++;continue}o.push({time:i,open:c,high:l,low:u,close:d,volume:Number.isFinite(f)?f:0})}return K(o,t.length-+!!i,s)}function z(e){let t={",":0,";":0," ":0,"|":0};for(let n of e)n in t&&t[n]++;let n=`,`,r=0;for(let[e,i]of Object.entries(t))i>r&&(n=e,r=i);return n}function B(e,t){let n=[],r=``,i=!1;for(let a=0;a<e.length;a++){let o=e[a];o===`"`?i&&e[a+1]===`"`?(r+=`"`,a++):i=!i:o===t&&!i?(n.push(r),r=``):r+=o}return n.push(r),n}function V(e){let t=t=>e.findIndex(e=>t.includes(e));return{time:t(A),open:t(j),high:t(M),low:t(N),close:t(P),volume:t(F)}}function H(e){let t=t=>{for(let n of t){if(e[n]!==void 0)return e[n];let t=n.toUpperCase();if(e[t]!==void 0)return e[t]}},n=G(String(t(A)??``)),r=Number(t(j)),i=Number(t(M)),a=Number(t(N)),o=Number(t(P)),s=Number(t(F)??0);return n===null||![r,i,a,o].every(Number.isFinite)?null:{time:n,open:r,high:i,low:a,close:o,volume:Number.isFinite(s)?s:0}}function U(e){if(e.length<5)return null;let t=G(String(e[0])),n=Number(e[1]),r=Number(e[2]),i=Number(e[3]),a=Number(e[4]),o=e.length>=6?Number(e[5]):0;return t===null||![n,r,i,a].every(Number.isFinite)?null:{time:t,open:n,high:r,low:i,close:a,volume:Number.isFinite(o)?o:0}}function W(e){return e===void 0||e.trim()===``?NaN:Number(e)}function G(e){let t=e.trim();if(!t)return null;let n=Number(t);if(Number.isFinite(n)&&n>0)return n<0xe8d4a51000?n*1e3:n;let r=Date.parse(t);return Number.isFinite(r)?r:null}function K(e,t,n){e.sort((e,t)=>e.time-t.time);let r=[];for(let t of e)r.length>0&&r[r.length-1].time===t.time?r[r.length-1]=t:r.push(t);return{data:r,rowCount:t,skipped:n}}var q=class{host;overlay=null;callbacks;bound;depth=0;constructor(e,t){this.host=e,this.callbacks=t,this.bound={dragenter:e=>this.onDragEnter(e),dragover:e=>this.onDragOver(e),dragleave:e=>this.onDragLeave(e),drop:e=>this.onDrop(e)}}attach(){this.host.addEventListener(`dragenter`,this.bound.dragenter),this.host.addEventListener(`dragover`,this.bound.dragover),this.host.addEventListener(`dragleave`,this.bound.dragleave),this.host.addEventListener(`drop`,this.bound.drop)}detach(){this.host.removeEventListener(`dragenter`,this.bound.dragenter),this.host.removeEventListener(`dragover`,this.bound.dragover),this.host.removeEventListener(`dragleave`,this.bound.dragleave),this.host.removeEventListener(`drop`,this.bound.drop),this.hideOverlay()}onDragEnter(e){J(e)&&(e.preventDefault(),this.depth++,this.showOverlay())}onDragOver(e){J(e)&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`))}onDragLeave(e){J(e)&&(this.depth=Math.max(0,this.depth-1),this.depth===0&&this.hideOverlay())}async onDrop(e){e.preventDefault(),this.depth=0,this.hideOverlay();let t=e.dataTransfer?.files?.[0];if(t)try{let e=I(await t.text());if(e.data.length===0)throw Error(`No valid OHLCV rows found in "${t.name}"`);this.callbacks.onData(e.data,e,t)}catch(e){this.callbacks.onError?.(e,t)}}showOverlay(){this.overlay||(this.overlay=document.createElement(`div`),Object.assign(this.overlay.style,{position:`absolute`,inset:`8px`,zIndex:`90`,pointerEvents:`none`,borderRadius:`10px`,border:`2px dashed var(--tcw-accent, #4f88ff)`,background:`rgba(79, 136, 255, 0.06)`,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`var(--tcw-accent, #4f88ff)`,fontSize:`14px`,fontWeight:`600`,letterSpacing:`-0.005em`,fontFamily:`inherit`,backdropFilter:`blur(2px)`}),this.overlay.textContent=`Drop CSV or JSON to load chart data`,getComputedStyle(this.host).position===`static`&&(this.host.style.position=`relative`),this.host.appendChild(this.overlay))}hideOverlay(){this.overlay?.remove(),this.overlay=null}};function J(e){return e.dataTransfer?.types?.includes(`Files`)??!1}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return y}});
2
+ //# sourceMappingURL=DragDropImporter-CBeJgd9y.cjs.map