acttrader-charts 1.3.0-beta.21 → 1.3.0-beta.22
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/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/webview/chart.html +1 -1
- package/package.json +1 -1
package/dist/webview/chart.html
CHANGED
|
@@ -275,6 +275,6 @@
|
|
|
275
275
|
.${Nd}:hover,
|
|
276
276
|
.${Nd}:focus-visible { text-decoration: underline; }
|
|
277
277
|
.${Nd}:focus { outline: none; }
|
|
278
|
-
`,document.head.appendChild(e)}function Fd(){return typeof window<`u`&&(`ontouchstart`in window||navigator.maxTouchPoints>1)}function Id(e=2,t=!1,n=kd,r,i,a){if(i&&i>0&&a&&a>0){let e=Math.floor(i/a);return Math.max(10,Math.min(500,e))}return!t&&!Fd()?n:r===void 0?Math.max(10,Math.round(n/e)):r}var Ld=4;function Rd(e,t){let n=(e.min+e.max)/2,r=(e.max-e.min)/2;return{min:n-r*t,max:n+r*t}}function zd(e){let t=e.max-e.min;return t>=100?0:t>=10?1:t>=1?2:t>=.1?3:4}var Bd=class n{get _tb(){var e,t,n;return(e=(t=(n=this.topBar)==null?this.advancedToolbar:n)==null?this.compactToolbar:t)==null?this.mobileHeader:e}visibleStates(){return this.activeIndicators.filter(e=>{if(!e.visible)return!1;let t=e.currentParams.timeframe;return!(t&&t!==`Chart`&&t!==this.timeframe)})}get indicators(){return this.visibleStates().map(e=>e.indicator)}scheduleViewportPersist(){this._viewportPersistTimer&&clearTimeout(this._viewportPersistTimer),this._viewportPersistTimer=setTimeout(()=>{this._viewportPersistTimer=null,this.emitStateChange()},500)}get isFullscreen(){return this._isCssFullscreen||!!document.fullscreenElement}get _isTradingActive(){var e,t,n,r,i,a,o,s;return((e=(t=this.tradePopover)==null?void 0:t.isVisible)==null?!1:e)||((n=(r=this.tradeActionBar)==null?void 0:r.isVisible)==null?!1:n)||this.draftOrderLabel!==null||((i=(a=this.tradeDragHandler)==null?void 0:a.active)==null?!1:i)||((o=(s=this.orderTimeDragHandler)==null?void 0:s.active)==null?!1:o)||this.pendingLevelDrags.size>0}_enabledGates(){var e;return Object.entries((e=this._features)==null?{}:e).filter(([,e])=>e===!0).map(([e])=>e)}constructor(i){var a,o,c,l,u,f,p,m,h,v,y,b,x,S,C,w,T,E,D,k,j,M,N,P,F,I,R,z,ee,te,ne,re,ie;if(this.topBar=null,this.advancedToolbar=null,this.compactToolbar=null,this.mobileHeader=null,this.bottomBar=null,this.leftBar=null,this.leftBarVisible=!0,this.layoutPopover=null,this.snapshotPopover=null,this.currentPresetId=`1`,this.currentSync={...pi},this.drawingToolsEnabled=!0,this.settingsEnabled=!0,this.fullscreenEnabled=!0,this._mobileLayout=!1,this.indicatorOverlay=null,this.subPaneOverlays=new Map,this.isinPickerModal=null,this.isins=[],this.compareManager=null,this.compareLegend=null,this.comparePickerModal=null,this.compareDataLoader=null,this.compareHoveredIndex=null,this.siEl=null,this.siStreamDot=null,this.siSymbolSpan=null,this.siOHLCSpan=null,this.siOHLC2Span=null,this.tickActivityTimer=null,this.tickActivityMs=3e4,this.streamStatus=`disconnected`,this._isDestroyed=!1,this.indicatorSettingsDialog=null,this.chartSettingsDialog=null,this.tradeButton=null,this.tradePopover=null,this.tradeActionBar=null,this._onAddAlert=null,this.drawingStylePopover=null,this.draftOrderLabel=null,this._minLots=1,this._showQuantityField=!1,this._qtyFieldMin=1,this._qtyFieldMax=100,this._draftQtyFlyout=null,this._draftQtyPillArea=void 0,this._activeQtyPillLabel=void 0,this.pendingQtyChanges=new Map,this.originalQtyByLabel=new Map,this._onOrderSubmit=void 0,this.scrollToEndBtn=null,this.scrollToEndVisible=!1,this.scrollAnimId=null,this.resetViewBtn=null,this.resetViewVisible=!1,this._defaultVisibleBars=kd,this.dataStore=new t,this.scaleManager=new r,this.emitter=new s,this.themeName=`dark`,this._debug=!1,this.symbol=``,this.resolvedInstrument=null,this.resolvedInstrumentPrecision=-1,this.showBidAskLines=!1,this.showActLogo=!1,this.hideLevelConfirmCancel=!1,this.deselectActiveOnOutsideClick=!1,this.tradeLevelButtonScale=1,this.tradeLevelBadgeScale=1,this.tradeLevelBadgeAnchor=`auto`,this._bracketLabel={...Ye},this.levelClusteringEnabled=!0,this.clusterThresholdDistance=20,this.enableThemeToggle=!1,this.activeIndicators=[],this.indicatorInstanceSeq=0,this.indicatorResults=new Map,this.viewport={startIndex:0,endIndex:Id(),candleWidth:8,candleGap:2},this._targetViewport={startIndex:0,endIndex:Id(),candleWidth:8,candleGap:2},this._isPanning=!1,this.crosshair=null,this.drawingManager=new cl,this.textInputEl=null,this.textInputDrawing=null,this._pendingDrawDrag=null,this._pendingDrawResize=null,this._pendingTradeDrag=null,this.paneHeightOverrides=new Map,this.separatorDrag=null,this.priceAxisWidth=wd,this.timeAxisHeight=Td,this.priceScaleFactor=1,this.pricePanOffset=0,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this._lastInCompareMode=!1,this._pendingViewportRestore=null,this._viewportPersistTimer=null,this.axisDrag=null,this.subPaneScaleFactors=new Map,this._mobileCrosshairActive=!1,this._mobileTapStartXY=null,this._longPressTimer=null,this._longPressPoint=null,this._lastTouchTime=0,this._tradeButtonClickData=null,this.disposeVvListener=()=>{},this.rafId=null,this.countdownRafId=null,this.countdownActive=!1,this._cachedWrapRect=null,this._cachedDrawRect=null,this._drawTouchAnchorActive=!1,this._lastDrawingTouchPoint=null,this._drawTouchStartXY=null,this._mobileDrawingFlyout=null,this._isCssFullscreen=!1,this.timezone=`UTC`,this.settingsCanvasColors={},this.streamAdapter=null,this.liveBidAsk=null,this.liveLtp=null,this.tickClosePriceSource=`bid`,this._reloadOnPriceSourceChange=!0,this._suppressTicks=!1,this.levels=[],this.tradeLevelHitAreas=[],this.offViewportHitAreas=[],this.tradeLevelEditAreas=[],this.tradeHoverAreas=[],this.tradeLevelDragAreas=[],this.tradeLevelConfirmAreas=[],this.tradeAddBracketAreas=[],this.clusterBadgeAreas=[],this.lastClusters=[],this.expandedClusters=new Set,this.hoveredTradeLabel=null,this.selectedTradeLabel=null,this._editOpenLabel=null,this.draftBracketPnl={},this.tradeDragHandler=null,this.orderTimeDragHandler=null,this.tradeDragNewBarIndex=null,this.pnlPill=null,this.pnlPillExpanded=!1,this._pnlPillExpandPass=!1,this.pnlPillVisible=!0,this._orderTimeDragEnabled=!1,this._orderLineDragSnap=!0,this._timeAnchorOverride=new Map,this._orderLineAnchorStore=null,this._orderLineDefaultAnchor=`timestamp`,this.tradeDragNewPrice=null,this.tradeDragNewSLPrice=null,this.tradeDragNewTPPrice=null,this._pendingBracketOrderLabel=null,this._slSiblingOrderLabel=null,this._tpSiblingOrderLabel=null,this._isBracketNew=!1,this.pendingLevelDrags=new Map,this.tfcEnabled=!0,this.crosshairEnabled=!0,this.tfcActive=!0,this.tradeDisplayFilter=`all`,this.positionRenderStyle=`dot`,this.tradesThresholdForHorizontalLine=2,this.positionRenderStyleOverride=null,this.RENDER_STYLE_LS_KEY=`finchart:positionRenderStyle`,this.dataLoader=null,this.isFetching=!1,this.noMoreData=!1,this._loadGeneration=0,this.maxCandles=200,this._durationTimeframeMap={..._i},this.minInitialBars=10,this.maxLookbackMs=365*24*60*60*1e3,this.prefetchThreshold=80,this.defaultVisibleBars=kd,this.defaultMobileVisibleBars=void 0,this.mobileBarDivisor=2,this.explicitMobileDivisor=!1,this._autoVisibleBars=!0,this.targetCandleWidth=Ad,this.maxSubPanes=3,this.showCandleCountdown=!0,this.showTradeLevelsAlways=!1,this._revealNewBrackets=!1,this.showPriceAxisCountdown=!1,this.SHOW_SLTP_ALWAYS_LS_KEY=`finchart.showTradeLevelsAlways`,this.PRICE_AXIS_COUNTDOWN_LS_KEY=`finchart.showPriceAxisCountdown`,this.loadingOverlayEl=null,this.noDataOverlayEl=null,this.loadingLabelEl=null,this.noDataLabelEl=null,this.logoImage=null,this.isRestoringState=!1,this.onMouseMove=e=>{var t,r,i,a,o,s,c;if(this._mobileCrosshairActive||Date.now()-this._lastTouchTime<500)return;let l=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,u=e.clientX-l.left,d=e.clientY-l.top,{chartW:f,priceH:p}=this.getChartLayout(),m=(r=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):r,h=l.height-this.timeAxisHeight,g=u<f&&d<h,_=this.scaleManager.pixelToBarIndex(u,this.viewport,f),v=this.scaleManager.pixelToPrice(d,m,p),y=Math.max(Math.floor(this.viewport.startIndex),Math.min(Math.ceil(this.viewport.endIndex),Math.round(_))),b=(i=this.dataStore.all[y])==null?null:i;this.crosshair=g&&this.crosshairEnabled&&!((a=this.tradePopover)!=null&&a.isVisible)&&!((o=this.tradeActionBar)!=null&&o.isVisible)&&this.selectedTradeLabel===null?{x:u,y:d,barIndex:y,price:v,bar:b}:null,this.emitter.emit(`crosshair`,this.crosshair);let x=this.positionRenderStyle===`dot`&&this.hoveredTradeLabel!==null;if(this.tradeButton&&(g&&this.crosshairEnabled&&d>=0&&d<=p&&!this._isTradingActive&&!x?(this.tradeButton.setY(d),qt(d,this.uiConfig.tradeButton.size/2,this.offViewportHitAreas)?this.tradeButton.hide():this.tfcActive&&this.tradeButton.show(),this._tradeButtonClickData={price:v,y:d}):this.tradeButton.hide()),this._pendingDrawResize){let e=u-this._pendingDrawResize.startX,t=d-this._pendingDrawResize.startY;Math.sqrt(e*e+t*t)>n.DRAW_GESTURE_THRESHOLD&&(this.drawingManager.startResize(this._pendingDrawResize.drawing,this._pendingDrawResize.pointIndex,this._pendingDrawResize.handle),this._pendingDrawResize=null)}if(this._pendingDrawDrag){let e=u-this._pendingDrawDrag.startX,t=d-this._pendingDrawDrag.startY;Math.sqrt(e*e+t*t)>n.DRAW_GESTURE_THRESHOLD&&(this.drawingManager.startDrag(this._pendingDrawDrag.drawing,this.makeDrawingPoint(_,v)),this._pendingDrawDrag=null)}if(this.drawingManager.onMouseMove(this.makeDrawingPoint(_,v)),this.axisDrag){if(this.axisDrag.axis===`price`){let e=d-this.axisDrag.startPos;this.priceScaleFactor=Math.max(.1,Math.min(10,this.axisDrag.startSize*1.005**e))}else if(this.axisDrag.axis===`subpane`&&this.axisDrag.instanceId){let e=d-this.axisDrag.startPos,t=Math.max(.1,Math.min(20,this.axisDrag.startSize*1.005**e));this.subPaneScaleFactors.set(this.axisDrag.instanceId,t)}else{let e=u-this.axisDrag.startPos,t=Math.max(10,Math.min(500,Math.round(this.axisDrag.startSize+e*.5))),n=(this.viewport.startIndex+this.viewport.endIndex)/2,r=Math.max(0,n-t/2);this.viewport={...this.viewport,startIndex:r,endIndex:r+t},this._targetViewport={...this.viewport}}this.drawCanvas.style.cursor=this.axisDrag.axis===`time`?`ew-resize`:`ns-resize`,this.scheduleRender();return}if(this.separatorDrag){let e=this.separatorDrag.startY-d,t=Math.max(40,Math.min(300,this.separatorDrag.startH+e));this.paneHeightOverrides.set(this.separatorDrag.instanceId,t),this.drawCanvas.style.cursor=`ns-resize`,this.scheduleRender();return}if(this._pendingTradeDrag){var S;if(!this._upgradePendingTradeDrag(u,d))return;this.drawCanvas.style.cursor=(S=this.orderTimeDragHandler)!=null&&S.active?`grabbing`:`ns-resize`}if((s=this.orderTimeDragHandler)!=null&&s.active){let e=this.orderTimeDragHandler.onMove(u,this.scaleManager,this.viewport,f);this.tradeDragNewBarIndex=e,this.drawCanvas.style.cursor=`grabbing`,this.renderTradeLayer();let t=this.orderTimeDragHandler.dragLabel,n=e===null?void 0:this.barIndexToTimestamp(e);t&&e!==null&&n!==void 0&&this.emitter.emit(`orderLineMoving`,{label:t,toTimestamp:n,toBarIndex:e,isFullscreen:this.isFullscreen});return}if((c=this.tradeDragHandler)!=null&&c.active){var C,w,T;let e=this.tradeDragHandler.onMouseMove(d,this.scaleManager,m,p);if(this.tradeDragNewPrice=(C=e==null?void 0:e.newPrice)==null?null:C,this.tradeDragNewSLPrice=(w=e==null?void 0:e.derivedSLPrice)==null?null:w,this.tradeDragNewTPPrice=(T=e==null?void 0:e.derivedTPPrice)==null?null:T,this.drawCanvas.style.cursor=`ns-resize`,this.renderTradeLayer(),this.tradeDragNewPrice!==null&&e){let t=e.label.indexOf(`:`),n=t===-1?e.label:e.label.slice(0,t),r=t===-1?void 0:e.label.slice(t+1),i=this.levels.find(e=>e.label===n);i&&this.emitter.emit(`tradeLevelDrag`,{label:i.label,newPrice:this.tradeDragNewPrice,data:i.data,bracketType:r,...e.derivedSLPrice===void 0?{}:{derivedSLPrice:e.derivedSLPrice},...e.derivedTPPrice===void 0?{}:{derivedTPPrice:e.derivedTPPrice},isFullscreen:this.isFullscreen})}return}if(!this.drawingManager.getActiveTool()){var E;if(Oe(u,d,this.clusterBadgeAreas)||Dt(u,d,this.tradeLevelHitAreas)||Ot(u,d,this.tradeLevelEditAreas)||kt(u,d,this.tradeLevelConfirmAreas)||Kt(u,d,this.offViewportHitAreas)){this.drawCanvas.style.cursor=`pointer`,this.scheduleRender();return}let e=jt(u,d,this.tradeLevelDragAreas);if(e){let t=this.levels.find(t=>t.label===e.label);this.drawCanvas.style.cursor=this._orderTimeDragEnabled&&e.timeDrag===!0?t&&this._needsDragAxisLock(e,t)?`move`:`grab`:`ns-resize`,e.label!==this.hoveredTradeLabel&&(this.hoveredTradeLabel=e.label,this.renderTradeLayer()),this.scheduleRender();return}let t=At(u,d,this.tradeHoverAreas),n=(E=t==null?void 0:t.label)==null?null:E;if(n!==this.hoveredTradeLabel&&(this.hoveredTradeLabel=n,this.renderTradeLayer()),this.positionRenderStyle===`dot`&&n!==null){this.crosshair=null,this.drawCanvas.style.cursor=`pointer`,this.scheduleRender();return}if(this.getSeparatorPositions().find(e=>Math.abs(d-e.y)<=4))this.drawCanvas.style.cursor=`ns-resize`;else if(u>=f)this.drawCanvas.style.cursor=`ns-resize`;else if(d>=h)this.drawCanvas.style.cursor=`ew-resize`;else if(this.drawingManager.isDraggingDrawing()||this.drawingManager.isResizingDrawing())this.drawCanvas.style.cursor=`grabbing`;else{let e=this.drawingManager.getHandleAtPoint(u,d,this.scaleManager,this.viewport,m,f,p);if(e)this.drawCanvas.style.cursor=e.handle.cursor;else{let e=this.drawingManager.hitTest(u,d,this.scaleManager,this.viewport,m,f,p);this.drawCanvas.style.cursor=e?`move`:`default`}}}this.scheduleRender()},this.onMouseLeave=e=>{if(!(this.tradeButton&&this.tradeButton.el.contains(e.relatedTarget))&&!this._mobileCrosshairActive){if(this.crosshair=null,this.emitter.emit(`crosshair`,null),!this._isTradingActive){var t;(t=this.tradeButton)==null||t.hide()}this.hoveredTradeLabel!==null&&(this.hoveredTradeLabel=null,this.renderTradeLayer()),this.scheduleRender()}},this.onMouseUp=()=>{var e;if(this.drawingManager.isFreehandStroke()){var t;let{chartW:e,priceH:n}=this.getChartLayout(),r=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):t;this.drawingManager.finishFreehand(this.scaleManager,this.viewport,r,e,n),this._pendingDrawDrag=null,this._pendingDrawResize=null,this.scheduleRender();return}if(this._pendingTradeDrag){let{level:e}=this._pendingTradeDrag;if(this._pendingTradeDrag=null,this._editOpenLabel===e.label&&!this.pendingLevelDrags.has(e.label)){this._cancelEditAndDeselect(e.label);return}this._openTradeLevelEditForm(e);return}if(!this._endOrderTimeDrag()){if((e=this.tradeDragHandler)!=null&&e.active){let e=this.tradeDragHandler.endDrag();if(e){var n;this._finalizeMainDragWithBrackets(e,(n=this._pendingBracketOrderLabel)==null?void 0:n)}else this.tradeDragNewPrice=null;this._pendingBracketOrderLabel=null,this.drawCanvas.style.cursor=`default`,this.renderTradeLayer();return}if(this.axisDrag){let e=this.axisDrag.axis===`price`||this.axisDrag.axis===`time`;this.axisDrag=null,this.drawCanvas.style.cursor=`default`,this.scheduleRender(),e&&this.scheduleViewportPersist()}this.separatorDrag&&(this.separatorDrag=null,this.drawCanvas.style.cursor=`default`,this.scheduleRender()),this._pendingDrawDrag=null,this._pendingDrawResize=null,this.drawingManager.isDraggingDrawing()&&(this.drawingManager.endDrag(),this.drawCanvas.style.cursor=`default`,this.scheduleRender()),this.drawingManager.isResizingDrawing()&&(this.drawingManager.endResize(),this.drawCanvas.style.cursor=`default`,this.scheduleRender())}},this.onDrawingTouchStart=e=>{var t;if(e.touches.length!==1)return;let r=e.touches[0],i=this.touchToDrawingPoint(r),a=this.drawingManager.getActiveTool(),o=this.drawingManager.isPlacing();if(a!==null||o){e.preventDefault(),this._lastDrawingTouchPoint=i,o?(this._drawTouchAnchorActive=!1,this.drawingManager.onMouseMove(i)):(this.drawingManager.onMouseDown(i),this._drawTouchAnchorActive=this.drawingManager.isPlacing()&&!this.drawingManager.isFreehandStroke()),this.scheduleRender();return}let s=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,c=r.clientX-s.left,l=r.clientY-s.top,{chartW:u,priceH:d}=this.getChartLayout(),f=this.getScaledPriceRange(this.viewport);if(c>=u){if(e.preventDefault(),l<=d)this.axisDrag={axis:`price`,startPos:l,startSize:this.priceScaleFactor};else{let e=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),t=d+Od;for(let n of e){let e=this.paneH(n);if(l>=t&&l<t+e){var p;this.axisDrag={axis:`subpane`,startPos:l,startSize:(p=this.subPaneScaleFactors.get(n.instanceId))==null?1:p,instanceId:n.instanceId};break}t+=e+Od}}this.scheduleRender();return}let m=s.height-this.timeAxisHeight;if(l>=m){e.preventDefault(),this.axisDrag={axis:`time`,startPos:c,startSize:this.viewport.endIndex-this.viewport.startIndex},this.scheduleRender();return}let h=this.drawingManager.getHandleAtPoint(c,l,this.scaleManager,this.viewport,f,u,d,n.TOUCH_HANDLE_SLOP_PX);if(h){e.preventDefault(),this.panHandler.cancel(),this.drawingManager.selectDrawing(h.drawing),this.drawingManager.startResize(h.drawing,h.handle.pointIndex,h.handle),this.hideMobileDrawingFlyout(),this.scheduleRender();return}let g=this.drawingManager.hitTest(c,l,this.scaleManager,this.viewport,f,u,d);if(g){e.preventDefault(),this.panHandler.cancel(),this.drawingManager.selectDrawing(g),this.drawingManager.startDrag(g,i),this._drawTouchStartXY={x:r.clientX,y:r.clientY},this.hideMobileDrawingFlyout(),this.scheduleRender();return}let _=Oe(c,l,this.clusterBadgeAreas);if(_){e.preventDefault(),this.panHandler.cancel(),this.expandedClusters.has(_.clusterId)?this.expandedClusters.delete(_.clusterId):this.expandedClusters.add(_.clusterId),this.renderTradeLayer();return}let v=Kt(c,l,this.offViewportHitAreas);if(v){e.preventDefault(),this.panHandler.cancel(),this.scrollToCenterPrice(v.targetPrice);return}let y=kt(c,l,this.tradeLevelConfirmAreas);if(y){e.preventDefault(),y.action===`confirm`?this.applyPendingChanges(y.label):this.revertPendingChanges(y.label);return}if(this._showQuantityField&&this._draftQtyPillArea){let t=this._draftQtyPillArea;if(c>=t.pillX&&c<=t.pillX+t.pillW&&l>=t.pillY&&l<=t.pillY+t.pillH){e.preventDefault(),e.stopPropagation(),this.openDraftQtyFlyout(t);return}}let b=Dt(c,l,this.tradeLevelHitAreas);if(b){e.preventDefault(),this._handleTradeLevelClose(b);return}if(!this.drawingManager.getActiveTool()){let t=Ot(c,l,this.tradeLevelEditAreas);if(t){e.preventDefault();let n=this.levels.find(e=>e.label===t.label);n&&this._openTradeLevelEditForm(n);return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let t=jt(c,l,this.tradeLevelDragAreas);if(t){e.preventDefault();let n=this.levels.find(e=>e.label===t.label);if(n){let e=this.selectedTradeLabel===n.label,r=t.isBracket||this._orderTimeDragEnabled&&t.timeDrag===!0||n.type===`pending`&&n.orderType!==`market`&&(e||!t.isBox);if(this.hideLevelConfirmCancel&&!r){let e=this.pendingLevelDrags.has(n.label);if(this.selectedTradeLabel===n.label&&!e){this._cancelEditAndDeselect(n.label);return}this._openTradeLevelEditForm(n);return}if(this._needsDragAxisLock(t,n)){this._pendingTradeDrag={dragHit:t,level:n,hitY:l,startX:c,startY:l,axisLock:!0};return}this._startTradeDragFromHit(t,n,l,c),this.scheduleRender();return}}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let t=Mt(c,l,this.tradeAddBracketAreas);if(t){e.preventDefault(),this._startAddBracketFromHit(t,l),this.scheduleRender();return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let t=At(c,l,this.tradeHoverAreas);if(t){e.preventDefault();let n=this.levels.find(e=>e.label===t.label);if(n){let e=this.pendingLevelDrags.has(t.label);if(this.selectedTradeLabel===t.label&&!e){this._cancelEditAndDeselect(t.label);return}this._openTradeLevelEditForm(n);return}}}this.drawingManager.selectDrawing(null),this.hideMobileDrawingFlyout(),this.expandedClusters.size>0&&(this.expandedClusters.clear(),this.renderTradeLayer()),c<u&&l<m&&(this._mobileCrosshairActive?(this._longPressTimer!==null&&(clearTimeout(this._longPressTimer),this._longPressTimer=null),this._mobileTapStartXY={x:c,y:l}):(this._longPressTimer!==null&&clearTimeout(this._longPressTimer),this._longPressPoint={x:c,y:l},this._longPressTimer=setTimeout(()=>{this._longPressTimer=null,this._longPressPoint&&(this._activateMobileCrosshair(this._longPressPoint.x,this._longPressPoint.y),this._longPressPoint=null)},500)))},this.onDrawingTouchMove=e=>{var t,n;if(e.touches.length!==1)return;let r=this.touchToDrawingPoint(e.touches[0]);if(this._lastDrawingTouchPoint=r,this.axisDrag){var i;e.preventDefault();let t=e.touches[0],n=(i=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():i,r=t.clientX-n.left,a=t.clientY-n.top;if(this.axisDrag.axis===`price`){let e=a-this.axisDrag.startPos;this.priceScaleFactor=Math.max(.1,Math.min(10,this.axisDrag.startSize*1.005**e))}else if(this.axisDrag.axis===`subpane`&&this.axisDrag.instanceId){let e=a-this.axisDrag.startPos,t=Math.max(.1,Math.min(20,this.axisDrag.startSize*1.005**e));this.subPaneScaleFactors.set(this.axisDrag.instanceId,t)}else{let e=r-this.axisDrag.startPos,t=Math.max(10,Math.min(500,Math.round(this.axisDrag.startSize+e*.5))),n=(this.viewport.startIndex+this.viewport.endIndex)/2,i=Math.max(0,n-t/2);this.viewport={...this.viewport,startIndex:i,endIndex:i+t}}this.scheduleRender();return}if(this.drawingManager.isPlacing()&&!this._drawTouchAnchorActive){e.preventDefault(),this.drawingManager.onMouseMove(r),this.scheduleRender();return}if(this.drawingManager.isDraggingDrawing()||this.drawingManager.isResizingDrawing()){e.preventDefault(),e.stopPropagation(),this.drawingManager.onMouseMove(r),this.scheduleRender();return}if(this._pendingTradeDrag){var a;e.preventDefault();let t=e.touches[0],n=(a=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():a;if(!this._upgradePendingTradeDrag(t.clientX-n.left,t.clientY-n.top))return}if((t=this.orderTimeDragHandler)!=null&&t.active){var o;e.preventDefault();let t=e.touches[0],n=(o=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():o,r=t.clientX-n.left,{chartW:i}=this.getChartLayout(),a=this.orderTimeDragHandler.onMove(r,this.scaleManager,this.viewport,i);this.tradeDragNewBarIndex=a,this.renderTradeLayer();let s=this.orderTimeDragHandler.dragLabel,c=a===null?void 0:this.barIndexToTimestamp(a);s&&a!==null&&c!==void 0&&this.emitter.emit(`orderLineMoving`,{label:s,toTimestamp:c,toBarIndex:a,isFullscreen:this.isFullscreen});return}if((n=this.tradeDragHandler)!=null&&n.active){var s,c,l,u,d;e.preventDefault();let t=e.touches[0],n=(s=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():s,r=t.clientY-n.top,{priceH:i}=this.getChartLayout(),a=(c=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):c,o=this.tradeDragHandler.onMouseMove(r,this.scaleManager,a,i);if(this.tradeDragNewPrice=(l=o==null?void 0:o.newPrice)==null?null:l,this.tradeDragNewSLPrice=(u=o==null?void 0:o.derivedSLPrice)==null?null:u,this.tradeDragNewTPPrice=(d=o==null?void 0:o.derivedTPPrice)==null?null:d,this.renderTradeLayer(),this.tradeDragNewPrice!==null&&o){let e=o.label.indexOf(`:`),t=e===-1?o.label:o.label.slice(0,e),n=e===-1?void 0:o.label.slice(e+1),r=this.levels.find(e=>e.label===t);r&&this.emitter.emit(`tradeLevelDrag`,{label:r.label,newPrice:this.tradeDragNewPrice,data:r.data,bracketType:n,...o.derivedSLPrice===void 0?{}:{derivedSLPrice:o.derivedSLPrice},...o.derivedTPPrice===void 0?{}:{derivedTPPrice:o.derivedTPPrice},isFullscreen:this.isFullscreen})}return}if(this._mobileTapStartXY||this._longPressTimer!==null){var f,p;let t=e.touches[0],n=(f=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():f,r=(p=this._mobileTapStartXY)==null?this._longPressPoint:p;if(r){let e=t.clientX-n.left-r.x,i=t.clientY-n.top-r.y;Math.sqrt(e*e+i*i)>6&&(this._mobileTapStartXY=null,this._longPressTimer!==null&&(clearTimeout(this._longPressTimer),this._longPressTimer=null,this._longPressPoint=null))}}if(this._mobileCrosshairActive){var m,h;e.preventDefault();let t=e.touches[0],n=(m=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():m,r=t.clientX-n.left,i=t.clientY-n.top,{chartW:a,priceH:o}=this.getChartLayout(),s=(h=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):h,c=n.height-this.timeAxisHeight;if(r<a&&i<c){var g;let e=this.scaleManager.pixelToBarIndex(r,this.viewport,a),t=this.scaleManager.pixelToPrice(i,s,o),n=Math.max(Math.floor(this.viewport.startIndex),Math.min(Math.ceil(this.viewport.endIndex),Math.round(e))),c=(g=this.dataStore.all[n])==null?null:g;this.crosshair=this.selectedTradeLabel===null?{x:r,y:i,barIndex:n,price:t,bar:c}:null,this.tradeButton&&(this.tradeButton.setY(i),this._isTradingActive||qt(i,this.uiConfig.tradeButton.size/2,this.offViewportHitAreas)?this.tradeButton.hide():this.tfcActive&&this.tradeButton.show(),this._tradeButtonClickData={price:t,y:i}),this.scheduleRender()}}},this.onDrawingTouchCancel=e=>{var t,n;this._longPressTimer!==null&&(clearTimeout(this._longPressTimer),this._longPressTimer=null,this._longPressPoint=null);let r=!1;this._pendingTradeDrag=null,(t=this.orderTimeDragHandler)!=null&&t.active&&(this.orderTimeDragHandler.cancel(),this.tradeDragNewBarIndex=null,r=!0),(n=this.tradeDragHandler)!=null&&n.active&&(this.tradeDragHandler.cancelDrag(),this.tradeDragNewPrice=null,this.tradeDragNewSLPrice=null,this.tradeDragNewTPPrice=null,this._pendingBracketOrderLabel=null,r=!0),this._pendingTradeDrag=null,r&&this.renderTradeLayer()},this.onDrawingTouchEnd=e=>{var t;if(this._lastTouchTime=Date.now(),this._longPressTimer!==null&&(clearTimeout(this._longPressTimer),this._longPressTimer=null,this._longPressPoint=null),this._pendingTradeDrag){let{level:e}=this._pendingTradeDrag;this._pendingTradeDrag=null;let t=this.pendingLevelDrags.has(e.label);if(this.selectedTradeLabel===e.label&&!t){this._cancelEditAndDeselect(e.label);return}this._openTradeLevelEditForm(e);return}if(this._endOrderTimeDrag())return;if((t=this.tradeDragHandler)!=null&&t.active){let e=this.tradeDragHandler.endDrag();if(e){var n;this._finalizeMainDragWithBrackets(e,(n=this._pendingBracketOrderLabel)==null?void 0:n)}else this.tradeDragNewPrice=null;this._pendingBracketOrderLabel=null,this.renderTradeLayer();return}if(this.axisDrag){let e=this.axisDrag.axis===`price`||this.axisDrag.axis===`time`;this.axisDrag=null,this.scheduleRender(),e&&this.scheduleViewportPersist();return}let r=this._drawTouchAnchorActive;if(this._drawTouchAnchorActive=!1,this.drawingManager.isFreehandStroke()){var i;let{chartW:e,priceH:t}=this.getChartLayout(),n=(i=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):i;this.drawingManager.finishFreehand(this.scaleManager,this.viewport,n,e,t),this._lastDrawingTouchPoint=null,this.scheduleRender();return}if(!r&&this.drawingManager.isPlacing()&&this._lastDrawingTouchPoint){this.drawingManager.onMouseDown(this._lastDrawingTouchPoint),this._lastDrawingTouchPoint=null,this.scheduleRender();return}if(this.drawingManager.isDraggingDrawing()){let t=e.changedTouches[0],n=this._drawTouchStartXY;if(this._drawTouchStartXY=null,this.drawingManager.endDrag(),t&&n&&this.drawingManager.getSelectedDrawing()){let e=t.clientX-n.x,r=t.clientY-n.y;Math.sqrt(e*e+r*r)<8&&this.showMobileDrawingFlyout(t.clientX,t.clientY)}this.scheduleRender()}if(this.drawingManager.isResizingDrawing()&&(this.drawingManager.endResize(),this.scheduleRender()),this._mobileTapStartXY){var a;this._mobileTapStartXY=null,this._mobileCrosshairActive=!1,this.crosshair=null,(a=this.tradeButton)==null||a.hide(),this.scheduleRender()}},this.onCanvasClick=e=>{var t,n;let r=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,i=e.clientX-r.left,a=e.clientY-r.top,{chartW:o,priceH:s}=this.getChartLayout(),c=(n=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):n,l=this.scaleManager.pixelToBarIndex(i,this.viewport,o),u=this.scaleManager.pixelToPrice(a,c,s),d=Math.round(l),f=Oe(i,a,this.clusterBadgeAreas);if(f){this.expandedClusters.has(f.clusterId)?this.expandedClusters.delete(f.clusterId):this.expandedClusters.add(f.clusterId),this.renderTradeLayer();return}let p=Kt(i,a,this.offViewportHitAreas);if(p){this.scrollToCenterPrice(p.targetPrice);return}let m=kt(i,a,this.tradeLevelConfirmAreas);if(m){m.action===`confirm`?this.applyPendingChanges(m.label):this.revertPendingChanges(m.label);return}if(this._showQuantityField&&this._draftQtyPillArea){let t=this._draftQtyPillArea;if(i>=t.pillX&&i<=t.pillX+t.pillW&&a>=t.pillY&&a<=t.pillY+t.pillH){e.preventDefault(),e.stopPropagation(),this.openDraftQtyFlyout(t);return}}let h=Dt(i,a,this.tradeLevelHitAreas);if(h){this._handleTradeLevelClose(h);return}if(!this.drawingManager.getActiveTool()){let e=Ot(i,a,this.tradeLevelEditAreas);if(e){let t=this.levels.find(t=>t.label===e.label);t&&this._openTradeLevelEditForm(t);return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let e=Mt(i,a,this.tradeAddBracketAreas);if(e){this._startAddBracketFromHit(e,a);return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let e=jt(i,a,this.tradeLevelDragAreas);if(e){let t=this.levels.find(t=>t.label===e.label);if(t&&!(this.hideLevelConfirmCancel&&!e.isBracket)){this._pendingTradeDrag={dragHit:e,level:t,hitY:a,startX:i,startY:a,axisLock:this._needsDragAxisLock(e,t)};return}}}let g=At(i,a,this.tradeHoverAreas);if(g){let e=this.pendingLevelDrags.has(g.label);if(this.selectedTradeLabel===g.label&&!e){this._cancelEditAndDeselect(g.label);return}let t=this.levels.find(e=>e.label===g.label);t?this._openTradeLevelEditForm(t):(this.selectedTradeLabel=g.label,this.renderTradeLayer());return}else if(this.selectedTradeLabel!==null&&!this.hideLevelConfirmCancel&&this.deselectActiveOnOutsideClick){let e=this.selectedTradeLabel,t=this.pendingLevelDrags.get(e);!t||t.length===0?this._cancelEditAndDeselect(e):this.revertPendingChanges(e)}this.expandedClusters.size>0&&(this.expandedClusters.clear(),this.renderTradeLayer());let _=r.height-this.timeAxisHeight;if(i>=o){if(a<=s)this.axisDrag={axis:`price`,startPos:a,startSize:this.priceScaleFactor};else{let e=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),t=s+Od;for(let n of e){let e=this.paneH(n);if(a>=t&&a<t+e){var v;this.axisDrag={axis:`subpane`,startPos:a,startSize:(v=this.subPaneScaleFactors.get(n.instanceId))==null?1:v,instanceId:n.instanceId};break}t+=e+Od}}this.scheduleRender();return}if(a>=_){this.axisDrag={axis:`time`,startPos:i,startSize:this.viewport.endIndex-this.viewport.startIndex},this.scheduleRender();return}let y=this.getSeparatorPositions().find(e=>Math.abs(a-e.y)<=4);if(y){var b,x;let e=this.activeIndicators.find(e=>e.instanceId===y.instanceId),t=(b=(x=this.paneHeightOverrides.get(y.instanceId))==null?e==null?void 0:e.indicator.paneHeight:x)==null?Dd:b;this.separatorDrag={instanceId:y.instanceId,startY:a,startH:t},this.scheduleRender();return}if(!this.drawingManager.onMouseDown(this.makeDrawingPoint(l,u))){var S;let e=this.drawingManager.getHandleAtPoint(i,a,this.scaleManager,this.viewport,c,o,s);if(e)this.drawingManager.selectDrawing(e.drawing),this._pendingDrawResize={drawing:e.drawing,pointIndex:e.handle.pointIndex,handle:e.handle,startX:i,startY:a};else{let e=this.drawingManager.hitTest(i,a,this.scaleManager,this.viewport,c,o,s);this.drawingManager.selectDrawing(e),e&&(this._pendingDrawDrag={drawing:e,startX:i,startY:a})}let t=(S=this.dataStore.all[d])==null?null:S;this.emitter.emit(`click`,{x:i,y:a,barIndex:d,price:u,bar:t})}this.scheduleRender()},this.onDoubleClick=e=>{var t;this.drawingManager.finalizePlacing();let n=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,r=e.clientX-n.left,i=e.clientY-n.top,{chartW:a,priceH:o}=this.getChartLayout(),s=n.height-this.timeAxisHeight;if(r>=a){this.resetPriceAxis();return}if(i>=s){this.resetTimeAxis();return}let c=new Set([`text`,`callout`,`anchoredNote`]),l=this.drawingManager.getSelectedDrawing();if(l&&c.has(l.type)){let e=this.getScaledPriceRange(this.viewport);if(l.hitTest(r,i,this.scaleManager,this.viewport,e,a,o)){this.showTextInput(l);return}}this.scheduleRender()},this.onKeyDown=e=>{var t;if(e.key===`Escape`&&(t=this.orderTimeDragHandler)!=null&&t.active){this.orderTimeDragHandler.cancel(),this.tradeDragNewBarIndex=null,this.drawCanvas.style.cursor=`default`,this.renderTradeLayer(),e.preventDefault();return}if(e.key===`Escape`&&this.pnlPillExpanded){var n;this.pnlPillExpanded=!1,(n=this.pnlPill)==null||n.setExpanded(!1),this.recomputeRenderStyle(),this.renderTradeLayer()}if(e.key===`Escape`&&this.expandedClusters.size>0){this.expandedClusters.clear(),this.renderTradeLayer(),e.preventDefault();return}if(e.key===`Escape`&&this.pendingLevelDrags.size>0){this.revertPendingChanges(),e.preventDefault();return}let r=(e.ctrlKey||e.metaKey)&&e.key===`z`?`z`:e.key;if(this.drawingManager.onKeyDown(r)){var i;e.preventDefault(),this.hideMobileDrawingFlyout(),(i=this.leftBar)==null||i.setActiveTool(this.drawingManager.getActiveTool()),this.drawCanvas.style.cursor=this.drawingManager.getActiveTool()?`crosshair`:`default`,this.scheduleRender()}},this.onTick=e=>{var t;if(this._isDestroyed)return;let n=this.dataStore.all;if(n.length===0||this._suppressTicks)return;this.liveBidAsk={bid:e.bid,ask:e.ask},e.ltp!=null&&e.ltp>0&&(this.liveLtp=e.ltp),this.setDotTickActive();let r=n[n.length-1],i=this.timeframeToMs(this.timeframe),a=this.tickClosePriceSource===`ltp`?(t=this.liveLtp)==null?e.bid:t:this.tickClosePriceSource===`ask`?e.ask:e.bid;if(e.time<r.time+i){var o;let t={...r,high:Math.max(r.high,a),low:Math.min(r.low,a),close:a,volume:((o=r.volume)==null?0:o)+e.volume};n[n.length-1]=t}else{let t=r,o=Math.floor(e.time/i)*i;n.push({time:o,open:a,high:a,low:a,close:a,volume:e.volume}),this._debug&&console.warn(`[tick] → NEW candle @ ${new Date(o).toISOString()} (closed ${new Date(t.time).toISOString()}) | total bars=${n.length}`);let s=n[n.length-1];this._targetViewport.endIndex>=n.length&&(this._targetViewport={...this._targetViewport,startIndex:this._targetViewport.startIndex+1,endIndex:this._targetViewport.endIndex+1}),this.emitter.emit(`newBar`,{completedBar:t,openingBar:s,intervalMs:i}),this.correctCompletedBar(t.time,i),o>t.time+i&&this.fillTickGap(t.time,o)}this.recomputeIndicators(),this.scheduleRender()},typeof window>`u`||typeof document>`u`)throw Error(`acttrader-charts requires a browser environment`);if(Vn(),window.visualViewport){let e=window.visualViewport,t=()=>{this._cachedWrapRect=null,this._cachedDrawRect=null};e.addEventListener(`resize`,t),e.addEventListener(`scroll`,t),this.disposeVvListener=()=>{e.removeEventListener(`resize`,t),e.removeEventListener(`scroll`,t)}}let{container:ae,theme:oe=`dark`,series:se=`candlestick`,showVolume:ce=!0,showUI:V=!0,timeframe:le=`1D`,duration:ue=void 0,symbol:de=``,isins:fe,onIsinSelect:pe,onSymbolClick:me,onOrderSubmit:he,dataLoader:ge,uiConfig:_e,labels:ve,tickActivityMs:ye=3e4,hideSymbolAndTick:be=!1,hideOHLCV:xe=!1,showBottomBar:Se=!1}=i;if(this.dataLoader=ge==null?null:ge,this.compareDataLoader=(a=i.compareDataLoader)==null?null:a,this.compareManager=new lu({emitter:this.emitter,loader:this.compareDataLoader,maxCompares:i.maxCompares}),this.drawingToolsEnabled=i.showDrawingTools!==!1,this.settingsEnabled=i.showSettings!==!1,this.fullscreenEnabled=i.showFullscreenButton!==!1,this.uiConfig=O(_e),this.labels=A(ve),this.tickActivityMs=ye,this.maxCandles=(o=i.maxCandles)==null?200:o,this._durationTimeframeMap={..._i,...i.durationTimeframeMap},this.minInitialBars=Math.max(0,(c=i.minInitialBars)==null?10:c),this.maxLookbackMs=Math.max(0,(l=i.maxLookbackMs)==null?365*24*60*60*1e3:l),this.prefetchThreshold=(u=i.prefetchThreshold)==null?80:u,this.defaultVisibleBars=(f=i.defaultVisibleBars)==null?kd:f,this.defaultMobileVisibleBars=i.defaultMobileVisibleBars,this.explicitMobileDivisor=i.mobileBarDivisor!==void 0,this.mobileBarDivisor=(p=i.mobileBarDivisor)==null?2:p,this._autoVisibleBars=i.defaultVisibleBars==null&&i.defaultMobileVisibleBars==null,this.targetCandleWidth=(m=i.targetCandleWidth)==null?Ad:m,this.viewport={...this.viewport,endIndex:Id(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars)},this._targetViewport={...this.viewport},this.maxSubPanes=(h=i.maxSubPanes)==null?3:h,this.tickClosePriceSource=(v=i.tickClosePriceSource)==null?`bid`:v,this._reloadOnPriceSourceChange=i.reloadOnPriceSourceChange!==!1,this.showLtpPrice=i.showLtpPrice,this.tradesThresholdForHorizontalLine=(y=i.tradesThresholdForHorizontalLine)==null?2:y,i.positionRenderStyle===`line`||i.positionRenderStyle===`dot`)this.positionRenderStyleOverride=i.positionRenderStyle;else{let e=localStorage.getItem(this.RENDER_STYLE_LS_KEY);(e===`line`||e===`dot`)&&(this.positionRenderStyleOverride=e)}i.tradeDisplayFilter&&(this.tradeDisplayFilter=i.tradeDisplayFilter),i.canvasColors&&(this.settingsCanvasColors=i.canvasColors),this.recomputeRenderStyle(),this.showBidAskLines=(b=i.showBidAskLines)==null?!1:b,this.showAskLine=i.showAskLine,this.showBidLine=i.showBidLine,this.showActLogo=(x=i.showActLogo)==null?!1:x,this.hideLevelConfirmCancel=(S=i.hideLevelConfirmCancel)==null?!1:S,this.deselectActiveOnOutsideClick=(C=i.deselectActiveOnOutsideClick)==null?!1:C,this._orderTimeDragEnabled=((w=i.features)==null?void 0:w.orderLineTimeDrag)===!0,this._features=i.features,this.drawingManager.setFreehandEnabled(((T=i.features)==null?void 0:T.enableForecasting)===!0),this._orderLineDragSnap=i.orderLineDragSnap!==!1,this._orderLineDefaultAnchor=i.orderLineDefaultAnchor===`center`?`center`:`timestamp`,this._orderTimeDragEnabled&&i.orderLineAnchorPersistence!==!1&&(this._orderLineAnchorStore=new Eu(Eu.browserStorage())),this.tradeLevelButtonScale=Math.min(Math.max((E=i.tradeLevelButtonScale)==null?1:E,1),3),this.tradeLevelBadgeScale=Math.min(Math.max((D=i.tradeLevelBadgeScale)==null?1:D,.5),1),this.tradeLevelBadgeAnchor=i.tradeLevelBadgeAnchor===`left`?`left`:`auto`,this._bracketLabel={mode:(k=i.bracketLabelMode)==null?`price`:k,currencySymbol:(j=i.currencySymbol)==null?`$`:j},this.levelClusteringEnabled=(M=i.levelClusteringEnabled)==null?!0:M,this.clusterThresholdDistance=(N=i.clusterThresholdDistance)==null?20:N,this.enableThemeToggle=(P=i.enableThemeToggle)==null?!1:P,this.tfcEnabled=i.tfcEnabled!==!1,this.crosshairEnabled=i.crosshairEnabled!==!1,this.tfcActive=this.tfcEnabled,this.showCandleCountdown=(F=i.showCandleCountdown)==null?!0:F,this.candleCountdownTimeframes=i.candleCountdownTimeframes,this.showTradeLevelsAlways=(I=i.showTradeLevelsAlways)==null?!0:I,this.showPriceAxisCountdown=(R=i.showPriceAxisCountdown)==null?!1:R,this._revealNewBrackets=i.revealNewBrackets===!0;try{let e=localStorage.getItem(this.SHOW_SLTP_ALWAYS_LS_KEY);e!==null&&(this.showTradeLevelsAlways=e===`true`);let t=localStorage.getItem(this.PRICE_AXIS_COUNTDOWN_LS_KEY);t!==null&&(this.showPriceAxisCountdown=t===`true`)}catch(e){}this._onOrderSubmit=he,this._onAddAlert=(z=i.onAddAlert)==null?null:z,i.minLots!==void 0&&(console.warn(`[acttrader-charts] ChartConfig.minLots is deprecated. DraftOrderQtyInput has been removed. The value is stored and used as the submitted lot size.`),this._minLots=i.minLots),i.showQuantityField!==void 0&&(this._showQuantityField=i.showQuantityField),i.quantityFieldConfig&&(i.quantityFieldConfig.minLots!==void 0&&(this._qtyFieldMin=i.quantityFieldConfig.minLots),i.quantityFieldConfig.maxLots!==void 0&&(this._qtyFieldMax=i.quantityFieldConfig.maxLots)),i.onLotsChange!==void 0&&console.warn(`[acttrader-charts] ChartConfig.onLotsChange is deprecated. DraftOrderQtyInput has been removed; this callback will never fire.`),i.hideQtyButton!==void 0&&console.warn(`[acttrader-charts] ChartConfig.hideQtyButton is deprecated and is a no-op. DraftOrderQtyInput has been removed.`),this.themeName=oe===`dark`?`dark`:`light`,this.themeOverrides=i.themeOverrides,this.timezone=i.timezone===`local`?Intl.DateTimeFormat().resolvedOptions().timeZone:(ee=i.timezone)==null?`UTC`:ee,this.aggregateFrom=i.aggregateFrom;let Ce=this.themeName===`dark`?g:_;this.theme=d(Ce,(te=this.themeOverrides)==null?void 0:te[this.themeName]),this.chromeTheme=this.theme,this.series=se,this.showVolume=ce,this.timeframe=le,this.duration=ue,this.symbol=de,this.instrumentSpec=i.instrument,this.accountSpec=i.account,this.wrapper=document.createElement(`div`),Object.assign(this.wrapper.style,{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,overflow:`hidden`,boxSizing:`border-box`});let we=i.headerLayout===`advanced`||i.headerLayout===void 0&&((ne=i.features)==null?void 0:ne.advancedToolbar)===!0,Te=i.headerLayout===`compact`,Ee=i.headerLayout===`mobile`,De=i.hideHeader===!0,ke=i.enableMultipleLayouts===!0,Ae=i.enableSnapshot===!0,je=i.enableCrossHairHeader===!0||i.enableCrosshairToggle===!0;i.layoutSync&&(this.currentSync={...pi,...i.layoutSync}),ke&&typeof i.onLayoutClick==`function`&&console.warn("[ActCharts] `enableMultipleLayouts: true` owns the Layout button — the deprecated `onLayoutClick` callback is ignored. Listen to the `layoutChange` event instead."),Ae&&typeof i.onScreenshotClick==`function`&&console.warn("[ActCharts] `enableSnapshot: true` owns the Snapshot button — the deprecated `onScreenshotClick` callback is ignored. Listen to the `snapshot` event instead."),typeof i.onOneClickTradeToggle==`function`&&typeof i.onOneClickToggle==`function`&&console.warn("[ActCharts] Both `onOneClickTradeToggle` and the deprecated `onOneClickToggle` were provided — using `onOneClickTradeToggle`. Remove the legacy field.");let Me=(re=i.onOneClickTradeToggle)==null?i.onOneClickToggle:re;if(V){let e=e=>{this.timeframe=e,this.emitter.emit(`timeframeChange`,{timeframe:e}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`timeframe`)},t=hd.filter(e=>e.enabled).map(e=>({value:e.short_name,label:`${e.name} (${e.short_name})`,category:e.type})),n=()=>{if(ke)this.openLayoutPopover();else{var e;(e=i.onLayoutClick)==null||e.call(i)}},r=()=>{if(Ae)this.openSnapshotPopover();else{var e;(e=i.onScreenshotClick)==null||e.call(i)}},a=ke||typeof i.onLayoutClick==`function`,o=Ae||typeof i.onScreenshotClick==`function`;if(!De)if(Ee){var Ne,Pe;let t=this.drawingToolsEnabled?{setDrawingTool:e=>{this.setDrawingTool(e)},clearAllDrawings:()=>{this.clearAllDrawings()},addIndicator:(e,t)=>{this.addIndicatorByName(e,t)},removeIndicator:e=>{this.removeIndicator(e)},...je?{setCrosshairEnabled:e=>{this.setCrosshairEnabled(e)}}:{}}:null;this.mobileHeader=new Yr(e,t,(Ne=i.onAskAiClick)==null?null:Ne,this.settingsEnabled?()=>this.openChartSettings():null,e=>this.setSeries(e),this.timeframe,this.series,this.theme,(Pe=this.uiConfig.topBar)==null?void 0:Pe.dropBtnFontFamily,this._enabledGates(),je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)}),this.wrapper.appendChild(this.mobileHeader.el)}else if(Te)this.compactToolbar=new Or(e=>this.setSeries(e),e,e=>this.addIndicatorByName(e),this.series,this.timeframe,this.theme,je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)}),this.compactToolbar.setIndicatorOptions(t),this.wrapper.appendChild(this.compactToolbar.el);else if(we){var Fe,Ie,Le,Re;this.advancedToolbar=new br(e=>this.setSeries(e),e,e=>this.addIndicatorByName(e),()=>this.openChartSettings(),()=>this.toggleFullscreen(),this.drawingToolsEnabled?()=>this.toggleDrawingTools():null,this.drawingToolsEnabled,this.settingsEnabled,this.fullscreenEnabled,this.series,this.timeframe,this.theme,this.compareDataLoader?()=>this.openComparePicker():void 0,n,Me,r,a,o,(Fe=i.priceSourceSelector)==null?null:Fe,this.tickClosePriceSource,e=>this._applyPriceSource(e,!0),je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)},((Ie=i.features)==null?void 0:Ie.pnlPill)===!0,((Le=i.pnlPill)==null?void 0:Le.visible)!==!1,e=>{this.setPnlPillVisible(e)},i.headerOverflowMenu===!0,(Re=i.timeframes)==null?null:Re,this._onAddAlert?()=>{var e;(e=this._onAddAlert)==null||e.call(this,this._currentMarketPrice())}:null),this.advancedToolbar.setIndicatorOptions(t),this.wrapper.appendChild(this.advancedToolbar.el),this.advancedToolbar.setFullscreen(this.isFullscreen)}else{var ze,Be,Ve,He;let s=this._durationTimeframeMap;this.topBar=new qn(e=>this.setSeries(e),e,e=>this.addIndicatorByName(e),(e,t)=>{var n,r;this.duration=e,this.timeframe=t,(n=this._tb)==null||n.setTimeframe(t),(r=this.bottomBar)==null||r.setActive(e),this.emitter.emit(`durationChange`,{duration:e,timeframe:t}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`duration`)},()=>this.openChartSettings(),()=>this.toggleFullscreen(),this.drawingToolsEnabled?()=>this.toggleDrawingTools():null,this.drawingToolsEnabled,this.settingsEnabled,this.fullscreenEnabled,this.tfcEnabled,this.tfcActive,this.tfcEnabled?e=>{this.setTfcActive(e)}:null,this.series,this.timeframe,null,s,this.theme,this.uiConfig.topBar,this.labels.topBar,()=>this.emitUiState(),a,o,n,r,Me==null?null:Me,(ze=i.priceSourceSelector)==null?null:ze,this.tickClosePriceSource,e=>this._applyPriceSource(e,!0),je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)},((Be=i.features)==null?void 0:Be.pnlPill)===!0,((Ve=i.pnlPill)==null?void 0:Ve.visible)!==!1,e=>{this.setPnlPillVisible(e)},(He=i.timeframes)==null?null:He),this.topBar.setIndicatorOptions(t),this.wrapper.appendChild(this.topBar.el),this.topBar.setFullscreen(this.isFullscreen)}ke&&(this.layoutPopover=new hi(this.theme,this.currentPresetId,this.currentSync,e=>this.handleLayoutPresetSelect(e),e=>this.handleSyncToggle(e),()=>this.emitUiState())),Ae&&(this.snapshotPopover=new gi(this.theme,e=>this.handleSnapshot(e),()=>this.emitUiState()))}let Ue=document.createElement(`div`);if(Object.assign(Ue.style,{display:`flex`,flex:`1`,minHeight:`0`,overflow:`hidden`,position:`relative`}),V&&this.drawingToolsEnabled&&(this.leftBar=new Ci(e=>this.setDrawingTool(e),e=>{switch(e){case`undo`:this.undoDrawing();break;case`redo`:this.redoDrawing();break;case`delete_selected`:this.deleteSelectedDrawing();break;case`clear_all`:this.clearAllDrawings();break;case`hide_all`:this.hideAllDrawings();break;case`show_all`:this.showAllDrawings();break;case`lock_all`:this.lockAllDrawings();break;case`unlock_all`:this.unlockAllDrawings();break}},()=>{var e;this.leftBarVisible=!1,(e=this._tb)==null||e.setDrawingsBtnActive(!1)},this.theme,this.uiConfig.drawingToolbar,this.labels.drawingToolbar,this._enabledGates()),Ue.appendChild(this.leftBar.el)),this.canvasWrap=document.createElement(`div`),Object.assign(this.canvasWrap.style,{flex:`1`,position:`relative`,overflow:`hidden`,touchAction:`none`}),this.canvas=document.createElement(`canvas`),Object.assign(this.canvas.style,{position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,pointerEvents:`none`}),this.canvasWrap.appendChild(this.canvas),this.tradeCanvas=document.createElement(`canvas`),Object.assign(this.tradeCanvas.style,{position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,pointerEvents:`none`}),this.canvasWrap.appendChild(this.tradeCanvas),this.drawCanvas=document.createElement(`canvas`),Object.assign(this.drawCanvas.style,{position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,cursor:`crosshair`,touchAction:`none`,userSelect:`none`}),this.drawCanvas.style.webkitUserSelect=`none`,this.drawCanvas.style.webkitTouchCallout=`none`,this.canvasWrap.appendChild(this.drawCanvas),this.textInputEl=document.createElement(`input`),this.textInputEl.type=`text`,this.textInputEl.enterKeyHint=`go`,Object.assign(this.textInputEl.style,{position:`absolute`,display:`none`,zIndex:`15`,background:`transparent`,border:`none`,borderBottom:`1px solid #2196f3`,color:`#f5f5f5`,font:`16px system-ui, sans-serif`,outline:`none`,minWidth:`60px`,padding:`0 2px`}),this.canvasWrap.appendChild(this.textInputEl),V){this.loadingOverlayEl=document.createElement(`div`),Object.assign(this.loadingOverlayEl.style,{display:`none`,position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,alignItems:`center`,justifyContent:`center`,pointerEvents:`none`,zIndex:`20`});let e=document.createElement(`span`);e.textContent=this.labels.chart.loading,Object.assign(e.style,{fontSize:`13px`,padding:`4px 12px`,borderRadius:`4px`}),this.loadingLabelEl=e,this.loadingOverlayEl.appendChild(e),this.canvasWrap.appendChild(this.loadingOverlayEl),this.noDataOverlayEl=document.createElement(`div`),Object.assign(this.noDataOverlayEl.style,{display:`none`,position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,alignItems:`center`,justifyContent:`center`,pointerEvents:`none`,zIndex:`19`});let t=document.createElement(`span`);t.textContent=this.labels.chart.noData,Object.assign(t.style,{fontSize:`13px`,padding:`4px 12px`,borderRadius:`4px`}),this.noDataLabelEl=t,this.noDataOverlayEl.appendChild(t),this.applyOverlayLabelStyles(),this.canvasWrap.appendChild(this.noDataOverlayEl)}if(V&&!(be&&xe)){if(this.siEl=document.createElement(`div`),Object.assign(this.siEl.style,{position:`absolute`,top:`6px`,left:`6px`,zIndex:`10`,display:`flex`,alignItems:`center`,gap:`8px`,pointerEvents:`none`}),!be){this.siSymbolSpan=document.createElement(`span`),Object.assign(this.siSymbolSpan.style,{color:this.theme.tooltip.text,fontSize:`13px`,fontFamily:`inherit`,fontWeight:`700`,letterSpacing:`-0.025em`,display:de?`inline`:`none`}),this.siSymbolSpan.textContent=de==null?``:de;let e=()=>{var e;let t=(e=i.symbolNameDecoration)==null?`underline`:e;t===`hover`?(Pd(),this.siSymbolSpan.classList.add(Nd),this.siSymbolSpan.tabIndex=0,this.siSymbolSpan.style.textDecoration=`none`):this.siSymbolSpan.style.textDecoration=t===`none`?`none`:`underline`};me?(Object.assign(this.siSymbolSpan.style,{cursor:`pointer`,pointerEvents:`auto`}),e(),this.siSymbolSpan.addEventListener(`click`,()=>{var e,t;me((e=(t=this.siSymbolSpan)==null?void 0:t.textContent)==null?``:e)})):pe&&(fe&&(this.isins=fe),this.isinPickerModal=new ou(this.chromeTheme,pe,()=>this.emitUiState()),this.getFloatingRoot().appendChild(this.isinPickerModal.el),Object.assign(this.siSymbolSpan.style,{cursor:`pointer`,pointerEvents:`auto`}),e(),this.siSymbolSpan.addEventListener(`click`,()=>{var e;this.isinPickerModal.show(this.isins,(e=this.siSymbolSpan.textContent)==null?``:e)})),this.siStreamDot=document.createElement(`span`),this.siStreamDot.className=`live-dot`,Object.assign(this.siStreamDot.style,{width:`8px`,height:`8px`,borderRadius:`9999px`,background:this.theme.ui.stream.disconnected,display:`inline-block`,flexShrink:`0`})}xe||(this.siOHLCSpan=document.createElement(`span`),Object.assign(this.siOHLCSpan.style,{fontSize:`11px`,fontFamily:`inherit`,whiteSpace:`nowrap`}),this.siOHLC2Span=document.createElement(`span`),Object.assign(this.siOHLC2Span.style,{fontSize:`11px`,fontFamily:`inherit`,whiteSpace:`nowrap`}));let e=document.createElement(`div`);Object.assign(e.style,{display:`flex`,alignItems:`center`,gap:`8px`}),this.siStreamDot&&e.append(this.siStreamDot),this.siSymbolSpan&&e.append(this.siSymbolSpan),this.siOHLCSpan&&e.append(this.siOHLCSpan),this.siEl.append(e),this.siOHLC2Span&&this.siEl.append(this.siOHLC2Span),this.canvasWrap.appendChild(this.siEl)}if(V&&(this.indicatorOverlay=new ul(this.theme,this.uiConfig.indicatorOverlay,this.labels.chart),this.canvasWrap.appendChild(this.indicatorOverlay.el),this.indicatorSettingsDialog=new dl(this.chromeTheme,this.labels.dialogs,()=>this.emitUiState()),this.getFloatingRoot().appendChild(this.indicatorSettingsDialog.el),this.scrollToEndBtn=document.createElement(`button`),this.scrollToEndBtn.title=this.labels.chart.scrollToLatest,this.applyScrollToEndBtnStyles(),this.scrollToEndBtn.addEventListener(`click`,()=>this.scrollToEnd()),this.canvasWrap.appendChild(this.scrollToEndBtn),this.resetViewBtn=document.createElement(`button`),this.resetViewBtn.title=`Reset view`,this.applyResetViewBtnStyles(),this.resetViewBtn.addEventListener(`click`,()=>this.resetView()),this.canvasWrap.appendChild(this.resetViewBtn)),this.tradeDragHandler=new yu,this.orderTimeDragHandler=new bu,i.onLevelDragEnd&&this.emitter.on(`tradeLevelDragEnd`,i.onLevelDragEnd),i.onLevelEdit&&this.emitter.on(`tradeLevelEdit`,i.onLevelEdit),he){var H;this.tradePopover=new Jl(this.chromeTheme,.01,this.symbol,(e,t,n)=>{var r;(r=this.tradeActionBar)==null||r.hide(),this.createDraftOrder(e,t,n)},this.labels.trade,()=>this.emitUiState(),i.headerLayout===`mobile`),this.canvasWrap.appendChild(this.tradePopover.el),((H=i.features)==null?void 0:H.tradeActionBar)===!0&&(this.tradeActionBar=new Kl({theme:this.chromeTheme,labels:this.labels.trade,onAlert:this._onAddAlert?e=>{var t;(t=this._onAddAlert)==null||t.call(this,e)}:null,onPendingPick:(e,t,n)=>{this.createDraftOrder(e,t,n)},onBulkLevels:(e,t)=>{this.emitter.emit(`bulkLevelsRequested`,{kind:e,price:t,isFullscreen:this.isFullscreen,source:`actionBar`})},onVisibilityChange:()=>this.emitUiState()}),this.canvasWrap.appendChild(this.tradeActionBar.el)),this.tradeButton=new ql(this.theme,this.priceAxisWidth,()=>{if(this._tradeButtonClickData&&this.tradePopover){var e;(e=this.tradeButton)==null||e.hide();let t=this.priceAxisWidth+10+22+4,{price:n,y:r}=this._tradeButtonClickData;if(this.tradeActionBar){this.tradePopover.hide();let e=ml(this.levels,this.draftOrderLabel);this.tradeActionBar.show(n,r,t,{pricePrecision:this.dataStore.getPricePrecision(),buyOrderType:this._orderTypeForPrice(`buy`,n),sellOrderType:this._orderTypeForPrice(`sell`,n),symbol:this.symbol,positionCount:e.count,mixedSides:e.mixed});return}this.tradePopover.show(n,r,t,this.dataStore.getPricePrecision(),this._orderTypeForPrice(`buy`,n),this._orderTypeForPrice(`sell`,n))}},this.labels.trade,this.uiConfig.tradeButton),this.canvasWrap.appendChild(this.tradeButton.el),this.tradeButton.el.addEventListener(`mouseenter`,()=>{this.crosshair=null,this.emitter.emit(`crosshair`,null),this.scheduleRender()}),this.tradeButton.el.addEventListener(`mousemove`,e=>{var t;if(e.buttons!==0)return;let n=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,r=e.clientY-n.top,{priceH:i}=this.getChartLayout();if(qt(r,this.uiConfig.tradeButton.size/2,this.offViewportHitAreas)){var a;(a=this.tradeButton)==null||a.hide();return}if(r>=0&&r<=i){var o,s;(o=this.tradeButton)==null||o.setY(r);let e=(s=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):s,t=this.scaleManager.pixelToPrice(r,e,i);this._tradeButtonClickData={price:t,y:r}}})}if(Ue.appendChild(this.canvasWrap),this.wrapper.appendChild(Ue),V&&Se){var We;let e=this._durationTimeframeMap;this.bottomBar=new yi((e,t)=>{var n;this.duration=e,this.timeframe=t,(n=this._tb)==null||n.setTimeframe(t),this.emitter.emit(`durationChange`,{duration:e,timeframe:t}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`duration`)},(We=this.duration)==null?null:We,this.theme,e,this.uiConfig.bottomBar,this.labels.bottomBar),this.wrapper.appendChild(this.bottomBar.el)}ae.appendChild(this.wrapper),this.themeOverrides&&(this.theme=this.buildTheme(this.themeName),this.chromeTheme=this.buildChromeTheme(this.themeName),this.applyThemeToComponents());let U=this.canvas.getContext(`2d`);if(!U)throw Error(`Canvas 2D context unavailable`);this.ctx=U;let Ge=this.drawCanvas.getContext(`2d`);if(!Ge)throw Error(`Drawing canvas 2D context unavailable`);this.drawCtx=Ge;let Ke=this.tradeCanvas.getContext(`2d`);if(!Ke)throw Error(`Trade canvas 2D context unavailable`);if(this.tradeCtx=Ke,this.showActLogo){let t=new Image;t.onload=()=>{this.logoImage=t,this.scheduleRender()},t.src=e}this.drawingManager.setOnComplete(()=>{var e;(e=this.leftBar)==null||e.setActiveTool(null),this.drawCanvas.style.cursor=`default`}),this.drawingManager.onDrawingsChange=()=>this.emitStateChange(),this.drawingManager.onPointsMutated=e=>{for(let t of e.points){let e=this.barIndexToTimestamp(t.barIndex);e!=null&&(t.timestamp=e)}},this.drawingManager.onStartTextEdit=e=>this.showTextInput(e),this.drawingStylePopover=new nu(this.canvasWrap,this.chromeTheme,(e,t)=>this.updateDrawingStyle(e,t)),this.drawingManager.onSelectionChange=e=>{if(e&&e.complete&&e.locked!==!0){var t,n;let r=this.computeDrawingAnchorPx(e);r?(t=this.drawingStylePopover)==null||t.show(e,r.x,r.y):(n=this.drawingStylePopover)==null||n.hide()}else{var r;(r=this.drawingStylePopover)==null||r.hide()}},this.panHandler=new L(this.drawCanvas,()=>this._targetViewport,e=>{this._targetViewport=e,this.clearDuration(),this.checkNeedMoreData(),this.scheduleRender(),this.scheduleViewportPersist(),this.emitter.emit(`pan`,{viewport:e})},()=>this.dataStore.length,()=>this.scheduleRender(),()=>{var e,t,n,r;return this.drawingManager.getActiveTool()!==null||this.drawingManager.isDraggingDrawing()||this.drawingManager.isResizingDrawing()||this.separatorDrag!==null||this.axisDrag!==null||((e=(t=this.tradeDragHandler)==null?void 0:t.active)==null?!1:e)||((n=(r=this.orderTimeDragHandler)==null?void 0:r.active)==null?!1:n)||this._pendingTradeDrag!==null||this._mobileCrosshairActive},e=>{var t;if(this.priceScaleFactor===1)return;let{priceH:n}=this.getChartLayout(),r=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this._targetViewport):t,i=(r.max-r.min)/n;this.pricePanOffset+=e*i,this.scheduleRender(),this.scheduleViewportPersist()},()=>{this._isPanning=!0},()=>{this._isPanning=!1},{enabled:i.momentumScrollEnabled,decay:i.momentumDecay,threshold:i.momentumThreshold,maxVelocity:i.momentumMaxVelocity}),this.zoomHandler=new B(this.drawCanvas,()=>this._targetViewport,e=>{this._targetViewport=e,this.clearDuration(),this.checkNeedMoreData(),this.scheduleRender(),this.scheduleViewportPersist(),this.emitter.emit(`zoom`,{viewport:e})},()=>this.dataStore.length,()=>this.scheduleRender(),()=>{var e;return(e=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():e},()=>this.getChartLayout().chartW,e=>{let t=this._targetViewport,n=t.endIndex-t.startIndex,r=e*(n/this.drawCanvas.width),i=Math.max(0,this.dataStore.length-Math.floor(n/2)),a=Math.max(0,Math.min(i,t.startIndex+r));this._targetViewport={...t,startIndex:a,endIndex:a+n},this.clearDuration(),this.checkNeedMoreData(),this.scheduleRender(),this.emitter.emit(`pan`,{viewport:this._targetViewport}),this.scheduleViewportPersist()}),this.drawCanvas.addEventListener(`mousemove`,this.onMouseMove),this.drawCanvas.addEventListener(`mouseleave`,this.onMouseLeave),this.drawCanvas.addEventListener(`mousedown`,this.onCanvasClick),this.drawCanvas.addEventListener(`dblclick`,this.onDoubleClick),window.addEventListener(`mouseup`,this.onMouseUp),this.drawCanvas.addEventListener(`touchstart`,this.onDrawingTouchStart,{passive:!1}),this.drawCanvas.addEventListener(`touchmove`,this.onDrawingTouchMove,{passive:!1}),this.drawCanvas.addEventListener(`touchend`,this.onDrawingTouchEnd,{passive:!1}),this.drawCanvas.addEventListener(`touchcancel`,this.onDrawingTouchCancel,{passive:!1}),this.drawCanvas.addEventListener(`contextmenu`,e=>e.preventDefault()),document.addEventListener(`keydown`,this.onKeyDown);let qe=()=>{var e;let t=!!document.fullscreenElement;t||(this._isCssFullscreen=!1),(e=this._tb)==null||e.setFullscreen(t),this.reparentFloatingElements()};if(this.wrapper.addEventListener(`fullscreenchange`,qe),document.addEventListener(`fullscreenchange`,qe),this.resizeObserver=new ResizeObserver(()=>this.onResize()),this.resizeObserver.observe(this.canvasWrap),this.onResize(),((ie=i.features)==null?void 0:ie.pnlPill)===!0&&this.initPnlPill(i),this.dataLoader&&this.triggerLoad(`initial`),this.initCompareUi(),i.initialCompares&&i.initialCompares.length>0){let e=i.initialCompares.slice(),t=this.emitter.on(`dataLoaded`,()=>{t();for(let t of e)this.addCompare(t)})}}resetData(){return++this._loadGeneration,this.setLoading(!1),this.setNoData(!1),this.drawingManager.clearAll(),this.levels=[],this.refreshPnlPill(),this._draftQtyPillArea=void 0,this._pendingBracketOrderLabel=null,this.loadData([])}loadData(e,t=!1){var n,r,i;this.isFetching=!1,this.noMoreData=!1,this._suppressTicks=!1,e.length>0&&this.setNoData(!1),this.liveBidAsk=null,this.liveLtp=null,this.pricePanOffset=0,this.priceScaleFactor=1,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this.dataStore.set(e),this.updateCompareRange();let a=((n=(r=this._cachedWrapRect)==null?void 0:r.width)==null?this.canvasWrap.getBoundingClientRect().width:n)-this.priceAxisWidth,o=this._autoVisibleBars&&a>0?a:void 0,s=Id(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars,o,this.targetCandleWidth);this._defaultVisibleBars=s,this.viewport={...this.viewport,startIndex:t?0:Math.max(0,e.length-s+Ld),endIndex:e.length+Ld},this._targetViewport={...this.viewport};let c=this.dataStore.hasVolumeData;if(c||(this.showVolume=!1),(i=this._tb)==null||i.setVolumeControl(this.showVolume,c),this.showVolume&&c){var l;(l=this.indicatorOverlay)==null||l.addPill(`VOL`,this.theme.volume.up,`VOL`,`Chart`,!0,()=>{var e,t;this.setVolume(!1),(e=this.indicatorOverlay)==null||e.removePill(`VOL`),(t=this._tb)==null||t.setVolumeControl(!1,this.dataStore.hasVolumeData)},null,()=>{var e;this.setVolume(!this.showVolume),(e=this.indicatorOverlay)==null||e.updatePillVisibility(`VOL`,this.showVolume),this.scheduleRender()})}if(this.recomputeIndicators(),this.reanchorDrawingsByTimestamp(),this._pendingViewportRestore){let e=this._pendingViewportRestore;this._pendingViewportRestore=null,e.priceScale&&(this.priceScaleFactor=e.priceScale.factor,this.pricePanOffset=e.priceScale.panOffset,this._displayedPriceRange=null,this._lockedAutoFitBase=null),e.viewport&&this.applyViewportFromTimestamps(e.viewport.startTime,e.viewport.endTime)}return this.updateCountdownState(),this.scheduleRender(),this}prependData(e){if(e.length===0)return this.noMoreData=!0,this.isFetching=!1,this;let t=this.dataStore.prepend(e);return t>0&&(this.viewport={...this.viewport,startIndex:this.viewport.startIndex+t,endIndex:this.viewport.endIndex+t},this._targetViewport={...this.viewport},this.drawingManager.shiftBarIndices(t),this.reanchorDrawingsByTimestamp(),this.recomputeIndicators(),this.updateCompareRange(),this.scheduleRender()),this.isFetching=!1,this}setLoading(e){return this.loadingOverlayEl&&(this.loadingOverlayEl.style.display=e?`flex`:`none`),e&&this.setNoData(!1),this}setNoData(e){return this.noDataOverlayEl&&(this.noDataOverlayEl.style.display=e?`flex`:`none`),this}timeframeToMs(e){var t;let n=6e4;return(t={"1m":1*n,"3m":3*n,"4m":4*n,"5m":5*n,"10m":10*n,"15m":15*n,"30m":30*n,"1h":60*n,"2h":120*n,"4h":240*n,"8h":480*n,"1D":1440*n,"1W":10080*n,"1M":43200*n}[e])==null?1440*n:t}getBaseInterval(){var e,t;return(e=(t=this.aggregateFrom)==null?void 0:t[this.timeframe])==null?this.timeframe:e}shouldAggregate(){let e=this.getBaseInterval();return e!==this.timeframe&&this.timeframeToMs(e)<this.timeframeToMs(this.timeframe)}maybeAggregate(e){return this.shouldAggregate()?gd(e,this.timeframeToMs(this.timeframe)):e}timeframeToInterval(e){var t;return(t={"1m":`1min`,"3m":`3min`,"4m":`4min`,"5m":`5min`,"10m":`10min`,"15m":`15min`,"30m":`30min`,"1h":`1h`,"2h":`2h`,"4h":`4h`,"8h":`8h`,"1D":`1day`,"1W":`1week`,"1M":`1month`}[e])==null?`1day`:t}durationToMs(e){var t;let n=1440*60*1e3;return(t={"1D":1*n,"5D":5*n,"1M":30*n,"3M":90*n,"6M":180*n,"1Y":365*n,"5Y":5*365*n,All:20*365*n}[e])==null?365*n:t}triggerLoad(e){if(!this.dataLoader)return;let t=++this._loadGeneration;this._suppressTicks=!0,this.isFetching=!0,this.noMoreData=!1;let n=new Date,r=this.maxCandles*this.timeframeToMs(this.timeframe),i=this.duration?this.durationToMs(this.duration):r,a=this.duration?i:r,o=this.timeframeToInterval(this.getBaseInterval());this.setLoading(!0);let s=this.dataLoader,c=[1,5,25,125],l=this.minInitialBars,u=this.maxLookbackMs,d=(r,i)=>{s({start:i,end:n,interval:o,priceSource:this.tickClosePriceSource}).then(s=>{if(t!==this._loadGeneration)return;let f=this.maybeAggregate(s),p=n.getTime()-i.getTime()>=u;if(f.length>=l||r+1>=c.length||p){this.loadData(f,e===`duration`),this.setLoading(!1),f.length===0&&this.setNoData(!0),this.emitter.emit(`dataLoaded`,{timeframe:this.timeframe,interval:o,start:i,end:n,priceSource:this.tickClosePriceSource});return}let m=Math.min(a*c[r+1],u),h=new Date(n.getTime()-m);d(r+1,h)}).catch(()=>{t===this._loadGeneration&&(this.isFetching=!1,this.setLoading(!1))})},f=Math.min(a*c[0],u);d(0,new Date(n.getTime()-f))}checkNeedMoreData(){if(!this.dataLoader||this.isFetching||this.noMoreData)return;let e=Math.max(20,this.prefetchThreshold);if(this._targetViewport.startIndex>e||this.dataStore.length===0)return;let t=this._loadGeneration;this.isFetching=!0;let n=this.dataStore.all[0].time,r=new Date(n-1),i=this.maxCandles*this.timeframeToMs(this.timeframe),a=this.duration?this.durationToMs(this.duration):i,o=this.duration?a:i,s=this.timeframeToInterval(this.getBaseInterval());this.setLoading(!0);let c=this.dataLoader,l=[1,5,25,125],u=this.minInitialBars,d=this.maxLookbackMs,f=(e,n)=>{c({start:n,end:r,interval:s,priceSource:this.tickClosePriceSource}).then(i=>{if(t!==this._loadGeneration)return;let a=this.maybeAggregate(i),s=r.getTime()-n.getTime()>=d;if(a.length>=u||e+1>=l.length||s){this.prependData(a),this.setLoading(!1);return}let c=Math.min(o*l[e+1],d),p=new Date(r.getTime()-c);f(e+1,p)}).catch(()=>{t===this._loadGeneration&&(this.isFetching=!1,this.setLoading(!1))})},p=Math.min(o*l[0],d);f(0,new Date(r.getTime()-p))}addIndicator(e,t){var n,r;if(e.pane===`sub`&&this.activeIndicators.filter(e=>e.indicator.pane===`sub`).length>=this.maxSubPanes)return this;let i=Cd.find(t=>t.shortName===e.name),a=i?Object.fromEntries(i.fields.map(e=>[e.key,e.default])):{};a.timeframe=`Chart`,t&&Object.assign(a,t);let o=uu(e.name,++this.indicatorInstanceSeq),s={instanceId:o,indicator:e,shortName:e.name,currentParams:a,visible:!0};this.activeIndicators.push(s),this.dataStore.length>0&&this.indicatorResults.set(o,e.compute(this.dataStore.all));let c=i!==void 0&&i.fields.length>0,l=Sd(e.name,a,i),u=(n=a.timeframe)==null?`Chart`:n;if(e.pane===`sub`){let t=new ul(this.theme,this.uiConfig.indicatorOverlay,this.labels.chart);Object.assign(t.el.style,{position:`absolute`,top:`6px`,left:`6px`,zIndex:`10`}),this.canvasWrap.appendChild(t.el),this.subPaneOverlays.set(o,t),t.addPill(o,e.color,l,u,s.visible,()=>this.removeIndicator(o),c?()=>this.openIndicatorSettings(o):null,()=>{s.visible=!s.visible,t.updatePillVisibility(o,s.visible),this.scheduleRender(),this.emitStateChange()})}else{var d;(d=this.indicatorOverlay)==null||d.addPill(o,e.color,l,u,s.visible,()=>this.removeIndicator(o),c?()=>this.openIndicatorSettings(o):null,()=>{var e;s.visible=!s.visible,(e=this.indicatorOverlay)==null||e.updatePillVisibility(o,s.visible),this.scheduleRender(),this.emitStateChange()})}return(r=this._tb)==null||r.setIndicatorOptionActive(e.name,!0,this.activeIndicators.filter(t=>t.shortName===e.name).length),this.scheduleRender(),this.emitStateChange(),this.isRestoringState||this.emitter.emit(`indicatorAdded`,{instanceId:o,shortName:s.shortName,params:{...s.currentParams}}),this}removeIndicator(e){let t=fu(this.activeIndicators,e);if(t.length===0)return this;let n=new Set(t.map(e=>e.instanceId));this.activeIndicators=this.activeIndicators.filter(e=>!n.has(e.instanceId));for(let e of t){this.indicatorResults.delete(e.instanceId),this.subPaneScaleFactors.delete(e.instanceId),this.paneHeightOverrides.delete(e.instanceId);let t=this.subPaneOverlays.get(e.instanceId);if(t)t.destroy(),t.el.remove(),this.subPaneOverlays.delete(e.instanceId);else{var r;(r=this.indicatorOverlay)==null||r.removePill(e.instanceId)}}let i=new Set(t.map(e=>e.shortName));for(let e of i){var a;let t=this.activeIndicators.filter(t=>t.shortName===e).length;(a=this._tb)==null||a.setIndicatorOptionActive(e,t>0,t)}if(this.scheduleRender(),this.emitStateChange(),!this.isRestoringState)for(let e of t)this.emitter.emit(`indicatorRemoved`,{instanceId:e.instanceId,shortName:e.shortName});return this}addIndicatorByName(e,t){if(e===`VOL`){var n;if(this.setVolume(!this.showVolume),this.showVolume){var r;(r=this.indicatorOverlay)==null||r.addPill(`VOL`,this.theme.volume.up,`VOL`,`Chart`,!0,()=>{var e,t;this.setVolume(!1),(e=this.indicatorOverlay)==null||e.removePill(`VOL`),(t=this._tb)==null||t.setVolumeControl(!1,this.dataStore.hasVolumeData)},null,()=>{var e;this.setVolume(!this.showVolume),(e=this.indicatorOverlay)==null||e.updatePillVisibility(`VOL`,this.showVolume),this.scheduleRender()})}else{var i;(i=this.indicatorOverlay)==null||i.removePill(`VOL`)}(n=this._tb)==null||n.setVolumeControl(this.showVolume,this.dataStore.hasVolumeData);return}let a=Cd.find(t=>t.shortName===e),o=bd.find(t=>t.shortName===e);if(!(!a&&!o)){if(vd.has(e)&&this.activeIndicators.some(t=>t.shortName===e)){this.removeIndicator(e);return}if(a){let n=Object.fromEntries(a.fields.map(e=>[e.key,e.default]));if(a.fields.some(e=>e.key===`color`)){let t=this.activeIndicators.filter(t=>t.shortName===e).length;n.color=du(yd,t)}t&&Object.assign(n,t);let r={...n};delete r.timeframe,this.addIndicator(a.factory(r),n)}else o&&this.addIndicator(o.factory(),t)}}openIndicatorSettings(e){var t;let n=this.activeIndicators.find(t=>t.instanceId===e);if(!n)return;let r=Cd.find(e=>e.shortName===n.shortName);if(!r||r.fields.length===0)return;let i={...r,fields:[...r.fields,xd]};(t=this.indicatorSettingsDialog)==null||t.show(i,n.currentParams,t=>this.updateIndicatorParams(e,t),()=>this.removeIndicator(e))}updateIndicatorParams(e,t){var n;let r=this.activeIndicators.find(t=>t.instanceId===e);if(!r)return;let i=Cd.find(e=>e.shortName===r.shortName);if(!i)return;let{timeframe:a,...o}=t,s=i.factory(o);r.indicator=s,r.currentParams={...t},this.indicatorResults.delete(e),this.dataStore.length>0&&this.indicatorResults.set(e,s.compute(this.dataStore.all));let c=(n=this.subPaneOverlays.get(e))==null?this.indicatorOverlay:n;c==null||c.updatePillColor(e,s.color),c==null||c.updatePillLabel(e,Sd(r.shortName,r.currentParams,i)),c==null||c.updatePillTimeframe(e,a==null?`Chart`:a),this.scheduleRender(),this.emitStateChange()}on(e,t){return this.emitter.on(e,t)}canvasColorOverride(e,t){var n,r,i,a,o,s;let c=this.settingsCanvasColors[e];if(c)return{...t&&{...c.background!==void 0&&{background:c.background},...c.grid!==void 0&&{grid:c.grid},...c.axisText!==void 0&&{axisText:c.axisText},...c.axisBorder!==void 0&&{axisBorder:c.axisBorder},...c.crosshair!==void 0&&{crosshair:c.crosshair}},...((n=(r=(i=(a=(o=c.candleUp)==null?c.candleDown:o)==null?c.wickUp:a)==null?c.wickDown:i)==null?c.borderUp:r)==null?c.borderDown:n)!==void 0&&{candle:{...c.candleUp!==void 0&&{up:c.candleUp},...c.candleDown!==void 0&&{down:c.candleDown},...c.wickUp!==void 0&&{wickUp:c.wickUp},...c.wickDown!==void 0&&{wickDown:c.wickDown},...c.borderUp!==void 0&&{borderUp:c.borderUp},...c.borderDown!==void 0&&{borderDown:c.borderDown}}},...((s=c.volumeUp)==null?c.volumeDown:s)!==void 0&&{volume:{...c.volumeUp!==void 0&&{up:c.volumeUp},...c.volumeDown!==void 0&&{down:c.volumeDown}}}}}overlayTextColor(e){let t=this.settingsCanvasColors[this.themeName];return(t==null?void 0:t.axisText)===void 0?(t==null?void 0:t.background)===void 0?e:u(this.theme.background):t.axisText}buildTheme(e){var t;return p(d(d(e===`dark`?g:_,(t=this.themeOverrides)==null?void 0:t[e]),this.canvasColorOverride(e,!0)),this.wrapper)}buildChromeTheme(e){var t;return p(d(d(e===`dark`?g:_,(t=this.themeOverrides)==null?void 0:t[e]),this.canvasColorOverride(e,!1)),this.wrapper)}initPnlPill(e){var t,n,r;this.pnlPill=new Ml({theme:this.theme,labels:this.labels.pnlPill,currency:(t=e.pnlPill)==null?void 0:t.currency,format:(n=e.pnlPill)==null?void 0:n.format,getBounds:()=>{var e;let t=(e=this._cachedWrapRect)==null?this.canvasWrap.getBoundingClientRect():e;return{width:t.width,height:t.height,right:this.priceAxisWidth,bottom:this.timeAxisHeight}},onToggleExpand:()=>this.togglePnlPillExpanded(),onBulkLevels:()=>{ml(this.levels,this.draftOrderLabel).mixed||this.emitter.emit(`bulkLevelsRequested`,{kind:`sl`,price:null,isFullscreen:this.isFullscreen,source:`pill`})},onCloseAll:()=>this.emitPnlPillCloseAll()}),this.canvasWrap.appendChild(this.pnlPill.el),this.pnlPillVisible=((r=e.pnlPill)==null?void 0:r.visible)!==!1,this.pnlPill.setHidden(!this.pnlPillVisible),this.pnlPill.setExpanded(this.pnlPillExpanded&&this.tfcActive),this.emitter.on(`tfcToggle`,({enabled:e})=>{var t;(t=this.pnlPill)==null||t.setExpanded(this.pnlPillExpanded&&e)}),this.refreshPnlPill()}refreshPnlPill(){var e,t;this.pnlPill&&(this.pnlPill.update(ml(this.levels,this.draftOrderLabel),this.symbol),(e=this.advancedToolbar)==null||e.setPnlPillActive(this.pnlPillVisible,this.symbol),(t=this.topBar)==null||t.setPnlPillActive(this.pnlPillVisible,this.symbol))}setPnlPillVisible(e){var t,n,r;return this.pnlPillVisible===e?this:(this.pnlPillVisible=e,(t=this.pnlPill)==null||t.setHidden(!e),(n=this.advancedToolbar)==null||n.setPnlPillActive(e,this.symbol),(r=this.topBar)==null||r.setPnlPillActive(e,this.symbol),this.emitter.emit(`pnlPillToggle`,{visible:e}),this)}togglePnlPillExpanded(){var e;this.pnlPillExpanded=!this.pnlPillExpanded,this.pnlPillExpanded&&this.tfcEnabled&&!this.tfcActive&&this.setTfcActive(!0),this.pnlPillExpanded||this.expandedClusters.clear(),(e=this.pnlPill)==null||e.setExpanded(this.pnlPillExpanded&&this.tfcActive),this.recomputeRenderStyle(),this.renderTradeLayer()}emitPnlPillCloseAll(){let e=ml(this.levels,this.draftOrderLabel);e.count!==0&&this.emitter.emit(`pnlPillCloseAll`,{count:e.count,pnl:e.hasPnl?e.pnl:null,labels:e.positions.map(e=>e.label),data:e.positions.map(e=>e.data),isFullscreen:this.isFullscreen})}applyThemeToComponents(){var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g;(e=this._tb)==null||e.setTheme(this.chromeTheme),(t=this.bottomBar)==null||t.setTheme(this.chromeTheme),(n=this.leftBar)==null||n.setTheme(this.chromeTheme),(r=this.tradePopover)==null||r.setTheme(this.chromeTheme),(i=this.tradeActionBar)==null||i.setTheme(this.chromeTheme),(a=this.drawingStylePopover)==null||a.setTheme(this.chromeTheme),(o=this._draftQtyFlyout)==null||o.setTheme(this.chromeTheme),(s=this.indicatorSettingsDialog)==null||s.setTheme(this.chromeTheme),(c=this.chartSettingsDialog)==null||c.setTheme(this.chromeTheme),(l=this.layoutPopover)==null||l.setTheme(this.chromeTheme),(u=this.snapshotPopover)==null||u.setTheme(this.chromeTheme),(d=this.comparePickerModal)==null||d.setTheme(this.chromeTheme),(f=this.isinPickerModal)==null||f.setTheme(this.chromeTheme),(p=this.tradeButton)==null||p.setTheme(this.theme,this.priceAxisWidth),(m=this.compareLegend)==null||m.setTheme(this.theme),(h=this.pnlPill)==null||h.setTheme(this.theme),(g=this.indicatorOverlay)==null||g.setTheme(this.theme);for(let e of this.subPaneOverlays.values())e.setTheme(this.theme)}setTheme(e){return this.themeName=e,this.theme=this.buildTheme(e),this.chromeTheme=this.buildChromeTheme(e),this.applyThemeToComponents(),this.applyScrollToEndBtnStyles(),this.applyResetViewBtnStyles(),this.applyMobileDrawingFlyoutTheme(),this.siSymbolSpan&&(this.siSymbolSpan.style.color=this.overlayTextColor(this.theme.tooltip.text)),this.siStreamDot&&(this.siStreamDot.style.background=this.theme.ui.stream[this.streamStatus]),this.applyOverlayLabelStyles(),this.scheduleRender(),this.emitStateChange(),this}getTimeframe(){return this.timeframe}setDuration(e,t){var n,r,i;let a=(n=t==null?this._durationTimeframeMap[e]:t)==null?this.timeframe:n;return this.duration=e,this.timeframe=a,(r=this._tb)==null||r.setTimeframe(a),(i=this.bottomBar)==null||i.setActive(e),this.emitter.emit(`durationChange`,{duration:e,timeframe:a}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`duration`),this}getDuration(){var e;return(e=this.duration)==null?null:e}setTimeframe(e){var t;return this.timeframe=e,(t=this._tb)==null||t.setTimeframe(e),this.emitter.emit(`timeframeChange`,{timeframe:e}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`timeframe`),this}setCrosshair(e){var t,n;if(e===null||!this.crosshairEnabled){if(this.crosshair===null)return;this.crosshair=null,this.scheduleRender();return}let{chartW:r,priceH:i}=this.getChartLayout(),a=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):t,o=this.scaleManager.xToPixel(e.barIndex,this.viewport,r),s=this.scaleManager.yToPixel(e.price,a,i),c=this.dataStore.all,l=(n=c[Math.max(0,Math.min(c.length-1,Math.round(e.barIndex)))])==null?null:n;this.crosshair={x:o,y:s,barIndex:e.barIndex,price:e.price,bar:l},this.scheduleRender()}setViewport(e){e.startIndex===this.viewport.startIndex&&e.endIndex===this.viewport.endIndex||(this.viewport={...this.viewport,startIndex:e.startIndex,endIndex:e.endIndex},this._targetViewport={...this.viewport},this.scheduleRender())}timeToBarIndex(e){let t=this.dataStore.all;if(t.length===0)return null;let n=t[0],r=t[t.length-1];return!n||!r||e<n.time||e>r.time?null:this.timestampToBarIndex(e)}setThemeOverrides(e){return this.themeOverrides=e,this.theme=this.buildTheme(this.themeName),this.chromeTheme=this.buildChromeTheme(this.themeName),this.applyThemeToComponents(),this.scheduleRender(),this}setCanvasColors(e){return this.settingsCanvasColors=e==null?{}:e,this.setTheme(this.themeName),this}setTimezone(e){return this.timezone=e===`local`?Intl.DateTimeFormat().resolvedOptions().timeZone:e,this.scheduleRender(),this}setSeries(e){var t;return this.series=e,(t=this._tb)==null||t.setSeries(e),this.emitter.emit(`seriesChange`,{series:e}),this.scheduleRender(),this.emitStateChange(),this}setTfcActive(e){var t;if(!this.tfcEnabled)return this;if(this.tfcActive=e,(t=this._tb)==null||t.setTfcActive(e),!e){var n,r,i;(n=this.tradeButton)==null||n.hide(),(r=this.tradePopover)==null||r.hide(),(i=this.tradeActionBar)==null||i.hide(),this.draftOrderLabel!==null&&this.removeDraftOrder()}return this.chartSettingsDialog&&(this.chartSettingsDialog.destroy(),this.chartSettingsDialog=null),this.renderTradeLayer(),this.emitter.emit(`tfcToggle`,{enabled:e}),this.emitStateChange(),this}setCrosshairEnabled(e){var t,n,r,i;if(this.crosshairEnabled===e)return this;if(this.crosshairEnabled=e,(t=this.advancedToolbar)==null||t.setCrosshairActive(e),(n=this.topBar)==null||n.setCrosshairActive(e),(r=this.compactToolbar)==null||r.setCrosshairActive(e),(i=this.mobileHeader)==null||i.setCrosshairActive(e),!e){var a;this.crosshair!==null&&(this.crosshair=null,this.emitter.emit(`crosshair`,null)),this._mobileCrosshairActive=!1,(a=this.tradeButton)==null||a.hide(),this.scheduleRender()}return this.emitter.emit(`crosshairToggle`,{enabled:e}),this}clearDuration(){var e,t;this.duration!==void 0&&(this.duration=void 0,(e=this._tb)==null||e.setActiveDuration(void 0),(t=this.bottomBar)==null||t.setActive(void 0),this.emitStateChange())}setVolume(e){return this.showVolume=e,this.scheduleRender(),this.emitStateChange(),this}dismissAllUI(){var e,t,n,r,i,a,o,s;return this.isAnyUIOpen()?((e=this._draftQtyFlyout)==null||e.hide(),(t=this.isinPickerModal)==null||t.hide(),(n=this.comparePickerModal)==null||n.hide(),(r=this.indicatorSettingsDialog)==null||r.hide(),(i=this.chartSettingsDialog)==null||i.hide(),(a=this.tradePopover)==null||a.hide(),(o=this.tradeActionBar)==null||o.hide(),(s=this._tb)==null||s.closeDropdown(),this.hideMobileDrawingFlyout(),!0):!1}isAnyUIOpen(){var e,t,n,r,i,a,o,s,c,l;return((e=this._draftQtyFlyout)==null?void 0:e.isVisible)===!0||((t=this.isinPickerModal)==null?void 0:t.isVisible)===!0||((n=this.comparePickerModal)==null?void 0:n.isVisible)===!0||((r=this.indicatorSettingsDialog)==null?void 0:r.isVisible)===!0||((i=this.chartSettingsDialog)==null?void 0:i.isVisible)===!0||((a=this.tradePopover)==null?void 0:a.isVisible)===!0||((o=this.tradeActionBar)==null?void 0:o.isVisible)===!0||((s=this._tb)==null?void 0:s.hasOpenDropdown)===!0||((c=(l=this._mobileDrawingFlyout)==null?void 0:l.style.display)==null?`none`:c)!==`none`}emitUiState(){this.emitter.emit(`uiStateChange`,{hasOpenUI:this.isAnyUIOpen()})}emitStateChange(){this.isRestoringState||this.emitter.emit(`stateChange`,{symbol:this.symbol,state:this.getState()})}getState(){return{symbol:this.symbol,timeframe:this.timeframe,duration:this.duration,series:this.series,showVolume:this.showVolume,theme:this.themeName,indicators:this.activeIndicators.map(e=>({shortName:e.shortName,params:{...e.currentParams},visible:e.visible,instanceId:e.instanceId})),drawings:this.drawingManager.getDrawingsSnapshot().map(e=>({...e,points:e.points.map(e=>{var t;return{...e,timestamp:(t=e.timestamp)==null?this.barIndexToTimestamp(e.barIndex):t}})})),positionRenderStyle:this.baseRenderStyle(),tradeDisplayFilter:this.tradeDisplayFilter,canvasColors:Object.keys(this.settingsCanvasColors).length>0?{...this.settingsCanvasColors}:void 0,tfcEnabled:this.tfcActive,viewport:this.getViewportTimestamps(),priceScale:this.priceScaleFactor!==1||this.pricePanOffset!==0?{factor:this.priceScaleFactor,panOffset:this.pricePanOffset}:void 0,compares:this.compareManager&&this.compareManager.isActive()?this.compareManager.list().map(e=>e.symbol):void 0}}getViewportTimestamps(){if(this.dataStore.all.length===0)return;let e=this.barIndexToTimestamp(this.viewport.startIndex),t=this.barIndexToTimestamp(this.viewport.endIndex);if(!(e==null||t==null))return{startTime:e,endTime:t}}applyViewportFromTimestamps(e,t){let n=this.timestampToBarIndex(e),r=this.timestampToBarIndex(t);this.viewport={...this.viewport,startIndex:n,endIndex:r},this._targetViewport={...this.viewport}}setState(e){this.isRestoringState=!0;try{if(this.setSeries(e.series),this.setVolume(e.showVolume),e.theme!=null&&this.setTheme(e.theme),e.timeframe!=null){var t,n,r;this.timeframe=e.timeframe,this.duration=e.duration,(t=this._tb)==null||t.setTimeframe(e.timeframe),(n=this._tb)==null||n.setActiveDuration(e.duration),(r=this.bottomBar)==null||r.setActive(e.duration),this.updateCountdownState()}let s=this.activeIndicators.map(e=>e.instanceId);for(let e of s)this.removeIndicator(e);for(let t of e.indicators){var i,a;let e=Cd.find(e=>e.shortName===t.shortName);if(!e)continue;let n={...t.params};delete n.timeframe,this.addIndicator(e.factory(n),t.params);let r=this.activeIndicators[this.activeIndicators.length-1];if(!r)continue;r.currentParams={...t.params};let o=(i=this.subPaneOverlays.get(r.instanceId))==null?this.indicatorOverlay:i;t.visible===!1&&(r.visible=!1,o==null||o.updatePillVisibility(r.instanceId,!1));let s=(a=t.params.timeframe)==null?`Chart`:a;o==null||o.updatePillTimeframe(r.instanceId,s)}let c=e.drawings.map(e=>({...e,points:e.points.map(e=>e.timestamp==null||this.dataStore.all.length===0?e:{...e,barIndex:this.timestampToBarIndex(e.timestamp)})}));if(this.drawingManager.loadDrawings(c),e.positionRenderStyle&&(this.positionRenderStyleOverride=e.positionRenderStyle,this.positionRenderStyle=e.positionRenderStyle),e.tradeDisplayFilter&&(this.tradeDisplayFilter=e.tradeDisplayFilter),e.canvasColors&&(this.settingsCanvasColors=e.canvasColors),e.tfcEnabled!==void 0&&this.tfcEnabled){var o;this.tfcActive=e.tfcEnabled,(o=this._tb)==null||o.setTfcActive(e.tfcEnabled)}if(e.priceScale&&(this.priceScaleFactor=e.priceScale.factor,this.pricePanOffset=e.priceScale.panOffset,this._displayedPriceRange=null,this._lockedAutoFitBase=null),e.viewport&&(this.dataStore.all.length>0?this.applyViewportFromTimestamps(e.viewport.startTime,e.viewport.endTime):this._pendingViewportRestore={viewport:e.viewport,priceScale:e.priceScale}),e.compares&&e.compares.length>0&&this.compareManager){this.compareManager.clear();for(let t of e.compares)this.compareManager.add(t);this.refreshCompareLegend()}}finally{this.isRestoringState=!1}return this.emitStateChange(),this.scheduleRender(),this}barIndexToTimestamp(e){let t=this.dataStore.all,n=t.length;if(n===0)return;let r=t[0];if(!r)return;if(n===1)return r.time;let i=Math.floor(e),a=e-i;if(i<0){let n=t[1];return n?r.time+e*(n.time-r.time):r.time}if(i>=n-1){let i=t[n-1],a=t[n-2];return!i||!a?r.time:i.time+(e-(n-1))*(i.time-a.time)}let o=t[i],s=t[i+1];return!o||!s?r.time:o.time+a*(s.time-o.time)}timestampToBarIndex(e){let t=this.dataStore.all,n=t.length;if(n===0)return 0;let r=t[0];if(!r||n===1)return 0;if(e<=r.time){let n=t[1];if(!n)return 0;let i=n.time-r.time;return i>0?(e-r.time)/i:0}let i=n-1,a=t[i],o=t[i-1];if(!a||!o)return 0;if(e>=a.time){let t=a.time-o.time;return i+(t>0?(e-a.time)/t:0)}let s=0,c=i;for(;s<c;){var l,u;let n=s+c+1>>1;((l=(u=t[n])==null?void 0:u.time)==null?0:l)<=e?s=n:c=n-1}let d=t[s],f=t[s+1];if(!d||!f)return s;let p=f.time-d.time;return s+(p>0?(e-d.time)/p:0)}reanchorDrawingsByTimestamp(){if(this.dataStore.all.length!==0)for(let e of this.drawingManager.getDrawings())for(let t of e.points){if(t.timestamp==null){let e=this.barIndexToTimestamp(t.barIndex);e!=null&&(t.timestamp=e);continue}t.barIndex=this.timestampToBarIndex(t.timestamp)}}backfillDrawingTimestamps(){if(this.dataStore.all.length!==0)for(let e of this.drawingManager.getDrawings())for(let t of e.points){if(t.timestamp!=null)continue;let e=this.barIndexToTimestamp(t.barIndex);e!=null&&(t.timestamp=e)}}resetChartSettings(){return this.setState({symbol:this.symbol,series:`candlestick`,theme:`dark`,timeframe:`1D`,duration:void 0,showVolume:!0,indicators:[],drawings:[]}),this.positionRenderStyleOverride=null,localStorage.removeItem(this.RENDER_STYLE_LS_KEY),this.recomputeRenderStyle(),this.settingsCanvasColors={},this.setTheme(`dark`),this.emitStateChange(),this}setInstrument(e){return this.instrumentSpec=e,this.resolvedInstrument=null,this.scheduleRender(),this}getInstrument(){let e=this.dataStore.getPricePrecision();return(!this.resolvedInstrument||this.resolvedInstrumentPrecision!==e)&&(this.resolvedInstrument=M(this.instrumentSpec,e),this.resolvedInstrumentPrecision=e),this.resolvedInstrument}setAccount(e){return this.accountSpec=e,this.scheduleRender(),this}getAccount(){return this.accountSpec}setSymbol(e){var t,n;return this.symbol=e,(t=this.tradePopover)==null||t.setSymbol(e),this.siSymbolSpan&&(this.siSymbolSpan.textContent=e,this.siSymbolSpan.style.display=e?`inline`:`none`),(n=this.isinPickerModal)==null||n.setCurrentSymbol(e),this.tickActivityTimer!==null&&(clearTimeout(this.tickActivityTimer),this.tickActivityTimer=null),this.siStreamDot&&(this.siStreamDot.style.background=this.theme.ui.stream[this.streamStatus]),this.liveBidAsk=null,this.liveLtp=null,this}setIsins(e){var t;return this.isins=e,(t=this.isinPickerModal)==null||t.setIsins(e),this}renderSymbolInfoOHLC(e){if(!this.siOHLCSpan)return;if(!e){this.siOHLCSpan.innerHTML=``,this.siOHLC2Span&&(this.siOHLC2Span.innerHTML=``);return}let t=e.close>=e.open?this.theme.candle.up:this.theme.candle.down,n=this.overlayTextColor(this.theme.axisText),r=e=>e.toFixed(this.dataStore.getPricePrecision()),i=e=>e>=1e6?(e/1e6).toFixed(2)+`M`:e>=1e3?(e/1e3).toFixed(1)+`K`:e.toFixed(0),a=this.labels.ohlc,o=(e,t)=>{e.innerHTML=``;for(let[r,i,a]of t){let t=document.createElement(`span`);t.style.marginRight=`8px`;let o=document.createElement(`span`);o.textContent=r+`\xA0`,o.style.color=n,o.style.opacity=`0.6`;let s=document.createElement(`span`);s.textContent=i,s.style.color=a,t.append(o,s),e.appendChild(t)}};o(this.siOHLCSpan,[[a.open,r(e.open),n],[a.high,r(e.high),n]]),this.siOHLC2Span&&o(this.siOHLC2Span,[[a.low,r(e.low),n],[a.close,r(e.close),t],...e.volume!=null&&e.volume!==0?[[a.volume,i(e.volume),n]]:[]])}setMinLots(e){var t;return console.warn(`[acttrader-charts] setMinLots() is deprecated. Pass minLots in the initial ChartConfig instead.`),this._minLots=e,(t=this.tradePopover)==null||t.setLots(e),this}setDraftQty(e){return this.draftOrderLabel&&this.setLevelQty(this.draftOrderLabel,e),this}updateLevelQty(e,t){return!e||e===this.draftOrderLabel||!Number.isFinite(t)||t<=0||this.setLevelQty(e,t),this}setLevelQty(e,t){var n,r;let i=this.levels.findIndex(t=>t.label===e);if(i===-1)return;let a=this.levels[i];if(a.lots===t)return;this.originalQtyByLabel.has(e)||this.originalQtyByLabel.set(e,a.lots);let o=(n=(r=this.originalQtyByLabel.get(e))==null?a.lots:r)==null?t:n;this.levels=[...this.levels.slice(0,i),{...a,lots:t},...this.levels.slice(i+1)],e!==this.draftOrderLabel&&this.pendingQtyChanges.set(e,t),this.emitter.emit(`tradeLevelQtyChange`,{label:e,type:e===this.draftOrderLabel?`draft`:a.type,newLots:t,previousLots:o,isFullscreen:this.isFullscreen}),this.renderTradeLayer()}openDraftQtyFlyout(e){var t;this._draftQtyFlyout||(this._draftQtyFlyout=new ru(this.chromeTheme,e=>{this._activeQtyPillLabel&&this.setLevelQty(this._activeQtyPillLabel,e)},()=>this.emitUiState()),this.getFloatingRoot().appendChild(this._draftQtyFlyout.el)),this._activeQtyPillLabel=e.label;let n=this.levels.find(t=>t.label===e.label),r=(t=n==null?void 0:n.lots)==null?this._qtyFieldMin:t,i=this.canvasWrap.getBoundingClientRect(),a=i.left+e.pillX,o=i.top+e.pillY+e.pillH;this._draftQtyFlyout.show(a,o,r,this._qtyFieldMin,this._qtyFieldMax)}setDraftOrderLabels(e){return console.warn(`[acttrader-charts] setDraftOrderLabels() is deprecated and is a no-op. DraftOrderQtyInput has been removed.`),this}setDrawingTool(e){var t;return this.drawingManager.setActiveTool(e),(t=this.leftBar)==null||t.setActiveTool(e),this.drawCanvas.style.cursor=e?`crosshair`:`default`,this.scheduleRender(),this}undoDrawing(){return this.drawingManager.undo(),this.scheduleRender(),this}redoDrawing(){return this.drawingManager.redo(),this.scheduleRender(),this}hideAllDrawings(){return this.drawingManager.hideAll(),this.scheduleRender(),this}showAllDrawings(){return this.drawingManager.showAll(),this.scheduleRender(),this}lockAllDrawings(){return this.drawingManager.lockAll(),this.scheduleRender(),this}unlockAllDrawings(){return this.drawingManager.unlockAll(),this.scheduleRender(),this}deleteSelectedDrawing(){return this.drawingManager.deleteSelected(),this.hideMobileDrawingFlyout(),this.scheduleRender(),this}clearAllDrawings(){return this.drawingManager.clearAll(),this.scheduleRender(),this}getActiveTool(){return this.drawingManager.getActiveTool()}getDrawings(){return this.drawingManager.getDrawings()}getDrawingById(e){return this.drawingManager.getDrawingById(e)}getSelectedDrawing(){return this.drawingManager.getSelectedDrawing()}updateDrawingStyle(e,t){return this.drawingManager.updateDrawingStyle(e,t),this.scheduleRender(),this}connectStream(e){return this.streamAdapter=e,e.onTick(e=>this.onTick(e)),e.onStatus(e=>{this.streamStatus=e,this.siStreamDot&&(this.siStreamDot.style.background=this.theme.ui.stream[e],this.siStreamDot.title=`Stream ${e}`),this.emitter.emit(`streamStatus`,{status:e})}),e.connect(),this}disconnectStream(){var e;return(e=this.streamAdapter)==null||e.disconnect(),this.streamAdapter=null,this}setTickClosePriceSource(e){return this._applyPriceSource(e,!1),this}_applyPriceSource(e,t){var n,r;let i=e!==this.tickClosePriceSource;if(this.tickClosePriceSource=e,(n=this.topBar)==null||n.setPriceSource(e),(r=this.advancedToolbar)==null||r.setPriceSource(e),this.scheduleRender(),i&&this._reloadOnPriceSourceChange&&this.dataLoader&&!this._isDestroyed){let e=this.getViewportTimestamps();if(e){var a;this._pendingViewportRestore={...(a=this._pendingViewportRestore)==null?{}:a,viewport:e}}this.triggerLoad(`priceSource`)}t&&this.emitter.emit(`priceSourceChange`,{source:e})}setShowLtpPrice(e){return this.showLtpPrice=e,this.scheduleRender(),this}setShowAskLine(e){return this.showAskLine=e,this.scheduleRender(),this}setShowBidLine(e){return this.showBidLine=e,this.scheduleRender(),this}pushTick(e){let t=e.T==null?Date.now():typeof e.T==`string`?new Date(e.T).getTime():e.T;return this.onTick({time:t,bid:e.B,ask:e.A,volume:e.LTPV!=null&&e.LTPV>0?e.LTPV:0,ltp:e.LTP!=null&&e.LTP>0?e.LTP:void 0}),this}setLevels(e,t,n,r,i,a){let o=e.map(e=>{if(r===`position`){let r={label:String(e[t]),price:Number(e[n]),type:`position`,data:e};return e.text!==void 0&&(r.text=String(e.text)),i!==void 0&&e[i]!==void 0&&(r.pnl=Number(e[i])),a!==void 0&&e[a]!==void 0&&(r.pnlText=String(e[a])),e.side!==void 0&&(r.side=e.side),e.stopLossPrice!==void 0&&(r.stopLossPrice=Number(e.stopLossPrice)),e.stopLossTrailing&&(r.stopLossTrailing=!0),e.takeProfitPrice!==void 0&&(r.takeProfitPrice=Number(e.takeProfitPrice)),e.contractSize!==void 0&&(r.contractSize=Number(e.contractSize)),e.valuePerPoint!==void 0&&(r.valuePerPoint=Number(e.valuePerPoint)),e.currencySymbol!==void 0&&(r.currencySymbol=String(e.currencySymbol)),e.entryPriceEditable&&(r.entryPriceEditable=!0),e.orderType!==void 0&&(r.orderType=e.orderType),e.lots!==void 0&&(r.lots=Number(e.lots)),e.timestamp!==void 0&&(r.timestamp=Number(e.timestamp)),e.timeDraggable&&(r.timeDraggable=!0),r}if(r===`pending`){var o,s;let r={label:String(e[t]),price:Number(e[n]),type:`pending`,side:(o=e.side)==null?`buy`:o,orderType:(s=e.orderType)==null?`limit`:s,data:e};return e.text!==void 0&&(r.text=String(e.text)),e.lots!==void 0&&(r.lots=Number(e.lots)),e.stopLossPrice!==void 0&&(r.stopLossPrice=Number(e.stopLossPrice)),e.stopLossTrailing&&(r.stopLossTrailing=!0),e.takeProfitPrice!==void 0&&(r.takeProfitPrice=Number(e.takeProfitPrice)),e.ToClose!==void 0&&(r.ToClose=String(e.ToClose)),e.timestamp!==void 0&&(r.timestamp=Number(e.timestamp)),e.timeDraggable&&(r.timeDraggable=!0),r}return{label:String(e[t]),price:Number(e[n]),type:`trade`,text:e.text===void 0?void 0:String(e.text),data:e}});if(this.hideLevelConfirmCancel&&this.pendingLevelDrags.size>0)for(let e of o){let t=this.pendingLevelDrags.get(e.label);if(!(t!=null&&t.length))continue;let n=e;t.every(t=>t.isRemoval?t.field===`stopLoss`?n.stopLossPrice===void 0:n.takeProfitPrice===void 0:t.field===`main`?e.price===t.newPrice:t.field===`stopLoss`?n.stopLossPrice===t.newPrice:n.takeProfitPrice===t.newPrice)&&(this.pendingLevelDrags.delete(e.label),this.selectedTradeLabel===e.label&&(this.selectedTradeLabel=null))}if(this.pendingQtyChanges.size>0)for(let e=0;e<o.length;e++){let t=o[e],n=this.pendingQtyChanges.get(t.label);if(n===void 0||t.type!==`pending`&&t.type!==`position`)continue;let r=t;this.originalQtyByLabel.set(t.label,r.lots),o[e]={...r,lots:n}}let s=this.draftOrderLabel===null?void 0:this.levels.find(e=>e.type===r&&e.label===this.draftOrderLabel&&!o.some(t=>t.label===e.label)),c=new Map(this.levels.map(e=>[e.label,e]));if(this.levels=[...this.levels.filter(e=>e.type!==r),...o,...s?[s]:[]],this._revealNewBrackets){let e=[];for(let t of o){let n=c.get(t.label);if(!n)continue;let r=t;r.stopLossPrice!==void 0&&n.stopLossPrice===void 0&&e.push(r.stopLossPrice),r.takeProfitPrice!==void 0&&n.takeProfitPrice===void 0&&e.push(r.takeProfitPrice)}e.length>0&&this._revealPrices(e)}if(this._timeAnchorOverride.size>0)for(let e of[...this._timeAnchorOverride.keys()]){let t=this.levels.find(t=>t.label===e);if(!t){this._timeAnchorOverride.delete(e);continue}let n=t.timestamp,r=this._timeAnchorOverride.get(e);this._honorsLevelTimestamp(t)&&n!==void 0&&r!==void 0&&Math.round(this.timestampToBarIndex(n))===Math.round(this.timestampToBarIndex(r))&&this._timeAnchorOverride.delete(e)}return this.selectedTradeLabel!==null&&!this.levels.some(e=>e.label===this.selectedTradeLabel)&&(this.selectedTradeLabel=null),this.recomputeRenderStyle(),this.renderTradeLayer(),this.refreshPnlPill(),this}removeLevelByLabel(e){return this.levels=this.levels.filter(t=>t.label!==e),this.renderTradeLayer(),this.refreshPnlPill(),this}showDraftOrder(e,t,n){if(this.draftOrderLabel){let e=this.levels.find(e=>e.label===this.draftOrderLabel);if((e==null?void 0:e.side)===t&&(e==null?void 0:e.orderType)===n)return this}return this.clearDraftOrder(),this.createDraftOrder(t,e,n),this}showMarketDraft(e,t){this.clearDraftOrder();let n=`__draft_${Date.now()}`,r={type:`pending`,label:n,side:t,price:e,orderType:`market`,data:{_isDraft:!0}};return this.levels=[...this.levels,r],this.draftOrderLabel=n,this.renderTradeLayer(),this.emitter.emit(`draftInitiated`,{side:t,price:e,orderType:`market`,isFullscreen:this.isFullscreen}),this}clearDraftOrder(){return this.removeDraftOrder(),this}updateLevelBracket(e,t,n){var r;let i=t===`sl`?`stopLoss`:`takeProfit`,a=this.levels.find(t=>t.label===e);if(!a)return this;let o=t===`sl`?a.stopLossPrice:a.takeProfitPrice,s=(r=this.pendingLevelDrags.get(e))==null?[]:r,c=s.find(e=>e.field===i),l=s.filter(e=>e.field!==i);if(this.levels=this.levels.map(r=>{if(r.label!==e)return r;let i=r;return t===`sl`?{...i,stopLossPrice:n==null?void 0:n}:{...i,takeProfitPrice:n==null?void 0:n}}),n===null){if(o!==void 0){var u;let e=(u=c==null?void 0:c.oldPrice)==null?o:u;l.push({field:i,newPrice:o,oldPrice:e,isRemoval:!0})}l.length===0?this.pendingLevelDrags.delete(e):this.pendingLevelDrags.set(e,l)}else{var d;let t=(d=c==null?void 0:c.isNew)==null?o===void 0:d,r=c&&!c.isRemoval?c.oldPrice:o==null?n:o;l.push({field:i,newPrice:n,oldPrice:r,isNew:t}),this.pendingLevelDrags.set(e,l),this._revealNewBrackets&&t&&this._revealPrices([n])}return this.renderTradeLayer(),this}addLevelBracket(e,t){var n,r,i,a,o;let s=this.levels.find(t=>t.label===e);if(!s)return this;let c=t===`sl`?`stopLoss`:`takeProfit`,l=t===`sl`?s.stopLossPrice!==void 0:s.takeProfitPrice!==void 0,u=(n=(r=this.pendingLevelDrags.get(e))==null?void 0:r.some(e=>e.field===c&&!e.isRemoval))==null?!1:n;if(l||u)return this;let{priceH:d}=this.getChartLayout(),f=(i=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):i,p=this.scaleManager.yToPixel(s.price,f,d),m=(a=s.side)==null?`buy`:a,h=p+(m===`buy`&&t===`sl`||m===`sell`&&t===`tp`?30:-30),g=this.scaleManager.pixelToPrice(h,f,d);this.updateLevelBracket(e,t,g);let _=((o=this.pendingLevelDrags.get(e))==null?[]:o).filter(e=>e.field!==c);return _.push({field:c,newPrice:g,oldPrice:g,isNew:!0}),this.pendingLevelDrags.set(e,_),this.emitter.emit(`tradeLevelBracketActivated`,{label:e,bracketType:t,price:g,isFullscreen:this.isFullscreen}),this.emitter.emit(`tradeLevelDrag`,{label:e,newPrice:g,data:s.data,bracketType:t===`sl`?`stopLoss`:`takeProfit`,isFullscreen:this.isFullscreen}),this}addBracket(e,t){var n,r;if(t)return this.addLevelBracket(t,e);if(!this.draftOrderLabel)return this;let i=this.draftOrderLabel,a=this.levels.find(e=>e.label===i);if(!a||(e===`sl`?a.stopLossPrice!==void 0:a.takeProfitPrice!==void 0))return this;let{priceH:o}=this.getChartLayout(),s=(n=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):n,c=this.scaleManager.yToPixel(a.price,s,o),l=(r=a.side)==null?`buy`:r,u=c+(l===`buy`&&e===`sl`||l===`sell`&&e===`tp`?30:-30),d=this.scaleManager.pixelToPrice(u,s,o);return this.updateDraftOrderBracket(e,d),this.emitter.emit(`tradeLevelBracketActivated`,{label:``,bracketType:e,price:d,isFullscreen:this.isFullscreen}),this.emitter.emit(`tradeLevelDrag`,{label:i,newPrice:d,data:a.data,bracketType:e===`sl`?`stopLoss`:`takeProfit`,isFullscreen:this.isFullscreen}),this}removeBracket(e,t){if(t){var n,r;let i=e===`sl`?`stopLoss`:`takeProfit`,a=this.levels.find(e=>e.label===t);if(!a)return this;let o=(n=this.pendingLevelDrags.get(t))==null?void 0:n.find(e=>e.field===i),s=o&&!o.isRemoval?o.newPrice:e===`sl`?a.stopLossPrice:a.takeProfitPrice;if(s===void 0)return this;let c=((r=this.pendingLevelDrags.get(t))==null?[]:r).filter(e=>e.field!==i);return c.push({field:i,newPrice:s,oldPrice:s,isRemoval:!0}),this.pendingLevelDrags.set(t,c),this.renderTradeLayer(),this}return e===`sl`?this.draftBracketPnl={...this.draftBracketPnl,sl:void 0}:this.draftBracketPnl={...this.draftBracketPnl,tp:void 0},this.updateDraftOrderBracket(e,null)}updateLevelMainPrice(e,t){var n;let r=this.levels.find(t=>t.label===e);if(!r)return this;let i=(n=this.pendingLevelDrags.get(e))==null?[]:n,a=i.find(e=>e.field===`main`),o=a?a.oldPrice:r.price,s=i.filter(e=>e.field!==`main`);return s.push({field:`main`,newPrice:t,oldPrice:o}),this.pendingLevelDrags.set(e,s),r.price=t,this.renderTradeLayer(),this}setBracketLabelMode(e,t){return this._bracketLabel={mode:e,currencySymbol:t==null?this._bracketLabel.currencySymbol:t},this.scheduleRender(),this}setDraftBracketPnl(e,t){return e===`sl`?this.draftBracketPnl={...this.draftBracketPnl,sl:t==null?void 0:t}:this.draftBracketPnl={...this.draftBracketPnl,tp:t==null?void 0:t},this.renderTradeLayer(),this}updateDraftOrderBracket(e,t){return this.draftOrderLabel?(this.levels=this.levels.map(n=>{if(n.label!==this.draftOrderLabel)return n;let r=n;return e===`sl`?{...r,stopLossPrice:t==null?void 0:t}:{...r,takeProfitPrice:t==null?void 0:t}}),this._revealNewBrackets&&t!==null&&this._revealPrices([t]),this.scheduleRender(),this):this}updateDraftOrderPrice(e){if(!this.draftOrderLabel)return!1;this.levels=this.levels.map(t=>t.label===this.draftOrderLabel?{...t,price:e}:t);let t=this.pendingLevelDrags.get(this.draftOrderLabel);if(t){let n=t.find(e=>e.field===`main`);n&&(n.newPrice=e)}return this.renderTradeLayer(),!0}cancelLevelEdit(e){var t;if(this.undoIsNewBracketMutations(e),this.pendingLevelDrags.delete(e),this.pendingQtyChanges.has(e)){this.pendingQtyChanges.delete(e);let t=this.levels.findIndex(t=>t.label===e);if(t!==-1&&this.originalQtyByLabel.has(e)){let n=this.originalQtyByLabel.get(e),r=this.levels[t];this.levels=[...this.levels.slice(0,t),{...r,lots:n},...this.levels.slice(t+1)]}this.originalQtyByLabel.delete(e)}return e===((t=this.draftOrderLabel)==null?this.selectedTradeLabel:t)&&(this.draftBracketPnl={}),this.selectedTradeLabel===e&&(this.selectedTradeLabel=null),this.renderTradeLayer(),this}cancelCurrentEdit(){return this.draftOrderLabel?this.clearDraftOrder():this.selectedTradeLabel&&this.revertPendingChanges(this.selectedTradeLabel),this}selectLevel(e){if(!this.draftOrderLabel&&e!==this.selectedTradeLabel&&(this.draftBracketPnl={}),this.selectedTradeLabel=e,e!==null){this.crosshair=null;let t=this.lastClusters.find(t=>t.members.some(t=>t.level.label===e));t&&this.expandedClusters.add(t.id)}return this.renderTradeLayer(),this}setLevelClusteringEnabled(e){return this.levelClusteringEnabled=e,this.expandedClusters.clear(),this.renderTradeLayer(),this}setClusterThresholdDistance(e){return this.clusterThresholdDistance=e,this.expandedClusters.clear(),this.renderTradeLayer(),this}setTradeLevelButtonScale(e){return this.tradeLevelButtonScale=Math.min(Math.max(e,1),3),this.renderTradeLayer(),this}toDataUrl(){return this.captureToDataUrl()}drawOnto(e,t,n,r,i){e.fillStyle=this.theme.background,e.fillRect(t,n,r,i);let a=[this.canvas,this.drawCanvas];for(let o of a)o&&o.width&&o.height&&e.drawImage(o,t,n,r,i)}captureToDataUrl(){let e=this.canvas;if(!e.width||!e.height)return null;let t=document.createElement(`canvas`);t.width=e.width,t.height=e.height;let n=t.getContext(`2d`);if(!n)return null;n.fillStyle=this.theme.background,n.fillRect(0,0,t.width,t.height);let r=[this.canvas,this.drawCanvas];for(let e of r)e&&e.width&&e.height&&n.drawImage(e,0,0);return t.toDataURL(`image/png`)}openLayoutPopover(){var e,t,n;if(!this.layoutPopover)return;let r=(e=(t=this.advancedToolbar)==null?void 0:t.getLayoutBtnEl())==null?(n=this.topBar)==null?void 0:n.getLayoutBtnEl():e;if(r)if(this.layoutPopover.isVisible)this.layoutPopover.hide();else{let e=this.getFloatingRoot();this.layoutPopover.el.parentElement!==e&&e.appendChild(this.layoutPopover.el),this.layoutPopover.show(r)}}openSnapshotPopover(){var e,t,n;if(!this.snapshotPopover)return;let r=(e=(t=this.advancedToolbar)==null?void 0:t.getSnapshotBtnEl())==null?(n=this.topBar)==null?void 0:n.getSnapshotBtnEl():e;if(r)if(this.snapshotPopover.isVisible)this.snapshotPopover.hide();else{let e=this.getFloatingRoot();this.snapshotPopover.el.parentElement!==e&&e.appendChild(this.snapshotPopover.el),this.snapshotPopover.show(r)}}handleLayoutPresetSelect(e){var t,n,r,i;this.currentPresetId=e;let a=fi(e);(t=this._tb)==null||(n=t.setLayoutPresetIcon)==null||n.call(t,a.icon,!0),(r=this.layoutPopover)==null||r.setPreset(e),(i=this.layoutPopover)==null||i.hide(),this.emitter.emit(`layoutChange`,{presetId:e,preset:a,sync:this.currentSync})}handleSyncToggle(e){var t;this.currentSync={...this.currentSync,[e]:!this.currentSync[e]},(t=this.layoutPopover)==null||t.setSync(this.currentSync),this.emitter.emit(`layoutChange`,{presetId:this.currentPresetId,preset:fi(this.currentPresetId),sync:this.currentSync})}async handleSnapshot(e){var t;let n=this.captureToDataUrl();if(n){if(this.emitter.emit(`snapshot`,{dataUrl:n,action:e}),e===`download`){let e=document.createElement(`a`);e.download=`${this.snapshotFileName()}.png`,e.href=n,e.click()}else try{var r;let e=await(await fetch(n)).blob(),t=globalThis.ClipboardItem;t&&(r=navigator.clipboard)!=null&&r.write&&await navigator.clipboard.write([new t({"image/png":e})])}catch(e){}(t=this.snapshotPopover)==null||t.hide()}}snapshotFileName(){let e=this.symbol.trim().replace(/[\\/:*?"<>|]+/g,`_`).replace(/\s+/g,`_`);return e.length>0?e:`chart-${Date.now()}`}setLayoutPreset(e){this.handleLayoutPresetSelect(e)}getLayoutPreset(){return this.currentPresetId}getLayoutSync(){return{...this.currentSync}}setLayoutSync(e){var t;let n={...this.currentSync,...e};Object.keys(n).some(e=>n[e]!==this.currentSync[e])&&(this.currentSync=n,(t=this.layoutPopover)==null||t.setSync(this.currentSync))}destroy(){var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y;this._isDestroyed=!0,this.panHandler.destroy(),this.zoomHandler.destroy(),this.resizeObserver.disconnect(),this.disposeVvListener(),(e=this.indicatorOverlay)==null||e.destroy();for(let e of this.subPaneOverlays.values())e.destroy();this.subPaneOverlays.clear(),(t=this.indicatorSettingsDialog)==null||t.destroy(),(n=this.chartSettingsDialog)==null||n.destroy(),(r=this.isinPickerModal)==null||r.destroy(),(i=this.comparePickerModal)==null||i.destroy(),(a=this.compareLegend)==null||a.destroy(),(o=this.pnlPill)==null||o.destroy(),(s=this.tradePopover)==null||s.destroy(),(c=this.tradeActionBar)==null||c.destroy(),(l=this.drawingStylePopover)==null||l.destroy(),(u=this._draftQtyFlyout)==null||u.destroy(),(d=this.advancedToolbar)==null||d.destroy(),(f=this.mobileHeader)==null||f.destroy(),(p=this.leftBar)==null||p.destroy(),this.drawCanvas.removeEventListener(`mousemove`,this.onMouseMove),this.drawCanvas.removeEventListener(`mouseleave`,this.onMouseLeave),this.drawCanvas.removeEventListener(`mousedown`,this.onCanvasClick),this.drawCanvas.removeEventListener(`dblclick`,this.onDoubleClick),window.removeEventListener(`mouseup`,this.onMouseUp),this.drawCanvas.removeEventListener(`touchstart`,this.onDrawingTouchStart),this.drawCanvas.removeEventListener(`touchmove`,this.onDrawingTouchMove),this.drawCanvas.removeEventListener(`touchend`,this.onDrawingTouchEnd),this.drawCanvas.removeEventListener(`touchcancel`,this.onDrawingTouchCancel),document.removeEventListener(`keydown`,this.onKeyDown),(m=this.streamAdapter)==null||m.disconnect(),this.rafId!==null&&cancelAnimationFrame(this.rafId),this.scrollAnimId!==null&&cancelAnimationFrame(this.scrollAnimId),this.stopCountdownLoop(),(h=this.resetViewBtn)==null||h.remove(),(g=this.textInputEl)==null||g.remove(),(_=this._mobileDrawingFlyout)==null||_.remove(),(v=this.layoutPopover)==null||v.destroy(),(y=this.snapshotPopover)==null||y.destroy(),this.wrapper.remove()}createMobileDrawingFlyout(){let e=document.createElement(`div`);Object.assign(e.style,{position:`fixed`,display:`none`,alignItems:`center`,gap:`2px`,zIndex:`10000`,background:this.theme.background,border:`1px solid ${this.theme.axisBorder}`,borderRadius:`8px`,padding:`4px`,boxShadow:`0 4px 16px rgba(0,0,0,0.45)`,pointerEvents:`auto`});let t=(e,t,n)=>{let r=document.createElement(`button`);return r.title=t,r.innerHTML=e,Object.assign(r.style,{display:`flex`,alignItems:`center`,justifyContent:`center`,width:`34px`,height:`34px`,padding:`0`,border:`none`,borderRadius:`6px`,background:`transparent`,color:n?this.theme.candle.down:this.theme.axisText,cursor:`pointer`,flexShrink:`0`}),r.addEventListener(`pointerenter`,()=>{r.style.background=n?`${this.theme.candle.down}22`:this.theme.axisBorder}),r.addEventListener(`pointerleave`,()=>{r.style.background=`transparent`}),r},n=t(pn,`Delete drawing`,!0);n.addEventListener(`pointerdown`,e=>{e.stopPropagation(),this.deleteSelectedDrawing(),this.hideMobileDrawingFlyout()});let r=t(un,`Deselect`,!1);return r.addEventListener(`pointerdown`,e=>{e.stopPropagation(),this.drawingManager.selectDrawing(null),this.hideMobileDrawingFlyout(),this.scheduleRender()}),e.appendChild(n),e.appendChild(r),this.wrapper.appendChild(e),e}showMobileDrawingFlyout(e,t){if(!Fd())return;this._mobileDrawingFlyout||(this._mobileDrawingFlyout=this.createMobileDrawingFlyout());let n=this._mobileDrawingFlyout,r=n.style.display!==`none`&&n.style.display!==``;n.style.display=`flex`,requestAnimationFrame(()=>{let r=n.offsetWidth||78,i=n.offsetHeight||42,a=window.innerWidth,o=window.innerHeight,s=Math.min(Math.max(e-r/2,8),a-r-8),c=Math.min(Math.max(t-i-12,8),o-i-8);n.style.left=`${s}px`,n.style.top=`${c}px`}),r||this.emitUiState()}hideMobileDrawingFlyout(){if(this._mobileDrawingFlyout){let e=this._mobileDrawingFlyout.style.display!==`none`&&this._mobileDrawingFlyout.style.display!==``;this._mobileDrawingFlyout.style.display=`none`,e&&this.emitUiState()}}applyMobileDrawingFlyoutTheme(){if(!this._mobileDrawingFlyout)return;let e=this._mobileDrawingFlyout;e.style.background=this.theme.background,e.style.border=`1px solid ${this.theme.axisBorder}`;let[t,n]=Array.from(e.querySelectorAll(`button`));t&&(t.style.color=this.theme.candle.down),n&&(n.style.color=this.theme.axisText)}scheduleRender(){this._isDestroyed||this.rafId===null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this.render(),this.renderTradeLayer()}))}startCountdownLoop(){if(this.countdownRafId!==null)return;let e=0,t=n=>{if(!this.countdownActive){this.countdownRafId=null;return}n-e>=1e3&&(e=n,this.scheduleRender()),this.countdownRafId=requestAnimationFrame(t)};this.countdownRafId=requestAnimationFrame(t)}stopCountdownLoop(){this.countdownActive=!1,this.countdownRafId!==null&&(cancelAnimationFrame(this.countdownRafId),this.countdownRafId=null)}updateCountdownState(){var e;let t=this.candleCountdownTimeframes===`all`?!0:((e=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:e).includes(this.timeframe),n=(this.showCandleCountdown||this.showPriceAxisCountdown)&&t&&this.dataStore.length>0;n&&!this.countdownActive?(this.countdownActive=!0,this.startCountdownLoop()):!n&&this.countdownActive&&this.stopCountdownLoop()}openChartSettings(){this.chartSettingsDialog||(this.chartSettingsDialog=new pl(this.chromeTheme,{tradeDisplayFilter:this.tradeDisplayFilter,positionRenderStyle:this.baseRenderStyle(),theme:this.themeName,showTradeLevelsAlways:this.showTradeLevelsAlways,showPriceAxisCountdown:this.showPriceAxisCountdown},this.labels.dialogs,!!this._onOrderSubmit&&this.tfcActive,this.enableThemeToggle,()=>this.emitUiState()),this.getFloatingRoot().appendChild(this.chartSettingsDialog.el)),this.chartSettingsDialog.show({tradeDisplayFilter:this.tradeDisplayFilter,positionRenderStyle:this.baseRenderStyle(),theme:this.themeName,showTradeLevelsAlways:this.showTradeLevelsAlways,showPriceAxisCountdown:this.showPriceAxisCountdown,canvasColors:{...this.settingsCanvasColors}},e=>{if(this.tradeDisplayFilter=e.tradeDisplayFilter,this.positionRenderStyleOverride=e.positionRenderStyle,localStorage.setItem(this.RENDER_STYLE_LS_KEY,e.positionRenderStyle),this.positionRenderStyle=e.positionRenderStyle,e.canvasColors&&(this.settingsCanvasColors=e.canvasColors),this.showTradeLevelsAlways!==e.showTradeLevelsAlways){this.showTradeLevelsAlways=e.showTradeLevelsAlways;try{localStorage.setItem(this.SHOW_SLTP_ALWAYS_LS_KEY,String(e.showTradeLevelsAlways))}catch(e){}}if(this.showPriceAxisCountdown!==e.showPriceAxisCountdown){this.showPriceAxisCountdown=e.showPriceAxisCountdown;try{localStorage.setItem(this.PRICE_AXIS_COUNTDOWN_LS_KEY,String(e.showPriceAxisCountdown))}catch(e){}this.updateCountdownState(),this.scheduleRender()}this.setTheme(e.theme),this.renderTradeLayer(),this.emitStateChange()},()=>{this.resetChartSettings()})}getFloatingRoot(){var e;return(e=document.fullscreenElement)==null?document.body:e}reparentFloatingElements(){var e,t,n,r,i,a,o,s,c;let l=this.getFloatingRoot();(e=this._tb)==null||e.reparentFlyout(l),(t=this.leftBar)==null||t.reparentFlyout(l);let u=[(n=this.isinPickerModal)==null?void 0:n.el,(r=this.comparePickerModal)==null?void 0:r.el,(i=this.indicatorSettingsDialog)==null?void 0:i.el,(a=this.chartSettingsDialog)==null?void 0:a.el,(o=this._draftQtyFlyout)==null?void 0:o.el,(s=this.layoutPopover)==null?void 0:s.el,(c=this.snapshotPopover)==null?void 0:c.el];for(let e of u)e&&e.parentElement!==l&&l.appendChild(e)}toggleDrawingTools(){var e,t;this.leftBarVisible=!this.leftBarVisible,(e=this.leftBar)==null||e.setVisible(this.leftBarVisible),(t=this._tb)==null||t.setDrawingsBtnActive(this.leftBarVisible)}_applyCssFullscreen(e){var t;this._isCssFullscreen=e,e?Object.assign(this.wrapper.style,{position:`fixed`,inset:`0`,width:`100vw`,height:`100vh`,zIndex:`9999`}):Object.assign(this.wrapper.style,{position:``,inset:``,width:``,height:``,zIndex:``}),(t=this._tb)==null||t.setFullscreen(e),this.reparentFloatingElements(),requestAnimationFrame(()=>this.onResize())}toggleFullscreen(){let e=!!document.fullscreenElement;!e&&!this._isCssFullscreen?this.wrapper.requestFullscreen?this.wrapper.requestFullscreen().then(()=>{var e;(e=this._tb)==null||e.setFullscreen(!0)}).catch(()=>{this._applyCssFullscreen(!0)}):this._applyCssFullscreen(!0):e?document.exitFullscreen().catch(()=>{}):this._applyCssFullscreen(!1)}baseRenderStyle(){return this.positionRenderStyleOverride===null?this.levels.filter(e=>e.type===`position`||e.type===`pending`).length>this.tradesThresholdForHorizontalLine?`dot`:`line`:this.positionRenderStyleOverride}recomputeRenderStyle(){this.positionRenderStyle=this.pnlPillExpanded?`line`:this.baseRenderStyle()}renderTradeLayer(){var e,t,n,r,i,a;if(this._isDestroyed)return;let o=window.devicePixelRatio||1,{tradeCtx:s,tradeCanvas:c,theme:l,viewport:u}=this;if(s.clearRect(0,0,c.width,c.height),!this.tfcActive||this.levels.length===0||this.dataStore.length===0){this.tradeLevelHitAreas=[],this.tradeLevelEditAreas=[],this.tradeHoverAreas=[],this.tradeAddBracketAreas=[],this.offViewportHitAreas=[];return}let{chartW:d,priceH:f}=this.getChartLayout(),p=(e=this._displayedPriceRange)==null?this.getScaledPriceRange(u):e,m=this.levels.filter(e=>e.type===`pending`&&e.ToClose!=null),h=this.levels.filter(e=>!(e.type===`pending`&&e.ToClose!=null)).map(e=>{var t,n,r,i;let a=(t=this.pendingLevelDrags.get(e.label))==null?[]:t,o=a.find(e=>e.field===`stopLoss`),s=a.find(e=>e.field===`takeProfit`),c=o&&!o.isRemoval?o.newPrice:void 0,l=s&&!s.isRemoval?s.newPrice:void 0,u=(n=o==null?void 0:o.isRemoval)==null?!1:n,d=(r=s==null?void 0:s.isRemoval)==null?!1:r,f=(i=a.find(e=>e.field===`main`))==null?void 0:i.newPrice,p=m.filter(t=>t.ToClose===e.label);if(p.length===0&&c===void 0&&l===void 0&&f===void 0&&!u&&!d)return e;let h={...e};if(f!==void 0&&(h.price=f),c===void 0?u&&(h.stopLossPrice=void 0):h.stopLossPrice=c,l===void 0?d&&(h.takeProfitPrice=void 0):h.takeProfitPrice=l,p.length>0){var g;let t=(g=e.side)==null?`buy`:g;for(let n of p)if(t===`buy`?n.price<e.price:n.price>e.price){var _;h.stopLossPrice=u?void 0:(_=c==null?h.stopLossPrice:c)==null?n.price:_,h._slOrderLabel=n.label}else{var v;h.takeProfitPrice=d?void 0:(v=l==null?h.takeProfitPrice:l)==null?n.price:v,h._tpOrderLabel=n.label}}return h});s.save(),s.scale(o,o),s.save(),s.beginPath(),s.rect(0,0,d,f),s.clip();let g=e=>e.type===`position`&&!!e.entryPriceEditable,_=this.selectedTradeLabel===null?this.tradeDisplayFilter===`none`?[]:this.tradeDisplayFilter===`positions`?h.filter(e=>e.type===`position`&&!g(e)):this.tradeDisplayFilter===`orders`?h.filter(e=>e.type===`pending`||g(e)):h:h.filter(e=>e.label===this.selectedTradeLabel),v=this.levelClusteringEnabled?this.clusterThresholdDistance:0,y=(t=this.orderTimeDragHandler)!=null&&t.active?this.orderTimeDragHandler.dragLabel:null,b=y!==null&&this.hoveredTradeLabel===y?null:this.hoveredTradeLabel,x=y!==null&&this.selectedTradeLabel===y?null:this.selectedTradeLabel,S=ft(s,_,this.scaleManager,p,l,d,f,this.dataStore.getPricePrecision(),b,(n=(r=this.tradeDragHandler)==null?void 0:r.dragLabel)==null?null:n,this.tradeDragNewPrice,x,new Set([...this.pendingLevelDrags.keys(),...this._editOpenLabel===null?[]:[this._editOpenLabel]]),this.positionRenderStyle,this.hideLevelConfirmCancel,this.draftOrderLabel,this.draftBracketPnl,this.expandedClusters,v,this._showQuantityField,this.tradeDragNewSLPrice,this.tradeDragNewTPPrice,this.tradeLevelButtonScale,this.showTradeLevelsAlways,this._orderTimeDragEnabled?e=>this._orderLineAnchorX(e,d):null,this._orderTimeDragEnabled,this._bracketLabel,this.tradeLevelBadgeScale,this.tradeLevelBadgeAnchor);s.restore();let C=Gt(s,_,p,l,d,f,(i=(a=this.tradeDragHandler)==null?void 0:a.dragLabel)==null?null:i,this.selectedTradeLabel);if(this.offViewportHitAreas=C.hitAreas,Nt(s,_,this.scaleManager,p,l,d,f,this.dataStore.getPricePrecision()),s.restore(),this.tradeLevelHitAreas=S.hitAreas,this.tradeLevelEditAreas=S.editAreas,this.tradeHoverAreas=S.hoverAreas,this.tradeLevelDragAreas=S.dragAreas,this.tradeLevelConfirmAreas=S.confirmAreas,this.tradeAddBracketAreas=S.addBracketAreas,this.clusterBadgeAreas=S.clusterBadgeAreas,this.lastClusters=S.clusters,this._draftQtyPillArea=S.draftQtyPillArea,this.expandedClusters.size>0){let e=new Set(S.clusters.map(e=>e.id));for(let t of this.expandedClusters)e.has(t)||this.expandedClusters.delete(t)}if(this.pnlPillExpanded&&!this._pnlPillExpandPass){let e=S.clusters.filter(e=>!this.expandedClusters.has(e.id)&&e.members.some(e=>e.level.type===`position`));if(e.length>0){for(let t of e)this.expandedClusters.add(t.id);this._pnlPillExpandPass=!0;try{this.renderTradeLayer()}finally{this._pnlPillExpandPass=!1}}}}_orderLineAnchorX(e,t){var n;if(!this._orderTimeDragEnabled)return null;if((n=this.orderTimeDragHandler)!=null&&n.active&&this.orderTimeDragHandler.dragLabel===e.label&&this.tradeDragNewBarIndex!==null)return this.scaleManager.xToPixel(this.tradeDragNewBarIndex,this.viewport,t);let r=this._resolvedTimeAnchor(e);return r===void 0?null:this.scaleManager.xToPixel(this.timestampToBarIndex(r),this.viewport,t)}_resolvedTimeAnchor(e){var t;let n=this._timeAnchorOverride.get(e.label);if(n!==void 0)return n;let r=(t=this._orderLineAnchorStore)==null?void 0:t.get(e.label);return r===void 0?this._honorsLevelTimestamp(e)?e.timestamp:void 0:r}_honorsLevelTimestamp(e){return!((this._orderLineDefaultAnchor===`center`||this.tradeLevelBadgeAnchor===`left`)&&e.timeDraggable===!0)}_effectiveEntryPrice(e,t){var n,r;let i=this.pendingLevelDrags.get(e);return(n=i==null||(r=i.find(e=>e.field===`main`))==null?void 0:r.newPrice)==null?t:n}_effectiveBracketPrice(e,t,n){var r;let i=this.pendingLevelDrags.get(e),a=i==null||(r=i.find(e=>e.field===t))==null?void 0:r.newPrice;return a==null?n:a}_resolveBracketPrices(e){let t=e.stopLossPrice,n=e.takeProfitPrice,r,i;if(t===void 0||n===void 0){let o=this.levels.filter(t=>t.type===`pending`&&t.ToClose===e.label);if(o.length>0){var a;let s=(a=e.side)==null?`buy`:a;for(let a of o){let o=s===`buy`?a.price<e.price:a.price>e.price;o&&t===void 0?(t=a.price,r=a.label):!o&&n===void 0&&(n=a.price,i=a.label)}}}return{slPrice:t,tpPrice:n,slSiblingLabel:r,tpSiblingLabel:i}}_finalizeMainDragWithBrackets(e,t){var n;let r=this.levels.find(t=>t.label===e.label),i=e.derivedSLPrice!==void 0&&e.slStartPrice!==void 0&&e.derivedSLPrice!==e.slStartPrice,a=e.derivedTPPrice!==void 0&&e.tpStartPrice!==void 0&&e.derivedTPPrice!==e.tpStartPrice,o=!i&&!a;if(this.storePendingChange(e,e.startPrice,t,!o),!((n=this.pendingLevelDrags.get(e.label))!=null&&n.some(t=>t.field===`main`&&t.newPrice===e.newPrice))){this.tradeDragNewSLPrice=null,this.tradeDragNewTPPrice=null;return}if(i){var s,c,l;let n=!a,i=r,o=r,u=(s=(c=i==null?void 0:i.stopLossData)==null?o==null?void 0:o.stopLossData:c)==null?e.data:s;this.storePendingChange({label:e.label,type:e.type,newPrice:e.derivedSLPrice,data:u,bracketType:`stopLoss`},e.slStartPrice,(l=this._slSiblingOrderLabel)==null?t:l,!n)}if(a){var u,d,f;let n=r,i=r,a=(u=(d=n==null?void 0:n.takeProfitData)==null?i==null?void 0:i.takeProfitData:d)==null?e.data:u;this.storePendingChange({label:e.label,type:e.type,newPrice:e.derivedTPPrice,data:a,bracketType:`takeProfit`},e.tpStartPrice,(f=this._tpSiblingOrderLabel)==null?t:f,!1)}this.tradeDragNewSLPrice=null,this.tradeDragNewTPPrice=null,this._slSiblingOrderLabel=null,this._tpSiblingOrderLabel=null}storePendingChange(e,t,n,r=!1){var i,a,o,s,c;if(e.bracketType){var l,u,d,f,p;let n=this.levels.find(t=>t.label===e.label),r=(l=n==null?void 0:n.side)==null?`buy`:l,i=this._effectiveEntryPrice(e.label,(u=n==null?void 0:n.price)==null?t:u),a=(n==null?void 0:n.entryPriceEditable)===!0,o=(n==null||(d=n.data)==null?void 0:d._isDraft)===!0,s=this.dataStore.all,c=e.type===`position`&&!a&&!o?(f=(p=s[s.length-1])==null?void 0:p.close)==null?0:f:0;if(!yu.isBracketPriceValid(e.newPrice,e.bracketType,i,r,c)){this.tradeDragNewPrice=null,this.renderTradeLayer();return}}if(!e.bracketType){let t=this.levels.find(t=>t.label===e.label);if(t!=null&&t.orderType&&t!=null&&t.side){var m,h;let n=this.dataStore.all,r=(m=(h=n[n.length-1])==null?void 0:h.close)==null?0:m;if(r>0&&!(t.side===`buy`&&t.orderType===`limit`||t.side===`sell`&&t.orderType===`stop`?e.newPrice<r:e.newPrice>r)){this.tradeDragNewPrice=null,this.renderTradeLayer();return}}}if(e.newPrice===t){this.tradeDragNewPrice=null,this.renderTradeLayer();return}let g=(i=e.bracketType)==null?`main`:i,_=this._isBracketNew;this._isBracketNew=!1;let v=this.levels.find(t=>t.label===e.label);if((v==null?void 0:v.orderType)===`market`&&(v==null||(a=v.data)==null?void 0:a._isDraft)===!0){g!==`main`&&(this.updateDraftOrderBracket(g===`stopLoss`?`sl`:`tp`,e.newPrice),this.emitter.emit(`tradeLevelDrag`,{label:e.label,newPrice:e.newPrice,data:v==null?void 0:v.data,bracketType:g,isFullscreen:this.isFullscreen})),this.tradeDragNewPrice=null,this.renderTradeLayer();return}if(v!==void 0&&g!==`main`&&(v==null||(o=v.data)==null?void 0:o._isDraft)===!0){this.updateDraftOrderBracket(g===`stopLoss`?`sl`:`tp`,e.newPrice),this.emitter.emit(`tradeLevelDrag`,{label:e.label,newPrice:e.newPrice,data:v==null?void 0:v.data,bracketType:g,isFullscreen:this.isFullscreen}),this.tradeDragNewPrice=null,this.renderTradeLayer();return}if(v!==void 0&&g===`main`&&(v==null||(s=v.data)==null?void 0:s._isDraft)===!0&&v.orderType!==`market`&&this.hideLevelConfirmCancel){this.updateDraftOrderPrice(e.newPrice),this.emitter.emit(`tradeLevelDrag`,{label:e.label,newPrice:e.newPrice,data:v==null?void 0:v.data,bracketType:void 0,isFullscreen:this.isFullscreen}),this.tradeDragNewPrice=null,this.renderTradeLayer();return}let y=((c=this.pendingLevelDrags.get(e.label))==null?[]:c).filter(e=>e.field!==g);if(y.push({field:g,newPrice:e.newPrice,oldPrice:t,isNew:_,bracketOrderLabel:n}),this.pendingLevelDrags.set(e.label,y),this.tradeDragNewPrice=null,this.hideLevelConfirmCancel&&!r){this.applyPendingChanges(e.label);return}this.renderTradeLayer()}_orderTypeForPrice(e,t){let n=this.dataStore.all,r=n.length>0?n[n.length-1].close:t;return e===`buy`?t<r?`limit`:`stop`:t>r?`limit`:`stop`}createDraftOrder(e,t,n){if(this.draftOrderLabel)return;let r=`__draft_${Date.now()}`,i={type:`pending`,label:r,side:e,price:t,orderType:n,lots:this._qtyFieldMin,data:{_isDraft:!0}};this.levels=[...this.levels,i],this.draftOrderLabel=r,this.selectedTradeLabel=r,this.pendingLevelDrags.set(r,[{field:`main`,newPrice:t,oldPrice:t}]),this.crosshair=null,this.renderTradeLayer(),this.emitter.emit(`draftInitiated`,{side:e,price:t,orderType:n,isFullscreen:this.isFullscreen})}removeDraftOrder(){var e;if(!this.draftOrderLabel)return;let t=this.draftOrderLabel;this.levels=this.levels.filter(e=>e.label!==t),this.pendingLevelDrags.delete(t),this.selectedTradeLabel=null,this.draftOrderLabel=null,this.draftBracketPnl={},(e=this._draftQtyFlyout)==null||e.hide(),this._draftQtyPillArea=void 0,this.renderTradeLayer(),this.emitter.emit(`draftCancelled`,{label:t,isFullscreen:this.isFullscreen})}applyPendingChanges(e){let t=this.pendingLevelDrags.get(e);if(!t){if(this._editOpenLabel===e){let t=this.levels.find(t=>t.label===e);this._editOpenLabel=null,this.selectedTradeLabel=null,this.renderTradeLayer(),t&&this.emitter.emit(`tradeLevelConfirmed`,{label:e,type:t.type,isFullscreen:this.isFullscreen})}return}let n=this.levels.find(t=>t.label===e);if(!n)return;if(this._editOpenLabel===e&&(this._editOpenLabel=null),e===this.draftOrderLabel){var r,i,a;let o=t.find(e=>e.field===`main`),s=n;(r=this._onOrderSubmit)==null||r.call(this,{price:(i=o==null?void 0:o.newPrice)==null?s.price:i,lots:(a=s.lots)==null?this._qtyFieldMin:a,side:s.side,orderType:s.orderType,...s.stopLossPrice===void 0?{}:{stopLoss:s.stopLossPrice},...s.takeProfitPrice===void 0?{}:{takeProfit:s.takeProfitPrice}}),this.emitter.emit(`tradeLevelConfirmed`,{label:e,type:`draft`,isFullscreen:this.isFullscreen}),this.removeDraftOrder();return}let o=this.pendingQtyChanges.get(e);this.pendingQtyChanges.delete(e),this.originalQtyByLabel.delete(e);let s=o!==void 0&&n.data&&typeof n.data==`object`?{...n.data,lots:o}:n.data;this.emitter.emit(`tradeLevelEdit`,{label:e,type:n.type,data:s,isFullscreen:this.isFullscreen,...o===void 0?{}:{newLots:o},changes:t.map(e=>{let t=n.data,r=s;if(e.field===`stopLoss`){var i;r=(i=t.stopLossData)==null?n.data:i}else if(e.field===`takeProfit`){var a;r=(a=t.takeProfitData)==null?n.data:a}if(e.bracketOrderLabel){let t=this.levels.find(t=>t.label===e.bracketOrderLabel);t&&(r=t.data)}let c;return c=e.field===`main`?`MAIN`:e.field===`stopLoss`?e.isRemoval?`REMOVE_SL`:e.isNew?`ADD_SL`:`SL`:e.isRemoval?`REMOVE_TP`:e.isNew?`ADD_TP`:`TP`,{field:c,newPrice:e.newPrice,data:r,...c===`MAIN`&&o!==void 0?{newLots:o}:{},bracketOrderLabel:e.bracketOrderLabel}})}),this.emitter.emit(`tradeLevelConfirmed`,{label:e,type:n.type,isFullscreen:this.isFullscreen}),this.hideLevelConfirmCancel||(this.pendingLevelDrags.delete(e),this.selectedTradeLabel=null,this.draftBracketPnl={}),this.renderTradeLayer()}revertPendingChanges(e){var t;if(e&&e===this.draftOrderLabel){this.removeDraftOrder();return}if(!e&&this.draftOrderLabel&&this.removeDraftOrder(),e&&!this.pendingLevelDrags.has(e)&&this._editOpenLabel===e){this._cancelEditAndDeselect(e);return}let n=e?this.pendingLevelDrags.has(e)||this.pendingQtyChanges.has(e)?[[e,(t=this.pendingLevelDrags.get(e))==null?[]:t]]:[]:[...this.pendingLevelDrags.entries(),...[...this.pendingQtyChanges.keys()].filter(e=>!this.pendingLevelDrags.has(e)).map(e=>[e,[]])];for(let[e]of n){if(this.undoIsNewBracketMutations(e),this.pendingLevelDrags.delete(e),this.pendingQtyChanges.has(e)){this.pendingQtyChanges.delete(e);let t=this.levels.findIndex(t=>t.label===e);if(t!==-1&&this.originalQtyByLabel.has(e)){let n=this.originalQtyByLabel.get(e),r=this.levels[t];this.levels=[...this.levels.slice(0,t),{...r,lots:n},...this.levels.slice(t+1)]}this.originalQtyByLabel.delete(e)}let t=this.levels.find(t=>t.label===e);t&&(this._editOpenLabel===e&&(this._editOpenLabel=null),this.emitter.emit(`tradeLevelEditCancelled`,{label:e,type:t.type,isFullscreen:this.isFullscreen}))}this.selectedTradeLabel=null,this.draftBracketPnl={},this.renderTradeLayer()}undoIsNewBracketMutations(e){let t=this.pendingLevelDrags.get(e);if(!t)return;let n=t.some(e=>e.field===`stopLoss`&&e.isNew),r=t.some(e=>e.field===`takeProfit`&&e.isNew);!n&&!r||(this.levels=this.levels.map(t=>{if(t.label!==e)return t;let i={...t};return n&&(i.stopLossPrice=void 0),r&&(i.takeProfitPrice=void 0),i}))}initCompareUi(){if(!this.compareManager)return;this.siEl&&(this.compareLegend=new su({theme:this.theme,onRemove:e=>this.removeCompare(e)}),this.siEl.appendChild(this.compareLegend.el));let e=()=>this.refreshCompareLegend();this.emitter.on(`compareAdded`,e),this.emitter.on(`compareRemoved`,e),this.emitter.on(`compareError`,e),this.emitter.on(`crosshair`,e=>{var t,n;this.compareHoveredIndex=(t=e==null?void 0:e.barIndex)==null?null:t,(n=this.compareManager)!=null&&n.isActive()&&(this.refreshCompareLegend(),this.scheduleRender())})}openComparePicker(){var e,t;if(!this.compareDataLoader)return;this.comparePickerModal||(this.comparePickerModal=new ou(this.chromeTheme,e=>this.toggleCompare(e),()=>this.emitUiState()),this.comparePickerModal.setTitle(`Compare`),this.comparePickerModal.setMode(`toggle`),this.getFloatingRoot().appendChild(this.comparePickerModal.el)),this.refreshComparePickerState();let n=(e=(t=this.siSymbolSpan)==null?void 0:t.textContent)==null?``:e;this.comparePickerModal.show(this.isins,n)}toggleCompare(e){this.compareManager&&(this.compareManager.has(e)?this.removeCompare(e):this.addCompare(e),this.refreshComparePickerState())}refreshComparePickerState(){!this.comparePickerModal||!this.compareManager||this.comparePickerModal.setActiveSymbols(this.compareManager.list().map(e=>e.symbol))}async addCompare(e){this.compareManager&&(await this.compareManager.add(e),this.refreshCompareLegend(),this.scheduleRender(),this.emitStateChange())}removeCompare(e){this.compareManager&&(this.compareManager.remove(e),this.refreshCompareLegend(),this.scheduleRender(),this.emitStateChange())}clearCompares(){this.compareManager&&(this.compareManager.clear(),this.refreshCompareLegend(),this.scheduleRender(),this.emitStateChange())}getCompares(){return this.compareManager?this.compareManager.list().map(e=>({symbol:e.symbol,color:e.color,status:e.status})):[]}refreshCompareLegend(){var e,t;if(!this.compareLegend||!this.compareManager)return;let n=this.compareManager.list(),r=this.dataStore.all,i=this.compareBaselineIndex(r),a=i==null||(e=(t=r[i])==null?void 0:t.close)==null?null:e,o=this.compareHoveredIndex,s=r.length-1,c=n.map(e=>{let t=null;if(e.status===`ready`&&a!=null&&e.bars.length>0){let n=_u(e.bars,r.map(e=>e.time),i==null?0:i),a=r[o==null?s:o];if(a){let e=n.find(e=>e.time===a.time);if(e&&e.pct!=null)t=e.pct;else{let e=n[n.length-1];(e==null?void 0:e.pct)!=null&&(t=e.pct)}}}return{symbol:e.symbol,color:e.color,percent:t,status:e.status,errorMessage:e.errorMessage}});this.compareLegend.update(c)}compareBaselineIndex(e){return e.length===0?null:Math.max(0,Math.min(e.length-1,Math.floor(this.viewport.startIndex)))}updateCompareRange(){if(!this.compareManager)return;let e=this.dataStore.all;if(e.length===0)return;let t={start:new Date(e[0].time),end:new Date(e[e.length-1].time),interval:this.timeframe,priceSource:this.tickClosePriceSource};this.compareManager.isActive()?this.compareManager.refetchAll(t).then(()=>{this.refreshCompareLegend(),this.scheduleRender()}):this.compareManager.setLastParams(t)}render(){var e,t,n;if(this._isDestroyed)return;let{ctx:r,canvas:i,theme:a,viewport:o}=this,s=window.devicePixelRatio||1,c=i.width,l=i.height,u=c/s-this.priceAxisWidth,d=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),f=d.reduce((e,t)=>e+this.paneH(t)+Od,0),p=l/s-this.timeAxisHeight-f;r.clearRect(0,0,c,l),r.fillStyle=a.background,r.fillRect(0,0,c,l);let m=this.dataStore.getVisible(o);if(m.length===0){this.drawCtx.clearRect(0,0,this.drawCanvas.width,this.drawCanvas.height);return}let h=m;if(this._isPanning)this.viewport={...this._targetViewport};else{let e=this._targetViewport.startIndex-this.viewport.startIndex,t=this._targetViewport.endIndex-this.viewport.endIndex,n=(this._targetViewport.endIndex-this._targetViewport.startIndex)*2e-4;Math.abs(e)<n&&Math.abs(t)<n?this.viewport={...this._targetViewport}:(this.viewport={...this.viewport,startIndex:this.viewport.startIndex+e*Md,endIndex:this.viewport.endIndex+t*Md,candleWidth:this._targetViewport.candleWidth,candleGap:this._targetViewport.candleGap},this.scheduleRender())}let g=!!((e=this.compareManager)!=null&&e.isActive()),_=null,v=[],y=[],b=null;if(g&&this.compareManager){var x,S;let e=this.dataStore.all,t=this.compareBaselineIndex(e),n=t==null||(x=(S=e[t])==null?void 0:S.close)==null?null:x;if(n!=null&&n!==0&&Number.isFinite(n)){_=n;let r=this.compareManager.list(),i=e.map(e=>e.time);v=r.map(e=>e.status===`ready`&&e.bars.length>0?_u(e.bars,i,t==null?0:t):[]),y=r.map(e=>e.color),h=mu(m,n),b=gu(m,n,v.map(e=>e.filter(e=>e.pct!=null)))}}let C=g&&b!==null;if(C!==this._lastInCompareMode&&(this._lastInCompareMode=C,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this.pricePanOffset=0,this.priceScaleFactor=1),this.priceScaleFactor!==1||this.pricePanOffset!==0){if(!this._lockedAutoFitBase){var w,T;this._lockedAutoFitBase=(w=(T=this._displayedPriceRange)==null?b:T)==null?this.dataStore.getPriceRange(o):w}let e=this._lockedAutoFitBase,t=(e.min+e.max)/2+this.pricePanOffset,n=e.max===e.min?1:(e.max-e.min)/2;this._displayedPriceRange={min:t-n*this.priceScaleFactor,max:t+n*this.priceScaleFactor}}else{var E;this._lockedAutoFitBase=null;let e=(E=b)==null?this.getScaledPriceRange(o):E;if(!this._displayedPriceRange)this._displayedPriceRange=e;else{let t=(e.max-e.min)*1e-4,n=e.min-this._displayedPriceRange.min,r=e.max-this._displayedPriceRange.max;Math.abs(n)<t&&Math.abs(r)<t?this._displayedPriceRange=e:(this._displayedPriceRange={min:this._displayedPriceRange.min+n*jd,max:this._displayedPriceRange.max+r*jd},this.scheduleRender())}}let D=this._displayedPriceRange,O=this.showVolume?this.dataStore.getVolumeRange(o):null,k=i;switch(k._priceRange=D,k._chartWidth=u,r.save(),r.scale(s,s),r.save(),r.beginPath(),r.rect(0,0,u,p),r.clip(),_e(r,D,this.scaleManager,a,u,p),this.series){case`candlestick`:ee(r,h,o,D,this.scaleManager,a,u,p);break;case`hollow`:te(r,h,o,D,this.scaleManager,a,u,p);break;case`line`:ie(r,h,o,D,this.scaleManager,a,u,p,!1);break;case`area`:ie(r,h,o,D,this.scaleManager,a,u,p,!0);break;case`ohlc`:ae(r,h,o,D,this.scaleManager,a,u,p);break;case`heikinashi`:ce(r,h,o,D,this.scaleManager,a,u,p);break;case`volumecandles`:V(r,h,o,D,this.scaleManager,a,u,p);break;case`linemarkers`:le(r,h,o,D,this.scaleManager,a,u,p);break;case`step`:ue(r,h,o,D,this.scaleManager,a,u,p);break;case`hlcarea`:fe(r,h,o,D,this.scaleManager,a,u,p);break;case`baseline`:me(r,h,o,D,this.scaleManager,a,u,p);break;case`columns`:he(r,h,o,D,this.scaleManager,a,u,p);break;case`highlow`:ge(r,h,o,D,this.scaleManager,a,u,p);break}r.save(),r.beginPath(),r.rect(0,0,u,p),r.clip();for(let e of this.visibleStates()){let t=e.indicator;if(t.pane&&t.pane!==`main`)continue;let n=this.indicatorResults.get(e.instanceId);if(!n)continue;let i=n.slice(Math.floor(o.startIndex),Math.ceil(o.endIndex)+1),a=g&&_!=null?hu(i,_):i;t.render(r,a,this.scaleManager,o,p)}if(g&&_!=null&&v.length>0){let e=this.dataStore.all,t=Math.floor(o.startIndex),n=Math.min(e.length-1,Math.ceil(o.endIndex)),i=new Map;for(let r=t;r<=n;r++)i.set(e[r].time,r);for(let e=0;e<v.length;e++){let t=v[e],n=y[e];if(!t||t.length===0)continue;r.save(),r.strokeStyle=n,r.lineWidth=1.5,r.lineJoin=`round`,r.lineCap=`round`,r.beginPath();let a=!1;for(let e of t){let t=i.get(e.time);if(t==null||e.pct==null){a=!1;continue}let n=this.scaleManager.xToPixel(t,o,u),s=this.scaleManager.yToPixel(e.pct,D,p);a?r.lineTo(n,s):(r.moveTo(n,s),a=!0)}r.stroke(),r.restore()}}r.restore(),r.restore(),an(r,D,this.scaleManager,a,u,p,this.priceAxisWidth,void 0,this.dataStore.getPricePrecision(),this.uiConfig.priceAxis,g?`percent`:`price`);let A=this.dataStore.all[this.dataStore.all.length-1];if(A&&!g){let e=this.dataStore.getPricePrecision(),t=(t,n,i)=>{let a=this.scaleManager.yToPixel(t,D,p);r.save(),r.strokeStyle=n,r.lineWidth=1,r.setLineDash([3,3]),r.beginPath(),r.moveTo(0,a),r.lineTo(u,a),r.stroke(),r.setLineDash([]);let o=i+t.toFixed(e);r.font=`10px 'Inter', system-ui, sans-serif`;let s=r.measureText(o).width+12;return r.fillStyle=n,r.fillRect(u,a-16/2,s,16),r.fillStyle=`#ffffff`,r.textAlign=`left`,r.fillText(o,u+4,a+4),r.restore(),{y:a,boxW:s}},n=null,i=0;if(this.liveBidAsk){var j,M,N,P,F,I,L;let{bid:e,ask:r}=this.liveBidAsk,o=this.tickClosePriceSource===`ltp`,s=((j=this.showLtpPrice)==null?o:j)?(M=this.liveLtp)==null?o?e:null:M:null,c=A.close>=A.open?a.candle.up:a.candle.down,l=(N=this.showAskLine)==null?this.showBidAskLines||this.tickClosePriceSource===`ask`:N,u=((P=this.showBidLine)==null?this.showBidAskLines||this.tickClosePriceSource===`bid`||o&&s==null:P)?t(e,a.candle.down,``):null,d=l?t(r,a.candle.up,``):null,f=s==null?null:t(s,c,``),p=o?(F=f==null?u:f)==null?d:F:this.tickClosePriceSource===`ask`?(I=d==null?f:d)==null?u:I:(L=u==null?f:u)==null?d:L;p&&(n=p.y,i=p.boxW)}else{let e=A.close>=A.open,r=t(A.close,e?a.candle.up:a.candle.down,``);n=r.y,i=r.boxW}if(this.showPriceAxisCountdown&&n!==null){var R;if(this.candleCountdownTimeframes===`all`||((R=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:R).includes(this.timeframe)){let e=this.timeframeToMs(this.timeframe);rn(r,A.time,e,a,u,n-16/2,16,i)}}}let z=p;for(let e of d){let t=e.indicator,n=this.paneH(e);if(r.fillStyle=a.axisBorder,r.fillRect(0,z,u+this.priceAxisWidth,Od),z+=Od,r.save(),r.beginPath(),r.rect(0,z,u+this.priceAxisWidth,n),r.clip(),r.translate(0,z),r.fillStyle=a.background,r.fillRect(0,0,u+this.priceAxisWidth,n),e.visible&&(()=>{let t=e.currentParams.timeframe;return!t||t===`Chart`||t===this.timeframe})()){let i=this.indicatorResults.get(e.instanceId);if(i){var B,ne;let s=i.slice(Math.floor(o.startIndex),Math.ceil(o.endIndex)+1),c=(B=t.getValueRange)==null?void 0:B.call(t,s),l=(ne=this.subPaneScaleFactors.get(e.instanceId))==null?1:ne,d=c?Rd(c,l):void 0;t.render(r,s,this.scaleManager,o,n,d),d&&an(r,d,this.scaleManager,a,u,n,this.priceAxisWidth,3,zd(d),this.uiConfig.priceAxis)}}r.restore(),z+=n}if(this.showVolume&&O&&O.max>0){let e=p*Ed;oe(r,h,o,O.max,this.scaleManager,a,u,e,p-e)}{var re;let e=this.candleCountdownTimeframes===`all`?!0:((re=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:re).includes(this.timeframe),t=this.showCandleCountdown&&!this.showPriceAxisCountdown&&e&&h.length>0&&o.endIndex>=this.dataStore.length-1,n=t?this.dataStore.length-1:void 0;if(this._debug&&console.log(`[countdown] showCandleCountdown:`,this.showCandleCountdown,`| tf:`,this.timeframe,`| allowed:`,e,`| bars:`,h.length,`| endIndex:`,o.endIndex,`| dataLen:`,this.dataStore.length,`| atLiveEdge:`,o.endIndex>=this.dataStore.length-1),tn(r,h,o,this.scaleManager,a,u,z,Fd()?3:void 0,this.uiConfig.timeAxis,this.timeframe,n,this.timezone),t){let e=this.dataStore.all[this.dataStore.length-1];if(e){let t=this.timeframeToMs(this.timeframe);nn(r,e.time,t,this.dataStore.length-1,o,this.scaleManager,a,u,z,this.uiConfig.timeAxis)}}}if(this.crosshair&&be(r,this.crosshair,D,o,this.scaleManager,a,u,p,this.priceAxisWidth,z,this.timeframe,this.dataStore.getPricePrecision(),this.uiConfig.crosshair,this.timezone),this.logoImage){let e=p-20-40/2;r.save(),r.globalAlpha=.6,r.beginPath(),r.rect(0,0,u,p),r.clip(),r.beginPath(),r.arc(40,e,40/2,0,Math.PI*2),r.closePath(),r.clip(),r.drawImage(this.logoImage,40-40/2,e-40/2,40,40),r.restore()}r.restore();let se=this.crosshair?(t=this.dataStore.all[this.crosshair.barIndex])==null?null:t:(n=this.dataStore.all[this.dataStore.length-1])==null?null:n;if(this.renderSymbolInfoOHLC(se),this.drawingManager.render(this.drawCtx,this.scaleManager,o,D,u,p,this.dataStore.getPricePrecision(),this.theme,{instrument:this.getInstrument(),bars:this.dataStore.all,account:this.accountSpec,features:this._features}),this.drawingStylePopover){let e=this.drawingManager.getSelectedDrawing();if(e&&e.complete&&e.locked!==!0){let t=this.computeDrawingAnchorPx(e);t&&this.drawingStylePopover.setAnchor(t.x,t.y)}}if(this.scrollToEndBtn){let e=this.dataStore.length===0||this._targetViewport.endIndex>=this.dataStore.length-.5;e!==!this.scrollToEndVisible&&(this.scrollToEndVisible=!e,this.scrollToEndBtn.style.opacity=e?`0`:`0.85`,this.scrollToEndBtn.style.pointerEvents=e?`none`:`auto`)}if(this.resetViewBtn){let e=this.dataStore.length,t=this._defaultVisibleBars,n=e===0||this._targetViewport.endIndex>=e-.5,r=this._targetViewport.endIndex-this._targetViewport.startIndex,i=Math.abs(r-t)<.5,a=this.priceScaleFactor===1&&this.pricePanOffset===0&&this._lockedAutoFitBase===null,o=e===0||n&&i&&a;o===this.resetViewVisible&&(this.resetViewVisible=!o,this.resetViewBtn.style.opacity=o?`0`:`0.75`,this.resetViewBtn.style.pointerEvents=o?`none`:`auto`)}this.updateSubPaneOverlayPositions()}recomputeIndicators(){for(let e of this.visibleStates())this.indicatorResults.set(e.instanceId,e.indicator.compute(this.dataStore.all))}onResize(){var e;if(this._isDestroyed)return;let t=window.devicePixelRatio||1,n=this.canvasWrap.getBoundingClientRect();if(n.width===0||n.height===0)return;this._cachedWrapRect=n,this._cachedDrawRect=this.drawCanvas.getBoundingClientRect(),(e=this.pnlPill)==null||e.clampToBounds();for(let e of[this.canvas,this.tradeCanvas,this.drawCanvas])e.width=n.width*t,e.height=n.height*t;let r=this.wrapper.offsetWidth,i=r>0&&r<this.uiConfig.drawingToolbar.mobileBreakpoint;if(i!==this._mobileLayout){var a,o,s,c;if(this._mobileLayout=i,(a=this.leftBar)==null||a.setMobileMode(i),(o=this._tb)==null||o.setMobileLayout(i),(s=this.tradeButton)==null||s.setMobileMode(i),(c=this.tradePopover)==null||c.setCompact(i),this.siEl&&(this.siEl.style.flexDirection=i?`column`:`row`,this.siEl.style.alignItems=i?`flex-start`:`center`,this.siEl.style.gap=i?`2px`:`8px`),i){var l;this.leftBarVisible=!1,(l=this._tb)==null||l.setDrawingsBtnActive(!1)}else{var u,d;this.leftBarVisible=!0,(u=this.leftBar)==null||u.setVisible(!0),(d=this._tb)==null||d.setDrawingsBtnActive(!0)}}this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.render(),this.renderTradeLayer()}paneH(e){var t,n;return(t=(n=this.paneHeightOverrides.get(e.instanceId))==null?e.indicator.paneHeight:n)==null?Dd:t}getChartLayout(){var e;let t=this.activeIndicators.filter(e=>e.indicator.pane===`sub`).reduce((e,t)=>e+this.paneH(t)+Od,0),n=(e=this._cachedWrapRect)==null?this.canvasWrap.getBoundingClientRect():e;return{chartW:n.width-this.priceAxisWidth,priceH:n.height-this.timeAxisHeight-t}}computeDrawingAnchorPx(e){var t;if(e.points.length===0)return null;let{chartW:n,priceH:r}=this.getChartLayout(),i=this._targetViewport,a=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(i):t,o=0,s=1/0;for(let t of e.points){let e=this.scaleManager.xToPixel(t.barIndex,i,n),c=this.scaleManager.yToPixel(t.price,a,r);c<s&&(s=c,o=e)}return Number.isFinite(s)?(o=Math.max(0,Math.min(n,o)),s=Math.max(0,Math.min(r,s)),{x:o,y:s}):null}updateSubPaneOverlayPositions(){if(this.subPaneOverlays.size===0)return;let e=this.getSeparatorPositions();for(let t of e){let e=this.subPaneOverlays.get(t.instanceId);e&&(e.el.style.top=`${t.y+Od+6}px`)}}getSeparatorPositions(){let{priceH:e}=this.getChartLayout(),t=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),n=[],r=e;for(let e of t)n.push({y:r,instanceId:e.instanceId}),r+=this.paneH(e)+Od;return n}getScaledPriceRange(e){let t=this.dataStore.getPriceRange(e),n=t.min,r=t.max;for(let t of this.visibleStates()){if(t.indicator.pane&&t.indicator.pane!==`main`)continue;let a=this.indicatorResults.get(t.instanceId);if(!a)continue;let o=Math.floor(e.startIndex),s=Math.ceil(e.endIndex)+1;for(let e=o;e<s&&e<a.length;e++){var i;let t=(i=a[e])==null?void 0:i.value;if(t==null)continue;let o=Array.isArray(t)?t.filter(e=>e!==null):[t];for(let e of o)isFinite(e)&&(e<n&&(n=e),e>r&&(r=e))}}let a=(n+r)/2+this.pricePanOffset,o=n===r?1:(r-n)/2;return{min:a-o*this.priceScaleFactor,max:a+o*this.priceScaleFactor}}touchToDrawingPoint(e){var t,n;let r=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,i=e.clientX-r.left,a=e.clientY-r.top,{chartW:o,priceH:s}=this.getChartLayout(),c=(n=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):n;return this.makeDrawingPoint(this.scaleManager.pixelToBarIndex(i,this.viewport,o),this.scaleManager.pixelToPrice(a,c,s))}makeDrawingPoint(e,t){let n={barIndex:e,price:t},r=this.barIndexToTimestamp(e);return r!=null&&(n.timestamp=r),n}_handleTradeLevelClose(e){if(e.bracketType){var t,n;let r=this.levels.find(t=>t.label===e.label);if((r==null||(t=r.data)==null?void 0:t._isDraft)===!0&&r){let t=e.bracketType===`stopLoss`?`sl`:`tp`;this.updateDraftOrderBracket(t,null),this.emitter.emit(`tradeLevelEdit`,{label:e.label,type:`pending`,data:r.data,isFullscreen:this.isFullscreen,changes:[{field:e.bracketType===`stopLoss`?`REMOVE_SL`:`REMOVE_TP`,newPrice:0,data:r.data,bracketOrderLabel:void 0}]});return}let i=e.bracketType,a=((n=this.pendingLevelDrags.get(e.label))==null?[]:n).filter(e=>e.field!==i);a.push({field:i,newPrice:0,oldPrice:0,isRemoval:!0,bracketOrderLabel:e.bracketOrderLabel}),this.pendingLevelDrags.set(e.label,a),this.selectedTradeLabel=e.label,this.renderTradeLayer();return}let r=e.label===this.draftOrderLabel,i=this.pendingLevelDrags.get(e.label),a=this._editOpenLabel===e.label,o=!!i&&i.length>0&&i.every(e=>e.isNew),s=!i||i.length===0,c=!r&&a&&(o||s);if(this.revertPendingChanges(e.label),this.pendingLevelDrags.delete(e.label),r)return;if(c){if(s){let t=this.levels.find(t=>t.label===e.label);this._editOpenLabel=null,this.selectedTradeLabel=null,this.renderTradeLayer(),t&&this.emitter.emit(`tradeLevelEditCancelled`,{label:e.label,type:t.type,isFullscreen:this.isFullscreen})}return}this._editOpenLabel===e.label&&(this._editOpenLabel=null);let l=this.levels.find(t=>t.label===e.label),u=(l==null?void 0:l.type)===`position`&&!!l.entryPriceEditable,d=e.type===`position`&&!u?`CLOSED`:`CANCELLED`;this.emitter.emit(`tradeLevelClose`,{label:e.label,type:e.type,action:d,data:e.data,isFullscreen:this.isFullscreen})}_activateMobileCrosshair(e,t){var n,r,i;if(!this.crosshairEnabled)return;let a=(n=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():n,{chartW:o,priceH:s}=this.getChartLayout(),c=(r=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):r,l=a.height-this.timeAxisHeight;if(e>=o||t>=l)return;this._mobileCrosshairActive=!0;let u=this.scaleManager.pixelToBarIndex(e,this.viewport,o),d=this.scaleManager.pixelToPrice(t,c,s),f=Math.max(Math.floor(this.viewport.startIndex),Math.min(Math.ceil(this.viewport.endIndex),Math.round(u))),p=(i=this.dataStore.all[f])==null?null:i;this.crosshair=this.selectedTradeLabel===null&&this.crosshairEnabled?{x:e,y:t,barIndex:f,price:d,bar:p}:null,this.tradeButton&&(this.tradeButton.setY(t),this._isTradingActive||!this.crosshairEnabled||qt(t,this.uiConfig.tradeButton.size/2,this.offViewportHitAreas)?this.tradeButton.hide():this.tfcActive&&this.tradeButton.show(),this._tradeButtonClickData={price:d,y:t}),this.scheduleRender()}_cancelEditAndDeselect(e){let t=this._editOpenLabel===e,n=this.levels.find(t=>t.label===e);this._editOpenLabel=null,this.selectedTradeLabel=null,this.draftBracketPnl={},this.renderTradeLayer(),t&&n&&this.emitter.emit(`tradeLevelEditCancelled`,{label:e,type:n.type,isFullscreen:this.isFullscreen})}_openTradeLevelEditForm(e){if(this._editOpenLabel===e.label)return;this.selectedTradeLabel=e.label,this._editOpenLabel=e.label;let{slPrice:t,tpPrice:n}=this._resolveBracketPrices(e);this.renderTradeLayer(),this.emitter.emit(`tradeLevelEditOpen`,{label:e.label,type:e.type,data:e.data,price:e.price,side:e.side,stopLossPrice:t,takeProfitPrice:n,isFullscreen:this.isFullscreen})}_needsDragAxisLock(e,t){return this._orderTimeDragEnabled&&!e.isBracket&&e.timeDrag===!0&&ut(t)}_upgradePendingTradeDrag(e,t){let r=this._pendingTradeDrag;if(!r)return!1;let i=bu.resolveDragAxis(e-r.startX,t-r.startY,r.axisLock?n.AXIS_LOCK_PIXEL_THRESHOLD:n.TRADE_DRAG_PIXEL_THRESHOLD);if(i===null)return!1;this._pendingTradeDrag=null;let a=r.axisLock&&i===`price`?{...r.dragHit,timeDrag:!1}:r.dragHit;return this._startTradeDragFromHit(a,r.level,r.hitY,r.startX),!0}_startTradeDragFromHit(e,t,n,r){var i;if(!this.tradeDragHandler)return;if(this._orderTimeDragEnabled&&this.orderTimeDragHandler&&!e.isBracket&&e.timeDrag===!0){var a,o,s;let{chartW:n}=this.getChartLayout(),i=e,c=(a=this._orderLineAnchorX(t,n))==null?n/2:a,l=Math.max(i.x,Math.min(i.x+i.w,c)),u=this.scaleManager.pixelToBarIndex(l,this.viewport,n),d=(o=(s=this._resolvedTimeAnchor(t))==null?this.barIndexToTimestamp(u):s)==null?0:o;this.orderTimeDragHandler.start(t,r==null?l:r,l,u,d),this.drawCanvas.style.cursor=`grabbing`,this.emitter.emit(`orderLineMoveStart`,{label:t.label,fromTimestamp:d,fromBarIndex:this.orderTimeDragHandler.startBarIndex,isFullscreen:this.isFullscreen}),this.renderTradeLayer();return}let{priceH:c}=this.getChartLayout(),l=(i=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):i,u=this.scaleManager.yToPixel(e.price,l,c);if(e.isBracket){var d,f,p,m;this._pendingBracketOrderLabel=(d=e.bracketOrderLabel)==null?null:d,this._isBracketNew=!1;let r=t.entryPriceEditable===!0,i=((f=t.data)==null?void 0:f._isDraft)===!0,a=this.dataStore.all,o=t.type===`position`&&!r&&!i?(p=(m=a[a.length-1])==null?void 0:m.close)==null?0:p:0;this.tradeDragHandler.startBracketDrag(t,e.bracketType,e.price,n,u,o,this._effectiveEntryPrice(t.label,t.price)),this.emitter.emit(`tradeLevelDragStart`,{label:t.label,bracketType:e.bracketType,isFullscreen:this.isFullscreen})}else if(this._pendingBracketOrderLabel=null,t.entryPriceEditable===!0){var h,g;this.selectedTradeLabel=e.label;let r=t,i=this.dataStore.all,a=(h=(g=i[i.length-1])==null?void 0:g.close)==null?0:h,o=this._effectiveBracketPrice(t.label,`stopLoss`,r.stopLossPrice),s=this._effectiveBracketPrice(t.label,`takeProfit`,r.takeProfitPrice);this.tradeDragHandler.startDrag(t,n,u,e.price,o,s,r.side,a,r.orderType,!0)}else{var _,v;let r=t,i=this.dataStore.all,a=(_=(v=i[i.length-1])==null?void 0:v.close)==null?0:_,{slPrice:o,tpPrice:s,slSiblingLabel:c,tpSiblingLabel:l}=this._resolveBracketPrices(t);this._slSiblingOrderLabel=c==null?null:c,this._tpSiblingOrderLabel=l==null?null:l;let d=this._effectiveBracketPrice(t.label,`stopLoss`,o),f=this._effectiveBracketPrice(t.label,`takeProfit`,s);this.tradeDragHandler.startDrag(t,n,u,e.price,d,f,r.side,a,r.orderType,!0)}e.isBracket&&(this._editOpenLabel=null),this._openTradeLevelEditForm(t)}_endOrderTimeDrag(){var e;if(!((e=this.orderTimeDragHandler)!=null&&e.active))return!1;let t=this.orderTimeDragHandler.end(this._orderLineDragSnap,this.viewport);if(this.tradeDragNewBarIndex=null,this.drawCanvas.style.cursor=`default`,t){let e=this.barIndexToTimestamp(t.newBarIndex),r=Math.round(t.startBarIndex);if(e!==void 0&&t.newBarIndex!==r){var n;this._timeAnchorOverride.set(t.label,e),(n=this._orderLineAnchorStore)==null||n.set(t.label,e),this.emitter.emit(`orderLineMoved`,{label:t.label,fromTimestamp:t.startTimestamp,toTimestamp:e,fromBarIndex:r,toBarIndex:t.newBarIndex,data:t.data,isFullscreen:this.isFullscreen})}}return this.renderTradeLayer(),!0}_startAddBracketFromHit(e,t){var n,r,i;let a=this.levels.find(t=>t.label===e.label);if(!a||!this.tradeDragHandler)return;let{priceH:o}=this.getChartLayout(),s=this.getScaledPriceRange(this.viewport),c=e.y+e.h/2,l=this.scaleManager.pixelToPrice(c,s,o),u=a.entryPriceEditable===!0,d=((n=a.data)==null?void 0:n._isDraft)===!0,f=this.dataStore.all,p=a.type===`position`&&!u&&!d?(r=(i=f[f.length-1])==null?void 0:i.close)==null?0:r:0;this._pendingBracketOrderLabel=null,this._isBracketNew=!0,this.tradeDragHandler.startBracketDrag(a,e.bracketType,l,t,c,p,this._effectiveEntryPrice(a.label,a.price)),this.emitter.emit(`tradeLevelDragStart`,{label:a.label,bracketType:e.bracketType,isFullscreen:this.isFullscreen})}showTextInput(e){var t;if(!this.textInputEl)return;this.textInputDrawing=e;let{chartW:n,priceH:r}=this.getChartLayout(),i=this.getScaledPriceRange(this.viewport),a,o;if(e.type===`text`)a=this.scaleManager.xToPixel(e.points[0].barIndex,this.viewport,n),o=this.scaleManager.yToPixel(e.points[0].price,i,r);else{var s;let t=(s=e.points[1])==null?e.points[0]:s;a=this.scaleManager.xToPixel(t.barIndex,this.viewport,n)-30,o=this.scaleManager.yToPixel(t.price,i,r)-10}let c=this.textInputEl;c.value=(t=e.text)==null?``:t,c.style.left=`${Math.max(0,a)}px`,c.style.top=`${Math.max(0,o)}px`,c.style.display=`block`,this.drawingManager.setEditingText(!0),c.focus(),c.select();let l=()=>{c.removeEventListener(`keydown`,d),c.removeEventListener(`blur`,f),this.commitTextInput()},u=()=>{c.removeEventListener(`keydown`,d),c.removeEventListener(`blur`,f),this.cancelTextInput()},d=e=>{e.key===`Enter`?(e.preventDefault(),l()):e.key===`Escape`&&(e.preventDefault(),u())},f=()=>l();c.addEventListener(`keydown`,d),c.addEventListener(`blur`,f,{once:!0})}commitTextInput(){var e,t;!this.textInputEl||!this.textInputDrawing||(this.textInputDrawing.text=this.textInputEl.value,this.textInputEl.style.display=`none`,this.textInputDrawing=null,this.drawingManager.setEditingText(!1),(e=(t=this.drawingManager).onDrawingsChange)==null||e.call(t),this.scheduleRender())}cancelTextInput(){this.textInputEl&&(this.textInputEl.style.display=`none`,this.textInputDrawing=null,this.drawingManager.setEditingText(!1),this.scheduleRender())}setDotTickActive(){this.siStreamDot&&(this.tickActivityTimer!==null&&clearTimeout(this.tickActivityTimer),this.siStreamDot.style.background=this.theme.candle.up,this.tickActivityTimer=setTimeout(()=>{this.tickActivityTimer=null,this.siStreamDot&&(this.siStreamDot.style.background=this.theme.ui.stream[this.streamStatus])},this.tickActivityMs))}fillTickGap(e,t){if(!this.dataLoader||this.isFetching)return;let n=this.timeframeToInterval(this.getBaseInterval());this.dataLoader({start:new Date(e),end:new Date(t),interval:n,priceSource:this.tickClosePriceSource}).then(e=>{let t=this.maybeAggregate(e);if(t.length===0)return;this.backfillDrawingTimestamps();let n=this.dataStore.all,r=n[n.length-1],i=0;for(let e of t){if(e.time>=r.time)continue;let t=n.findIndex(t=>t.time===e.time);if(t!==-1)n[t]=e;else{let t=n.findIndex(t=>t.time>e.time);n.splice(t===-1?n.length-1:t,0,e),i++}}i>0&&(this.viewport={...this.viewport,startIndex:this.viewport.startIndex+i,endIndex:this.viewport.endIndex+i},this.reanchorDrawingsByTimestamp(),this.recomputeIndicators(),this.scheduleRender())}).catch(()=>{})}correctCompletedBar(e,t){if(!this.dataLoader||this.isFetching)return;let n=new Date(e),r=new Date(e+t*3),i=this.timeframeToInterval(this.getBaseInterval());this.dataLoader({start:n,end:r,interval:i,priceSource:this.tickClosePriceSource}).then(e=>{let t=this.maybeAggregate(e);if(t.length===0)return;let n=this.dataStore.all,r=n.length-1,i=!1;for(let e of t){let t=n.findIndex(t=>t.time===e.time);t!==-1&&t!==r&&(n[t]=e,i=!0)}i&&(this.recomputeIndicators(),this.scheduleRender())}).catch(()=>{})}setLayoutIcon(e,t=!0){var n;return(n=this.advancedToolbar)==null||n.setLayoutPresetIcon(e,t),this}setDebug(e){return this._debug=e,this}correctBar(e,t){let n=this.dataStore.all,r=n.findIndex(t=>t.time===e);r!==-1&&(n[r]=t,this.recomputeIndicators(),this.scheduleRender())}scrollToEnd(){this.panHandler.cancel(),this.scrollAnimId!==null&&(cancelAnimationFrame(this.scrollAnimId),this.scrollAnimId=null);let e=this.viewport.endIndex-this.viewport.startIndex,t=this.dataStore.length+Ld,n=this.viewport.endIndex,r=this.pricePanOffset,i=performance.now(),a=e=>e<.5?2*e*e:-1+(4-2*e)*e,o=s=>{let c=Math.min((s-i)/350,1),l=a(c),u=n+(t-n)*l;this.viewport={...this.viewport,startIndex:u-e,endIndex:u},this._targetViewport={...this.viewport},this.pricePanOffset=r*(1-l),this.render(),c<1?this.scrollAnimId=requestAnimationFrame(o):this.scrollAnimId=null};this.scrollAnimId=requestAnimationFrame(o)}scrollToCenterPrice(e){if(!isFinite(e)||this.dataStore.length===0)return;this.scrollAnimId!==null&&(cancelAnimationFrame(this.scrollAnimId),this.scrollAnimId=null);let t=this.dataStore.getPriceRange(this.viewport),n=(t.min+t.max)/2,r=this.pricePanOffset,i=e-n;if(Math.abs(i-r)<1e-9)return;let a=performance.now(),o=e=>e<.5?2*e*e:-1+(4-2*e)*e,s=e=>{let t=Math.min((e-a)/350,1),n=o(t);this.pricePanOffset=r+(i-r)*n,this.render(),t<1?this.scrollAnimId=requestAnimationFrame(s):this.scrollAnimId=null};this.scrollAnimId=requestAnimationFrame(s)}_revealPrices(e){var t;if(this.dataStore.length===0||this._lastInCompareMode)return;let{priceH:n}=this.getChartLayout(),r=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):t,i=Cu(r,e,n);if(!i)return;this.scrollAnimId!==null&&(cancelAnimationFrame(this.scrollAnimId),this.scrollAnimId=null),this._lockedAutoFitBase||(this._lockedAutoFitBase={...r});let{factor:a,panOffset:o}=wu(this._lockedAutoFitBase,i),s=this.priceScaleFactor,c=this.pricePanOffset;if(Math.abs(a-s)<1e-9&&Math.abs(o-c)<1e-9)return;let l=performance.now(),u=e=>e<.5?2*e*e:-1+(4-2*e)*e,d=e=>{let t=Math.min((e-l)/350,1),n=u(t);this.priceScaleFactor=s+(a-s)*n,this.pricePanOffset=c+(o-c)*n,this.render(),t<1?this.scrollAnimId=requestAnimationFrame(d):(this.scrollAnimId=null,this.scheduleViewportPersist())};this.scrollAnimId=requestAnimationFrame(d)}_currentMarketPrice(){var e,t;let n=this.liveBidAsk;if(n)return n.ask||n.bid;let r=this.dataStore.all;return(e=(t=r[r.length-1])==null?void 0:t.close)==null?0:e}resetPriceAxis(){this.priceScaleFactor=1,this.pricePanOffset=0,this._lockedAutoFitBase=null,this.scheduleRender()}resetTimeAxis(){this.panHandler.cancel();let e=this.dataStore.length;if(e===0)return;let t=Id(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars);this._defaultVisibleBars=t;let n=Math.max(0,e-t+Ld);this.viewport={...this.viewport,startIndex:n,endIndex:e+Ld},this._targetViewport={...this.viewport},this.scheduleRender()}resetView(){this.resetPriceAxis(),this.resetTimeAxis()}applyOverlayLabelStyles(){for(let e of[this.loadingLabelEl,this.noDataLabelEl])e&&Object.assign(e.style,{color:this.theme.tooltip.text,background:this.theme.tooltip.background,border:`1px solid ${this.theme.tooltip.border}`})}applyResetViewBtnStyles(){this.resetViewBtn&&(this.resetViewBtn.innerHTML=Tn(this.theme.axisText,16),Object.assign(this.resetViewBtn.style,{position:`absolute`,bottom:`${this.timeAxisHeight+8}px`,left:`50%`,transform:`translateX(-50%)`,zIndex:`100`,width:`32px`,height:`32px`,padding:`0`,display:`flex`,alignItems:`center`,justifyContent:`center`,backgroundColor:this.theme.background,border:`1px solid ${this.theme.axisBorder}`,borderRadius:`50%`,cursor:`pointer`,outline:`none`,boxShadow:`0 2px 6px rgba(0,0,0,0.25)`,opacity:`0`,pointerEvents:`none`,transition:`opacity 0.2s ease`}))}applyScrollToEndBtnStyles(){if(!this.scrollToEndBtn)return;let e=this.theme.ui.scrollToEndBtnBg,t=e?`#ffffff`:this.theme.axisText,n=e==null?this.theme.background:e,r=e==null?this.theme.axisBorder:e;this.scrollToEndBtn.innerHTML=wn(t,16),Object.assign(this.scrollToEndBtn.style,{position:`absolute`,bottom:`${this.timeAxisHeight+8}px`,right:`${this.priceAxisWidth+8}px`,zIndex:`100`,width:`32px`,height:`32px`,padding:`0`,display:`flex`,alignItems:`center`,justifyContent:`center`,backgroundColor:n,border:`1px solid ${r}`,borderRadius:`50%`,cursor:`pointer`,outline:`none`,boxShadow:`0 2px 6px rgba(0,0,0,0.25)`,opacity:`0`,pointerEvents:`none`,transition:`opacity 0.2s ease`})}};_d=Bd,_d.DRAW_GESTURE_THRESHOLD=4,_d.TOUCH_HANDLE_SLOP_PX=18,_d.TRADE_DRAG_PIXEL_THRESHOLD=3,_d.AXIS_LOCK_PIXEL_THRESHOLD=6;var Q=null,Vd=new Map,Hd=new Map,Ud=0;function Wd(){return`dr_${Date.now()}_${Ud++}`}function Gd(){return`cr_${Date.now()}_${Ud++}`}function $(e,t){var n;let r=JSON.stringify({type:e,payload:t});window.ChartAndroidBridge?window.ChartAndroidBridge.postMessage(r):!((n=window.webkit)==null||(n=n.messageHandlers)==null)&&n.chartBridge?window.webkit.messageHandlers.chartBridge.postMessage(r):window.ReactNativeWebView&&window.ReactNativeWebView.postMessage(r)}function Kd(e={}){var t;Q==null||Q.destroy();let n=document.getElementById(`chart`),{enableTrading:r,onSymbolClick:i,onAskAiClick:a,orderLineTimeDrag:o,enableForecasting:s,...c}=e,l={...c.features,...o?{orderLineTimeDrag:!0}:{},...s?{enableForecasting:!0}:{}},u=(t=c.timeframe)==null?`1D`:t;Q=new Bd({theme:`dark`,...c,...Object.keys(l).length>0?{features:l}:{},container:n,dataLoader:e=>{for(let[,e]of Vd)e.reject(Error(`cancelled`));Vd.clear();let t=Wd(),n=Q==null?void 0:Q.getState();return new Promise((r,i)=>{var a;Vd.set(t,{resolve:r,reject:i}),$(`dataRequest`,{requestId:t,timeframe:(a=n==null?void 0:n.timeframe)==null?u:a,interval:e.interval,start:e.start.getTime(),end:e.end.getTime(),priceSource:e.priceSource})})},compareDataLoader:e=>{let t=Gd(),n=Q==null?void 0:Q.getState();return new Promise((r,i)=>{var a;Hd.set(t,{resolve:r,reject:i}),$(`compareDataRequest`,{requestId:t,symbol:e.symbol,timeframe:(a=n==null?void 0:n.timeframe)==null?u:a,interval:e.interval,start:e.start.getTime(),end:e.end.getTime()})})},...r?{onOrderSubmit:e=>{var t;$(`placeOrder`,{price:e.price,side:e.side,orderType:(t=e.orderType)==null?`limit`:t})}}:{},...i?{onSymbolClick:e=>{$(`symbolClick`,{symbol:e})}}:{},...a?{onAskAiClick:()=>{$(`askAiClick`,{})}}:{}}),Q.on(`timeframeChange`,({timeframe:e})=>{u=e}),Q.on(`crosshair`,e=>$(`crosshair`,e)),Q.on(`click`,e=>$(`barClick`,e)),Q.on(`zoom`,({viewport:e})=>$(`viewportChange`,{viewport:e})),Q.on(`pan`,({viewport:e})=>$(`viewportChange`,{viewport:e})),Q.on(`seriesChange`,e=>$(`seriesChange`,e)),Q.on(`priceSourceChange`,e=>$(`priceSourceChange`,e)),Q.on(`timeframeChange`,e=>$(`timeframeChange`,e)),Q.on(`durationChange`,e=>$(`durationChange`,e)),Q.on(`stateChange`,e=>$(`stateChange`,e)),Q.on(`dataLoaded`,e=>$(`dataLoaded`,e)),Q.on(`newBar`,e=>$(`newBar`,e)),Q.on(`streamStatus`,e=>$(`streamStatus`,e)),Q.on(`tradeLevelClose`,e=>$(`tradeLevelClose`,e)),Q.on(`tradeLevelDrag`,e=>$(`tradeLevelDrag`,e)),Q.on(`tradeLevelDragStart`,e=>$(`tradeLevelDragStart`,e)),Q.on(`tradeLevelEdit`,e=>$(`tradeLevelEdit`,e)),Q.on(`tradeLevelQtyChange`,e=>$(`tradeLevelQtyChange`,e)),Q.on(`tradeLevelConfirmed`,e=>$(`tradeLevelConfirmed`,e)),Q.on(`tradeLevelEditOpen`,e=>$(`tradeLevelEditOpen`,e)),Q.on(`tradeLevelBracketActivated`,e=>$(`tradeLevelBracketActivated`,e)),Q.on(`draftInitiated`,e=>$(`draftInitiated`,e)),Q.on(`draftCancelled`,e=>$(`draftCancelled`,e)),Q.on(`uiStateChange`,e=>$(`uiStateChange`,e)),Q.on(`orderLineMoveStart`,e=>$(`orderLineMoveStart`,e)),Q.on(`orderLineMoving`,e=>$(`orderLineMoving`,e)),Q.on(`orderLineMoved`,e=>$(`orderLineMoved`,e)),Q.on(`crosshairToggle`,e=>$(`crosshairToggle`,e)),Q.on(`compareAdded`,e=>$(`compareAdded`,e)),Q.on(`compareRemoved`,e=>$(`compareRemoved`,e)),Q.on(`compareError`,e=>$(`compareError`,e)),Q.on(`indicatorAdded`,e=>$(`indicatorAdded`,e)),Q.on(`indicatorRemoved`,e=>$(`indicatorRemoved`,e))}function qd(e){if(e.type===`init`){Kd(e.payload);return}if(!Q){$(`error`,{message:`Engine not initialized. Send an "init" command first.`});return}switch(e.type){case`loadData`:Q.loadData(e.payload.bars,e.payload.fitAll);break;case`pushTick`:Q.pushTick(e.payload);break;case`setTheme`:Q.setTheme(e.payload.theme);break;case`setTimezone`:Q.setTimezone(e.payload.timezone);break;case`setShowLtpPrice`:Q.setShowLtpPrice(e.payload.show);break;case`setShowAskLine`:Q.setShowAskLine(e.payload.show);break;case`setShowBidLine`:Q.setShowBidLine(e.payload.show);break;case`setTickClosePriceSource`:Q.setTickClosePriceSource(e.payload.source);break;case`setLayoutSync`:Q.setLayoutSync(e.payload);break;case`setCrosshairEnabled`:Q.setCrosshairEnabled(e.payload.enabled===!0);break;case`setSeries`:Q.setSeries(e.payload.series);break;case`setDuration`:Q.setDuration(e.payload.duration,e.payload.timeframe);break;case`setTimeframe`:Q.setTimeframe(e.payload.timeframe);break;case`setSymbol`:Q.setSymbol(e.payload.symbol);break;case`setInstrument`:Q.setInstrument(e.payload.instrument);break;case`setAccount`:Q.setAccount(e.payload.account);break;case`addIndicator`:Q.addIndicatorByName(e.payload.shortName,e.payload.params);break;case`removeIndicator`:Q.removeIndicator(e.payload.name);break;case`setDrawingTool`:Q.setDrawingTool(e.payload.tool);break;case`clearAllDrawings`:Q.clearAllDrawings();break;case`getState`:$(`stateSnapshot`,Q.getState());break;case`setState`:Q.setState(e.payload);break;case`resolveDataRequest`:{let t=Vd.get(e.payload.requestId);t&&(Vd.delete(e.payload.requestId),t.resolve(e.payload.bars));break}case`setDebug`:Q.setDebug(e.payload.enabled);break;case`destroy`:Q.destroy(),Q=null;break;case`setLevels`:Q.setLevels(e.payload.levels,e.payload.labelKey,e.payload.priceKey,e.payload.type,e.payload.pnlKey,e.payload.pnlTextKey);break;case`removeLevelByLabel`:Q.removeLevelByLabel(e.payload.label);break;case`updateLevelMainPrice`:Q.updateLevelMainPrice(e.payload.label,e.payload.price);break;case`updateLevelQty`:Q.updateLevelQty(e.payload.label,e.payload.qty);break;case`updateLevelBracket`:Q.updateLevelBracket(e.payload.label,e.payload.bracketType.toLowerCase(),e.payload.price);break;case`addLevelBracket`:Q.addLevelBracket(e.payload.label,e.payload.bracketType.toLowerCase());break;case`addBracket`:Q.addBracket(e.payload.bracketType.toLowerCase(),e.payload.label);break;case`removeBracket`:Q.removeBracket(e.payload.bracketType.toLowerCase(),e.payload.label);break;case`cancelLevelEdit`:Q.cancelLevelEdit(e.payload.label);break;case`selectLevel`:Q.selectLevel(e.payload.label);break;case`showDraftOrder`:Q.showDraftOrder(e.payload.price,e.payload.side,e.payload.orderType);break;case`showMarketDraft`:Q.showMarketDraft(e.payload.price,e.payload.side);break;case`clearDraftOrder`:Q.clearDraftOrder();break;case`cancelCurrentEdit`:Q.cancelCurrentEdit();break;case`updateDraftOrderPrice`:Q.updateDraftOrderPrice(e.payload.price);break;case`updateDraftOrderBracket`:Q.updateDraftOrderBracket(e.payload.bracketType,e.payload.price);break;case`setBracketLabelMode`:Q.setBracketLabelMode(e.payload.mode,e.payload.currencySymbol);break;case`setDraftBracketPnl`:Q.setDraftBracketPnl(e.payload.bracketType,e.payload.pnlText);break;case`setVolume`:Q.setVolume(e.payload.show);break;case`setIsins`:Q.setIsins(e.payload.isins);break;case`resetView`:Q.resetView();break;case`resetData`:Q.resetData();break;case`setLoading`:Q.setLoading(e.payload.loading);break;case`setThemeOverrides`:Q.setThemeOverrides(e.payload.overrides);break;case`setCanvasColors`:var t;Q.setCanvasColors((t=e.payload.colors)==null?null:t);break;case`correctBar`:Q.correctBar(e.payload.barTime,e.payload.bar);break;case`dismissAllUI`:Q.dismissAllUI();break;case`addCompare`:Q.addCompare(e.payload.symbol);break;case`removeCompare`:Q.removeCompare(e.payload.symbol);break;case`clearCompares`:Q.clearCompares();break;case`resolveCompareDataRequest`:{let t=Hd.get(e.payload.requestId);t&&(Hd.delete(e.payload.requestId),t.resolve(e.payload.bars));break}}}document.addEventListener(`DOMContentLoaded`,()=>{window.ChartBridge={send(e){let t;try{t=JSON.parse(e)}catch(t){$(`error`,{message:`Invalid JSON: ${e}`});return}try{qd(t)}catch(e){$(`error`,{message:String(e)})}}},$(`ready`,{})})})();</script>
|
|
278
|
+
`,document.head.appendChild(e)}function Fd(){return typeof window<`u`&&(`ontouchstart`in window||navigator.maxTouchPoints>1)}function Id(e=2,t=!1,n=kd,r,i,a){if(i&&i>0&&a&&a>0){let e=Math.floor(i/a);return Math.max(10,Math.min(500,e))}return!t&&!Fd()?n:r===void 0?Math.max(10,Math.round(n/e)):r}var Ld=4;function Rd(e,t){let n=(e.min+e.max)/2,r=(e.max-e.min)/2;return{min:n-r*t,max:n+r*t}}function zd(e){let t=e.max-e.min;return t>=100?0:t>=10?1:t>=1?2:t>=.1?3:4}var Bd=class n{get _tb(){var e,t,n;return(e=(t=(n=this.topBar)==null?this.advancedToolbar:n)==null?this.compactToolbar:t)==null?this.mobileHeader:e}visibleStates(){return this.activeIndicators.filter(e=>{if(!e.visible)return!1;let t=e.currentParams.timeframe;return!(t&&t!==`Chart`&&t!==this.timeframe)})}get indicators(){return this.visibleStates().map(e=>e.indicator)}scheduleViewportPersist(){this._viewportPersistTimer&&clearTimeout(this._viewportPersistTimer),this._viewportPersistTimer=setTimeout(()=>{this._viewportPersistTimer=null,this.emitStateChange()},500)}get isFullscreen(){return this._isCssFullscreen||!!document.fullscreenElement}get _isTradingActive(){var e,t,n,r,i,a,o,s;return((e=(t=this.tradePopover)==null?void 0:t.isVisible)==null?!1:e)||((n=(r=this.tradeActionBar)==null?void 0:r.isVisible)==null?!1:n)||this.draftOrderLabel!==null||((i=(a=this.tradeDragHandler)==null?void 0:a.active)==null?!1:i)||((o=(s=this.orderTimeDragHandler)==null?void 0:s.active)==null?!1:o)||this.pendingLevelDrags.size>0}_enabledGates(){var e;return Object.entries((e=this._features)==null?{}:e).filter(([,e])=>e===!0).map(([e])=>e)}constructor(i){var a,o,c,l,u,f,p,m,h,v,y,b,x,S,C,w,T,E,D,k,j,M,N,P,F,I,R,z,ee,te,ne,re,ie;if(this.topBar=null,this.advancedToolbar=null,this.compactToolbar=null,this.mobileHeader=null,this.bottomBar=null,this.leftBar=null,this.leftBarVisible=!0,this.layoutPopover=null,this.snapshotPopover=null,this.currentPresetId=`1`,this.currentSync={...pi},this.drawingToolsEnabled=!0,this.settingsEnabled=!0,this.fullscreenEnabled=!0,this._mobileLayout=!1,this.indicatorOverlay=null,this.subPaneOverlays=new Map,this.isinPickerModal=null,this.isins=[],this.compareManager=null,this.compareLegend=null,this.comparePickerModal=null,this.compareDataLoader=null,this.compareHoveredIndex=null,this.siEl=null,this.siStreamDot=null,this.siSymbolSpan=null,this.siOHLCSpan=null,this.siOHLC2Span=null,this.tickActivityTimer=null,this.tickActivityMs=3e4,this.streamStatus=`disconnected`,this._isDestroyed=!1,this.indicatorSettingsDialog=null,this.chartSettingsDialog=null,this.tradeButton=null,this.tradePopover=null,this.tradeActionBar=null,this._onAddAlert=null,this.drawingStylePopover=null,this.draftOrderLabel=null,this._minLots=1,this._showQuantityField=!1,this._qtyFieldMin=1,this._qtyFieldMax=100,this._draftQtyFlyout=null,this._draftQtyPillArea=void 0,this._activeQtyPillLabel=void 0,this.pendingQtyChanges=new Map,this.originalQtyByLabel=new Map,this._onOrderSubmit=void 0,this.scrollToEndBtn=null,this.scrollToEndVisible=!1,this.scrollAnimId=null,this.resetViewBtn=null,this.resetViewVisible=!1,this._defaultVisibleBars=kd,this.dataStore=new t,this.scaleManager=new r,this.emitter=new s,this.themeName=`dark`,this._debug=!1,this.symbol=``,this.resolvedInstrument=null,this.resolvedInstrumentPrecision=-1,this.showBidAskLines=!1,this.showActLogo=!1,this.hideLevelConfirmCancel=!1,this.deselectActiveOnOutsideClick=!1,this.tradeLevelButtonScale=1,this.tradeLevelBadgeScale=1,this.tradeLevelBadgeAnchor=`auto`,this._bracketLabel={...Ye},this.levelClusteringEnabled=!0,this.clusterThresholdDistance=20,this.enableThemeToggle=!1,this.activeIndicators=[],this.indicatorInstanceSeq=0,this.indicatorResults=new Map,this.viewport={startIndex:0,endIndex:Id(),candleWidth:8,candleGap:2},this._targetViewport={startIndex:0,endIndex:Id(),candleWidth:8,candleGap:2},this._isPanning=!1,this.crosshair=null,this.drawingManager=new cl,this.textInputEl=null,this.textInputDrawing=null,this._pendingDrawDrag=null,this._pendingDrawResize=null,this._pendingTradeDrag=null,this.paneHeightOverrides=new Map,this.separatorDrag=null,this.priceAxisWidth=wd,this.timeAxisHeight=Td,this.priceScaleFactor=1,this.pricePanOffset=0,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this._lastInCompareMode=!1,this._pendingViewportRestore=null,this._viewportPersistTimer=null,this.axisDrag=null,this.subPaneScaleFactors=new Map,this._mobileCrosshairActive=!1,this._mobileTapStartXY=null,this._longPressTimer=null,this._longPressPoint=null,this._lastTouchTime=0,this._tradeButtonClickData=null,this.disposeVvListener=()=>{},this.rafId=null,this.countdownRafId=null,this.countdownActive=!1,this._cachedWrapRect=null,this._cachedDrawRect=null,this._drawTouchAnchorActive=!1,this._lastDrawingTouchPoint=null,this._drawTouchStartXY=null,this._mobileDrawingFlyout=null,this._isCssFullscreen=!1,this.timezone=`UTC`,this.settingsCanvasColors={},this.streamAdapter=null,this.liveBidAsk=null,this.liveLtp=null,this.tickClosePriceSource=`bid`,this._reloadOnPriceSourceChange=!0,this._suppressTicks=!1,this.levels=[],this.tradeLevelHitAreas=[],this.offViewportHitAreas=[],this.tradeLevelEditAreas=[],this.tradeHoverAreas=[],this.tradeLevelDragAreas=[],this.tradeLevelConfirmAreas=[],this.tradeAddBracketAreas=[],this.clusterBadgeAreas=[],this.lastClusters=[],this.expandedClusters=new Set,this.hoveredTradeLabel=null,this.selectedTradeLabel=null,this._editOpenLabel=null,this.draftBracketPnl={},this.tradeDragHandler=null,this.orderTimeDragHandler=null,this.tradeDragNewBarIndex=null,this.pnlPill=null,this.pnlPillExpanded=!1,this._pnlPillExpandPass=!1,this.pnlPillVisible=!0,this._orderTimeDragEnabled=!1,this._orderLineDragSnap=!0,this._timeAnchorOverride=new Map,this._orderLineAnchorStore=null,this._orderLineDefaultAnchor=`timestamp`,this.tradeDragNewPrice=null,this.tradeDragNewSLPrice=null,this.tradeDragNewTPPrice=null,this._pendingBracketOrderLabel=null,this._slSiblingOrderLabel=null,this._tpSiblingOrderLabel=null,this._isBracketNew=!1,this.pendingLevelDrags=new Map,this.tfcEnabled=!0,this.crosshairEnabled=!0,this.tfcActive=!0,this.tradeDisplayFilter=`all`,this.positionRenderStyle=`dot`,this.tradesThresholdForHorizontalLine=2,this.positionRenderStyleOverride=null,this.RENDER_STYLE_LS_KEY=`finchart:positionRenderStyle`,this.dataLoader=null,this.isFetching=!1,this.noMoreData=!1,this._loadGeneration=0,this.maxCandles=200,this._durationTimeframeMap={..._i},this.minInitialBars=10,this.maxLookbackMs=365*24*60*60*1e3,this.prefetchThreshold=80,this.defaultVisibleBars=kd,this.defaultMobileVisibleBars=void 0,this.mobileBarDivisor=2,this.explicitMobileDivisor=!1,this._autoVisibleBars=!0,this.targetCandleWidth=Ad,this.maxSubPanes=3,this.showCandleCountdown=!0,this.showTradeLevelsAlways=!1,this._revealNewBrackets=!1,this.showPriceAxisCountdown=!1,this.SHOW_SLTP_ALWAYS_LS_KEY=`finchart.showTradeLevelsAlways`,this.PRICE_AXIS_COUNTDOWN_LS_KEY=`finchart.showPriceAxisCountdown`,this.loadingOverlayEl=null,this.noDataOverlayEl=null,this.loadingLabelEl=null,this.noDataLabelEl=null,this.logoImage=null,this.isRestoringState=!1,this.onMouseMove=e=>{var t,r,i,a,o,s,c;if(this._mobileCrosshairActive||Date.now()-this._lastTouchTime<500)return;let l=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,u=e.clientX-l.left,d=e.clientY-l.top,{chartW:f,priceH:p}=this.getChartLayout(),m=(r=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):r,h=l.height-this.timeAxisHeight,g=u<f&&d<h,_=this.scaleManager.pixelToBarIndex(u,this.viewport,f),v=this.scaleManager.pixelToPrice(d,m,p),y=Math.max(Math.floor(this.viewport.startIndex),Math.min(Math.ceil(this.viewport.endIndex),Math.round(_))),b=(i=this.dataStore.all[y])==null?null:i;this.crosshair=g&&this.crosshairEnabled&&!((a=this.tradePopover)!=null&&a.isVisible)&&!((o=this.tradeActionBar)!=null&&o.isVisible)&&this.selectedTradeLabel===null?{x:u,y:d,barIndex:y,price:v,bar:b}:null,this.emitter.emit(`crosshair`,this.crosshair);let x=this.positionRenderStyle===`dot`&&this.hoveredTradeLabel!==null;if(this.tradeButton&&(g&&this.crosshairEnabled&&d>=0&&d<=p&&!this._isTradingActive&&!x?(this.tradeButton.setY(d),qt(d,this.uiConfig.tradeButton.size/2,this.offViewportHitAreas)?this.tradeButton.hide():this.tfcActive&&this.tradeButton.show(),this._tradeButtonClickData={price:v,y:d}):this.tradeButton.hide()),this._pendingDrawResize){let e=u-this._pendingDrawResize.startX,t=d-this._pendingDrawResize.startY;Math.sqrt(e*e+t*t)>n.DRAW_GESTURE_THRESHOLD&&(this.drawingManager.startResize(this._pendingDrawResize.drawing,this._pendingDrawResize.pointIndex,this._pendingDrawResize.handle),this._pendingDrawResize=null)}if(this._pendingDrawDrag){let e=u-this._pendingDrawDrag.startX,t=d-this._pendingDrawDrag.startY;Math.sqrt(e*e+t*t)>n.DRAW_GESTURE_THRESHOLD&&(this.drawingManager.startDrag(this._pendingDrawDrag.drawing,this.makeDrawingPoint(_,v)),this._pendingDrawDrag=null)}if(this.drawingManager.onMouseMove(this.makeDrawingPoint(_,v)),this.axisDrag){if(this.axisDrag.axis===`price`){let e=d-this.axisDrag.startPos;this.priceScaleFactor=Math.max(.1,Math.min(10,this.axisDrag.startSize*1.005**e))}else if(this.axisDrag.axis===`subpane`&&this.axisDrag.instanceId){let e=d-this.axisDrag.startPos,t=Math.max(.1,Math.min(20,this.axisDrag.startSize*1.005**e));this.subPaneScaleFactors.set(this.axisDrag.instanceId,t)}else{let e=u-this.axisDrag.startPos,t=Math.max(10,Math.min(500,Math.round(this.axisDrag.startSize+e*.5))),n=(this.viewport.startIndex+this.viewport.endIndex)/2,r=Math.max(0,n-t/2);this.viewport={...this.viewport,startIndex:r,endIndex:r+t},this._targetViewport={...this.viewport}}this.drawCanvas.style.cursor=this.axisDrag.axis===`time`?`ew-resize`:`ns-resize`,this.scheduleRender();return}if(this.separatorDrag){let e=this.separatorDrag.startY-d,t=Math.max(40,Math.min(300,this.separatorDrag.startH+e));this.paneHeightOverrides.set(this.separatorDrag.instanceId,t),this.drawCanvas.style.cursor=`ns-resize`,this.scheduleRender();return}if(this._pendingTradeDrag){var S;if(!this._upgradePendingTradeDrag(u,d))return;this.drawCanvas.style.cursor=(S=this.orderTimeDragHandler)!=null&&S.active?`grabbing`:`ns-resize`}if((s=this.orderTimeDragHandler)!=null&&s.active){let e=this.orderTimeDragHandler.onMove(u,this.scaleManager,this.viewport,f);this.tradeDragNewBarIndex=e,this.drawCanvas.style.cursor=`grabbing`,this.renderTradeLayer();let t=this.orderTimeDragHandler.dragLabel,n=e===null?void 0:this.barIndexToTimestamp(e);t&&e!==null&&n!==void 0&&this.emitter.emit(`orderLineMoving`,{label:t,toTimestamp:n,toBarIndex:e,isFullscreen:this.isFullscreen});return}if((c=this.tradeDragHandler)!=null&&c.active){var C,w,T;let e=this.tradeDragHandler.onMouseMove(d,this.scaleManager,m,p);if(this.tradeDragNewPrice=(C=e==null?void 0:e.newPrice)==null?null:C,this.tradeDragNewSLPrice=(w=e==null?void 0:e.derivedSLPrice)==null?null:w,this.tradeDragNewTPPrice=(T=e==null?void 0:e.derivedTPPrice)==null?null:T,this.drawCanvas.style.cursor=`ns-resize`,this.renderTradeLayer(),this.tradeDragNewPrice!==null&&e){let t=e.label.indexOf(`:`),n=t===-1?e.label:e.label.slice(0,t),r=t===-1?void 0:e.label.slice(t+1),i=this.levels.find(e=>e.label===n);i&&this.emitter.emit(`tradeLevelDrag`,{label:i.label,newPrice:this.tradeDragNewPrice,data:i.data,bracketType:r,...e.derivedSLPrice===void 0?{}:{derivedSLPrice:e.derivedSLPrice},...e.derivedTPPrice===void 0?{}:{derivedTPPrice:e.derivedTPPrice},isFullscreen:this.isFullscreen})}return}if(!this.drawingManager.getActiveTool()){var E;if(Oe(u,d,this.clusterBadgeAreas)||Dt(u,d,this.tradeLevelHitAreas)||Ot(u,d,this.tradeLevelEditAreas)||kt(u,d,this.tradeLevelConfirmAreas)||Kt(u,d,this.offViewportHitAreas)){this.drawCanvas.style.cursor=`pointer`,this.scheduleRender();return}let e=jt(u,d,this.tradeLevelDragAreas);if(e){let t=this.levels.find(t=>t.label===e.label);this.drawCanvas.style.cursor=this._orderTimeDragEnabled&&e.timeDrag===!0?t&&this._needsDragAxisLock(e,t)?`move`:`grab`:`ns-resize`,e.label!==this.hoveredTradeLabel&&(this.hoveredTradeLabel=e.label,this.renderTradeLayer()),this.scheduleRender();return}let t=At(u,d,this.tradeHoverAreas),n=(E=t==null?void 0:t.label)==null?null:E;if(n!==this.hoveredTradeLabel&&(this.hoveredTradeLabel=n,this.renderTradeLayer()),this.positionRenderStyle===`dot`&&n!==null){this.crosshair=null,this.drawCanvas.style.cursor=`pointer`,this.scheduleRender();return}if(this.getSeparatorPositions().find(e=>Math.abs(d-e.y)<=4))this.drawCanvas.style.cursor=`ns-resize`;else if(u>=f)this.drawCanvas.style.cursor=`ns-resize`;else if(d>=h)this.drawCanvas.style.cursor=`ew-resize`;else if(this.drawingManager.isDraggingDrawing()||this.drawingManager.isResizingDrawing())this.drawCanvas.style.cursor=`grabbing`;else{let e=this.drawingManager.getHandleAtPoint(u,d,this.scaleManager,this.viewport,m,f,p);if(e)this.drawCanvas.style.cursor=e.handle.cursor;else{let e=this.drawingManager.hitTest(u,d,this.scaleManager,this.viewport,m,f,p);this.drawCanvas.style.cursor=e?`move`:`default`}}}this.scheduleRender()},this.onMouseLeave=e=>{if(!(this.tradeButton&&this.tradeButton.el.contains(e.relatedTarget))&&!this._mobileCrosshairActive){if(this.crosshair=null,this.emitter.emit(`crosshair`,null),!this._isTradingActive){var t;(t=this.tradeButton)==null||t.hide()}this.hoveredTradeLabel!==null&&(this.hoveredTradeLabel=null,this.renderTradeLayer()),this.scheduleRender()}},this.onMouseUp=()=>{var e;if(this.drawingManager.isFreehandStroke()){var t;let{chartW:e,priceH:n}=this.getChartLayout(),r=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):t;this.drawingManager.finishFreehand(this.scaleManager,this.viewport,r,e,n),this._pendingDrawDrag=null,this._pendingDrawResize=null,this.scheduleRender();return}if(this._pendingTradeDrag){let{level:e}=this._pendingTradeDrag;if(this._pendingTradeDrag=null,this._editOpenLabel===e.label&&!this.pendingLevelDrags.has(e.label)){this._cancelEditAndDeselect(e.label);return}this._openTradeLevelEditForm(e);return}if(!this._endOrderTimeDrag()){if((e=this.tradeDragHandler)!=null&&e.active){let e=this.tradeDragHandler.endDrag();if(e){var n;this._finalizeMainDragWithBrackets(e,(n=this._pendingBracketOrderLabel)==null?void 0:n)}else this.tradeDragNewPrice=null;this._pendingBracketOrderLabel=null,this.drawCanvas.style.cursor=`default`,this.renderTradeLayer();return}if(this.axisDrag){let e=this.axisDrag.axis===`price`||this.axisDrag.axis===`time`;this.axisDrag=null,this.drawCanvas.style.cursor=`default`,this.scheduleRender(),e&&this.scheduleViewportPersist()}this.separatorDrag&&(this.separatorDrag=null,this.drawCanvas.style.cursor=`default`,this.scheduleRender()),this._pendingDrawDrag=null,this._pendingDrawResize=null,this.drawingManager.isDraggingDrawing()&&(this.drawingManager.endDrag(),this.drawCanvas.style.cursor=`default`,this.scheduleRender()),this.drawingManager.isResizingDrawing()&&(this.drawingManager.endResize(),this.drawCanvas.style.cursor=`default`,this.scheduleRender())}},this.onDrawingTouchStart=e=>{var t;if(e.touches.length!==1)return;let r=e.touches[0],i=this.touchToDrawingPoint(r),a=this.drawingManager.getActiveTool(),o=this.drawingManager.isPlacing();if(a!==null||o){e.preventDefault(),this._lastDrawingTouchPoint=i,o?(this._drawTouchAnchorActive=!1,this.drawingManager.onMouseMove(i)):(this.drawingManager.onMouseDown(i),this._drawTouchAnchorActive=this.drawingManager.isPlacing()&&!this.drawingManager.isFreehandStroke()),this.scheduleRender();return}let s=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,c=r.clientX-s.left,l=r.clientY-s.top,{chartW:u,priceH:d}=this.getChartLayout(),f=this.getScaledPriceRange(this.viewport);if(c>=u){if(e.preventDefault(),l<=d)this.axisDrag={axis:`price`,startPos:l,startSize:this.priceScaleFactor};else{let e=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),t=d+Od;for(let n of e){let e=this.paneH(n);if(l>=t&&l<t+e){var p;this.axisDrag={axis:`subpane`,startPos:l,startSize:(p=this.subPaneScaleFactors.get(n.instanceId))==null?1:p,instanceId:n.instanceId};break}t+=e+Od}}this.scheduleRender();return}let m=s.height-this.timeAxisHeight;if(l>=m){e.preventDefault(),this.axisDrag={axis:`time`,startPos:c,startSize:this.viewport.endIndex-this.viewport.startIndex},this.scheduleRender();return}let h=this.drawingManager.getHandleAtPoint(c,l,this.scaleManager,this.viewport,f,u,d,n.TOUCH_HANDLE_SLOP_PX);if(h){e.preventDefault(),this.panHandler.cancel(),this.drawingManager.selectDrawing(h.drawing),this.drawingManager.startResize(h.drawing,h.handle.pointIndex,h.handle),this.hideMobileDrawingFlyout(),this.scheduleRender();return}let g=this.drawingManager.hitTest(c,l,this.scaleManager,this.viewport,f,u,d);if(g){e.preventDefault(),this.panHandler.cancel(),this.drawingManager.selectDrawing(g),this.drawingManager.startDrag(g,i),this._drawTouchStartXY={x:r.clientX,y:r.clientY},this.hideMobileDrawingFlyout(),this.scheduleRender();return}let _=Oe(c,l,this.clusterBadgeAreas);if(_){e.preventDefault(),this.panHandler.cancel(),this.expandedClusters.has(_.clusterId)?this.expandedClusters.delete(_.clusterId):this.expandedClusters.add(_.clusterId),this.renderTradeLayer();return}let v=Kt(c,l,this.offViewportHitAreas);if(v){e.preventDefault(),this.panHandler.cancel(),this.scrollToCenterPrice(v.targetPrice);return}let y=kt(c,l,this.tradeLevelConfirmAreas);if(y){e.preventDefault(),y.action===`confirm`?this.applyPendingChanges(y.label):this.revertPendingChanges(y.label);return}if(this._showQuantityField&&this._draftQtyPillArea){let t=this._draftQtyPillArea;if(c>=t.pillX&&c<=t.pillX+t.pillW&&l>=t.pillY&&l<=t.pillY+t.pillH){e.preventDefault(),e.stopPropagation(),this.openDraftQtyFlyout(t);return}}let b=Dt(c,l,this.tradeLevelHitAreas);if(b){e.preventDefault(),this._handleTradeLevelClose(b);return}if(!this.drawingManager.getActiveTool()){let t=Ot(c,l,this.tradeLevelEditAreas);if(t){e.preventDefault();let n=this.levels.find(e=>e.label===t.label);n&&this._openTradeLevelEditForm(n);return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let t=jt(c,l,this.tradeLevelDragAreas);if(t){e.preventDefault();let n=this.levels.find(e=>e.label===t.label);if(n){let e=this.selectedTradeLabel===n.label,r=t.isBracket||this._orderTimeDragEnabled&&t.timeDrag===!0||n.type===`pending`&&n.orderType!==`market`&&(e||!t.isBox);if(this.hideLevelConfirmCancel&&!r){let e=this.pendingLevelDrags.has(n.label);if(this.selectedTradeLabel===n.label&&!e){this._cancelEditAndDeselect(n.label);return}this._openTradeLevelEditForm(n);return}if(this._needsDragAxisLock(t,n)){this._pendingTradeDrag={dragHit:t,level:n,hitY:l,startX:c,startY:l,axisLock:!0};return}this._startTradeDragFromHit(t,n,l,c),this.scheduleRender();return}}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let t=Mt(c,l,this.tradeAddBracketAreas);if(t){e.preventDefault(),this._startAddBracketFromHit(t,l),this.scheduleRender();return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let t=At(c,l,this.tradeHoverAreas);if(t){e.preventDefault();let n=this.levels.find(e=>e.label===t.label);if(n){let e=this.pendingLevelDrags.has(t.label);if(this.selectedTradeLabel===t.label&&!e){this._cancelEditAndDeselect(t.label);return}this._openTradeLevelEditForm(n);return}}}this.drawingManager.selectDrawing(null),this.hideMobileDrawingFlyout(),this.expandedClusters.size>0&&(this.expandedClusters.clear(),this.renderTradeLayer()),c<u&&l<m&&(this._mobileCrosshairActive?(this._longPressTimer!==null&&(clearTimeout(this._longPressTimer),this._longPressTimer=null),this._mobileTapStartXY={x:c,y:l}):(this._longPressTimer!==null&&clearTimeout(this._longPressTimer),this._longPressPoint={x:c,y:l},this._longPressTimer=setTimeout(()=>{this._longPressTimer=null,this._longPressPoint&&(this._activateMobileCrosshair(this._longPressPoint.x,this._longPressPoint.y),this._longPressPoint=null)},500)))},this.onDrawingTouchMove=e=>{var t,n;if(e.touches.length!==1)return;let r=this.touchToDrawingPoint(e.touches[0]);if(this._lastDrawingTouchPoint=r,this.axisDrag){var i;e.preventDefault();let t=e.touches[0],n=(i=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():i,r=t.clientX-n.left,a=t.clientY-n.top;if(this.axisDrag.axis===`price`){let e=a-this.axisDrag.startPos;this.priceScaleFactor=Math.max(.1,Math.min(10,this.axisDrag.startSize*1.005**e))}else if(this.axisDrag.axis===`subpane`&&this.axisDrag.instanceId){let e=a-this.axisDrag.startPos,t=Math.max(.1,Math.min(20,this.axisDrag.startSize*1.005**e));this.subPaneScaleFactors.set(this.axisDrag.instanceId,t)}else{let e=r-this.axisDrag.startPos,t=Math.max(10,Math.min(500,Math.round(this.axisDrag.startSize+e*.5))),n=(this.viewport.startIndex+this.viewport.endIndex)/2,i=Math.max(0,n-t/2);this.viewport={...this.viewport,startIndex:i,endIndex:i+t}}this.scheduleRender();return}if(this.drawingManager.isPlacing()&&!this._drawTouchAnchorActive){e.preventDefault(),this.drawingManager.onMouseMove(r),this.scheduleRender();return}if(this.drawingManager.isDraggingDrawing()||this.drawingManager.isResizingDrawing()){e.preventDefault(),e.stopPropagation(),this.drawingManager.onMouseMove(r),this.scheduleRender();return}if(this._pendingTradeDrag){var a;e.preventDefault();let t=e.touches[0],n=(a=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():a;if(!this._upgradePendingTradeDrag(t.clientX-n.left,t.clientY-n.top))return}if((t=this.orderTimeDragHandler)!=null&&t.active){var o;e.preventDefault();let t=e.touches[0],n=(o=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():o,r=t.clientX-n.left,{chartW:i}=this.getChartLayout(),a=this.orderTimeDragHandler.onMove(r,this.scaleManager,this.viewport,i);this.tradeDragNewBarIndex=a,this.renderTradeLayer();let s=this.orderTimeDragHandler.dragLabel,c=a===null?void 0:this.barIndexToTimestamp(a);s&&a!==null&&c!==void 0&&this.emitter.emit(`orderLineMoving`,{label:s,toTimestamp:c,toBarIndex:a,isFullscreen:this.isFullscreen});return}if((n=this.tradeDragHandler)!=null&&n.active){var s,c,l,u,d;e.preventDefault();let t=e.touches[0],n=(s=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():s,r=t.clientY-n.top,{priceH:i}=this.getChartLayout(),a=(c=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):c,o=this.tradeDragHandler.onMouseMove(r,this.scaleManager,a,i);if(this.tradeDragNewPrice=(l=o==null?void 0:o.newPrice)==null?null:l,this.tradeDragNewSLPrice=(u=o==null?void 0:o.derivedSLPrice)==null?null:u,this.tradeDragNewTPPrice=(d=o==null?void 0:o.derivedTPPrice)==null?null:d,this.renderTradeLayer(),this.tradeDragNewPrice!==null&&o){let e=o.label.indexOf(`:`),t=e===-1?o.label:o.label.slice(0,e),n=e===-1?void 0:o.label.slice(e+1),r=this.levels.find(e=>e.label===t);r&&this.emitter.emit(`tradeLevelDrag`,{label:r.label,newPrice:this.tradeDragNewPrice,data:r.data,bracketType:n,...o.derivedSLPrice===void 0?{}:{derivedSLPrice:o.derivedSLPrice},...o.derivedTPPrice===void 0?{}:{derivedTPPrice:o.derivedTPPrice},isFullscreen:this.isFullscreen})}return}if(this._mobileTapStartXY||this._longPressTimer!==null){var f,p;let t=e.touches[0],n=(f=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():f,r=(p=this._mobileTapStartXY)==null?this._longPressPoint:p;if(r){let e=t.clientX-n.left-r.x,i=t.clientY-n.top-r.y;Math.sqrt(e*e+i*i)>6&&(this._mobileTapStartXY=null,this._longPressTimer!==null&&(clearTimeout(this._longPressTimer),this._longPressTimer=null,this._longPressPoint=null))}}if(this._mobileCrosshairActive){var m,h;e.preventDefault();let t=e.touches[0],n=(m=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():m,r=t.clientX-n.left,i=t.clientY-n.top,{chartW:a,priceH:o}=this.getChartLayout(),s=(h=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):h,c=n.height-this.timeAxisHeight;if(r<a&&i<c){var g;let e=this.scaleManager.pixelToBarIndex(r,this.viewport,a),t=this.scaleManager.pixelToPrice(i,s,o),n=Math.max(Math.floor(this.viewport.startIndex),Math.min(Math.ceil(this.viewport.endIndex),Math.round(e))),c=(g=this.dataStore.all[n])==null?null:g;this.crosshair=this.selectedTradeLabel===null?{x:r,y:i,barIndex:n,price:t,bar:c}:null,this.tradeButton&&(this.tradeButton.setY(i),this._isTradingActive||qt(i,this.uiConfig.tradeButton.size/2,this.offViewportHitAreas)?this.tradeButton.hide():this.tfcActive&&this.tradeButton.show(),this._tradeButtonClickData={price:t,y:i}),this.scheduleRender()}}},this.onDrawingTouchCancel=e=>{var t,n;this._longPressTimer!==null&&(clearTimeout(this._longPressTimer),this._longPressTimer=null,this._longPressPoint=null);let r=!1;this._pendingTradeDrag=null,(t=this.orderTimeDragHandler)!=null&&t.active&&(this.orderTimeDragHandler.cancel(),this.tradeDragNewBarIndex=null,r=!0),(n=this.tradeDragHandler)!=null&&n.active&&(this.tradeDragHandler.cancelDrag(),this.tradeDragNewPrice=null,this.tradeDragNewSLPrice=null,this.tradeDragNewTPPrice=null,this._pendingBracketOrderLabel=null,r=!0),this._pendingTradeDrag=null,r&&this.renderTradeLayer()},this.onDrawingTouchEnd=e=>{var t;if(this._lastTouchTime=Date.now(),this._longPressTimer!==null&&(clearTimeout(this._longPressTimer),this._longPressTimer=null,this._longPressPoint=null),this._pendingTradeDrag){let{level:e}=this._pendingTradeDrag;this._pendingTradeDrag=null;let t=this.pendingLevelDrags.has(e.label);if(this.selectedTradeLabel===e.label&&!t){this._cancelEditAndDeselect(e.label);return}this._openTradeLevelEditForm(e);return}if(this._endOrderTimeDrag())return;if((t=this.tradeDragHandler)!=null&&t.active){let e=this.tradeDragHandler.endDrag();if(e){var n;this._finalizeMainDragWithBrackets(e,(n=this._pendingBracketOrderLabel)==null?void 0:n)}else this.tradeDragNewPrice=null;this._pendingBracketOrderLabel=null,this.renderTradeLayer();return}if(this.axisDrag){let e=this.axisDrag.axis===`price`||this.axisDrag.axis===`time`;this.axisDrag=null,this.scheduleRender(),e&&this.scheduleViewportPersist();return}let r=this._drawTouchAnchorActive;if(this._drawTouchAnchorActive=!1,this.drawingManager.isFreehandStroke()){var i;let{chartW:e,priceH:t}=this.getChartLayout(),n=(i=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):i;this.drawingManager.finishFreehand(this.scaleManager,this.viewport,n,e,t),this._lastDrawingTouchPoint=null,this.scheduleRender();return}if(!r&&this.drawingManager.isPlacing()&&this._lastDrawingTouchPoint){this.drawingManager.onMouseDown(this._lastDrawingTouchPoint),this._lastDrawingTouchPoint=null,this.scheduleRender();return}if(this.drawingManager.isDraggingDrawing()){let t=e.changedTouches[0],n=this._drawTouchStartXY;if(this._drawTouchStartXY=null,this.drawingManager.endDrag(),t&&n&&this.drawingManager.getSelectedDrawing()){let e=t.clientX-n.x,r=t.clientY-n.y;Math.sqrt(e*e+r*r)<8&&this.showMobileDrawingFlyout(t.clientX,t.clientY)}this.scheduleRender()}if(this.drawingManager.isResizingDrawing()&&(this.drawingManager.endResize(),this.scheduleRender()),this._mobileTapStartXY){var a;this._mobileTapStartXY=null,this._mobileCrosshairActive=!1,this.crosshair=null,(a=this.tradeButton)==null||a.hide(),this.scheduleRender()}},this.onCanvasClick=e=>{var t,n;let r=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,i=e.clientX-r.left,a=e.clientY-r.top,{chartW:o,priceH:s}=this.getChartLayout(),c=(n=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):n,l=this.scaleManager.pixelToBarIndex(i,this.viewport,o),u=this.scaleManager.pixelToPrice(a,c,s),d=Math.round(l),f=Oe(i,a,this.clusterBadgeAreas);if(f){this.expandedClusters.has(f.clusterId)?this.expandedClusters.delete(f.clusterId):this.expandedClusters.add(f.clusterId),this.renderTradeLayer();return}let p=Kt(i,a,this.offViewportHitAreas);if(p){this.scrollToCenterPrice(p.targetPrice);return}let m=kt(i,a,this.tradeLevelConfirmAreas);if(m){m.action===`confirm`?this.applyPendingChanges(m.label):this.revertPendingChanges(m.label);return}if(this._showQuantityField&&this._draftQtyPillArea){let t=this._draftQtyPillArea;if(i>=t.pillX&&i<=t.pillX+t.pillW&&a>=t.pillY&&a<=t.pillY+t.pillH){e.preventDefault(),e.stopPropagation(),this.openDraftQtyFlyout(t);return}}let h=Dt(i,a,this.tradeLevelHitAreas);if(h){this._handleTradeLevelClose(h);return}if(!this.drawingManager.getActiveTool()){let e=Ot(i,a,this.tradeLevelEditAreas);if(e){let t=this.levels.find(t=>t.label===e.label);t&&this._openTradeLevelEditForm(t);return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let e=Mt(i,a,this.tradeAddBracketAreas);if(e){this._startAddBracketFromHit(e,a);return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let e=jt(i,a,this.tradeLevelDragAreas);if(e){let t=this.levels.find(t=>t.label===e.label);if(t&&!(this.hideLevelConfirmCancel&&!e.isBracket)){this._pendingTradeDrag={dragHit:e,level:t,hitY:a,startX:i,startY:a,axisLock:this._needsDragAxisLock(e,t)};return}}}let g=At(i,a,this.tradeHoverAreas);if(g){let e=this.pendingLevelDrags.has(g.label);if(this.selectedTradeLabel===g.label&&!e){this._cancelEditAndDeselect(g.label);return}let t=this.levels.find(e=>e.label===g.label);t?this._openTradeLevelEditForm(t):(this.selectedTradeLabel=g.label,this.renderTradeLayer());return}else if(this.selectedTradeLabel!==null&&!this.hideLevelConfirmCancel&&this.deselectActiveOnOutsideClick){let e=this.selectedTradeLabel,t=this.pendingLevelDrags.get(e);!t||t.length===0?this._cancelEditAndDeselect(e):this.revertPendingChanges(e)}this.expandedClusters.size>0&&(this.expandedClusters.clear(),this.renderTradeLayer());let _=r.height-this.timeAxisHeight;if(i>=o){if(a<=s)this.axisDrag={axis:`price`,startPos:a,startSize:this.priceScaleFactor};else{let e=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),t=s+Od;for(let n of e){let e=this.paneH(n);if(a>=t&&a<t+e){var v;this.axisDrag={axis:`subpane`,startPos:a,startSize:(v=this.subPaneScaleFactors.get(n.instanceId))==null?1:v,instanceId:n.instanceId};break}t+=e+Od}}this.scheduleRender();return}if(a>=_){this.axisDrag={axis:`time`,startPos:i,startSize:this.viewport.endIndex-this.viewport.startIndex},this.scheduleRender();return}let y=this.getSeparatorPositions().find(e=>Math.abs(a-e.y)<=4);if(y){var b,x;let e=this.activeIndicators.find(e=>e.instanceId===y.instanceId),t=(b=(x=this.paneHeightOverrides.get(y.instanceId))==null?e==null?void 0:e.indicator.paneHeight:x)==null?Dd:b;this.separatorDrag={instanceId:y.instanceId,startY:a,startH:t},this.scheduleRender();return}if(!this.drawingManager.onMouseDown(this.makeDrawingPoint(l,u))){var S;let e=this.drawingManager.getHandleAtPoint(i,a,this.scaleManager,this.viewport,c,o,s);if(e)this.drawingManager.selectDrawing(e.drawing),this._pendingDrawResize={drawing:e.drawing,pointIndex:e.handle.pointIndex,handle:e.handle,startX:i,startY:a};else{let e=this.drawingManager.hitTest(i,a,this.scaleManager,this.viewport,c,o,s);this.drawingManager.selectDrawing(e),e&&(this._pendingDrawDrag={drawing:e,startX:i,startY:a})}let t=(S=this.dataStore.all[d])==null?null:S;this.emitter.emit(`click`,{x:i,y:a,barIndex:d,price:u,bar:t})}this.scheduleRender()},this.onDoubleClick=e=>{var t;this.drawingManager.finalizePlacing();let n=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,r=e.clientX-n.left,i=e.clientY-n.top,{chartW:a,priceH:o}=this.getChartLayout(),s=n.height-this.timeAxisHeight;if(r>=a){this.resetPriceAxis();return}if(i>=s){this.resetTimeAxis();return}let c=new Set([`text`,`callout`,`anchoredNote`]),l=this.drawingManager.getSelectedDrawing();if(l&&c.has(l.type)){let e=this.getScaledPriceRange(this.viewport);if(l.hitTest(r,i,this.scaleManager,this.viewport,e,a,o)){this.showTextInput(l);return}}this.scheduleRender()},this.onKeyDown=e=>{var t;if(e.key===`Escape`&&(t=this.orderTimeDragHandler)!=null&&t.active){this.orderTimeDragHandler.cancel(),this.tradeDragNewBarIndex=null,this.drawCanvas.style.cursor=`default`,this.renderTradeLayer(),e.preventDefault();return}if(e.key===`Escape`&&this.pnlPillExpanded){var n;this.pnlPillExpanded=!1,(n=this.pnlPill)==null||n.setExpanded(!1),this.recomputeRenderStyle(),this.renderTradeLayer()}if(e.key===`Escape`&&this.expandedClusters.size>0){this.expandedClusters.clear(),this.renderTradeLayer(),e.preventDefault();return}if(e.key===`Escape`&&this.pendingLevelDrags.size>0){this.revertPendingChanges(),e.preventDefault();return}let r=(e.ctrlKey||e.metaKey)&&e.key===`z`?`z`:e.key;if(this.drawingManager.onKeyDown(r)){var i;e.preventDefault(),this.hideMobileDrawingFlyout(),(i=this.leftBar)==null||i.setActiveTool(this.drawingManager.getActiveTool()),this.drawCanvas.style.cursor=this.drawingManager.getActiveTool()?`crosshair`:`default`,this.scheduleRender()}},this.onTick=e=>{var t;if(this._isDestroyed)return;let n=this.dataStore.all;if(n.length===0||this._suppressTicks)return;this.liveBidAsk={bid:e.bid,ask:e.ask},e.ltp!=null&&e.ltp>0&&(this.liveLtp=e.ltp),this.setDotTickActive();let r=n[n.length-1],i=this.timeframeToMs(this.timeframe),a=this.tickClosePriceSource===`ltp`?(t=this.liveLtp)==null?e.bid:t:this.tickClosePriceSource===`ask`?e.ask:e.bid;if(e.time<r.time+i){var o;let t={...r,high:Math.max(r.high,a),low:Math.min(r.low,a),close:a,volume:((o=r.volume)==null?0:o)+e.volume};n[n.length-1]=t}else{let t=r,o=Math.floor(e.time/i)*i;n.push({time:o,open:a,high:a,low:a,close:a,volume:e.volume}),this._debug&&console.warn(`[tick] → NEW candle @ ${new Date(o).toISOString()} (closed ${new Date(t.time).toISOString()}) | total bars=${n.length}`);let s=n[n.length-1];this._targetViewport.endIndex>=n.length&&(this._targetViewport={...this._targetViewport,startIndex:this._targetViewport.startIndex+1,endIndex:this._targetViewport.endIndex+1}),this.emitter.emit(`newBar`,{completedBar:t,openingBar:s,intervalMs:i}),this.correctCompletedBar(t.time,i),o>t.time+i&&this.fillTickGap(t.time,o)}this.recomputeIndicators(),this.scheduleRender()},typeof window>`u`||typeof document>`u`)throw Error(`acttrader-charts requires a browser environment`);if(Vn(),window.visualViewport){let e=window.visualViewport,t=()=>{this._cachedWrapRect=null,this._cachedDrawRect=null};e.addEventListener(`resize`,t),e.addEventListener(`scroll`,t),this.disposeVvListener=()=>{e.removeEventListener(`resize`,t),e.removeEventListener(`scroll`,t)}}let{container:ae,theme:oe=`dark`,series:se=`candlestick`,showVolume:ce=!0,showUI:V=!0,timeframe:le=`1D`,duration:ue=void 0,symbol:de=``,isins:fe,onIsinSelect:pe,onSymbolClick:me,onOrderSubmit:he,dataLoader:ge,uiConfig:_e,labels:ve,tickActivityMs:ye=3e4,hideSymbolAndTick:be=!1,hideOHLCV:xe=!1,showBottomBar:Se=!1}=i;if(this.dataLoader=ge==null?null:ge,this.compareDataLoader=(a=i.compareDataLoader)==null?null:a,this.compareManager=new lu({emitter:this.emitter,loader:this.compareDataLoader,maxCompares:i.maxCompares}),this.drawingToolsEnabled=i.showDrawingTools!==!1,this.settingsEnabled=i.showSettings!==!1,this.fullscreenEnabled=i.showFullscreenButton!==!1,this.uiConfig=O(_e),this.labels=A(ve),this.tickActivityMs=ye,this.maxCandles=(o=i.maxCandles)==null?200:o,this._durationTimeframeMap={..._i,...i.durationTimeframeMap},this.minInitialBars=Math.max(0,(c=i.minInitialBars)==null?10:c),this.maxLookbackMs=Math.max(0,(l=i.maxLookbackMs)==null?365*24*60*60*1e3:l),this.prefetchThreshold=(u=i.prefetchThreshold)==null?80:u,this.defaultVisibleBars=(f=i.defaultVisibleBars)==null?kd:f,this.defaultMobileVisibleBars=i.defaultMobileVisibleBars,this.explicitMobileDivisor=i.mobileBarDivisor!==void 0,this.mobileBarDivisor=(p=i.mobileBarDivisor)==null?2:p,this._autoVisibleBars=i.defaultVisibleBars==null&&i.defaultMobileVisibleBars==null,this.targetCandleWidth=(m=i.targetCandleWidth)==null?Ad:m,this.viewport={...this.viewport,endIndex:Id(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars)},this._targetViewport={...this.viewport},this.maxSubPanes=(h=i.maxSubPanes)==null?3:h,this.tickClosePriceSource=(v=i.tickClosePriceSource)==null?`bid`:v,this._reloadOnPriceSourceChange=i.reloadOnPriceSourceChange!==!1,this.showLtpPrice=i.showLtpPrice,this.tradesThresholdForHorizontalLine=(y=i.tradesThresholdForHorizontalLine)==null?2:y,i.positionRenderStyle===`line`||i.positionRenderStyle===`dot`)this.positionRenderStyleOverride=i.positionRenderStyle;else{let e=localStorage.getItem(this.RENDER_STYLE_LS_KEY);(e===`line`||e===`dot`)&&(this.positionRenderStyleOverride=e)}i.tradeDisplayFilter&&(this.tradeDisplayFilter=i.tradeDisplayFilter),i.canvasColors&&(this.settingsCanvasColors=i.canvasColors),this.recomputeRenderStyle(),this.showBidAskLines=(b=i.showBidAskLines)==null?!1:b,this.showAskLine=i.showAskLine,this.showBidLine=i.showBidLine,this.showActLogo=(x=i.showActLogo)==null?!1:x,this.hideLevelConfirmCancel=(S=i.hideLevelConfirmCancel)==null?!1:S,this.deselectActiveOnOutsideClick=(C=i.deselectActiveOnOutsideClick)==null?!1:C,this._orderTimeDragEnabled=((w=i.features)==null?void 0:w.orderLineTimeDrag)===!0,this._features=i.features,this.drawingManager.setFreehandEnabled(((T=i.features)==null?void 0:T.enableForecasting)===!0),this._orderLineDragSnap=i.orderLineDragSnap!==!1,this._orderLineDefaultAnchor=i.orderLineDefaultAnchor===`center`?`center`:`timestamp`,this._orderTimeDragEnabled&&i.orderLineAnchorPersistence!==!1&&(this._orderLineAnchorStore=new Eu(Eu.browserStorage())),this.tradeLevelButtonScale=Math.min(Math.max((E=i.tradeLevelButtonScale)==null?1:E,1),3),this.tradeLevelBadgeScale=Math.min(Math.max((D=i.tradeLevelBadgeScale)==null?1:D,.5),1),this.tradeLevelBadgeAnchor=i.tradeLevelBadgeAnchor===`left`?`left`:`auto`,this._bracketLabel={mode:(k=i.bracketLabelMode)==null?`price`:k,currencySymbol:(j=i.currencySymbol)==null?`$`:j},this.levelClusteringEnabled=(M=i.levelClusteringEnabled)==null?!0:M,this.clusterThresholdDistance=(N=i.clusterThresholdDistance)==null?20:N,this.enableThemeToggle=(P=i.enableThemeToggle)==null?!1:P,this.tfcEnabled=i.tfcEnabled!==!1,this.crosshairEnabled=i.crosshairEnabled!==!1,this.tfcActive=this.tfcEnabled,this.showCandleCountdown=(F=i.showCandleCountdown)==null?!0:F,this.candleCountdownTimeframes=i.candleCountdownTimeframes,this.showTradeLevelsAlways=(I=i.showTradeLevelsAlways)==null?!0:I,this.showPriceAxisCountdown=(R=i.showPriceAxisCountdown)==null?!1:R,this._revealNewBrackets=i.revealNewBrackets===!0;try{let e=localStorage.getItem(this.SHOW_SLTP_ALWAYS_LS_KEY);e!==null&&(this.showTradeLevelsAlways=e===`true`);let t=localStorage.getItem(this.PRICE_AXIS_COUNTDOWN_LS_KEY);t!==null&&(this.showPriceAxisCountdown=t===`true`)}catch(e){}this._onOrderSubmit=he,this._onAddAlert=(z=i.onAddAlert)==null?null:z,i.minLots!==void 0&&(console.warn(`[acttrader-charts] ChartConfig.minLots is deprecated. DraftOrderQtyInput has been removed. The value is stored and used as the submitted lot size.`),this._minLots=i.minLots),i.showQuantityField!==void 0&&(this._showQuantityField=i.showQuantityField),i.quantityFieldConfig&&(i.quantityFieldConfig.minLots!==void 0&&(this._qtyFieldMin=i.quantityFieldConfig.minLots),i.quantityFieldConfig.maxLots!==void 0&&(this._qtyFieldMax=i.quantityFieldConfig.maxLots)),i.onLotsChange!==void 0&&console.warn(`[acttrader-charts] ChartConfig.onLotsChange is deprecated. DraftOrderQtyInput has been removed; this callback will never fire.`),i.hideQtyButton!==void 0&&console.warn(`[acttrader-charts] ChartConfig.hideQtyButton is deprecated and is a no-op. DraftOrderQtyInput has been removed.`),this.themeName=oe===`dark`?`dark`:`light`,this.themeOverrides=i.themeOverrides,this.timezone=i.timezone===`local`?Intl.DateTimeFormat().resolvedOptions().timeZone:(ee=i.timezone)==null?`UTC`:ee,this.aggregateFrom=i.aggregateFrom;let Ce=this.themeName===`dark`?g:_;this.theme=d(Ce,(te=this.themeOverrides)==null?void 0:te[this.themeName]),this.chromeTheme=this.theme,this.series=se,this.showVolume=ce,this.timeframe=le,this.duration=ue,this.symbol=de,this.instrumentSpec=i.instrument,this.accountSpec=i.account,this.wrapper=document.createElement(`div`),Object.assign(this.wrapper.style,{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,overflow:`hidden`,boxSizing:`border-box`});let we=i.headerLayout===`advanced`||i.headerLayout===void 0&&((ne=i.features)==null?void 0:ne.advancedToolbar)===!0,Te=i.headerLayout===`compact`,Ee=i.headerLayout===`mobile`,De=i.hideHeader===!0,ke=i.enableMultipleLayouts===!0,Ae=i.enableSnapshot===!0,je=i.enableCrossHairHeader===!0||i.enableCrosshairToggle===!0;i.layoutSync&&(this.currentSync={...pi,...i.layoutSync}),ke&&typeof i.onLayoutClick==`function`&&console.warn("[ActCharts] `enableMultipleLayouts: true` owns the Layout button — the deprecated `onLayoutClick` callback is ignored. Listen to the `layoutChange` event instead."),Ae&&typeof i.onScreenshotClick==`function`&&console.warn("[ActCharts] `enableSnapshot: true` owns the Snapshot button — the deprecated `onScreenshotClick` callback is ignored. Listen to the `snapshot` event instead."),typeof i.onOneClickTradeToggle==`function`&&typeof i.onOneClickToggle==`function`&&console.warn("[ActCharts] Both `onOneClickTradeToggle` and the deprecated `onOneClickToggle` were provided — using `onOneClickTradeToggle`. Remove the legacy field.");let Me=(re=i.onOneClickTradeToggle)==null?i.onOneClickToggle:re;if(V){let e=e=>{this.timeframe=e,this.emitter.emit(`timeframeChange`,{timeframe:e}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`timeframe`)},t=hd.filter(e=>e.enabled).map(e=>({value:e.short_name,label:`${e.name} (${e.short_name})`,category:e.type})),n=()=>{if(ke)this.openLayoutPopover();else{var e;(e=i.onLayoutClick)==null||e.call(i)}},r=()=>{if(Ae)this.openSnapshotPopover();else{var e;(e=i.onScreenshotClick)==null||e.call(i)}},a=ke||typeof i.onLayoutClick==`function`,o=Ae||typeof i.onScreenshotClick==`function`;if(!De)if(Ee){var Ne,Pe;let t=this.drawingToolsEnabled?{setDrawingTool:e=>{this.setDrawingTool(e)},clearAllDrawings:()=>{this.clearAllDrawings()},addIndicator:(e,t)=>{this.addIndicatorByName(e,t)},removeIndicator:e=>{this.removeIndicator(e)},...je?{setCrosshairEnabled:e=>{this.setCrosshairEnabled(e)}}:{}}:null;this.mobileHeader=new Yr(e,t,(Ne=i.onAskAiClick)==null?null:Ne,this.settingsEnabled?()=>this.openChartSettings():null,e=>this.setSeries(e),this.timeframe,this.series,this.theme,(Pe=this.uiConfig.topBar)==null?void 0:Pe.dropBtnFontFamily,this._enabledGates(),je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)}),this.wrapper.appendChild(this.mobileHeader.el)}else if(Te)this.compactToolbar=new Or(e=>this.setSeries(e),e,e=>this.addIndicatorByName(e),this.series,this.timeframe,this.theme,je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)}),this.compactToolbar.setIndicatorOptions(t),this.wrapper.appendChild(this.compactToolbar.el);else if(we){var Fe,Ie,Le,Re;this.advancedToolbar=new br(e=>this.setSeries(e),e,e=>this.addIndicatorByName(e),()=>this.openChartSettings(),()=>this.toggleFullscreen(),this.drawingToolsEnabled?()=>this.toggleDrawingTools():null,this.drawingToolsEnabled,this.settingsEnabled,this.fullscreenEnabled,this.series,this.timeframe,this.theme,this.compareDataLoader?()=>this.openComparePicker():void 0,n,Me,r,a,o,(Fe=i.priceSourceSelector)==null?null:Fe,this.tickClosePriceSource,e=>this._applyPriceSource(e,!0),je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)},((Ie=i.features)==null?void 0:Ie.pnlPill)===!0,((Le=i.pnlPill)==null?void 0:Le.visible)!==!1,e=>{this.setPnlPillVisible(e)},i.headerOverflowMenu===!0,(Re=i.timeframes)==null?null:Re,this._onAddAlert?()=>{var e;(e=this._onAddAlert)==null||e.call(this,this._currentMarketPrice())}:null),this.advancedToolbar.setIndicatorOptions(t),this.wrapper.appendChild(this.advancedToolbar.el),this.advancedToolbar.setFullscreen(this.isFullscreen)}else{var ze,Be,Ve,He;let s=this._durationTimeframeMap;this.topBar=new qn(e=>this.setSeries(e),e,e=>this.addIndicatorByName(e),(e,t)=>{var n,r;this.duration=e,this.timeframe=t,(n=this._tb)==null||n.setTimeframe(t),(r=this.bottomBar)==null||r.setActive(e),this.emitter.emit(`durationChange`,{duration:e,timeframe:t}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`duration`)},()=>this.openChartSettings(),()=>this.toggleFullscreen(),this.drawingToolsEnabled?()=>this.toggleDrawingTools():null,this.drawingToolsEnabled,this.settingsEnabled,this.fullscreenEnabled,this.tfcEnabled,this.tfcActive,this.tfcEnabled?e=>{this.setTfcActive(e)}:null,this.series,this.timeframe,null,s,this.theme,this.uiConfig.topBar,this.labels.topBar,()=>this.emitUiState(),a,o,n,r,Me==null?null:Me,(ze=i.priceSourceSelector)==null?null:ze,this.tickClosePriceSource,e=>this._applyPriceSource(e,!0),je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)},((Be=i.features)==null?void 0:Be.pnlPill)===!0,((Ve=i.pnlPill)==null?void 0:Ve.visible)!==!1,e=>{this.setPnlPillVisible(e)},(He=i.timeframes)==null?null:He),this.topBar.setIndicatorOptions(t),this.wrapper.appendChild(this.topBar.el),this.topBar.setFullscreen(this.isFullscreen)}ke&&(this.layoutPopover=new hi(this.theme,this.currentPresetId,this.currentSync,e=>this.handleLayoutPresetSelect(e),e=>this.handleSyncToggle(e),()=>this.emitUiState())),Ae&&(this.snapshotPopover=new gi(this.theme,e=>this.handleSnapshot(e),()=>this.emitUiState()))}let Ue=document.createElement(`div`);if(Object.assign(Ue.style,{display:`flex`,flex:`1`,minHeight:`0`,overflow:`hidden`,position:`relative`}),V&&this.drawingToolsEnabled&&(this.leftBar=new Ci(e=>this.setDrawingTool(e),e=>{switch(e){case`undo`:this.undoDrawing();break;case`redo`:this.redoDrawing();break;case`delete_selected`:this.deleteSelectedDrawing();break;case`clear_all`:this.clearAllDrawings();break;case`hide_all`:this.hideAllDrawings();break;case`show_all`:this.showAllDrawings();break;case`lock_all`:this.lockAllDrawings();break;case`unlock_all`:this.unlockAllDrawings();break}},()=>{var e;this.leftBarVisible=!1,(e=this._tb)==null||e.setDrawingsBtnActive(!1)},this.theme,this.uiConfig.drawingToolbar,this.labels.drawingToolbar,this._enabledGates()),Ue.appendChild(this.leftBar.el)),this.canvasWrap=document.createElement(`div`),Object.assign(this.canvasWrap.style,{flex:`1`,position:`relative`,overflow:`hidden`,touchAction:`none`}),this.canvas=document.createElement(`canvas`),Object.assign(this.canvas.style,{position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,pointerEvents:`none`}),this.canvasWrap.appendChild(this.canvas),this.tradeCanvas=document.createElement(`canvas`),Object.assign(this.tradeCanvas.style,{position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,pointerEvents:`none`}),this.canvasWrap.appendChild(this.tradeCanvas),this.drawCanvas=document.createElement(`canvas`),Object.assign(this.drawCanvas.style,{position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,cursor:`crosshair`,touchAction:`none`,userSelect:`none`}),this.drawCanvas.style.webkitUserSelect=`none`,this.drawCanvas.style.webkitTouchCallout=`none`,this.canvasWrap.appendChild(this.drawCanvas),this.textInputEl=document.createElement(`input`),this.textInputEl.type=`text`,this.textInputEl.enterKeyHint=`go`,Object.assign(this.textInputEl.style,{position:`absolute`,display:`none`,zIndex:`15`,background:`transparent`,border:`none`,borderBottom:`1px solid #2196f3`,color:`#f5f5f5`,font:`16px system-ui, sans-serif`,outline:`none`,minWidth:`60px`,padding:`0 2px`}),this.canvasWrap.appendChild(this.textInputEl),V){this.loadingOverlayEl=document.createElement(`div`),Object.assign(this.loadingOverlayEl.style,{display:`none`,position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,alignItems:`center`,justifyContent:`center`,pointerEvents:`none`,zIndex:`20`});let e=document.createElement(`span`);e.textContent=this.labels.chart.loading,Object.assign(e.style,{fontSize:`13px`,padding:`4px 12px`,borderRadius:`4px`}),this.loadingLabelEl=e,this.loadingOverlayEl.appendChild(e),this.canvasWrap.appendChild(this.loadingOverlayEl),this.noDataOverlayEl=document.createElement(`div`),Object.assign(this.noDataOverlayEl.style,{display:`none`,position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`,alignItems:`center`,justifyContent:`center`,pointerEvents:`none`,zIndex:`19`});let t=document.createElement(`span`);t.textContent=this.labels.chart.noData,Object.assign(t.style,{fontSize:`13px`,padding:`4px 12px`,borderRadius:`4px`}),this.noDataLabelEl=t,this.noDataOverlayEl.appendChild(t),this.applyOverlayLabelStyles(),this.canvasWrap.appendChild(this.noDataOverlayEl)}if(V&&!(be&&xe)){if(this.siEl=document.createElement(`div`),Object.assign(this.siEl.style,{position:`absolute`,top:`6px`,left:`6px`,zIndex:`10`,display:`flex`,alignItems:`center`,gap:`8px`,pointerEvents:`none`}),!be){this.siSymbolSpan=document.createElement(`span`),Object.assign(this.siSymbolSpan.style,{color:this.theme.tooltip.text,fontSize:`13px`,fontFamily:`inherit`,fontWeight:`700`,letterSpacing:`-0.025em`,display:de?`inline`:`none`}),this.siSymbolSpan.textContent=de==null?``:de;let e=()=>{var e;let t=(e=i.symbolNameDecoration)==null?`underline`:e;t===`hover`?(Pd(),this.siSymbolSpan.classList.add(Nd),this.siSymbolSpan.tabIndex=0,this.siSymbolSpan.style.textDecoration=`none`):this.siSymbolSpan.style.textDecoration=t===`none`?`none`:`underline`};me?(Object.assign(this.siSymbolSpan.style,{cursor:`pointer`,pointerEvents:`auto`}),e(),this.siSymbolSpan.addEventListener(`click`,()=>{var e,t;me((e=(t=this.siSymbolSpan)==null?void 0:t.textContent)==null?``:e)})):pe&&(fe&&(this.isins=fe),this.isinPickerModal=new ou(this.chromeTheme,pe,()=>this.emitUiState()),this.getFloatingRoot().appendChild(this.isinPickerModal.el),Object.assign(this.siSymbolSpan.style,{cursor:`pointer`,pointerEvents:`auto`}),e(),this.siSymbolSpan.addEventListener(`click`,()=>{var e;this.isinPickerModal.show(this.isins,(e=this.siSymbolSpan.textContent)==null?``:e)})),this.siStreamDot=document.createElement(`span`),this.siStreamDot.className=`live-dot`,Object.assign(this.siStreamDot.style,{width:`8px`,height:`8px`,borderRadius:`9999px`,background:this.theme.ui.stream.disconnected,display:`inline-block`,flexShrink:`0`})}xe||(this.siOHLCSpan=document.createElement(`span`),Object.assign(this.siOHLCSpan.style,{fontSize:`11px`,fontFamily:`inherit`,whiteSpace:`nowrap`}),this.siOHLC2Span=document.createElement(`span`),Object.assign(this.siOHLC2Span.style,{fontSize:`11px`,fontFamily:`inherit`,whiteSpace:`nowrap`}));let e=document.createElement(`div`);Object.assign(e.style,{display:`flex`,alignItems:`center`,gap:`8px`}),this.siStreamDot&&e.append(this.siStreamDot),this.siSymbolSpan&&e.append(this.siSymbolSpan),this.siOHLCSpan&&e.append(this.siOHLCSpan),this.siEl.append(e),this.siOHLC2Span&&this.siEl.append(this.siOHLC2Span),this.canvasWrap.appendChild(this.siEl)}if(V&&(this.indicatorOverlay=new ul(this.theme,this.uiConfig.indicatorOverlay,this.labels.chart),this.canvasWrap.appendChild(this.indicatorOverlay.el),this.indicatorSettingsDialog=new dl(this.chromeTheme,this.labels.dialogs,()=>this.emitUiState()),this.getFloatingRoot().appendChild(this.indicatorSettingsDialog.el),this.scrollToEndBtn=document.createElement(`button`),this.scrollToEndBtn.title=this.labels.chart.scrollToLatest,this.applyScrollToEndBtnStyles(),this.scrollToEndBtn.addEventListener(`click`,()=>this.scrollToEnd()),this.canvasWrap.appendChild(this.scrollToEndBtn),this.resetViewBtn=document.createElement(`button`),this.resetViewBtn.title=`Reset view`,this.applyResetViewBtnStyles(),this.resetViewBtn.addEventListener(`click`,()=>this.resetView()),this.canvasWrap.appendChild(this.resetViewBtn)),this.tradeDragHandler=new yu,this.orderTimeDragHandler=new bu,i.onLevelDragEnd&&this.emitter.on(`tradeLevelDragEnd`,i.onLevelDragEnd),i.onLevelEdit&&this.emitter.on(`tradeLevelEdit`,i.onLevelEdit),he){var H;this.tradePopover=new Jl(this.chromeTheme,.01,this.symbol,(e,t,n)=>{var r;(r=this.tradeActionBar)==null||r.hide(),this.createDraftOrder(e,t,n)},this.labels.trade,()=>this.emitUiState(),i.headerLayout===`mobile`),this.canvasWrap.appendChild(this.tradePopover.el),((H=i.features)==null?void 0:H.tradeActionBar)===!0&&(this.tradeActionBar=new Kl({theme:this.chromeTheme,labels:this.labels.trade,onAlert:this._onAddAlert?e=>{var t;(t=this._onAddAlert)==null||t.call(this,e)}:null,onPendingPick:(e,t,n)=>{this.createDraftOrder(e,t,n)},onBulkLevels:(e,t)=>{this.emitter.emit(`bulkLevelsRequested`,{kind:e,price:t,isFullscreen:this.isFullscreen,source:`actionBar`})},onVisibilityChange:()=>this.emitUiState()}),this.canvasWrap.appendChild(this.tradeActionBar.el)),this.tradeButton=new ql(this.theme,this.priceAxisWidth,()=>{if(this._tradeButtonClickData&&this.tradePopover){var e;(e=this.tradeButton)==null||e.hide();let t=this.priceAxisWidth+10+22+4,{price:n,y:r}=this._tradeButtonClickData;if(this.tradeActionBar){this.tradePopover.hide();let e=ml(this.levels,this.draftOrderLabel);this.tradeActionBar.show(n,r,t,{pricePrecision:this.dataStore.getPricePrecision(),buyOrderType:this._orderTypeForPrice(`buy`,n),sellOrderType:this._orderTypeForPrice(`sell`,n),symbol:this.symbol,positionCount:e.count,mixedSides:e.mixed});return}this.tradePopover.show(n,r,t,this.dataStore.getPricePrecision(),this._orderTypeForPrice(`buy`,n),this._orderTypeForPrice(`sell`,n))}},this.labels.trade,this.uiConfig.tradeButton),this.canvasWrap.appendChild(this.tradeButton.el),this.tradeButton.el.addEventListener(`mouseenter`,()=>{this.crosshair=null,this.emitter.emit(`crosshair`,null),this.scheduleRender()}),this.tradeButton.el.addEventListener(`mousemove`,e=>{var t;if(e.buttons!==0)return;let n=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,r=e.clientY-n.top,{priceH:i}=this.getChartLayout();if(qt(r,this.uiConfig.tradeButton.size/2,this.offViewportHitAreas)){var a;(a=this.tradeButton)==null||a.hide();return}if(r>=0&&r<=i){var o,s;(o=this.tradeButton)==null||o.setY(r);let e=(s=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):s,t=this.scaleManager.pixelToPrice(r,e,i);this._tradeButtonClickData={price:t,y:r}}})}if(Ue.appendChild(this.canvasWrap),this.wrapper.appendChild(Ue),V&&Se){var We;let e=this._durationTimeframeMap;this.bottomBar=new yi((e,t)=>{var n;this.duration=e,this.timeframe=t,(n=this._tb)==null||n.setTimeframe(t),this.emitter.emit(`durationChange`,{duration:e,timeframe:t}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`duration`)},(We=this.duration)==null?null:We,this.theme,e,this.uiConfig.bottomBar,this.labels.bottomBar),this.wrapper.appendChild(this.bottomBar.el)}ae.appendChild(this.wrapper),(this.themeOverrides||Object.keys(this.settingsCanvasColors).length>0)&&(this.theme=this.buildTheme(this.themeName),this.chromeTheme=this.buildChromeTheme(this.themeName),this.applyThemeToComponents());let U=this.canvas.getContext(`2d`);if(!U)throw Error(`Canvas 2D context unavailable`);this.ctx=U;let Ge=this.drawCanvas.getContext(`2d`);if(!Ge)throw Error(`Drawing canvas 2D context unavailable`);this.drawCtx=Ge;let Ke=this.tradeCanvas.getContext(`2d`);if(!Ke)throw Error(`Trade canvas 2D context unavailable`);if(this.tradeCtx=Ke,this.showActLogo){let t=new Image;t.onload=()=>{this.logoImage=t,this.scheduleRender()},t.src=e}this.drawingManager.setOnComplete(()=>{var e;(e=this.leftBar)==null||e.setActiveTool(null),this.drawCanvas.style.cursor=`default`}),this.drawingManager.onDrawingsChange=()=>this.emitStateChange(),this.drawingManager.onPointsMutated=e=>{for(let t of e.points){let e=this.barIndexToTimestamp(t.barIndex);e!=null&&(t.timestamp=e)}},this.drawingManager.onStartTextEdit=e=>this.showTextInput(e),this.drawingStylePopover=new nu(this.canvasWrap,this.chromeTheme,(e,t)=>this.updateDrawingStyle(e,t)),this.drawingManager.onSelectionChange=e=>{if(e&&e.complete&&e.locked!==!0){var t,n;let r=this.computeDrawingAnchorPx(e);r?(t=this.drawingStylePopover)==null||t.show(e,r.x,r.y):(n=this.drawingStylePopover)==null||n.hide()}else{var r;(r=this.drawingStylePopover)==null||r.hide()}},this.panHandler=new L(this.drawCanvas,()=>this._targetViewport,e=>{this._targetViewport=e,this.clearDuration(),this.checkNeedMoreData(),this.scheduleRender(),this.scheduleViewportPersist(),this.emitter.emit(`pan`,{viewport:e})},()=>this.dataStore.length,()=>this.scheduleRender(),()=>{var e,t,n,r;return this.drawingManager.getActiveTool()!==null||this.drawingManager.isDraggingDrawing()||this.drawingManager.isResizingDrawing()||this.separatorDrag!==null||this.axisDrag!==null||((e=(t=this.tradeDragHandler)==null?void 0:t.active)==null?!1:e)||((n=(r=this.orderTimeDragHandler)==null?void 0:r.active)==null?!1:n)||this._pendingTradeDrag!==null||this._mobileCrosshairActive},e=>{var t;if(this.priceScaleFactor===1)return;let{priceH:n}=this.getChartLayout(),r=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this._targetViewport):t,i=(r.max-r.min)/n;this.pricePanOffset+=e*i,this.scheduleRender(),this.scheduleViewportPersist()},()=>{this._isPanning=!0},()=>{this._isPanning=!1},{enabled:i.momentumScrollEnabled,decay:i.momentumDecay,threshold:i.momentumThreshold,maxVelocity:i.momentumMaxVelocity}),this.zoomHandler=new B(this.drawCanvas,()=>this._targetViewport,e=>{this._targetViewport=e,this.clearDuration(),this.checkNeedMoreData(),this.scheduleRender(),this.scheduleViewportPersist(),this.emitter.emit(`zoom`,{viewport:e})},()=>this.dataStore.length,()=>this.scheduleRender(),()=>{var e;return(e=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():e},()=>this.getChartLayout().chartW,e=>{let t=this._targetViewport,n=t.endIndex-t.startIndex,r=e*(n/this.drawCanvas.width),i=Math.max(0,this.dataStore.length-Math.floor(n/2)),a=Math.max(0,Math.min(i,t.startIndex+r));this._targetViewport={...t,startIndex:a,endIndex:a+n},this.clearDuration(),this.checkNeedMoreData(),this.scheduleRender(),this.emitter.emit(`pan`,{viewport:this._targetViewport}),this.scheduleViewportPersist()}),this.drawCanvas.addEventListener(`mousemove`,this.onMouseMove),this.drawCanvas.addEventListener(`mouseleave`,this.onMouseLeave),this.drawCanvas.addEventListener(`mousedown`,this.onCanvasClick),this.drawCanvas.addEventListener(`dblclick`,this.onDoubleClick),window.addEventListener(`mouseup`,this.onMouseUp),this.drawCanvas.addEventListener(`touchstart`,this.onDrawingTouchStart,{passive:!1}),this.drawCanvas.addEventListener(`touchmove`,this.onDrawingTouchMove,{passive:!1}),this.drawCanvas.addEventListener(`touchend`,this.onDrawingTouchEnd,{passive:!1}),this.drawCanvas.addEventListener(`touchcancel`,this.onDrawingTouchCancel,{passive:!1}),this.drawCanvas.addEventListener(`contextmenu`,e=>e.preventDefault()),document.addEventListener(`keydown`,this.onKeyDown);let qe=()=>{var e;let t=!!document.fullscreenElement;t||(this._isCssFullscreen=!1),(e=this._tb)==null||e.setFullscreen(t),this.reparentFloatingElements()};if(this.wrapper.addEventListener(`fullscreenchange`,qe),document.addEventListener(`fullscreenchange`,qe),this.resizeObserver=new ResizeObserver(()=>this.onResize()),this.resizeObserver.observe(this.canvasWrap),this.onResize(),((ie=i.features)==null?void 0:ie.pnlPill)===!0&&this.initPnlPill(i),this.dataLoader&&this.triggerLoad(`initial`),this.initCompareUi(),i.initialCompares&&i.initialCompares.length>0){let e=i.initialCompares.slice(),t=this.emitter.on(`dataLoaded`,()=>{t();for(let t of e)this.addCompare(t)})}}resetData(){return++this._loadGeneration,this.setLoading(!1),this.setNoData(!1),this.drawingManager.clearAll(),this.levels=[],this.refreshPnlPill(),this._draftQtyPillArea=void 0,this._pendingBracketOrderLabel=null,this.loadData([])}loadData(e,t=!1){var n,r,i;this.isFetching=!1,this.noMoreData=!1,this._suppressTicks=!1,e.length>0&&this.setNoData(!1),this.liveBidAsk=null,this.liveLtp=null,this.pricePanOffset=0,this.priceScaleFactor=1,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this.dataStore.set(e),this.updateCompareRange();let a=((n=(r=this._cachedWrapRect)==null?void 0:r.width)==null?this.canvasWrap.getBoundingClientRect().width:n)-this.priceAxisWidth,o=this._autoVisibleBars&&a>0?a:void 0,s=Id(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars,o,this.targetCandleWidth);this._defaultVisibleBars=s,this.viewport={...this.viewport,startIndex:t?0:Math.max(0,e.length-s+Ld),endIndex:e.length+Ld},this._targetViewport={...this.viewport};let c=this.dataStore.hasVolumeData;if(c||(this.showVolume=!1),(i=this._tb)==null||i.setVolumeControl(this.showVolume,c),this.showVolume&&c){var l;(l=this.indicatorOverlay)==null||l.addPill(`VOL`,this.theme.volume.up,`VOL`,`Chart`,!0,()=>{var e,t;this.setVolume(!1),(e=this.indicatorOverlay)==null||e.removePill(`VOL`),(t=this._tb)==null||t.setVolumeControl(!1,this.dataStore.hasVolumeData)},null,()=>{var e;this.setVolume(!this.showVolume),(e=this.indicatorOverlay)==null||e.updatePillVisibility(`VOL`,this.showVolume),this.scheduleRender()})}if(this.recomputeIndicators(),this.reanchorDrawingsByTimestamp(),this._pendingViewportRestore){let e=this._pendingViewportRestore;this._pendingViewportRestore=null,e.priceScale&&(this.priceScaleFactor=e.priceScale.factor,this.pricePanOffset=e.priceScale.panOffset,this._displayedPriceRange=null,this._lockedAutoFitBase=null),e.viewport&&this.applyViewportFromTimestamps(e.viewport.startTime,e.viewport.endTime)}return this.updateCountdownState(),this.scheduleRender(),this}prependData(e){if(e.length===0)return this.noMoreData=!0,this.isFetching=!1,this;let t=this.dataStore.prepend(e);return t>0&&(this.viewport={...this.viewport,startIndex:this.viewport.startIndex+t,endIndex:this.viewport.endIndex+t},this._targetViewport={...this.viewport},this.drawingManager.shiftBarIndices(t),this.reanchorDrawingsByTimestamp(),this.recomputeIndicators(),this.updateCompareRange(),this.scheduleRender()),this.isFetching=!1,this}setLoading(e){return this.loadingOverlayEl&&(this.loadingOverlayEl.style.display=e?`flex`:`none`),e&&this.setNoData(!1),this}setNoData(e){return this.noDataOverlayEl&&(this.noDataOverlayEl.style.display=e?`flex`:`none`),this}timeframeToMs(e){var t;let n=6e4;return(t={"1m":1*n,"3m":3*n,"4m":4*n,"5m":5*n,"10m":10*n,"15m":15*n,"30m":30*n,"1h":60*n,"2h":120*n,"4h":240*n,"8h":480*n,"1D":1440*n,"1W":10080*n,"1M":43200*n}[e])==null?1440*n:t}getBaseInterval(){var e,t;return(e=(t=this.aggregateFrom)==null?void 0:t[this.timeframe])==null?this.timeframe:e}shouldAggregate(){let e=this.getBaseInterval();return e!==this.timeframe&&this.timeframeToMs(e)<this.timeframeToMs(this.timeframe)}maybeAggregate(e){return this.shouldAggregate()?gd(e,this.timeframeToMs(this.timeframe)):e}timeframeToInterval(e){var t;return(t={"1m":`1min`,"3m":`3min`,"4m":`4min`,"5m":`5min`,"10m":`10min`,"15m":`15min`,"30m":`30min`,"1h":`1h`,"2h":`2h`,"4h":`4h`,"8h":`8h`,"1D":`1day`,"1W":`1week`,"1M":`1month`}[e])==null?`1day`:t}durationToMs(e){var t;let n=1440*60*1e3;return(t={"1D":1*n,"5D":5*n,"1M":30*n,"3M":90*n,"6M":180*n,"1Y":365*n,"5Y":5*365*n,All:20*365*n}[e])==null?365*n:t}triggerLoad(e){if(!this.dataLoader)return;let t=++this._loadGeneration;this._suppressTicks=!0,this.isFetching=!0,this.noMoreData=!1;let n=new Date,r=this.maxCandles*this.timeframeToMs(this.timeframe),i=this.duration?this.durationToMs(this.duration):r,a=this.duration?i:r,o=this.timeframeToInterval(this.getBaseInterval());this.setLoading(!0);let s=this.dataLoader,c=[1,5,25,125],l=this.minInitialBars,u=this.maxLookbackMs,d=(r,i)=>{s({start:i,end:n,interval:o,priceSource:this.tickClosePriceSource}).then(s=>{if(t!==this._loadGeneration)return;let f=this.maybeAggregate(s),p=n.getTime()-i.getTime()>=u;if(f.length>=l||r+1>=c.length||p){this.loadData(f,e===`duration`),this.setLoading(!1),f.length===0&&this.setNoData(!0),this.emitter.emit(`dataLoaded`,{timeframe:this.timeframe,interval:o,start:i,end:n,priceSource:this.tickClosePriceSource});return}let m=Math.min(a*c[r+1],u),h=new Date(n.getTime()-m);d(r+1,h)}).catch(()=>{t===this._loadGeneration&&(this.isFetching=!1,this.setLoading(!1))})},f=Math.min(a*c[0],u);d(0,new Date(n.getTime()-f))}checkNeedMoreData(){if(!this.dataLoader||this.isFetching||this.noMoreData)return;let e=Math.max(20,this.prefetchThreshold);if(this._targetViewport.startIndex>e||this.dataStore.length===0)return;let t=this._loadGeneration;this.isFetching=!0;let n=this.dataStore.all[0].time,r=new Date(n-1),i=this.maxCandles*this.timeframeToMs(this.timeframe),a=this.duration?this.durationToMs(this.duration):i,o=this.duration?a:i,s=this.timeframeToInterval(this.getBaseInterval());this.setLoading(!0);let c=this.dataLoader,l=[1,5,25,125],u=this.minInitialBars,d=this.maxLookbackMs,f=(e,n)=>{c({start:n,end:r,interval:s,priceSource:this.tickClosePriceSource}).then(i=>{if(t!==this._loadGeneration)return;let a=this.maybeAggregate(i),s=r.getTime()-n.getTime()>=d;if(a.length>=u||e+1>=l.length||s){this.prependData(a),this.setLoading(!1);return}let c=Math.min(o*l[e+1],d),p=new Date(r.getTime()-c);f(e+1,p)}).catch(()=>{t===this._loadGeneration&&(this.isFetching=!1,this.setLoading(!1))})},p=Math.min(o*l[0],d);f(0,new Date(r.getTime()-p))}addIndicator(e,t){var n,r;if(e.pane===`sub`&&this.activeIndicators.filter(e=>e.indicator.pane===`sub`).length>=this.maxSubPanes)return this;let i=Cd.find(t=>t.shortName===e.name),a=i?Object.fromEntries(i.fields.map(e=>[e.key,e.default])):{};a.timeframe=`Chart`,t&&Object.assign(a,t);let o=uu(e.name,++this.indicatorInstanceSeq),s={instanceId:o,indicator:e,shortName:e.name,currentParams:a,visible:!0};this.activeIndicators.push(s),this.dataStore.length>0&&this.indicatorResults.set(o,e.compute(this.dataStore.all));let c=i!==void 0&&i.fields.length>0,l=Sd(e.name,a,i),u=(n=a.timeframe)==null?`Chart`:n;if(e.pane===`sub`){let t=new ul(this.theme,this.uiConfig.indicatorOverlay,this.labels.chart);Object.assign(t.el.style,{position:`absolute`,top:`6px`,left:`6px`,zIndex:`10`}),this.canvasWrap.appendChild(t.el),this.subPaneOverlays.set(o,t),t.addPill(o,e.color,l,u,s.visible,()=>this.removeIndicator(o),c?()=>this.openIndicatorSettings(o):null,()=>{s.visible=!s.visible,t.updatePillVisibility(o,s.visible),this.scheduleRender(),this.emitStateChange()})}else{var d;(d=this.indicatorOverlay)==null||d.addPill(o,e.color,l,u,s.visible,()=>this.removeIndicator(o),c?()=>this.openIndicatorSettings(o):null,()=>{var e;s.visible=!s.visible,(e=this.indicatorOverlay)==null||e.updatePillVisibility(o,s.visible),this.scheduleRender(),this.emitStateChange()})}return(r=this._tb)==null||r.setIndicatorOptionActive(e.name,!0,this.activeIndicators.filter(t=>t.shortName===e.name).length),this.scheduleRender(),this.emitStateChange(),this.isRestoringState||this.emitter.emit(`indicatorAdded`,{instanceId:o,shortName:s.shortName,params:{...s.currentParams}}),this}removeIndicator(e){let t=fu(this.activeIndicators,e);if(t.length===0)return this;let n=new Set(t.map(e=>e.instanceId));this.activeIndicators=this.activeIndicators.filter(e=>!n.has(e.instanceId));for(let e of t){this.indicatorResults.delete(e.instanceId),this.subPaneScaleFactors.delete(e.instanceId),this.paneHeightOverrides.delete(e.instanceId);let t=this.subPaneOverlays.get(e.instanceId);if(t)t.destroy(),t.el.remove(),this.subPaneOverlays.delete(e.instanceId);else{var r;(r=this.indicatorOverlay)==null||r.removePill(e.instanceId)}}let i=new Set(t.map(e=>e.shortName));for(let e of i){var a;let t=this.activeIndicators.filter(t=>t.shortName===e).length;(a=this._tb)==null||a.setIndicatorOptionActive(e,t>0,t)}if(this.scheduleRender(),this.emitStateChange(),!this.isRestoringState)for(let e of t)this.emitter.emit(`indicatorRemoved`,{instanceId:e.instanceId,shortName:e.shortName});return this}addIndicatorByName(e,t){if(e===`VOL`){var n;if(this.setVolume(!this.showVolume),this.showVolume){var r;(r=this.indicatorOverlay)==null||r.addPill(`VOL`,this.theme.volume.up,`VOL`,`Chart`,!0,()=>{var e,t;this.setVolume(!1),(e=this.indicatorOverlay)==null||e.removePill(`VOL`),(t=this._tb)==null||t.setVolumeControl(!1,this.dataStore.hasVolumeData)},null,()=>{var e;this.setVolume(!this.showVolume),(e=this.indicatorOverlay)==null||e.updatePillVisibility(`VOL`,this.showVolume),this.scheduleRender()})}else{var i;(i=this.indicatorOverlay)==null||i.removePill(`VOL`)}(n=this._tb)==null||n.setVolumeControl(this.showVolume,this.dataStore.hasVolumeData);return}let a=Cd.find(t=>t.shortName===e),o=bd.find(t=>t.shortName===e);if(!(!a&&!o)){if(vd.has(e)&&this.activeIndicators.some(t=>t.shortName===e)){this.removeIndicator(e);return}if(a){let n=Object.fromEntries(a.fields.map(e=>[e.key,e.default]));if(a.fields.some(e=>e.key===`color`)){let t=this.activeIndicators.filter(t=>t.shortName===e).length;n.color=du(yd,t)}t&&Object.assign(n,t);let r={...n};delete r.timeframe,this.addIndicator(a.factory(r),n)}else o&&this.addIndicator(o.factory(),t)}}openIndicatorSettings(e){var t;let n=this.activeIndicators.find(t=>t.instanceId===e);if(!n)return;let r=Cd.find(e=>e.shortName===n.shortName);if(!r||r.fields.length===0)return;let i={...r,fields:[...r.fields,xd]};(t=this.indicatorSettingsDialog)==null||t.show(i,n.currentParams,t=>this.updateIndicatorParams(e,t),()=>this.removeIndicator(e))}updateIndicatorParams(e,t){var n;let r=this.activeIndicators.find(t=>t.instanceId===e);if(!r)return;let i=Cd.find(e=>e.shortName===r.shortName);if(!i)return;let{timeframe:a,...o}=t,s=i.factory(o);r.indicator=s,r.currentParams={...t},this.indicatorResults.delete(e),this.dataStore.length>0&&this.indicatorResults.set(e,s.compute(this.dataStore.all));let c=(n=this.subPaneOverlays.get(e))==null?this.indicatorOverlay:n;c==null||c.updatePillColor(e,s.color),c==null||c.updatePillLabel(e,Sd(r.shortName,r.currentParams,i)),c==null||c.updatePillTimeframe(e,a==null?`Chart`:a),this.scheduleRender(),this.emitStateChange()}on(e,t){return this.emitter.on(e,t)}canvasColorOverride(e,t){var n,r,i,a,o,s;let c=this.settingsCanvasColors[e];if(c)return{...t&&{...c.background!==void 0&&{background:c.background},...c.grid!==void 0&&{grid:c.grid},...c.axisText!==void 0&&{axisText:c.axisText},...c.axisBorder!==void 0&&{axisBorder:c.axisBorder},...c.crosshair!==void 0&&{crosshair:c.crosshair}},...((n=(r=(i=(a=(o=c.candleUp)==null?c.candleDown:o)==null?c.wickUp:a)==null?c.wickDown:i)==null?c.borderUp:r)==null?c.borderDown:n)!==void 0&&{candle:{...c.candleUp!==void 0&&{up:c.candleUp},...c.candleDown!==void 0&&{down:c.candleDown},...c.wickUp!==void 0&&{wickUp:c.wickUp},...c.wickDown!==void 0&&{wickDown:c.wickDown},...c.borderUp!==void 0&&{borderUp:c.borderUp},...c.borderDown!==void 0&&{borderDown:c.borderDown}}},...((s=c.volumeUp)==null?c.volumeDown:s)!==void 0&&{volume:{...c.volumeUp!==void 0&&{up:c.volumeUp},...c.volumeDown!==void 0&&{down:c.volumeDown}}}}}overlayTextColor(e){let t=this.settingsCanvasColors[this.themeName];return(t==null?void 0:t.axisText)===void 0?(t==null?void 0:t.background)===void 0?e:u(this.theme.background):t.axisText}buildTheme(e){var t;return p(d(d(e===`dark`?g:_,(t=this.themeOverrides)==null?void 0:t[e]),this.canvasColorOverride(e,!0)),this.wrapper)}buildChromeTheme(e){var t;return p(d(d(e===`dark`?g:_,(t=this.themeOverrides)==null?void 0:t[e]),this.canvasColorOverride(e,!1)),this.wrapper)}initPnlPill(e){var t,n,r;this.pnlPill=new Ml({theme:this.theme,labels:this.labels.pnlPill,currency:(t=e.pnlPill)==null?void 0:t.currency,format:(n=e.pnlPill)==null?void 0:n.format,getBounds:()=>{var e;let t=(e=this._cachedWrapRect)==null?this.canvasWrap.getBoundingClientRect():e;return{width:t.width,height:t.height,right:this.priceAxisWidth,bottom:this.timeAxisHeight}},onToggleExpand:()=>this.togglePnlPillExpanded(),onBulkLevels:()=>{ml(this.levels,this.draftOrderLabel).mixed||this.emitter.emit(`bulkLevelsRequested`,{kind:`sl`,price:null,isFullscreen:this.isFullscreen,source:`pill`})},onCloseAll:()=>this.emitPnlPillCloseAll()}),this.canvasWrap.appendChild(this.pnlPill.el),this.pnlPillVisible=((r=e.pnlPill)==null?void 0:r.visible)!==!1,this.pnlPill.setHidden(!this.pnlPillVisible),this.pnlPill.setExpanded(this.pnlPillExpanded&&this.tfcActive),this.emitter.on(`tfcToggle`,({enabled:e})=>{var t;(t=this.pnlPill)==null||t.setExpanded(this.pnlPillExpanded&&e)}),this.refreshPnlPill()}refreshPnlPill(){var e,t;this.pnlPill&&(this.pnlPill.update(ml(this.levels,this.draftOrderLabel),this.symbol),(e=this.advancedToolbar)==null||e.setPnlPillActive(this.pnlPillVisible,this.symbol),(t=this.topBar)==null||t.setPnlPillActive(this.pnlPillVisible,this.symbol))}setPnlPillVisible(e){var t,n,r;return this.pnlPillVisible===e?this:(this.pnlPillVisible=e,(t=this.pnlPill)==null||t.setHidden(!e),(n=this.advancedToolbar)==null||n.setPnlPillActive(e,this.symbol),(r=this.topBar)==null||r.setPnlPillActive(e,this.symbol),this.emitter.emit(`pnlPillToggle`,{visible:e}),this)}togglePnlPillExpanded(){var e;this.pnlPillExpanded=!this.pnlPillExpanded,this.pnlPillExpanded&&this.tfcEnabled&&!this.tfcActive&&this.setTfcActive(!0),this.pnlPillExpanded||this.expandedClusters.clear(),(e=this.pnlPill)==null||e.setExpanded(this.pnlPillExpanded&&this.tfcActive),this.recomputeRenderStyle(),this.renderTradeLayer()}emitPnlPillCloseAll(){let e=ml(this.levels,this.draftOrderLabel);e.count!==0&&this.emitter.emit(`pnlPillCloseAll`,{count:e.count,pnl:e.hasPnl?e.pnl:null,labels:e.positions.map(e=>e.label),data:e.positions.map(e=>e.data),isFullscreen:this.isFullscreen})}applyThemeToComponents(){var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g;(e=this._tb)==null||e.setTheme(this.chromeTheme),(t=this.bottomBar)==null||t.setTheme(this.chromeTheme),(n=this.leftBar)==null||n.setTheme(this.chromeTheme),(r=this.tradePopover)==null||r.setTheme(this.chromeTheme),(i=this.tradeActionBar)==null||i.setTheme(this.chromeTheme),(a=this.drawingStylePopover)==null||a.setTheme(this.chromeTheme),(o=this._draftQtyFlyout)==null||o.setTheme(this.chromeTheme),(s=this.indicatorSettingsDialog)==null||s.setTheme(this.chromeTheme),(c=this.chartSettingsDialog)==null||c.setTheme(this.chromeTheme),(l=this.layoutPopover)==null||l.setTheme(this.chromeTheme),(u=this.snapshotPopover)==null||u.setTheme(this.chromeTheme),(d=this.comparePickerModal)==null||d.setTheme(this.chromeTheme),(f=this.isinPickerModal)==null||f.setTheme(this.chromeTheme),(p=this.tradeButton)==null||p.setTheme(this.theme,this.priceAxisWidth),(m=this.compareLegend)==null||m.setTheme(this.theme),(h=this.pnlPill)==null||h.setTheme(this.theme),(g=this.indicatorOverlay)==null||g.setTheme(this.theme);for(let e of this.subPaneOverlays.values())e.setTheme(this.theme)}setTheme(e){return this.themeName=e,this.theme=this.buildTheme(e),this.chromeTheme=this.buildChromeTheme(e),this.applyThemeToComponents(),this.applyScrollToEndBtnStyles(),this.applyResetViewBtnStyles(),this.applyMobileDrawingFlyoutTheme(),this.siSymbolSpan&&(this.siSymbolSpan.style.color=this.overlayTextColor(this.theme.tooltip.text)),this.siStreamDot&&(this.siStreamDot.style.background=this.theme.ui.stream[this.streamStatus]),this.applyOverlayLabelStyles(),this.scheduleRender(),this.emitStateChange(),this}getTimeframe(){return this.timeframe}setDuration(e,t){var n,r,i;let a=(n=t==null?this._durationTimeframeMap[e]:t)==null?this.timeframe:n;return this.duration=e,this.timeframe=a,(r=this._tb)==null||r.setTimeframe(a),(i=this.bottomBar)==null||i.setActive(e),this.emitter.emit(`durationChange`,{duration:e,timeframe:a}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`duration`),this}getDuration(){var e;return(e=this.duration)==null?null:e}setTimeframe(e){var t;return this.timeframe=e,(t=this._tb)==null||t.setTimeframe(e),this.emitter.emit(`timeframeChange`,{timeframe:e}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`timeframe`),this}setCrosshair(e){var t,n;if(e===null||!this.crosshairEnabled){if(this.crosshair===null)return;this.crosshair=null,this.scheduleRender();return}let{chartW:r,priceH:i}=this.getChartLayout(),a=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):t,o=this.scaleManager.xToPixel(e.barIndex,this.viewport,r),s=this.scaleManager.yToPixel(e.price,a,i),c=this.dataStore.all,l=(n=c[Math.max(0,Math.min(c.length-1,Math.round(e.barIndex)))])==null?null:n;this.crosshair={x:o,y:s,barIndex:e.barIndex,price:e.price,bar:l},this.scheduleRender()}setViewport(e){e.startIndex===this.viewport.startIndex&&e.endIndex===this.viewport.endIndex||(this.viewport={...this.viewport,startIndex:e.startIndex,endIndex:e.endIndex},this._targetViewport={...this.viewport},this.scheduleRender())}timeToBarIndex(e){let t=this.dataStore.all;if(t.length===0)return null;let n=t[0],r=t[t.length-1];return!n||!r||e<n.time||e>r.time?null:this.timestampToBarIndex(e)}setThemeOverrides(e){return this.themeOverrides=e,this.theme=this.buildTheme(this.themeName),this.chromeTheme=this.buildChromeTheme(this.themeName),this.applyThemeToComponents(),this.scheduleRender(),this}setCanvasColors(e){return this.settingsCanvasColors=e==null?{}:e,this.setTheme(this.themeName),this}setTimezone(e){return this.timezone=e===`local`?Intl.DateTimeFormat().resolvedOptions().timeZone:e,this.scheduleRender(),this}setSeries(e){var t;return this.series=e,(t=this._tb)==null||t.setSeries(e),this.emitter.emit(`seriesChange`,{series:e}),this.scheduleRender(),this.emitStateChange(),this}setTfcActive(e){var t;if(!this.tfcEnabled)return this;if(this.tfcActive=e,(t=this._tb)==null||t.setTfcActive(e),!e){var n,r,i;(n=this.tradeButton)==null||n.hide(),(r=this.tradePopover)==null||r.hide(),(i=this.tradeActionBar)==null||i.hide(),this.draftOrderLabel!==null&&this.removeDraftOrder()}return this.chartSettingsDialog&&(this.chartSettingsDialog.destroy(),this.chartSettingsDialog=null),this.renderTradeLayer(),this.emitter.emit(`tfcToggle`,{enabled:e}),this.emitStateChange(),this}setCrosshairEnabled(e){var t,n,r,i;if(this.crosshairEnabled===e)return this;if(this.crosshairEnabled=e,(t=this.advancedToolbar)==null||t.setCrosshairActive(e),(n=this.topBar)==null||n.setCrosshairActive(e),(r=this.compactToolbar)==null||r.setCrosshairActive(e),(i=this.mobileHeader)==null||i.setCrosshairActive(e),!e){var a;this.crosshair!==null&&(this.crosshair=null,this.emitter.emit(`crosshair`,null)),this._mobileCrosshairActive=!1,(a=this.tradeButton)==null||a.hide(),this.scheduleRender()}return this.emitter.emit(`crosshairToggle`,{enabled:e}),this}clearDuration(){var e,t;this.duration!==void 0&&(this.duration=void 0,(e=this._tb)==null||e.setActiveDuration(void 0),(t=this.bottomBar)==null||t.setActive(void 0),this.emitStateChange())}setVolume(e){return this.showVolume=e,this.scheduleRender(),this.emitStateChange(),this}dismissAllUI(){var e,t,n,r,i,a,o,s;return this.isAnyUIOpen()?((e=this._draftQtyFlyout)==null||e.hide(),(t=this.isinPickerModal)==null||t.hide(),(n=this.comparePickerModal)==null||n.hide(),(r=this.indicatorSettingsDialog)==null||r.hide(),(i=this.chartSettingsDialog)==null||i.hide(),(a=this.tradePopover)==null||a.hide(),(o=this.tradeActionBar)==null||o.hide(),(s=this._tb)==null||s.closeDropdown(),this.hideMobileDrawingFlyout(),!0):!1}isAnyUIOpen(){var e,t,n,r,i,a,o,s,c,l;return((e=this._draftQtyFlyout)==null?void 0:e.isVisible)===!0||((t=this.isinPickerModal)==null?void 0:t.isVisible)===!0||((n=this.comparePickerModal)==null?void 0:n.isVisible)===!0||((r=this.indicatorSettingsDialog)==null?void 0:r.isVisible)===!0||((i=this.chartSettingsDialog)==null?void 0:i.isVisible)===!0||((a=this.tradePopover)==null?void 0:a.isVisible)===!0||((o=this.tradeActionBar)==null?void 0:o.isVisible)===!0||((s=this._tb)==null?void 0:s.hasOpenDropdown)===!0||((c=(l=this._mobileDrawingFlyout)==null?void 0:l.style.display)==null?`none`:c)!==`none`}emitUiState(){this.emitter.emit(`uiStateChange`,{hasOpenUI:this.isAnyUIOpen()})}emitStateChange(){this.isRestoringState||this.emitter.emit(`stateChange`,{symbol:this.symbol,state:this.getState()})}getState(){return{symbol:this.symbol,timeframe:this.timeframe,duration:this.duration,series:this.series,showVolume:this.showVolume,theme:this.themeName,indicators:this.activeIndicators.map(e=>({shortName:e.shortName,params:{...e.currentParams},visible:e.visible,instanceId:e.instanceId})),drawings:this.drawingManager.getDrawingsSnapshot().map(e=>({...e,points:e.points.map(e=>{var t;return{...e,timestamp:(t=e.timestamp)==null?this.barIndexToTimestamp(e.barIndex):t}})})),positionRenderStyle:this.baseRenderStyle(),tradeDisplayFilter:this.tradeDisplayFilter,canvasColors:Object.keys(this.settingsCanvasColors).length>0?{...this.settingsCanvasColors}:void 0,tfcEnabled:this.tfcActive,viewport:this.getViewportTimestamps(),priceScale:this.priceScaleFactor!==1||this.pricePanOffset!==0?{factor:this.priceScaleFactor,panOffset:this.pricePanOffset}:void 0,compares:this.compareManager&&this.compareManager.isActive()?this.compareManager.list().map(e=>e.symbol):void 0}}getViewportTimestamps(){if(this.dataStore.all.length===0)return;let e=this.barIndexToTimestamp(this.viewport.startIndex),t=this.barIndexToTimestamp(this.viewport.endIndex);if(!(e==null||t==null))return{startTime:e,endTime:t}}applyViewportFromTimestamps(e,t){let n=this.timestampToBarIndex(e),r=this.timestampToBarIndex(t);this.viewport={...this.viewport,startIndex:n,endIndex:r},this._targetViewport={...this.viewport}}setState(e){this.isRestoringState=!0;try{if(this.setSeries(e.series),this.setVolume(e.showVolume),e.theme!=null&&this.setTheme(e.theme),e.timeframe!=null){var t,n,r;this.timeframe=e.timeframe,this.duration=e.duration,(t=this._tb)==null||t.setTimeframe(e.timeframe),(n=this._tb)==null||n.setActiveDuration(e.duration),(r=this.bottomBar)==null||r.setActive(e.duration),this.updateCountdownState()}let s=this.activeIndicators.map(e=>e.instanceId);for(let e of s)this.removeIndicator(e);for(let t of e.indicators){var i,a;let e=Cd.find(e=>e.shortName===t.shortName);if(!e)continue;let n={...t.params};delete n.timeframe,this.addIndicator(e.factory(n),t.params);let r=this.activeIndicators[this.activeIndicators.length-1];if(!r)continue;r.currentParams={...t.params};let o=(i=this.subPaneOverlays.get(r.instanceId))==null?this.indicatorOverlay:i;t.visible===!1&&(r.visible=!1,o==null||o.updatePillVisibility(r.instanceId,!1));let s=(a=t.params.timeframe)==null?`Chart`:a;o==null||o.updatePillTimeframe(r.instanceId,s)}let c=e.drawings.map(e=>({...e,points:e.points.map(e=>e.timestamp==null||this.dataStore.all.length===0?e:{...e,barIndex:this.timestampToBarIndex(e.timestamp)})}));if(this.drawingManager.loadDrawings(c),e.positionRenderStyle&&(this.positionRenderStyleOverride=e.positionRenderStyle,this.positionRenderStyle=e.positionRenderStyle),e.tradeDisplayFilter&&(this.tradeDisplayFilter=e.tradeDisplayFilter),e.canvasColors&&(this.settingsCanvasColors=e.canvasColors),e.tfcEnabled!==void 0&&this.tfcEnabled){var o;this.tfcActive=e.tfcEnabled,(o=this._tb)==null||o.setTfcActive(e.tfcEnabled)}if(e.priceScale&&(this.priceScaleFactor=e.priceScale.factor,this.pricePanOffset=e.priceScale.panOffset,this._displayedPriceRange=null,this._lockedAutoFitBase=null),e.viewport&&(this.dataStore.all.length>0?this.applyViewportFromTimestamps(e.viewport.startTime,e.viewport.endTime):this._pendingViewportRestore={viewport:e.viewport,priceScale:e.priceScale}),e.compares&&e.compares.length>0&&this.compareManager){this.compareManager.clear();for(let t of e.compares)this.compareManager.add(t);this.refreshCompareLegend()}}finally{this.isRestoringState=!1}return this.emitStateChange(),this.scheduleRender(),this}barIndexToTimestamp(e){let t=this.dataStore.all,n=t.length;if(n===0)return;let r=t[0];if(!r)return;if(n===1)return r.time;let i=Math.floor(e),a=e-i;if(i<0){let n=t[1];return n?r.time+e*(n.time-r.time):r.time}if(i>=n-1){let i=t[n-1],a=t[n-2];return!i||!a?r.time:i.time+(e-(n-1))*(i.time-a.time)}let o=t[i],s=t[i+1];return!o||!s?r.time:o.time+a*(s.time-o.time)}timestampToBarIndex(e){let t=this.dataStore.all,n=t.length;if(n===0)return 0;let r=t[0];if(!r||n===1)return 0;if(e<=r.time){let n=t[1];if(!n)return 0;let i=n.time-r.time;return i>0?(e-r.time)/i:0}let i=n-1,a=t[i],o=t[i-1];if(!a||!o)return 0;if(e>=a.time){let t=a.time-o.time;return i+(t>0?(e-a.time)/t:0)}let s=0,c=i;for(;s<c;){var l,u;let n=s+c+1>>1;((l=(u=t[n])==null?void 0:u.time)==null?0:l)<=e?s=n:c=n-1}let d=t[s],f=t[s+1];if(!d||!f)return s;let p=f.time-d.time;return s+(p>0?(e-d.time)/p:0)}reanchorDrawingsByTimestamp(){if(this.dataStore.all.length!==0)for(let e of this.drawingManager.getDrawings())for(let t of e.points){if(t.timestamp==null){let e=this.barIndexToTimestamp(t.barIndex);e!=null&&(t.timestamp=e);continue}t.barIndex=this.timestampToBarIndex(t.timestamp)}}backfillDrawingTimestamps(){if(this.dataStore.all.length!==0)for(let e of this.drawingManager.getDrawings())for(let t of e.points){if(t.timestamp!=null)continue;let e=this.barIndexToTimestamp(t.barIndex);e!=null&&(t.timestamp=e)}}resetChartSettings(){return this.setState({symbol:this.symbol,series:`candlestick`,theme:`dark`,timeframe:`1D`,duration:void 0,showVolume:!0,indicators:[],drawings:[]}),this.positionRenderStyleOverride=null,localStorage.removeItem(this.RENDER_STYLE_LS_KEY),this.recomputeRenderStyle(),this.settingsCanvasColors={},this.setTheme(`dark`),this.emitStateChange(),this}setInstrument(e){return this.instrumentSpec=e,this.resolvedInstrument=null,this.scheduleRender(),this}getInstrument(){let e=this.dataStore.getPricePrecision();return(!this.resolvedInstrument||this.resolvedInstrumentPrecision!==e)&&(this.resolvedInstrument=M(this.instrumentSpec,e),this.resolvedInstrumentPrecision=e),this.resolvedInstrument}setAccount(e){return this.accountSpec=e,this.scheduleRender(),this}getAccount(){return this.accountSpec}setSymbol(e){var t,n;return this.symbol=e,(t=this.tradePopover)==null||t.setSymbol(e),this.siSymbolSpan&&(this.siSymbolSpan.textContent=e,this.siSymbolSpan.style.display=e?`inline`:`none`),(n=this.isinPickerModal)==null||n.setCurrentSymbol(e),this.tickActivityTimer!==null&&(clearTimeout(this.tickActivityTimer),this.tickActivityTimer=null),this.siStreamDot&&(this.siStreamDot.style.background=this.theme.ui.stream[this.streamStatus]),this.liveBidAsk=null,this.liveLtp=null,this}setIsins(e){var t;return this.isins=e,(t=this.isinPickerModal)==null||t.setIsins(e),this}renderSymbolInfoOHLC(e){if(!this.siOHLCSpan)return;if(!e){this.siOHLCSpan.innerHTML=``,this.siOHLC2Span&&(this.siOHLC2Span.innerHTML=``);return}let t=e.close>=e.open?this.theme.candle.up:this.theme.candle.down,n=this.overlayTextColor(this.theme.axisText),r=e=>e.toFixed(this.dataStore.getPricePrecision()),i=e=>e>=1e6?(e/1e6).toFixed(2)+`M`:e>=1e3?(e/1e3).toFixed(1)+`K`:e.toFixed(0),a=this.labels.ohlc,o=(e,t)=>{e.innerHTML=``;for(let[r,i,a]of t){let t=document.createElement(`span`);t.style.marginRight=`8px`;let o=document.createElement(`span`);o.textContent=r+`\xA0`,o.style.color=n,o.style.opacity=`0.6`;let s=document.createElement(`span`);s.textContent=i,s.style.color=a,t.append(o,s),e.appendChild(t)}};o(this.siOHLCSpan,[[a.open,r(e.open),n],[a.high,r(e.high),n]]),this.siOHLC2Span&&o(this.siOHLC2Span,[[a.low,r(e.low),n],[a.close,r(e.close),t],...e.volume!=null&&e.volume!==0?[[a.volume,i(e.volume),n]]:[]])}setMinLots(e){var t;return console.warn(`[acttrader-charts] setMinLots() is deprecated. Pass minLots in the initial ChartConfig instead.`),this._minLots=e,(t=this.tradePopover)==null||t.setLots(e),this}setDraftQty(e){return this.draftOrderLabel&&this.setLevelQty(this.draftOrderLabel,e),this}updateLevelQty(e,t){return!e||e===this.draftOrderLabel||!Number.isFinite(t)||t<=0||this.setLevelQty(e,t),this}setLevelQty(e,t){var n,r;let i=this.levels.findIndex(t=>t.label===e);if(i===-1)return;let a=this.levels[i];if(a.lots===t)return;this.originalQtyByLabel.has(e)||this.originalQtyByLabel.set(e,a.lots);let o=(n=(r=this.originalQtyByLabel.get(e))==null?a.lots:r)==null?t:n;this.levels=[...this.levels.slice(0,i),{...a,lots:t},...this.levels.slice(i+1)],e!==this.draftOrderLabel&&this.pendingQtyChanges.set(e,t),this.emitter.emit(`tradeLevelQtyChange`,{label:e,type:e===this.draftOrderLabel?`draft`:a.type,newLots:t,previousLots:o,isFullscreen:this.isFullscreen}),this.renderTradeLayer()}openDraftQtyFlyout(e){var t;this._draftQtyFlyout||(this._draftQtyFlyout=new ru(this.chromeTheme,e=>{this._activeQtyPillLabel&&this.setLevelQty(this._activeQtyPillLabel,e)},()=>this.emitUiState()),this.getFloatingRoot().appendChild(this._draftQtyFlyout.el)),this._activeQtyPillLabel=e.label;let n=this.levels.find(t=>t.label===e.label),r=(t=n==null?void 0:n.lots)==null?this._qtyFieldMin:t,i=this.canvasWrap.getBoundingClientRect(),a=i.left+e.pillX,o=i.top+e.pillY+e.pillH;this._draftQtyFlyout.show(a,o,r,this._qtyFieldMin,this._qtyFieldMax)}setDraftOrderLabels(e){return console.warn(`[acttrader-charts] setDraftOrderLabels() is deprecated and is a no-op. DraftOrderQtyInput has been removed.`),this}setDrawingTool(e){var t;return this.drawingManager.setActiveTool(e),(t=this.leftBar)==null||t.setActiveTool(e),this.drawCanvas.style.cursor=e?`crosshair`:`default`,this.scheduleRender(),this}undoDrawing(){return this.drawingManager.undo(),this.scheduleRender(),this}redoDrawing(){return this.drawingManager.redo(),this.scheduleRender(),this}hideAllDrawings(){return this.drawingManager.hideAll(),this.scheduleRender(),this}showAllDrawings(){return this.drawingManager.showAll(),this.scheduleRender(),this}lockAllDrawings(){return this.drawingManager.lockAll(),this.scheduleRender(),this}unlockAllDrawings(){return this.drawingManager.unlockAll(),this.scheduleRender(),this}deleteSelectedDrawing(){return this.drawingManager.deleteSelected(),this.hideMobileDrawingFlyout(),this.scheduleRender(),this}clearAllDrawings(){return this.drawingManager.clearAll(),this.scheduleRender(),this}getActiveTool(){return this.drawingManager.getActiveTool()}getDrawings(){return this.drawingManager.getDrawings()}getDrawingById(e){return this.drawingManager.getDrawingById(e)}getSelectedDrawing(){return this.drawingManager.getSelectedDrawing()}updateDrawingStyle(e,t){return this.drawingManager.updateDrawingStyle(e,t),this.scheduleRender(),this}connectStream(e){return this.streamAdapter=e,e.onTick(e=>this.onTick(e)),e.onStatus(e=>{this.streamStatus=e,this.siStreamDot&&(this.siStreamDot.style.background=this.theme.ui.stream[e],this.siStreamDot.title=`Stream ${e}`),this.emitter.emit(`streamStatus`,{status:e})}),e.connect(),this}disconnectStream(){var e;return(e=this.streamAdapter)==null||e.disconnect(),this.streamAdapter=null,this}setTickClosePriceSource(e){return this._applyPriceSource(e,!1),this}_applyPriceSource(e,t){var n,r;let i=e!==this.tickClosePriceSource;if(this.tickClosePriceSource=e,(n=this.topBar)==null||n.setPriceSource(e),(r=this.advancedToolbar)==null||r.setPriceSource(e),this.scheduleRender(),i&&this._reloadOnPriceSourceChange&&this.dataLoader&&!this._isDestroyed){let e=this.getViewportTimestamps();if(e){var a;this._pendingViewportRestore={...(a=this._pendingViewportRestore)==null?{}:a,viewport:e}}this.triggerLoad(`priceSource`)}t&&this.emitter.emit(`priceSourceChange`,{source:e})}setShowLtpPrice(e){return this.showLtpPrice=e,this.scheduleRender(),this}setShowAskLine(e){return this.showAskLine=e,this.scheduleRender(),this}setShowBidLine(e){return this.showBidLine=e,this.scheduleRender(),this}pushTick(e){let t=e.T==null?Date.now():typeof e.T==`string`?new Date(e.T).getTime():e.T;return this.onTick({time:t,bid:e.B,ask:e.A,volume:e.LTPV!=null&&e.LTPV>0?e.LTPV:0,ltp:e.LTP!=null&&e.LTP>0?e.LTP:void 0}),this}setLevels(e,t,n,r,i,a){let o=e.map(e=>{if(r===`position`){let r={label:String(e[t]),price:Number(e[n]),type:`position`,data:e};return e.text!==void 0&&(r.text=String(e.text)),i!==void 0&&e[i]!==void 0&&(r.pnl=Number(e[i])),a!==void 0&&e[a]!==void 0&&(r.pnlText=String(e[a])),e.side!==void 0&&(r.side=e.side),e.stopLossPrice!==void 0&&(r.stopLossPrice=Number(e.stopLossPrice)),e.stopLossTrailing&&(r.stopLossTrailing=!0),e.takeProfitPrice!==void 0&&(r.takeProfitPrice=Number(e.takeProfitPrice)),e.contractSize!==void 0&&(r.contractSize=Number(e.contractSize)),e.valuePerPoint!==void 0&&(r.valuePerPoint=Number(e.valuePerPoint)),e.currencySymbol!==void 0&&(r.currencySymbol=String(e.currencySymbol)),e.entryPriceEditable&&(r.entryPriceEditable=!0),e.orderType!==void 0&&(r.orderType=e.orderType),e.lots!==void 0&&(r.lots=Number(e.lots)),e.timestamp!==void 0&&(r.timestamp=Number(e.timestamp)),e.timeDraggable&&(r.timeDraggable=!0),r}if(r===`pending`){var o,s;let r={label:String(e[t]),price:Number(e[n]),type:`pending`,side:(o=e.side)==null?`buy`:o,orderType:(s=e.orderType)==null?`limit`:s,data:e};return e.text!==void 0&&(r.text=String(e.text)),e.lots!==void 0&&(r.lots=Number(e.lots)),e.stopLossPrice!==void 0&&(r.stopLossPrice=Number(e.stopLossPrice)),e.stopLossTrailing&&(r.stopLossTrailing=!0),e.takeProfitPrice!==void 0&&(r.takeProfitPrice=Number(e.takeProfitPrice)),e.ToClose!==void 0&&(r.ToClose=String(e.ToClose)),e.timestamp!==void 0&&(r.timestamp=Number(e.timestamp)),e.timeDraggable&&(r.timeDraggable=!0),r}return{label:String(e[t]),price:Number(e[n]),type:`trade`,text:e.text===void 0?void 0:String(e.text),data:e}});if(this.hideLevelConfirmCancel&&this.pendingLevelDrags.size>0)for(let e of o){let t=this.pendingLevelDrags.get(e.label);if(!(t!=null&&t.length))continue;let n=e;t.every(t=>t.isRemoval?t.field===`stopLoss`?n.stopLossPrice===void 0:n.takeProfitPrice===void 0:t.field===`main`?e.price===t.newPrice:t.field===`stopLoss`?n.stopLossPrice===t.newPrice:n.takeProfitPrice===t.newPrice)&&(this.pendingLevelDrags.delete(e.label),this.selectedTradeLabel===e.label&&(this.selectedTradeLabel=null))}if(this.pendingQtyChanges.size>0)for(let e=0;e<o.length;e++){let t=o[e],n=this.pendingQtyChanges.get(t.label);if(n===void 0||t.type!==`pending`&&t.type!==`position`)continue;let r=t;this.originalQtyByLabel.set(t.label,r.lots),o[e]={...r,lots:n}}let s=this.draftOrderLabel===null?void 0:this.levels.find(e=>e.type===r&&e.label===this.draftOrderLabel&&!o.some(t=>t.label===e.label)),c=new Map(this.levels.map(e=>[e.label,e]));if(this.levels=[...this.levels.filter(e=>e.type!==r),...o,...s?[s]:[]],this._revealNewBrackets){let e=[];for(let t of o){let n=c.get(t.label);if(!n)continue;let r=t;r.stopLossPrice!==void 0&&n.stopLossPrice===void 0&&e.push(r.stopLossPrice),r.takeProfitPrice!==void 0&&n.takeProfitPrice===void 0&&e.push(r.takeProfitPrice)}e.length>0&&this._revealPrices(e)}if(this._timeAnchorOverride.size>0)for(let e of[...this._timeAnchorOverride.keys()]){let t=this.levels.find(t=>t.label===e);if(!t){this._timeAnchorOverride.delete(e);continue}let n=t.timestamp,r=this._timeAnchorOverride.get(e);this._honorsLevelTimestamp(t)&&n!==void 0&&r!==void 0&&Math.round(this.timestampToBarIndex(n))===Math.round(this.timestampToBarIndex(r))&&this._timeAnchorOverride.delete(e)}return this.selectedTradeLabel!==null&&!this.levels.some(e=>e.label===this.selectedTradeLabel)&&(this.selectedTradeLabel=null),this.recomputeRenderStyle(),this.renderTradeLayer(),this.refreshPnlPill(),this}removeLevelByLabel(e){return this.levels=this.levels.filter(t=>t.label!==e),this.renderTradeLayer(),this.refreshPnlPill(),this}showDraftOrder(e,t,n){if(this.draftOrderLabel){let e=this.levels.find(e=>e.label===this.draftOrderLabel);if((e==null?void 0:e.side)===t&&(e==null?void 0:e.orderType)===n)return this}return this.clearDraftOrder(),this.createDraftOrder(t,e,n),this}showMarketDraft(e,t){this.clearDraftOrder();let n=`__draft_${Date.now()}`,r={type:`pending`,label:n,side:t,price:e,orderType:`market`,data:{_isDraft:!0}};return this.levels=[...this.levels,r],this.draftOrderLabel=n,this.renderTradeLayer(),this.emitter.emit(`draftInitiated`,{side:t,price:e,orderType:`market`,isFullscreen:this.isFullscreen}),this}clearDraftOrder(){return this.removeDraftOrder(),this}updateLevelBracket(e,t,n){var r;let i=t===`sl`?`stopLoss`:`takeProfit`,a=this.levels.find(t=>t.label===e);if(!a)return this;let o=t===`sl`?a.stopLossPrice:a.takeProfitPrice,s=(r=this.pendingLevelDrags.get(e))==null?[]:r,c=s.find(e=>e.field===i),l=s.filter(e=>e.field!==i);if(this.levels=this.levels.map(r=>{if(r.label!==e)return r;let i=r;return t===`sl`?{...i,stopLossPrice:n==null?void 0:n}:{...i,takeProfitPrice:n==null?void 0:n}}),n===null){if(o!==void 0){var u;let e=(u=c==null?void 0:c.oldPrice)==null?o:u;l.push({field:i,newPrice:o,oldPrice:e,isRemoval:!0})}l.length===0?this.pendingLevelDrags.delete(e):this.pendingLevelDrags.set(e,l)}else{var d;let t=(d=c==null?void 0:c.isNew)==null?o===void 0:d,r=c&&!c.isRemoval?c.oldPrice:o==null?n:o;l.push({field:i,newPrice:n,oldPrice:r,isNew:t}),this.pendingLevelDrags.set(e,l),this._revealNewBrackets&&t&&this._revealPrices([n])}return this.renderTradeLayer(),this}addLevelBracket(e,t){var n,r,i,a,o;let s=this.levels.find(t=>t.label===e);if(!s)return this;let c=t===`sl`?`stopLoss`:`takeProfit`,l=t===`sl`?s.stopLossPrice!==void 0:s.takeProfitPrice!==void 0,u=(n=(r=this.pendingLevelDrags.get(e))==null?void 0:r.some(e=>e.field===c&&!e.isRemoval))==null?!1:n;if(l||u)return this;let{priceH:d}=this.getChartLayout(),f=(i=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):i,p=this.scaleManager.yToPixel(s.price,f,d),m=(a=s.side)==null?`buy`:a,h=p+(m===`buy`&&t===`sl`||m===`sell`&&t===`tp`?30:-30),g=this.scaleManager.pixelToPrice(h,f,d);this.updateLevelBracket(e,t,g);let _=((o=this.pendingLevelDrags.get(e))==null?[]:o).filter(e=>e.field!==c);return _.push({field:c,newPrice:g,oldPrice:g,isNew:!0}),this.pendingLevelDrags.set(e,_),this.emitter.emit(`tradeLevelBracketActivated`,{label:e,bracketType:t,price:g,isFullscreen:this.isFullscreen}),this.emitter.emit(`tradeLevelDrag`,{label:e,newPrice:g,data:s.data,bracketType:t===`sl`?`stopLoss`:`takeProfit`,isFullscreen:this.isFullscreen}),this}addBracket(e,t){var n,r;if(t)return this.addLevelBracket(t,e);if(!this.draftOrderLabel)return this;let i=this.draftOrderLabel,a=this.levels.find(e=>e.label===i);if(!a||(e===`sl`?a.stopLossPrice!==void 0:a.takeProfitPrice!==void 0))return this;let{priceH:o}=this.getChartLayout(),s=(n=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):n,c=this.scaleManager.yToPixel(a.price,s,o),l=(r=a.side)==null?`buy`:r,u=c+(l===`buy`&&e===`sl`||l===`sell`&&e===`tp`?30:-30),d=this.scaleManager.pixelToPrice(u,s,o);return this.updateDraftOrderBracket(e,d),this.emitter.emit(`tradeLevelBracketActivated`,{label:``,bracketType:e,price:d,isFullscreen:this.isFullscreen}),this.emitter.emit(`tradeLevelDrag`,{label:i,newPrice:d,data:a.data,bracketType:e===`sl`?`stopLoss`:`takeProfit`,isFullscreen:this.isFullscreen}),this}removeBracket(e,t){if(t){var n,r;let i=e===`sl`?`stopLoss`:`takeProfit`,a=this.levels.find(e=>e.label===t);if(!a)return this;let o=(n=this.pendingLevelDrags.get(t))==null?void 0:n.find(e=>e.field===i),s=o&&!o.isRemoval?o.newPrice:e===`sl`?a.stopLossPrice:a.takeProfitPrice;if(s===void 0)return this;let c=((r=this.pendingLevelDrags.get(t))==null?[]:r).filter(e=>e.field!==i);return c.push({field:i,newPrice:s,oldPrice:s,isRemoval:!0}),this.pendingLevelDrags.set(t,c),this.renderTradeLayer(),this}return e===`sl`?this.draftBracketPnl={...this.draftBracketPnl,sl:void 0}:this.draftBracketPnl={...this.draftBracketPnl,tp:void 0},this.updateDraftOrderBracket(e,null)}updateLevelMainPrice(e,t){var n;let r=this.levels.find(t=>t.label===e);if(!r)return this;let i=(n=this.pendingLevelDrags.get(e))==null?[]:n,a=i.find(e=>e.field===`main`),o=a?a.oldPrice:r.price,s=i.filter(e=>e.field!==`main`);return s.push({field:`main`,newPrice:t,oldPrice:o}),this.pendingLevelDrags.set(e,s),r.price=t,this.renderTradeLayer(),this}setBracketLabelMode(e,t){return this._bracketLabel={mode:e,currencySymbol:t==null?this._bracketLabel.currencySymbol:t},this.scheduleRender(),this}setDraftBracketPnl(e,t){return e===`sl`?this.draftBracketPnl={...this.draftBracketPnl,sl:t==null?void 0:t}:this.draftBracketPnl={...this.draftBracketPnl,tp:t==null?void 0:t},this.renderTradeLayer(),this}updateDraftOrderBracket(e,t){return this.draftOrderLabel?(this.levels=this.levels.map(n=>{if(n.label!==this.draftOrderLabel)return n;let r=n;return e===`sl`?{...r,stopLossPrice:t==null?void 0:t}:{...r,takeProfitPrice:t==null?void 0:t}}),this._revealNewBrackets&&t!==null&&this._revealPrices([t]),this.scheduleRender(),this):this}updateDraftOrderPrice(e){if(!this.draftOrderLabel)return!1;this.levels=this.levels.map(t=>t.label===this.draftOrderLabel?{...t,price:e}:t);let t=this.pendingLevelDrags.get(this.draftOrderLabel);if(t){let n=t.find(e=>e.field===`main`);n&&(n.newPrice=e)}return this.renderTradeLayer(),!0}cancelLevelEdit(e){var t;if(this.undoIsNewBracketMutations(e),this.pendingLevelDrags.delete(e),this.pendingQtyChanges.has(e)){this.pendingQtyChanges.delete(e);let t=this.levels.findIndex(t=>t.label===e);if(t!==-1&&this.originalQtyByLabel.has(e)){let n=this.originalQtyByLabel.get(e),r=this.levels[t];this.levels=[...this.levels.slice(0,t),{...r,lots:n},...this.levels.slice(t+1)]}this.originalQtyByLabel.delete(e)}return e===((t=this.draftOrderLabel)==null?this.selectedTradeLabel:t)&&(this.draftBracketPnl={}),this.selectedTradeLabel===e&&(this.selectedTradeLabel=null),this.renderTradeLayer(),this}cancelCurrentEdit(){return this.draftOrderLabel?this.clearDraftOrder():this.selectedTradeLabel&&this.revertPendingChanges(this.selectedTradeLabel),this}selectLevel(e){if(!this.draftOrderLabel&&e!==this.selectedTradeLabel&&(this.draftBracketPnl={}),this.selectedTradeLabel=e,e!==null){this.crosshair=null;let t=this.lastClusters.find(t=>t.members.some(t=>t.level.label===e));t&&this.expandedClusters.add(t.id)}return this.renderTradeLayer(),this}setLevelClusteringEnabled(e){return this.levelClusteringEnabled=e,this.expandedClusters.clear(),this.renderTradeLayer(),this}setClusterThresholdDistance(e){return this.clusterThresholdDistance=e,this.expandedClusters.clear(),this.renderTradeLayer(),this}setTradeLevelButtonScale(e){return this.tradeLevelButtonScale=Math.min(Math.max(e,1),3),this.renderTradeLayer(),this}toDataUrl(){return this.captureToDataUrl()}drawOnto(e,t,n,r,i){e.fillStyle=this.theme.background,e.fillRect(t,n,r,i);let a=[this.canvas,this.drawCanvas];for(let o of a)o&&o.width&&o.height&&e.drawImage(o,t,n,r,i)}captureToDataUrl(){let e=this.canvas;if(!e.width||!e.height)return null;let t=document.createElement(`canvas`);t.width=e.width,t.height=e.height;let n=t.getContext(`2d`);if(!n)return null;n.fillStyle=this.theme.background,n.fillRect(0,0,t.width,t.height);let r=[this.canvas,this.drawCanvas];for(let e of r)e&&e.width&&e.height&&n.drawImage(e,0,0);return t.toDataURL(`image/png`)}openLayoutPopover(){var e,t,n;if(!this.layoutPopover)return;let r=(e=(t=this.advancedToolbar)==null?void 0:t.getLayoutBtnEl())==null?(n=this.topBar)==null?void 0:n.getLayoutBtnEl():e;if(r)if(this.layoutPopover.isVisible)this.layoutPopover.hide();else{let e=this.getFloatingRoot();this.layoutPopover.el.parentElement!==e&&e.appendChild(this.layoutPopover.el),this.layoutPopover.show(r)}}openSnapshotPopover(){var e,t,n;if(!this.snapshotPopover)return;let r=(e=(t=this.advancedToolbar)==null?void 0:t.getSnapshotBtnEl())==null?(n=this.topBar)==null?void 0:n.getSnapshotBtnEl():e;if(r)if(this.snapshotPopover.isVisible)this.snapshotPopover.hide();else{let e=this.getFloatingRoot();this.snapshotPopover.el.parentElement!==e&&e.appendChild(this.snapshotPopover.el),this.snapshotPopover.show(r)}}handleLayoutPresetSelect(e){var t,n,r,i;this.currentPresetId=e;let a=fi(e);(t=this._tb)==null||(n=t.setLayoutPresetIcon)==null||n.call(t,a.icon,!0),(r=this.layoutPopover)==null||r.setPreset(e),(i=this.layoutPopover)==null||i.hide(),this.emitter.emit(`layoutChange`,{presetId:e,preset:a,sync:this.currentSync})}handleSyncToggle(e){var t;this.currentSync={...this.currentSync,[e]:!this.currentSync[e]},(t=this.layoutPopover)==null||t.setSync(this.currentSync),this.emitter.emit(`layoutChange`,{presetId:this.currentPresetId,preset:fi(this.currentPresetId),sync:this.currentSync})}async handleSnapshot(e){var t;let n=this.captureToDataUrl();if(n){if(this.emitter.emit(`snapshot`,{dataUrl:n,action:e}),e===`download`){let e=document.createElement(`a`);e.download=`${this.snapshotFileName()}.png`,e.href=n,e.click()}else try{var r;let e=await(await fetch(n)).blob(),t=globalThis.ClipboardItem;t&&(r=navigator.clipboard)!=null&&r.write&&await navigator.clipboard.write([new t({"image/png":e})])}catch(e){}(t=this.snapshotPopover)==null||t.hide()}}snapshotFileName(){let e=this.symbol.trim().replace(/[\\/:*?"<>|]+/g,`_`).replace(/\s+/g,`_`);return e.length>0?e:`chart-${Date.now()}`}setLayoutPreset(e){this.handleLayoutPresetSelect(e)}getLayoutPreset(){return this.currentPresetId}getLayoutSync(){return{...this.currentSync}}setLayoutSync(e){var t;let n={...this.currentSync,...e};Object.keys(n).some(e=>n[e]!==this.currentSync[e])&&(this.currentSync=n,(t=this.layoutPopover)==null||t.setSync(this.currentSync))}destroy(){var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y;this._isDestroyed=!0,this.panHandler.destroy(),this.zoomHandler.destroy(),this.resizeObserver.disconnect(),this.disposeVvListener(),(e=this.indicatorOverlay)==null||e.destroy();for(let e of this.subPaneOverlays.values())e.destroy();this.subPaneOverlays.clear(),(t=this.indicatorSettingsDialog)==null||t.destroy(),(n=this.chartSettingsDialog)==null||n.destroy(),(r=this.isinPickerModal)==null||r.destroy(),(i=this.comparePickerModal)==null||i.destroy(),(a=this.compareLegend)==null||a.destroy(),(o=this.pnlPill)==null||o.destroy(),(s=this.tradePopover)==null||s.destroy(),(c=this.tradeActionBar)==null||c.destroy(),(l=this.drawingStylePopover)==null||l.destroy(),(u=this._draftQtyFlyout)==null||u.destroy(),(d=this.advancedToolbar)==null||d.destroy(),(f=this.mobileHeader)==null||f.destroy(),(p=this.leftBar)==null||p.destroy(),this.drawCanvas.removeEventListener(`mousemove`,this.onMouseMove),this.drawCanvas.removeEventListener(`mouseleave`,this.onMouseLeave),this.drawCanvas.removeEventListener(`mousedown`,this.onCanvasClick),this.drawCanvas.removeEventListener(`dblclick`,this.onDoubleClick),window.removeEventListener(`mouseup`,this.onMouseUp),this.drawCanvas.removeEventListener(`touchstart`,this.onDrawingTouchStart),this.drawCanvas.removeEventListener(`touchmove`,this.onDrawingTouchMove),this.drawCanvas.removeEventListener(`touchend`,this.onDrawingTouchEnd),this.drawCanvas.removeEventListener(`touchcancel`,this.onDrawingTouchCancel),document.removeEventListener(`keydown`,this.onKeyDown),(m=this.streamAdapter)==null||m.disconnect(),this.rafId!==null&&cancelAnimationFrame(this.rafId),this.scrollAnimId!==null&&cancelAnimationFrame(this.scrollAnimId),this.stopCountdownLoop(),(h=this.resetViewBtn)==null||h.remove(),(g=this.textInputEl)==null||g.remove(),(_=this._mobileDrawingFlyout)==null||_.remove(),(v=this.layoutPopover)==null||v.destroy(),(y=this.snapshotPopover)==null||y.destroy(),this.wrapper.remove()}createMobileDrawingFlyout(){let e=document.createElement(`div`);Object.assign(e.style,{position:`fixed`,display:`none`,alignItems:`center`,gap:`2px`,zIndex:`10000`,background:this.theme.background,border:`1px solid ${this.theme.axisBorder}`,borderRadius:`8px`,padding:`4px`,boxShadow:`0 4px 16px rgba(0,0,0,0.45)`,pointerEvents:`auto`});let t=(e,t,n)=>{let r=document.createElement(`button`);return r.title=t,r.innerHTML=e,Object.assign(r.style,{display:`flex`,alignItems:`center`,justifyContent:`center`,width:`34px`,height:`34px`,padding:`0`,border:`none`,borderRadius:`6px`,background:`transparent`,color:n?this.theme.candle.down:this.theme.axisText,cursor:`pointer`,flexShrink:`0`}),r.addEventListener(`pointerenter`,()=>{r.style.background=n?`${this.theme.candle.down}22`:this.theme.axisBorder}),r.addEventListener(`pointerleave`,()=>{r.style.background=`transparent`}),r},n=t(pn,`Delete drawing`,!0);n.addEventListener(`pointerdown`,e=>{e.stopPropagation(),this.deleteSelectedDrawing(),this.hideMobileDrawingFlyout()});let r=t(un,`Deselect`,!1);return r.addEventListener(`pointerdown`,e=>{e.stopPropagation(),this.drawingManager.selectDrawing(null),this.hideMobileDrawingFlyout(),this.scheduleRender()}),e.appendChild(n),e.appendChild(r),this.wrapper.appendChild(e),e}showMobileDrawingFlyout(e,t){if(!Fd())return;this._mobileDrawingFlyout||(this._mobileDrawingFlyout=this.createMobileDrawingFlyout());let n=this._mobileDrawingFlyout,r=n.style.display!==`none`&&n.style.display!==``;n.style.display=`flex`,requestAnimationFrame(()=>{let r=n.offsetWidth||78,i=n.offsetHeight||42,a=window.innerWidth,o=window.innerHeight,s=Math.min(Math.max(e-r/2,8),a-r-8),c=Math.min(Math.max(t-i-12,8),o-i-8);n.style.left=`${s}px`,n.style.top=`${c}px`}),r||this.emitUiState()}hideMobileDrawingFlyout(){if(this._mobileDrawingFlyout){let e=this._mobileDrawingFlyout.style.display!==`none`&&this._mobileDrawingFlyout.style.display!==``;this._mobileDrawingFlyout.style.display=`none`,e&&this.emitUiState()}}applyMobileDrawingFlyoutTheme(){if(!this._mobileDrawingFlyout)return;let e=this._mobileDrawingFlyout;e.style.background=this.theme.background,e.style.border=`1px solid ${this.theme.axisBorder}`;let[t,n]=Array.from(e.querySelectorAll(`button`));t&&(t.style.color=this.theme.candle.down),n&&(n.style.color=this.theme.axisText)}scheduleRender(){this._isDestroyed||this.rafId===null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this.render(),this.renderTradeLayer()}))}startCountdownLoop(){if(this.countdownRafId!==null)return;let e=0,t=n=>{if(!this.countdownActive){this.countdownRafId=null;return}n-e>=1e3&&(e=n,this.scheduleRender()),this.countdownRafId=requestAnimationFrame(t)};this.countdownRafId=requestAnimationFrame(t)}stopCountdownLoop(){this.countdownActive=!1,this.countdownRafId!==null&&(cancelAnimationFrame(this.countdownRafId),this.countdownRafId=null)}updateCountdownState(){var e;let t=this.candleCountdownTimeframes===`all`?!0:((e=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:e).includes(this.timeframe),n=(this.showCandleCountdown||this.showPriceAxisCountdown)&&t&&this.dataStore.length>0;n&&!this.countdownActive?(this.countdownActive=!0,this.startCountdownLoop()):!n&&this.countdownActive&&this.stopCountdownLoop()}openChartSettings(){this.chartSettingsDialog||(this.chartSettingsDialog=new pl(this.chromeTheme,{tradeDisplayFilter:this.tradeDisplayFilter,positionRenderStyle:this.baseRenderStyle(),theme:this.themeName,showTradeLevelsAlways:this.showTradeLevelsAlways,showPriceAxisCountdown:this.showPriceAxisCountdown},this.labels.dialogs,!!this._onOrderSubmit&&this.tfcActive,this.enableThemeToggle,()=>this.emitUiState()),this.getFloatingRoot().appendChild(this.chartSettingsDialog.el)),this.chartSettingsDialog.show({tradeDisplayFilter:this.tradeDisplayFilter,positionRenderStyle:this.baseRenderStyle(),theme:this.themeName,showTradeLevelsAlways:this.showTradeLevelsAlways,showPriceAxisCountdown:this.showPriceAxisCountdown,canvasColors:{...this.settingsCanvasColors}},e=>{if(this.tradeDisplayFilter=e.tradeDisplayFilter,this.positionRenderStyleOverride=e.positionRenderStyle,localStorage.setItem(this.RENDER_STYLE_LS_KEY,e.positionRenderStyle),this.positionRenderStyle=e.positionRenderStyle,e.canvasColors&&(this.settingsCanvasColors=e.canvasColors),this.showTradeLevelsAlways!==e.showTradeLevelsAlways){this.showTradeLevelsAlways=e.showTradeLevelsAlways;try{localStorage.setItem(this.SHOW_SLTP_ALWAYS_LS_KEY,String(e.showTradeLevelsAlways))}catch(e){}}if(this.showPriceAxisCountdown!==e.showPriceAxisCountdown){this.showPriceAxisCountdown=e.showPriceAxisCountdown;try{localStorage.setItem(this.PRICE_AXIS_COUNTDOWN_LS_KEY,String(e.showPriceAxisCountdown))}catch(e){}this.updateCountdownState(),this.scheduleRender()}this.setTheme(e.theme),this.renderTradeLayer(),this.emitStateChange()},()=>{this.resetChartSettings()})}getFloatingRoot(){var e;return(e=document.fullscreenElement)==null?document.body:e}reparentFloatingElements(){var e,t,n,r,i,a,o,s,c;let l=this.getFloatingRoot();(e=this._tb)==null||e.reparentFlyout(l),(t=this.leftBar)==null||t.reparentFlyout(l);let u=[(n=this.isinPickerModal)==null?void 0:n.el,(r=this.comparePickerModal)==null?void 0:r.el,(i=this.indicatorSettingsDialog)==null?void 0:i.el,(a=this.chartSettingsDialog)==null?void 0:a.el,(o=this._draftQtyFlyout)==null?void 0:o.el,(s=this.layoutPopover)==null?void 0:s.el,(c=this.snapshotPopover)==null?void 0:c.el];for(let e of u)e&&e.parentElement!==l&&l.appendChild(e)}toggleDrawingTools(){var e,t;this.leftBarVisible=!this.leftBarVisible,(e=this.leftBar)==null||e.setVisible(this.leftBarVisible),(t=this._tb)==null||t.setDrawingsBtnActive(this.leftBarVisible)}_applyCssFullscreen(e){var t;this._isCssFullscreen=e,e?Object.assign(this.wrapper.style,{position:`fixed`,inset:`0`,width:`100vw`,height:`100vh`,zIndex:`9999`}):Object.assign(this.wrapper.style,{position:``,inset:``,width:``,height:``,zIndex:``}),(t=this._tb)==null||t.setFullscreen(e),this.reparentFloatingElements(),requestAnimationFrame(()=>this.onResize())}toggleFullscreen(){let e=!!document.fullscreenElement;!e&&!this._isCssFullscreen?this.wrapper.requestFullscreen?this.wrapper.requestFullscreen().then(()=>{var e;(e=this._tb)==null||e.setFullscreen(!0)}).catch(()=>{this._applyCssFullscreen(!0)}):this._applyCssFullscreen(!0):e?document.exitFullscreen().catch(()=>{}):this._applyCssFullscreen(!1)}baseRenderStyle(){return this.positionRenderStyleOverride===null?this.levels.filter(e=>e.type===`position`||e.type===`pending`).length>this.tradesThresholdForHorizontalLine?`dot`:`line`:this.positionRenderStyleOverride}recomputeRenderStyle(){this.positionRenderStyle=this.pnlPillExpanded?`line`:this.baseRenderStyle()}renderTradeLayer(){var e,t,n,r,i,a;if(this._isDestroyed)return;let o=window.devicePixelRatio||1,{tradeCtx:s,tradeCanvas:c,theme:l,viewport:u}=this;if(s.clearRect(0,0,c.width,c.height),!this.tfcActive||this.levels.length===0||this.dataStore.length===0){this.tradeLevelHitAreas=[],this.tradeLevelEditAreas=[],this.tradeHoverAreas=[],this.tradeAddBracketAreas=[],this.offViewportHitAreas=[];return}let{chartW:d,priceH:f}=this.getChartLayout(),p=(e=this._displayedPriceRange)==null?this.getScaledPriceRange(u):e,m=this.levels.filter(e=>e.type===`pending`&&e.ToClose!=null),h=this.levels.filter(e=>!(e.type===`pending`&&e.ToClose!=null)).map(e=>{var t,n,r,i;let a=(t=this.pendingLevelDrags.get(e.label))==null?[]:t,o=a.find(e=>e.field===`stopLoss`),s=a.find(e=>e.field===`takeProfit`),c=o&&!o.isRemoval?o.newPrice:void 0,l=s&&!s.isRemoval?s.newPrice:void 0,u=(n=o==null?void 0:o.isRemoval)==null?!1:n,d=(r=s==null?void 0:s.isRemoval)==null?!1:r,f=(i=a.find(e=>e.field===`main`))==null?void 0:i.newPrice,p=m.filter(t=>t.ToClose===e.label);if(p.length===0&&c===void 0&&l===void 0&&f===void 0&&!u&&!d)return e;let h={...e};if(f!==void 0&&(h.price=f),c===void 0?u&&(h.stopLossPrice=void 0):h.stopLossPrice=c,l===void 0?d&&(h.takeProfitPrice=void 0):h.takeProfitPrice=l,p.length>0){var g;let t=(g=e.side)==null?`buy`:g;for(let n of p)if(t===`buy`?n.price<e.price:n.price>e.price){var _;h.stopLossPrice=u?void 0:(_=c==null?h.stopLossPrice:c)==null?n.price:_,h._slOrderLabel=n.label}else{var v;h.takeProfitPrice=d?void 0:(v=l==null?h.takeProfitPrice:l)==null?n.price:v,h._tpOrderLabel=n.label}}return h});s.save(),s.scale(o,o),s.save(),s.beginPath(),s.rect(0,0,d,f),s.clip();let g=e=>e.type===`position`&&!!e.entryPriceEditable,_=this.selectedTradeLabel===null?this.tradeDisplayFilter===`none`?[]:this.tradeDisplayFilter===`positions`?h.filter(e=>e.type===`position`&&!g(e)):this.tradeDisplayFilter===`orders`?h.filter(e=>e.type===`pending`||g(e)):h:h.filter(e=>e.label===this.selectedTradeLabel),v=this.levelClusteringEnabled?this.clusterThresholdDistance:0,y=(t=this.orderTimeDragHandler)!=null&&t.active?this.orderTimeDragHandler.dragLabel:null,b=y!==null&&this.hoveredTradeLabel===y?null:this.hoveredTradeLabel,x=y!==null&&this.selectedTradeLabel===y?null:this.selectedTradeLabel,S=ft(s,_,this.scaleManager,p,l,d,f,this.dataStore.getPricePrecision(),b,(n=(r=this.tradeDragHandler)==null?void 0:r.dragLabel)==null?null:n,this.tradeDragNewPrice,x,new Set([...this.pendingLevelDrags.keys(),...this._editOpenLabel===null?[]:[this._editOpenLabel]]),this.positionRenderStyle,this.hideLevelConfirmCancel,this.draftOrderLabel,this.draftBracketPnl,this.expandedClusters,v,this._showQuantityField,this.tradeDragNewSLPrice,this.tradeDragNewTPPrice,this.tradeLevelButtonScale,this.showTradeLevelsAlways,this._orderTimeDragEnabled?e=>this._orderLineAnchorX(e,d):null,this._orderTimeDragEnabled,this._bracketLabel,this.tradeLevelBadgeScale,this.tradeLevelBadgeAnchor);s.restore();let C=Gt(s,_,p,l,d,f,(i=(a=this.tradeDragHandler)==null?void 0:a.dragLabel)==null?null:i,this.selectedTradeLabel);if(this.offViewportHitAreas=C.hitAreas,Nt(s,_,this.scaleManager,p,l,d,f,this.dataStore.getPricePrecision()),s.restore(),this.tradeLevelHitAreas=S.hitAreas,this.tradeLevelEditAreas=S.editAreas,this.tradeHoverAreas=S.hoverAreas,this.tradeLevelDragAreas=S.dragAreas,this.tradeLevelConfirmAreas=S.confirmAreas,this.tradeAddBracketAreas=S.addBracketAreas,this.clusterBadgeAreas=S.clusterBadgeAreas,this.lastClusters=S.clusters,this._draftQtyPillArea=S.draftQtyPillArea,this.expandedClusters.size>0){let e=new Set(S.clusters.map(e=>e.id));for(let t of this.expandedClusters)e.has(t)||this.expandedClusters.delete(t)}if(this.pnlPillExpanded&&!this._pnlPillExpandPass){let e=S.clusters.filter(e=>!this.expandedClusters.has(e.id)&&e.members.some(e=>e.level.type===`position`));if(e.length>0){for(let t of e)this.expandedClusters.add(t.id);this._pnlPillExpandPass=!0;try{this.renderTradeLayer()}finally{this._pnlPillExpandPass=!1}}}}_orderLineAnchorX(e,t){var n;if(!this._orderTimeDragEnabled)return null;if((n=this.orderTimeDragHandler)!=null&&n.active&&this.orderTimeDragHandler.dragLabel===e.label&&this.tradeDragNewBarIndex!==null)return this.scaleManager.xToPixel(this.tradeDragNewBarIndex,this.viewport,t);let r=this._resolvedTimeAnchor(e);return r===void 0?null:this.scaleManager.xToPixel(this.timestampToBarIndex(r),this.viewport,t)}_resolvedTimeAnchor(e){var t;let n=this._timeAnchorOverride.get(e.label);if(n!==void 0)return n;let r=(t=this._orderLineAnchorStore)==null?void 0:t.get(e.label);return r===void 0?this._honorsLevelTimestamp(e)?e.timestamp:void 0:r}_honorsLevelTimestamp(e){return!((this._orderLineDefaultAnchor===`center`||this.tradeLevelBadgeAnchor===`left`)&&e.timeDraggable===!0)}_effectiveEntryPrice(e,t){var n,r;let i=this.pendingLevelDrags.get(e);return(n=i==null||(r=i.find(e=>e.field===`main`))==null?void 0:r.newPrice)==null?t:n}_effectiveBracketPrice(e,t,n){var r;let i=this.pendingLevelDrags.get(e),a=i==null||(r=i.find(e=>e.field===t))==null?void 0:r.newPrice;return a==null?n:a}_resolveBracketPrices(e){let t=e.stopLossPrice,n=e.takeProfitPrice,r,i;if(t===void 0||n===void 0){let o=this.levels.filter(t=>t.type===`pending`&&t.ToClose===e.label);if(o.length>0){var a;let s=(a=e.side)==null?`buy`:a;for(let a of o){let o=s===`buy`?a.price<e.price:a.price>e.price;o&&t===void 0?(t=a.price,r=a.label):!o&&n===void 0&&(n=a.price,i=a.label)}}}return{slPrice:t,tpPrice:n,slSiblingLabel:r,tpSiblingLabel:i}}_finalizeMainDragWithBrackets(e,t){var n;let r=this.levels.find(t=>t.label===e.label),i=e.derivedSLPrice!==void 0&&e.slStartPrice!==void 0&&e.derivedSLPrice!==e.slStartPrice,a=e.derivedTPPrice!==void 0&&e.tpStartPrice!==void 0&&e.derivedTPPrice!==e.tpStartPrice,o=!i&&!a;if(this.storePendingChange(e,e.startPrice,t,!o),!((n=this.pendingLevelDrags.get(e.label))!=null&&n.some(t=>t.field===`main`&&t.newPrice===e.newPrice))){this.tradeDragNewSLPrice=null,this.tradeDragNewTPPrice=null;return}if(i){var s,c,l;let n=!a,i=r,o=r,u=(s=(c=i==null?void 0:i.stopLossData)==null?o==null?void 0:o.stopLossData:c)==null?e.data:s;this.storePendingChange({label:e.label,type:e.type,newPrice:e.derivedSLPrice,data:u,bracketType:`stopLoss`},e.slStartPrice,(l=this._slSiblingOrderLabel)==null?t:l,!n)}if(a){var u,d,f;let n=r,i=r,a=(u=(d=n==null?void 0:n.takeProfitData)==null?i==null?void 0:i.takeProfitData:d)==null?e.data:u;this.storePendingChange({label:e.label,type:e.type,newPrice:e.derivedTPPrice,data:a,bracketType:`takeProfit`},e.tpStartPrice,(f=this._tpSiblingOrderLabel)==null?t:f,!1)}this.tradeDragNewSLPrice=null,this.tradeDragNewTPPrice=null,this._slSiblingOrderLabel=null,this._tpSiblingOrderLabel=null}storePendingChange(e,t,n,r=!1){var i,a,o,s,c;if(e.bracketType){var l,u,d,f,p;let n=this.levels.find(t=>t.label===e.label),r=(l=n==null?void 0:n.side)==null?`buy`:l,i=this._effectiveEntryPrice(e.label,(u=n==null?void 0:n.price)==null?t:u),a=(n==null?void 0:n.entryPriceEditable)===!0,o=(n==null||(d=n.data)==null?void 0:d._isDraft)===!0,s=this.dataStore.all,c=e.type===`position`&&!a&&!o?(f=(p=s[s.length-1])==null?void 0:p.close)==null?0:f:0;if(!yu.isBracketPriceValid(e.newPrice,e.bracketType,i,r,c)){this.tradeDragNewPrice=null,this.renderTradeLayer();return}}if(!e.bracketType){let t=this.levels.find(t=>t.label===e.label);if(t!=null&&t.orderType&&t!=null&&t.side){var m,h;let n=this.dataStore.all,r=(m=(h=n[n.length-1])==null?void 0:h.close)==null?0:m;if(r>0&&!(t.side===`buy`&&t.orderType===`limit`||t.side===`sell`&&t.orderType===`stop`?e.newPrice<r:e.newPrice>r)){this.tradeDragNewPrice=null,this.renderTradeLayer();return}}}if(e.newPrice===t){this.tradeDragNewPrice=null,this.renderTradeLayer();return}let g=(i=e.bracketType)==null?`main`:i,_=this._isBracketNew;this._isBracketNew=!1;let v=this.levels.find(t=>t.label===e.label);if((v==null?void 0:v.orderType)===`market`&&(v==null||(a=v.data)==null?void 0:a._isDraft)===!0){g!==`main`&&(this.updateDraftOrderBracket(g===`stopLoss`?`sl`:`tp`,e.newPrice),this.emitter.emit(`tradeLevelDrag`,{label:e.label,newPrice:e.newPrice,data:v==null?void 0:v.data,bracketType:g,isFullscreen:this.isFullscreen})),this.tradeDragNewPrice=null,this.renderTradeLayer();return}if(v!==void 0&&g!==`main`&&(v==null||(o=v.data)==null?void 0:o._isDraft)===!0){this.updateDraftOrderBracket(g===`stopLoss`?`sl`:`tp`,e.newPrice),this.emitter.emit(`tradeLevelDrag`,{label:e.label,newPrice:e.newPrice,data:v==null?void 0:v.data,bracketType:g,isFullscreen:this.isFullscreen}),this.tradeDragNewPrice=null,this.renderTradeLayer();return}if(v!==void 0&&g===`main`&&(v==null||(s=v.data)==null?void 0:s._isDraft)===!0&&v.orderType!==`market`&&this.hideLevelConfirmCancel){this.updateDraftOrderPrice(e.newPrice),this.emitter.emit(`tradeLevelDrag`,{label:e.label,newPrice:e.newPrice,data:v==null?void 0:v.data,bracketType:void 0,isFullscreen:this.isFullscreen}),this.tradeDragNewPrice=null,this.renderTradeLayer();return}let y=((c=this.pendingLevelDrags.get(e.label))==null?[]:c).filter(e=>e.field!==g);if(y.push({field:g,newPrice:e.newPrice,oldPrice:t,isNew:_,bracketOrderLabel:n}),this.pendingLevelDrags.set(e.label,y),this.tradeDragNewPrice=null,this.hideLevelConfirmCancel&&!r){this.applyPendingChanges(e.label);return}this.renderTradeLayer()}_orderTypeForPrice(e,t){let n=this.dataStore.all,r=n.length>0?n[n.length-1].close:t;return e===`buy`?t<r?`limit`:`stop`:t>r?`limit`:`stop`}createDraftOrder(e,t,n){if(this.draftOrderLabel)return;let r=`__draft_${Date.now()}`,i={type:`pending`,label:r,side:e,price:t,orderType:n,lots:this._qtyFieldMin,data:{_isDraft:!0}};this.levels=[...this.levels,i],this.draftOrderLabel=r,this.selectedTradeLabel=r,this.pendingLevelDrags.set(r,[{field:`main`,newPrice:t,oldPrice:t}]),this.crosshair=null,this.renderTradeLayer(),this.emitter.emit(`draftInitiated`,{side:e,price:t,orderType:n,isFullscreen:this.isFullscreen})}removeDraftOrder(){var e;if(!this.draftOrderLabel)return;let t=this.draftOrderLabel;this.levels=this.levels.filter(e=>e.label!==t),this.pendingLevelDrags.delete(t),this.selectedTradeLabel=null,this.draftOrderLabel=null,this.draftBracketPnl={},(e=this._draftQtyFlyout)==null||e.hide(),this._draftQtyPillArea=void 0,this.renderTradeLayer(),this.emitter.emit(`draftCancelled`,{label:t,isFullscreen:this.isFullscreen})}applyPendingChanges(e){let t=this.pendingLevelDrags.get(e);if(!t){if(this._editOpenLabel===e){let t=this.levels.find(t=>t.label===e);this._editOpenLabel=null,this.selectedTradeLabel=null,this.renderTradeLayer(),t&&this.emitter.emit(`tradeLevelConfirmed`,{label:e,type:t.type,isFullscreen:this.isFullscreen})}return}let n=this.levels.find(t=>t.label===e);if(!n)return;if(this._editOpenLabel===e&&(this._editOpenLabel=null),e===this.draftOrderLabel){var r,i,a;let o=t.find(e=>e.field===`main`),s=n;(r=this._onOrderSubmit)==null||r.call(this,{price:(i=o==null?void 0:o.newPrice)==null?s.price:i,lots:(a=s.lots)==null?this._qtyFieldMin:a,side:s.side,orderType:s.orderType,...s.stopLossPrice===void 0?{}:{stopLoss:s.stopLossPrice},...s.takeProfitPrice===void 0?{}:{takeProfit:s.takeProfitPrice}}),this.emitter.emit(`tradeLevelConfirmed`,{label:e,type:`draft`,isFullscreen:this.isFullscreen}),this.removeDraftOrder();return}let o=this.pendingQtyChanges.get(e);this.pendingQtyChanges.delete(e),this.originalQtyByLabel.delete(e);let s=o!==void 0&&n.data&&typeof n.data==`object`?{...n.data,lots:o}:n.data;this.emitter.emit(`tradeLevelEdit`,{label:e,type:n.type,data:s,isFullscreen:this.isFullscreen,...o===void 0?{}:{newLots:o},changes:t.map(e=>{let t=n.data,r=s;if(e.field===`stopLoss`){var i;r=(i=t.stopLossData)==null?n.data:i}else if(e.field===`takeProfit`){var a;r=(a=t.takeProfitData)==null?n.data:a}if(e.bracketOrderLabel){let t=this.levels.find(t=>t.label===e.bracketOrderLabel);t&&(r=t.data)}let c;return c=e.field===`main`?`MAIN`:e.field===`stopLoss`?e.isRemoval?`REMOVE_SL`:e.isNew?`ADD_SL`:`SL`:e.isRemoval?`REMOVE_TP`:e.isNew?`ADD_TP`:`TP`,{field:c,newPrice:e.newPrice,data:r,...c===`MAIN`&&o!==void 0?{newLots:o}:{},bracketOrderLabel:e.bracketOrderLabel}})}),this.emitter.emit(`tradeLevelConfirmed`,{label:e,type:n.type,isFullscreen:this.isFullscreen}),this.hideLevelConfirmCancel||(this.pendingLevelDrags.delete(e),this.selectedTradeLabel=null,this.draftBracketPnl={}),this.renderTradeLayer()}revertPendingChanges(e){var t;if(e&&e===this.draftOrderLabel){this.removeDraftOrder();return}if(!e&&this.draftOrderLabel&&this.removeDraftOrder(),e&&!this.pendingLevelDrags.has(e)&&this._editOpenLabel===e){this._cancelEditAndDeselect(e);return}let n=e?this.pendingLevelDrags.has(e)||this.pendingQtyChanges.has(e)?[[e,(t=this.pendingLevelDrags.get(e))==null?[]:t]]:[]:[...this.pendingLevelDrags.entries(),...[...this.pendingQtyChanges.keys()].filter(e=>!this.pendingLevelDrags.has(e)).map(e=>[e,[]])];for(let[e]of n){if(this.undoIsNewBracketMutations(e),this.pendingLevelDrags.delete(e),this.pendingQtyChanges.has(e)){this.pendingQtyChanges.delete(e);let t=this.levels.findIndex(t=>t.label===e);if(t!==-1&&this.originalQtyByLabel.has(e)){let n=this.originalQtyByLabel.get(e),r=this.levels[t];this.levels=[...this.levels.slice(0,t),{...r,lots:n},...this.levels.slice(t+1)]}this.originalQtyByLabel.delete(e)}let t=this.levels.find(t=>t.label===e);t&&(this._editOpenLabel===e&&(this._editOpenLabel=null),this.emitter.emit(`tradeLevelEditCancelled`,{label:e,type:t.type,isFullscreen:this.isFullscreen}))}this.selectedTradeLabel=null,this.draftBracketPnl={},this.renderTradeLayer()}undoIsNewBracketMutations(e){let t=this.pendingLevelDrags.get(e);if(!t)return;let n=t.some(e=>e.field===`stopLoss`&&e.isNew),r=t.some(e=>e.field===`takeProfit`&&e.isNew);!n&&!r||(this.levels=this.levels.map(t=>{if(t.label!==e)return t;let i={...t};return n&&(i.stopLossPrice=void 0),r&&(i.takeProfitPrice=void 0),i}))}initCompareUi(){if(!this.compareManager)return;this.siEl&&(this.compareLegend=new su({theme:this.theme,onRemove:e=>this.removeCompare(e)}),this.siEl.appendChild(this.compareLegend.el));let e=()=>this.refreshCompareLegend();this.emitter.on(`compareAdded`,e),this.emitter.on(`compareRemoved`,e),this.emitter.on(`compareError`,e),this.emitter.on(`crosshair`,e=>{var t,n;this.compareHoveredIndex=(t=e==null?void 0:e.barIndex)==null?null:t,(n=this.compareManager)!=null&&n.isActive()&&(this.refreshCompareLegend(),this.scheduleRender())})}openComparePicker(){var e,t;if(!this.compareDataLoader)return;this.comparePickerModal||(this.comparePickerModal=new ou(this.chromeTheme,e=>this.toggleCompare(e),()=>this.emitUiState()),this.comparePickerModal.setTitle(`Compare`),this.comparePickerModal.setMode(`toggle`),this.getFloatingRoot().appendChild(this.comparePickerModal.el)),this.refreshComparePickerState();let n=(e=(t=this.siSymbolSpan)==null?void 0:t.textContent)==null?``:e;this.comparePickerModal.show(this.isins,n)}toggleCompare(e){this.compareManager&&(this.compareManager.has(e)?this.removeCompare(e):this.addCompare(e),this.refreshComparePickerState())}refreshComparePickerState(){!this.comparePickerModal||!this.compareManager||this.comparePickerModal.setActiveSymbols(this.compareManager.list().map(e=>e.symbol))}async addCompare(e){this.compareManager&&(await this.compareManager.add(e),this.refreshCompareLegend(),this.scheduleRender(),this.emitStateChange())}removeCompare(e){this.compareManager&&(this.compareManager.remove(e),this.refreshCompareLegend(),this.scheduleRender(),this.emitStateChange())}clearCompares(){this.compareManager&&(this.compareManager.clear(),this.refreshCompareLegend(),this.scheduleRender(),this.emitStateChange())}getCompares(){return this.compareManager?this.compareManager.list().map(e=>({symbol:e.symbol,color:e.color,status:e.status})):[]}refreshCompareLegend(){var e,t;if(!this.compareLegend||!this.compareManager)return;let n=this.compareManager.list(),r=this.dataStore.all,i=this.compareBaselineIndex(r),a=i==null||(e=(t=r[i])==null?void 0:t.close)==null?null:e,o=this.compareHoveredIndex,s=r.length-1,c=n.map(e=>{let t=null;if(e.status===`ready`&&a!=null&&e.bars.length>0){let n=_u(e.bars,r.map(e=>e.time),i==null?0:i),a=r[o==null?s:o];if(a){let e=n.find(e=>e.time===a.time);if(e&&e.pct!=null)t=e.pct;else{let e=n[n.length-1];(e==null?void 0:e.pct)!=null&&(t=e.pct)}}}return{symbol:e.symbol,color:e.color,percent:t,status:e.status,errorMessage:e.errorMessage}});this.compareLegend.update(c)}compareBaselineIndex(e){return e.length===0?null:Math.max(0,Math.min(e.length-1,Math.floor(this.viewport.startIndex)))}updateCompareRange(){if(!this.compareManager)return;let e=this.dataStore.all;if(e.length===0)return;let t={start:new Date(e[0].time),end:new Date(e[e.length-1].time),interval:this.timeframe,priceSource:this.tickClosePriceSource};this.compareManager.isActive()?this.compareManager.refetchAll(t).then(()=>{this.refreshCompareLegend(),this.scheduleRender()}):this.compareManager.setLastParams(t)}render(){var e,t,n;if(this._isDestroyed)return;let{ctx:r,canvas:i,theme:a,viewport:o}=this,s=window.devicePixelRatio||1,c=i.width,l=i.height,u=c/s-this.priceAxisWidth,d=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),f=d.reduce((e,t)=>e+this.paneH(t)+Od,0),p=l/s-this.timeAxisHeight-f;r.clearRect(0,0,c,l),r.fillStyle=a.background,r.fillRect(0,0,c,l);let m=this.dataStore.getVisible(o);if(m.length===0){this.drawCtx.clearRect(0,0,this.drawCanvas.width,this.drawCanvas.height);return}let h=m;if(this._isPanning)this.viewport={...this._targetViewport};else{let e=this._targetViewport.startIndex-this.viewport.startIndex,t=this._targetViewport.endIndex-this.viewport.endIndex,n=(this._targetViewport.endIndex-this._targetViewport.startIndex)*2e-4;Math.abs(e)<n&&Math.abs(t)<n?this.viewport={...this._targetViewport}:(this.viewport={...this.viewport,startIndex:this.viewport.startIndex+e*Md,endIndex:this.viewport.endIndex+t*Md,candleWidth:this._targetViewport.candleWidth,candleGap:this._targetViewport.candleGap},this.scheduleRender())}let g=!!((e=this.compareManager)!=null&&e.isActive()),_=null,v=[],y=[],b=null;if(g&&this.compareManager){var x,S;let e=this.dataStore.all,t=this.compareBaselineIndex(e),n=t==null||(x=(S=e[t])==null?void 0:S.close)==null?null:x;if(n!=null&&n!==0&&Number.isFinite(n)){_=n;let r=this.compareManager.list(),i=e.map(e=>e.time);v=r.map(e=>e.status===`ready`&&e.bars.length>0?_u(e.bars,i,t==null?0:t):[]),y=r.map(e=>e.color),h=mu(m,n),b=gu(m,n,v.map(e=>e.filter(e=>e.pct!=null)))}}let C=g&&b!==null;if(C!==this._lastInCompareMode&&(this._lastInCompareMode=C,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this.pricePanOffset=0,this.priceScaleFactor=1),this.priceScaleFactor!==1||this.pricePanOffset!==0){if(!this._lockedAutoFitBase){var w,T;this._lockedAutoFitBase=(w=(T=this._displayedPriceRange)==null?b:T)==null?this.dataStore.getPriceRange(o):w}let e=this._lockedAutoFitBase,t=(e.min+e.max)/2+this.pricePanOffset,n=e.max===e.min?1:(e.max-e.min)/2;this._displayedPriceRange={min:t-n*this.priceScaleFactor,max:t+n*this.priceScaleFactor}}else{var E;this._lockedAutoFitBase=null;let e=(E=b)==null?this.getScaledPriceRange(o):E;if(!this._displayedPriceRange)this._displayedPriceRange=e;else{let t=(e.max-e.min)*1e-4,n=e.min-this._displayedPriceRange.min,r=e.max-this._displayedPriceRange.max;Math.abs(n)<t&&Math.abs(r)<t?this._displayedPriceRange=e:(this._displayedPriceRange={min:this._displayedPriceRange.min+n*jd,max:this._displayedPriceRange.max+r*jd},this.scheduleRender())}}let D=this._displayedPriceRange,O=this.showVolume?this.dataStore.getVolumeRange(o):null,k=i;switch(k._priceRange=D,k._chartWidth=u,r.save(),r.scale(s,s),r.save(),r.beginPath(),r.rect(0,0,u,p),r.clip(),_e(r,D,this.scaleManager,a,u,p),this.series){case`candlestick`:ee(r,h,o,D,this.scaleManager,a,u,p);break;case`hollow`:te(r,h,o,D,this.scaleManager,a,u,p);break;case`line`:ie(r,h,o,D,this.scaleManager,a,u,p,!1);break;case`area`:ie(r,h,o,D,this.scaleManager,a,u,p,!0);break;case`ohlc`:ae(r,h,o,D,this.scaleManager,a,u,p);break;case`heikinashi`:ce(r,h,o,D,this.scaleManager,a,u,p);break;case`volumecandles`:V(r,h,o,D,this.scaleManager,a,u,p);break;case`linemarkers`:le(r,h,o,D,this.scaleManager,a,u,p);break;case`step`:ue(r,h,o,D,this.scaleManager,a,u,p);break;case`hlcarea`:fe(r,h,o,D,this.scaleManager,a,u,p);break;case`baseline`:me(r,h,o,D,this.scaleManager,a,u,p);break;case`columns`:he(r,h,o,D,this.scaleManager,a,u,p);break;case`highlow`:ge(r,h,o,D,this.scaleManager,a,u,p);break}r.save(),r.beginPath(),r.rect(0,0,u,p),r.clip();for(let e of this.visibleStates()){let t=e.indicator;if(t.pane&&t.pane!==`main`)continue;let n=this.indicatorResults.get(e.instanceId);if(!n)continue;let i=n.slice(Math.floor(o.startIndex),Math.ceil(o.endIndex)+1),a=g&&_!=null?hu(i,_):i;t.render(r,a,this.scaleManager,o,p)}if(g&&_!=null&&v.length>0){let e=this.dataStore.all,t=Math.floor(o.startIndex),n=Math.min(e.length-1,Math.ceil(o.endIndex)),i=new Map;for(let r=t;r<=n;r++)i.set(e[r].time,r);for(let e=0;e<v.length;e++){let t=v[e],n=y[e];if(!t||t.length===0)continue;r.save(),r.strokeStyle=n,r.lineWidth=1.5,r.lineJoin=`round`,r.lineCap=`round`,r.beginPath();let a=!1;for(let e of t){let t=i.get(e.time);if(t==null||e.pct==null){a=!1;continue}let n=this.scaleManager.xToPixel(t,o,u),s=this.scaleManager.yToPixel(e.pct,D,p);a?r.lineTo(n,s):(r.moveTo(n,s),a=!0)}r.stroke(),r.restore()}}r.restore(),r.restore(),an(r,D,this.scaleManager,a,u,p,this.priceAxisWidth,void 0,this.dataStore.getPricePrecision(),this.uiConfig.priceAxis,g?`percent`:`price`);let A=this.dataStore.all[this.dataStore.all.length-1];if(A&&!g){let e=this.dataStore.getPricePrecision(),t=(t,n,i)=>{let a=this.scaleManager.yToPixel(t,D,p);r.save(),r.strokeStyle=n,r.lineWidth=1,r.setLineDash([3,3]),r.beginPath(),r.moveTo(0,a),r.lineTo(u,a),r.stroke(),r.setLineDash([]);let o=i+t.toFixed(e);r.font=`10px 'Inter', system-ui, sans-serif`;let s=r.measureText(o).width+12;return r.fillStyle=n,r.fillRect(u,a-16/2,s,16),r.fillStyle=`#ffffff`,r.textAlign=`left`,r.fillText(o,u+4,a+4),r.restore(),{y:a,boxW:s}},n=null,i=0;if(this.liveBidAsk){var j,M,N,P,F,I,L;let{bid:e,ask:r}=this.liveBidAsk,o=this.tickClosePriceSource===`ltp`,s=((j=this.showLtpPrice)==null?o:j)?(M=this.liveLtp)==null?o?e:null:M:null,c=A.close>=A.open?a.candle.up:a.candle.down,l=(N=this.showAskLine)==null?this.showBidAskLines||this.tickClosePriceSource===`ask`:N,u=((P=this.showBidLine)==null?this.showBidAskLines||this.tickClosePriceSource===`bid`||o&&s==null:P)?t(e,a.candle.down,``):null,d=l?t(r,a.candle.up,``):null,f=s==null?null:t(s,c,``),p=o?(F=f==null?u:f)==null?d:F:this.tickClosePriceSource===`ask`?(I=d==null?f:d)==null?u:I:(L=u==null?f:u)==null?d:L;p&&(n=p.y,i=p.boxW)}else{let e=A.close>=A.open,r=t(A.close,e?a.candle.up:a.candle.down,``);n=r.y,i=r.boxW}if(this.showPriceAxisCountdown&&n!==null){var R;if(this.candleCountdownTimeframes===`all`||((R=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:R).includes(this.timeframe)){let e=this.timeframeToMs(this.timeframe);rn(r,A.time,e,a,u,n-16/2,16,i)}}}let z=p;for(let e of d){let t=e.indicator,n=this.paneH(e);if(r.fillStyle=a.axisBorder,r.fillRect(0,z,u+this.priceAxisWidth,Od),z+=Od,r.save(),r.beginPath(),r.rect(0,z,u+this.priceAxisWidth,n),r.clip(),r.translate(0,z),r.fillStyle=a.background,r.fillRect(0,0,u+this.priceAxisWidth,n),e.visible&&(()=>{let t=e.currentParams.timeframe;return!t||t===`Chart`||t===this.timeframe})()){let i=this.indicatorResults.get(e.instanceId);if(i){var B,ne;let s=i.slice(Math.floor(o.startIndex),Math.ceil(o.endIndex)+1),c=(B=t.getValueRange)==null?void 0:B.call(t,s),l=(ne=this.subPaneScaleFactors.get(e.instanceId))==null?1:ne,d=c?Rd(c,l):void 0;t.render(r,s,this.scaleManager,o,n,d),d&&an(r,d,this.scaleManager,a,u,n,this.priceAxisWidth,3,zd(d),this.uiConfig.priceAxis)}}r.restore(),z+=n}if(this.showVolume&&O&&O.max>0){let e=p*Ed;oe(r,h,o,O.max,this.scaleManager,a,u,e,p-e)}{var re;let e=this.candleCountdownTimeframes===`all`?!0:((re=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:re).includes(this.timeframe),t=this.showCandleCountdown&&!this.showPriceAxisCountdown&&e&&h.length>0&&o.endIndex>=this.dataStore.length-1,n=t?this.dataStore.length-1:void 0;if(this._debug&&console.log(`[countdown] showCandleCountdown:`,this.showCandleCountdown,`| tf:`,this.timeframe,`| allowed:`,e,`| bars:`,h.length,`| endIndex:`,o.endIndex,`| dataLen:`,this.dataStore.length,`| atLiveEdge:`,o.endIndex>=this.dataStore.length-1),tn(r,h,o,this.scaleManager,a,u,z,Fd()?3:void 0,this.uiConfig.timeAxis,this.timeframe,n,this.timezone),t){let e=this.dataStore.all[this.dataStore.length-1];if(e){let t=this.timeframeToMs(this.timeframe);nn(r,e.time,t,this.dataStore.length-1,o,this.scaleManager,a,u,z,this.uiConfig.timeAxis)}}}if(this.crosshair&&be(r,this.crosshair,D,o,this.scaleManager,a,u,p,this.priceAxisWidth,z,this.timeframe,this.dataStore.getPricePrecision(),this.uiConfig.crosshair,this.timezone),this.logoImage){let e=p-20-40/2;r.save(),r.globalAlpha=.6,r.beginPath(),r.rect(0,0,u,p),r.clip(),r.beginPath(),r.arc(40,e,40/2,0,Math.PI*2),r.closePath(),r.clip(),r.drawImage(this.logoImage,40-40/2,e-40/2,40,40),r.restore()}r.restore();let se=this.crosshair?(t=this.dataStore.all[this.crosshair.barIndex])==null?null:t:(n=this.dataStore.all[this.dataStore.length-1])==null?null:n;if(this.renderSymbolInfoOHLC(se),this.drawingManager.render(this.drawCtx,this.scaleManager,o,D,u,p,this.dataStore.getPricePrecision(),this.theme,{instrument:this.getInstrument(),bars:this.dataStore.all,account:this.accountSpec,features:this._features}),this.drawingStylePopover){let e=this.drawingManager.getSelectedDrawing();if(e&&e.complete&&e.locked!==!0){let t=this.computeDrawingAnchorPx(e);t&&this.drawingStylePopover.setAnchor(t.x,t.y)}}if(this.scrollToEndBtn){let e=this.dataStore.length===0||this._targetViewport.endIndex>=this.dataStore.length-.5;e!==!this.scrollToEndVisible&&(this.scrollToEndVisible=!e,this.scrollToEndBtn.style.opacity=e?`0`:`0.85`,this.scrollToEndBtn.style.pointerEvents=e?`none`:`auto`)}if(this.resetViewBtn){let e=this.dataStore.length,t=this._defaultVisibleBars,n=e===0||this._targetViewport.endIndex>=e-.5,r=this._targetViewport.endIndex-this._targetViewport.startIndex,i=Math.abs(r-t)<.5,a=this.priceScaleFactor===1&&this.pricePanOffset===0&&this._lockedAutoFitBase===null,o=e===0||n&&i&&a;o===this.resetViewVisible&&(this.resetViewVisible=!o,this.resetViewBtn.style.opacity=o?`0`:`0.75`,this.resetViewBtn.style.pointerEvents=o?`none`:`auto`)}this.updateSubPaneOverlayPositions()}recomputeIndicators(){for(let e of this.visibleStates())this.indicatorResults.set(e.instanceId,e.indicator.compute(this.dataStore.all))}onResize(){var e;if(this._isDestroyed)return;let t=window.devicePixelRatio||1,n=this.canvasWrap.getBoundingClientRect();if(n.width===0||n.height===0)return;this._cachedWrapRect=n,this._cachedDrawRect=this.drawCanvas.getBoundingClientRect(),(e=this.pnlPill)==null||e.clampToBounds();for(let e of[this.canvas,this.tradeCanvas,this.drawCanvas])e.width=n.width*t,e.height=n.height*t;let r=this.wrapper.offsetWidth,i=r>0&&r<this.uiConfig.drawingToolbar.mobileBreakpoint;if(i!==this._mobileLayout){var a,o,s,c;if(this._mobileLayout=i,(a=this.leftBar)==null||a.setMobileMode(i),(o=this._tb)==null||o.setMobileLayout(i),(s=this.tradeButton)==null||s.setMobileMode(i),(c=this.tradePopover)==null||c.setCompact(i),this.siEl&&(this.siEl.style.flexDirection=i?`column`:`row`,this.siEl.style.alignItems=i?`flex-start`:`center`,this.siEl.style.gap=i?`2px`:`8px`),i){var l;this.leftBarVisible=!1,(l=this._tb)==null||l.setDrawingsBtnActive(!1)}else{var u,d;this.leftBarVisible=!0,(u=this.leftBar)==null||u.setVisible(!0),(d=this._tb)==null||d.setDrawingsBtnActive(!0)}}this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.render(),this.renderTradeLayer()}paneH(e){var t,n;return(t=(n=this.paneHeightOverrides.get(e.instanceId))==null?e.indicator.paneHeight:n)==null?Dd:t}getChartLayout(){var e;let t=this.activeIndicators.filter(e=>e.indicator.pane===`sub`).reduce((e,t)=>e+this.paneH(t)+Od,0),n=(e=this._cachedWrapRect)==null?this.canvasWrap.getBoundingClientRect():e;return{chartW:n.width-this.priceAxisWidth,priceH:n.height-this.timeAxisHeight-t}}computeDrawingAnchorPx(e){var t;if(e.points.length===0)return null;let{chartW:n,priceH:r}=this.getChartLayout(),i=this._targetViewport,a=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(i):t,o=0,s=1/0;for(let t of e.points){let e=this.scaleManager.xToPixel(t.barIndex,i,n),c=this.scaleManager.yToPixel(t.price,a,r);c<s&&(s=c,o=e)}return Number.isFinite(s)?(o=Math.max(0,Math.min(n,o)),s=Math.max(0,Math.min(r,s)),{x:o,y:s}):null}updateSubPaneOverlayPositions(){if(this.subPaneOverlays.size===0)return;let e=this.getSeparatorPositions();for(let t of e){let e=this.subPaneOverlays.get(t.instanceId);e&&(e.el.style.top=`${t.y+Od+6}px`)}}getSeparatorPositions(){let{priceH:e}=this.getChartLayout(),t=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),n=[],r=e;for(let e of t)n.push({y:r,instanceId:e.instanceId}),r+=this.paneH(e)+Od;return n}getScaledPriceRange(e){let t=this.dataStore.getPriceRange(e),n=t.min,r=t.max;for(let t of this.visibleStates()){if(t.indicator.pane&&t.indicator.pane!==`main`)continue;let a=this.indicatorResults.get(t.instanceId);if(!a)continue;let o=Math.floor(e.startIndex),s=Math.ceil(e.endIndex)+1;for(let e=o;e<s&&e<a.length;e++){var i;let t=(i=a[e])==null?void 0:i.value;if(t==null)continue;let o=Array.isArray(t)?t.filter(e=>e!==null):[t];for(let e of o)isFinite(e)&&(e<n&&(n=e),e>r&&(r=e))}}let a=(n+r)/2+this.pricePanOffset,o=n===r?1:(r-n)/2;return{min:a-o*this.priceScaleFactor,max:a+o*this.priceScaleFactor}}touchToDrawingPoint(e){var t,n;let r=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t,i=e.clientX-r.left,a=e.clientY-r.top,{chartW:o,priceH:s}=this.getChartLayout(),c=(n=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):n;return this.makeDrawingPoint(this.scaleManager.pixelToBarIndex(i,this.viewport,o),this.scaleManager.pixelToPrice(a,c,s))}makeDrawingPoint(e,t){let n={barIndex:e,price:t},r=this.barIndexToTimestamp(e);return r!=null&&(n.timestamp=r),n}_handleTradeLevelClose(e){if(e.bracketType){var t,n;let r=this.levels.find(t=>t.label===e.label);if((r==null||(t=r.data)==null?void 0:t._isDraft)===!0&&r){let t=e.bracketType===`stopLoss`?`sl`:`tp`;this.updateDraftOrderBracket(t,null),this.emitter.emit(`tradeLevelEdit`,{label:e.label,type:`pending`,data:r.data,isFullscreen:this.isFullscreen,changes:[{field:e.bracketType===`stopLoss`?`REMOVE_SL`:`REMOVE_TP`,newPrice:0,data:r.data,bracketOrderLabel:void 0}]});return}let i=e.bracketType,a=((n=this.pendingLevelDrags.get(e.label))==null?[]:n).filter(e=>e.field!==i);a.push({field:i,newPrice:0,oldPrice:0,isRemoval:!0,bracketOrderLabel:e.bracketOrderLabel}),this.pendingLevelDrags.set(e.label,a),this.selectedTradeLabel=e.label,this.renderTradeLayer();return}let r=e.label===this.draftOrderLabel,i=this.pendingLevelDrags.get(e.label),a=this._editOpenLabel===e.label,o=!!i&&i.length>0&&i.every(e=>e.isNew),s=!i||i.length===0,c=!r&&a&&(o||s);if(this.revertPendingChanges(e.label),this.pendingLevelDrags.delete(e.label),r)return;if(c){if(s){let t=this.levels.find(t=>t.label===e.label);this._editOpenLabel=null,this.selectedTradeLabel=null,this.renderTradeLayer(),t&&this.emitter.emit(`tradeLevelEditCancelled`,{label:e.label,type:t.type,isFullscreen:this.isFullscreen})}return}this._editOpenLabel===e.label&&(this._editOpenLabel=null);let l=this.levels.find(t=>t.label===e.label),u=(l==null?void 0:l.type)===`position`&&!!l.entryPriceEditable,d=e.type===`position`&&!u?`CLOSED`:`CANCELLED`;this.emitter.emit(`tradeLevelClose`,{label:e.label,type:e.type,action:d,data:e.data,isFullscreen:this.isFullscreen})}_activateMobileCrosshair(e,t){var n,r,i;if(!this.crosshairEnabled)return;let a=(n=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():n,{chartW:o,priceH:s}=this.getChartLayout(),c=(r=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):r,l=a.height-this.timeAxisHeight;if(e>=o||t>=l)return;this._mobileCrosshairActive=!0;let u=this.scaleManager.pixelToBarIndex(e,this.viewport,o),d=this.scaleManager.pixelToPrice(t,c,s),f=Math.max(Math.floor(this.viewport.startIndex),Math.min(Math.ceil(this.viewport.endIndex),Math.round(u))),p=(i=this.dataStore.all[f])==null?null:i;this.crosshair=this.selectedTradeLabel===null&&this.crosshairEnabled?{x:e,y:t,barIndex:f,price:d,bar:p}:null,this.tradeButton&&(this.tradeButton.setY(t),this._isTradingActive||!this.crosshairEnabled||qt(t,this.uiConfig.tradeButton.size/2,this.offViewportHitAreas)?this.tradeButton.hide():this.tfcActive&&this.tradeButton.show(),this._tradeButtonClickData={price:d,y:t}),this.scheduleRender()}_cancelEditAndDeselect(e){let t=this._editOpenLabel===e,n=this.levels.find(t=>t.label===e);this._editOpenLabel=null,this.selectedTradeLabel=null,this.draftBracketPnl={},this.renderTradeLayer(),t&&n&&this.emitter.emit(`tradeLevelEditCancelled`,{label:e,type:n.type,isFullscreen:this.isFullscreen})}_openTradeLevelEditForm(e){if(this._editOpenLabel===e.label)return;this.selectedTradeLabel=e.label,this._editOpenLabel=e.label;let{slPrice:t,tpPrice:n}=this._resolveBracketPrices(e);this.renderTradeLayer(),this.emitter.emit(`tradeLevelEditOpen`,{label:e.label,type:e.type,data:e.data,price:e.price,side:e.side,stopLossPrice:t,takeProfitPrice:n,isFullscreen:this.isFullscreen})}_needsDragAxisLock(e,t){return this._orderTimeDragEnabled&&!e.isBracket&&e.timeDrag===!0&&ut(t)}_upgradePendingTradeDrag(e,t){let r=this._pendingTradeDrag;if(!r)return!1;let i=bu.resolveDragAxis(e-r.startX,t-r.startY,r.axisLock?n.AXIS_LOCK_PIXEL_THRESHOLD:n.TRADE_DRAG_PIXEL_THRESHOLD);if(i===null)return!1;this._pendingTradeDrag=null;let a=r.axisLock&&i===`price`?{...r.dragHit,timeDrag:!1}:r.dragHit;return this._startTradeDragFromHit(a,r.level,r.hitY,r.startX),!0}_startTradeDragFromHit(e,t,n,r){var i;if(!this.tradeDragHandler)return;if(this._orderTimeDragEnabled&&this.orderTimeDragHandler&&!e.isBracket&&e.timeDrag===!0){var a,o,s;let{chartW:n}=this.getChartLayout(),i=e,c=(a=this._orderLineAnchorX(t,n))==null?n/2:a,l=Math.max(i.x,Math.min(i.x+i.w,c)),u=this.scaleManager.pixelToBarIndex(l,this.viewport,n),d=(o=(s=this._resolvedTimeAnchor(t))==null?this.barIndexToTimestamp(u):s)==null?0:o;this.orderTimeDragHandler.start(t,r==null?l:r,l,u,d),this.drawCanvas.style.cursor=`grabbing`,this.emitter.emit(`orderLineMoveStart`,{label:t.label,fromTimestamp:d,fromBarIndex:this.orderTimeDragHandler.startBarIndex,isFullscreen:this.isFullscreen}),this.renderTradeLayer();return}let{priceH:c}=this.getChartLayout(),l=(i=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):i,u=this.scaleManager.yToPixel(e.price,l,c);if(e.isBracket){var d,f,p,m;this._pendingBracketOrderLabel=(d=e.bracketOrderLabel)==null?null:d,this._isBracketNew=!1;let r=t.entryPriceEditable===!0,i=((f=t.data)==null?void 0:f._isDraft)===!0,a=this.dataStore.all,o=t.type===`position`&&!r&&!i?(p=(m=a[a.length-1])==null?void 0:m.close)==null?0:p:0;this.tradeDragHandler.startBracketDrag(t,e.bracketType,e.price,n,u,o,this._effectiveEntryPrice(t.label,t.price)),this.emitter.emit(`tradeLevelDragStart`,{label:t.label,bracketType:e.bracketType,isFullscreen:this.isFullscreen})}else if(this._pendingBracketOrderLabel=null,t.entryPriceEditable===!0){var h,g;this.selectedTradeLabel=e.label;let r=t,i=this.dataStore.all,a=(h=(g=i[i.length-1])==null?void 0:g.close)==null?0:h,o=this._effectiveBracketPrice(t.label,`stopLoss`,r.stopLossPrice),s=this._effectiveBracketPrice(t.label,`takeProfit`,r.takeProfitPrice);this.tradeDragHandler.startDrag(t,n,u,e.price,o,s,r.side,a,r.orderType,!0)}else{var _,v;let r=t,i=this.dataStore.all,a=(_=(v=i[i.length-1])==null?void 0:v.close)==null?0:_,{slPrice:o,tpPrice:s,slSiblingLabel:c,tpSiblingLabel:l}=this._resolveBracketPrices(t);this._slSiblingOrderLabel=c==null?null:c,this._tpSiblingOrderLabel=l==null?null:l;let d=this._effectiveBracketPrice(t.label,`stopLoss`,o),f=this._effectiveBracketPrice(t.label,`takeProfit`,s);this.tradeDragHandler.startDrag(t,n,u,e.price,d,f,r.side,a,r.orderType,!0)}e.isBracket&&(this._editOpenLabel=null),this._openTradeLevelEditForm(t)}_endOrderTimeDrag(){var e;if(!((e=this.orderTimeDragHandler)!=null&&e.active))return!1;let t=this.orderTimeDragHandler.end(this._orderLineDragSnap,this.viewport);if(this.tradeDragNewBarIndex=null,this.drawCanvas.style.cursor=`default`,t){let e=this.barIndexToTimestamp(t.newBarIndex),r=Math.round(t.startBarIndex);if(e!==void 0&&t.newBarIndex!==r){var n;this._timeAnchorOverride.set(t.label,e),(n=this._orderLineAnchorStore)==null||n.set(t.label,e),this.emitter.emit(`orderLineMoved`,{label:t.label,fromTimestamp:t.startTimestamp,toTimestamp:e,fromBarIndex:r,toBarIndex:t.newBarIndex,data:t.data,isFullscreen:this.isFullscreen})}}return this.renderTradeLayer(),!0}_startAddBracketFromHit(e,t){var n,r,i;let a=this.levels.find(t=>t.label===e.label);if(!a||!this.tradeDragHandler)return;let{priceH:o}=this.getChartLayout(),s=this.getScaledPriceRange(this.viewport),c=e.y+e.h/2,l=this.scaleManager.pixelToPrice(c,s,o),u=a.entryPriceEditable===!0,d=((n=a.data)==null?void 0:n._isDraft)===!0,f=this.dataStore.all,p=a.type===`position`&&!u&&!d?(r=(i=f[f.length-1])==null?void 0:i.close)==null?0:r:0;this._pendingBracketOrderLabel=null,this._isBracketNew=!0,this.tradeDragHandler.startBracketDrag(a,e.bracketType,l,t,c,p,this._effectiveEntryPrice(a.label,a.price)),this.emitter.emit(`tradeLevelDragStart`,{label:a.label,bracketType:e.bracketType,isFullscreen:this.isFullscreen})}showTextInput(e){var t;if(!this.textInputEl)return;this.textInputDrawing=e;let{chartW:n,priceH:r}=this.getChartLayout(),i=this.getScaledPriceRange(this.viewport),a,o;if(e.type===`text`)a=this.scaleManager.xToPixel(e.points[0].barIndex,this.viewport,n),o=this.scaleManager.yToPixel(e.points[0].price,i,r);else{var s;let t=(s=e.points[1])==null?e.points[0]:s;a=this.scaleManager.xToPixel(t.barIndex,this.viewport,n)-30,o=this.scaleManager.yToPixel(t.price,i,r)-10}let c=this.textInputEl;c.value=(t=e.text)==null?``:t,c.style.left=`${Math.max(0,a)}px`,c.style.top=`${Math.max(0,o)}px`,c.style.display=`block`,this.drawingManager.setEditingText(!0),c.focus(),c.select();let l=()=>{c.removeEventListener(`keydown`,d),c.removeEventListener(`blur`,f),this.commitTextInput()},u=()=>{c.removeEventListener(`keydown`,d),c.removeEventListener(`blur`,f),this.cancelTextInput()},d=e=>{e.key===`Enter`?(e.preventDefault(),l()):e.key===`Escape`&&(e.preventDefault(),u())},f=()=>l();c.addEventListener(`keydown`,d),c.addEventListener(`blur`,f,{once:!0})}commitTextInput(){var e,t;!this.textInputEl||!this.textInputDrawing||(this.textInputDrawing.text=this.textInputEl.value,this.textInputEl.style.display=`none`,this.textInputDrawing=null,this.drawingManager.setEditingText(!1),(e=(t=this.drawingManager).onDrawingsChange)==null||e.call(t),this.scheduleRender())}cancelTextInput(){this.textInputEl&&(this.textInputEl.style.display=`none`,this.textInputDrawing=null,this.drawingManager.setEditingText(!1),this.scheduleRender())}setDotTickActive(){this.siStreamDot&&(this.tickActivityTimer!==null&&clearTimeout(this.tickActivityTimer),this.siStreamDot.style.background=this.theme.candle.up,this.tickActivityTimer=setTimeout(()=>{this.tickActivityTimer=null,this.siStreamDot&&(this.siStreamDot.style.background=this.theme.ui.stream[this.streamStatus])},this.tickActivityMs))}fillTickGap(e,t){if(!this.dataLoader||this.isFetching)return;let n=this.timeframeToInterval(this.getBaseInterval());this.dataLoader({start:new Date(e),end:new Date(t),interval:n,priceSource:this.tickClosePriceSource}).then(e=>{let t=this.maybeAggregate(e);if(t.length===0)return;this.backfillDrawingTimestamps();let n=this.dataStore.all,r=n[n.length-1],i=0;for(let e of t){if(e.time>=r.time)continue;let t=n.findIndex(t=>t.time===e.time);if(t!==-1)n[t]=e;else{let t=n.findIndex(t=>t.time>e.time);n.splice(t===-1?n.length-1:t,0,e),i++}}i>0&&(this.viewport={...this.viewport,startIndex:this.viewport.startIndex+i,endIndex:this.viewport.endIndex+i},this.reanchorDrawingsByTimestamp(),this.recomputeIndicators(),this.scheduleRender())}).catch(()=>{})}correctCompletedBar(e,t){if(!this.dataLoader||this.isFetching)return;let n=new Date(e),r=new Date(e+t*3),i=this.timeframeToInterval(this.getBaseInterval());this.dataLoader({start:n,end:r,interval:i,priceSource:this.tickClosePriceSource}).then(e=>{let t=this.maybeAggregate(e);if(t.length===0)return;let n=this.dataStore.all,r=n.length-1,i=!1;for(let e of t){let t=n.findIndex(t=>t.time===e.time);t!==-1&&t!==r&&(n[t]=e,i=!0)}i&&(this.recomputeIndicators(),this.scheduleRender())}).catch(()=>{})}setLayoutIcon(e,t=!0){var n;return(n=this.advancedToolbar)==null||n.setLayoutPresetIcon(e,t),this}setDebug(e){return this._debug=e,this}correctBar(e,t){let n=this.dataStore.all,r=n.findIndex(t=>t.time===e);r!==-1&&(n[r]=t,this.recomputeIndicators(),this.scheduleRender())}scrollToEnd(){this.panHandler.cancel(),this.scrollAnimId!==null&&(cancelAnimationFrame(this.scrollAnimId),this.scrollAnimId=null);let e=this.viewport.endIndex-this.viewport.startIndex,t=this.dataStore.length+Ld,n=this.viewport.endIndex,r=this.pricePanOffset,i=performance.now(),a=e=>e<.5?2*e*e:-1+(4-2*e)*e,o=s=>{let c=Math.min((s-i)/350,1),l=a(c),u=n+(t-n)*l;this.viewport={...this.viewport,startIndex:u-e,endIndex:u},this._targetViewport={...this.viewport},this.pricePanOffset=r*(1-l),this.render(),c<1?this.scrollAnimId=requestAnimationFrame(o):this.scrollAnimId=null};this.scrollAnimId=requestAnimationFrame(o)}scrollToCenterPrice(e){if(!isFinite(e)||this.dataStore.length===0)return;this.scrollAnimId!==null&&(cancelAnimationFrame(this.scrollAnimId),this.scrollAnimId=null);let t=this.dataStore.getPriceRange(this.viewport),n=(t.min+t.max)/2,r=this.pricePanOffset,i=e-n;if(Math.abs(i-r)<1e-9)return;let a=performance.now(),o=e=>e<.5?2*e*e:-1+(4-2*e)*e,s=e=>{let t=Math.min((e-a)/350,1),n=o(t);this.pricePanOffset=r+(i-r)*n,this.render(),t<1?this.scrollAnimId=requestAnimationFrame(s):this.scrollAnimId=null};this.scrollAnimId=requestAnimationFrame(s)}_revealPrices(e){var t;if(this.dataStore.length===0||this._lastInCompareMode)return;let{priceH:n}=this.getChartLayout(),r=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):t,i=Cu(r,e,n);if(!i)return;this.scrollAnimId!==null&&(cancelAnimationFrame(this.scrollAnimId),this.scrollAnimId=null),this._lockedAutoFitBase||(this._lockedAutoFitBase={...r});let{factor:a,panOffset:o}=wu(this._lockedAutoFitBase,i),s=this.priceScaleFactor,c=this.pricePanOffset;if(Math.abs(a-s)<1e-9&&Math.abs(o-c)<1e-9)return;let l=performance.now(),u=e=>e<.5?2*e*e:-1+(4-2*e)*e,d=e=>{let t=Math.min((e-l)/350,1),n=u(t);this.priceScaleFactor=s+(a-s)*n,this.pricePanOffset=c+(o-c)*n,this.render(),t<1?this.scrollAnimId=requestAnimationFrame(d):(this.scrollAnimId=null,this.scheduleViewportPersist())};this.scrollAnimId=requestAnimationFrame(d)}_currentMarketPrice(){var e,t;let n=this.liveBidAsk;if(n)return n.ask||n.bid;let r=this.dataStore.all;return(e=(t=r[r.length-1])==null?void 0:t.close)==null?0:e}resetPriceAxis(){this.priceScaleFactor=1,this.pricePanOffset=0,this._lockedAutoFitBase=null,this.scheduleRender()}resetTimeAxis(){this.panHandler.cancel();let e=this.dataStore.length;if(e===0)return;let t=Id(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars);this._defaultVisibleBars=t;let n=Math.max(0,e-t+Ld);this.viewport={...this.viewport,startIndex:n,endIndex:e+Ld},this._targetViewport={...this.viewport},this.scheduleRender()}resetView(){this.resetPriceAxis(),this.resetTimeAxis()}applyOverlayLabelStyles(){for(let e of[this.loadingLabelEl,this.noDataLabelEl])e&&Object.assign(e.style,{color:this.theme.tooltip.text,background:this.theme.tooltip.background,border:`1px solid ${this.theme.tooltip.border}`})}applyResetViewBtnStyles(){this.resetViewBtn&&(this.resetViewBtn.innerHTML=Tn(this.theme.axisText,16),Object.assign(this.resetViewBtn.style,{position:`absolute`,bottom:`${this.timeAxisHeight+8}px`,left:`50%`,transform:`translateX(-50%)`,zIndex:`100`,width:`32px`,height:`32px`,padding:`0`,display:`flex`,alignItems:`center`,justifyContent:`center`,backgroundColor:this.theme.background,border:`1px solid ${this.theme.axisBorder}`,borderRadius:`50%`,cursor:`pointer`,outline:`none`,boxShadow:`0 2px 6px rgba(0,0,0,0.25)`,opacity:`0`,pointerEvents:`none`,transition:`opacity 0.2s ease`}))}applyScrollToEndBtnStyles(){if(!this.scrollToEndBtn)return;let e=this.theme.ui.scrollToEndBtnBg,t=e?`#ffffff`:this.theme.axisText,n=e==null?this.theme.background:e,r=e==null?this.theme.axisBorder:e;this.scrollToEndBtn.innerHTML=wn(t,16),Object.assign(this.scrollToEndBtn.style,{position:`absolute`,bottom:`${this.timeAxisHeight+8}px`,right:`${this.priceAxisWidth+8}px`,zIndex:`100`,width:`32px`,height:`32px`,padding:`0`,display:`flex`,alignItems:`center`,justifyContent:`center`,backgroundColor:n,border:`1px solid ${r}`,borderRadius:`50%`,cursor:`pointer`,outline:`none`,boxShadow:`0 2px 6px rgba(0,0,0,0.25)`,opacity:`0`,pointerEvents:`none`,transition:`opacity 0.2s ease`})}};_d=Bd,_d.DRAW_GESTURE_THRESHOLD=4,_d.TOUCH_HANDLE_SLOP_PX=18,_d.TRADE_DRAG_PIXEL_THRESHOLD=3,_d.AXIS_LOCK_PIXEL_THRESHOLD=6;var Q=null,Vd=new Map,Hd=new Map,Ud=0;function Wd(){return`dr_${Date.now()}_${Ud++}`}function Gd(){return`cr_${Date.now()}_${Ud++}`}function $(e,t){var n;let r=JSON.stringify({type:e,payload:t});window.ChartAndroidBridge?window.ChartAndroidBridge.postMessage(r):!((n=window.webkit)==null||(n=n.messageHandlers)==null)&&n.chartBridge?window.webkit.messageHandlers.chartBridge.postMessage(r):window.ReactNativeWebView&&window.ReactNativeWebView.postMessage(r)}function Kd(e={}){var t;Q==null||Q.destroy();let n=document.getElementById(`chart`),{enableTrading:r,onSymbolClick:i,onAskAiClick:a,orderLineTimeDrag:o,enableForecasting:s,...c}=e,l={...c.features,...o?{orderLineTimeDrag:!0}:{},...s?{enableForecasting:!0}:{}},u=(t=c.timeframe)==null?`1D`:t;Q=new Bd({theme:`dark`,...c,...Object.keys(l).length>0?{features:l}:{},container:n,dataLoader:e=>{for(let[,e]of Vd)e.reject(Error(`cancelled`));Vd.clear();let t=Wd(),n=Q==null?void 0:Q.getState();return new Promise((r,i)=>{var a;Vd.set(t,{resolve:r,reject:i}),$(`dataRequest`,{requestId:t,timeframe:(a=n==null?void 0:n.timeframe)==null?u:a,interval:e.interval,start:e.start.getTime(),end:e.end.getTime(),priceSource:e.priceSource})})},compareDataLoader:e=>{let t=Gd(),n=Q==null?void 0:Q.getState();return new Promise((r,i)=>{var a;Hd.set(t,{resolve:r,reject:i}),$(`compareDataRequest`,{requestId:t,symbol:e.symbol,timeframe:(a=n==null?void 0:n.timeframe)==null?u:a,interval:e.interval,start:e.start.getTime(),end:e.end.getTime()})})},...r?{onOrderSubmit:e=>{var t;$(`placeOrder`,{price:e.price,side:e.side,orderType:(t=e.orderType)==null?`limit`:t})}}:{},...i?{onSymbolClick:e=>{$(`symbolClick`,{symbol:e})}}:{},...a?{onAskAiClick:()=>{$(`askAiClick`,{})}}:{}}),Q.on(`timeframeChange`,({timeframe:e})=>{u=e}),Q.on(`crosshair`,e=>$(`crosshair`,e)),Q.on(`click`,e=>$(`barClick`,e)),Q.on(`zoom`,({viewport:e})=>$(`viewportChange`,{viewport:e})),Q.on(`pan`,({viewport:e})=>$(`viewportChange`,{viewport:e})),Q.on(`seriesChange`,e=>$(`seriesChange`,e)),Q.on(`priceSourceChange`,e=>$(`priceSourceChange`,e)),Q.on(`timeframeChange`,e=>$(`timeframeChange`,e)),Q.on(`durationChange`,e=>$(`durationChange`,e)),Q.on(`stateChange`,e=>$(`stateChange`,e)),Q.on(`dataLoaded`,e=>$(`dataLoaded`,e)),Q.on(`newBar`,e=>$(`newBar`,e)),Q.on(`streamStatus`,e=>$(`streamStatus`,e)),Q.on(`tradeLevelClose`,e=>$(`tradeLevelClose`,e)),Q.on(`tradeLevelDrag`,e=>$(`tradeLevelDrag`,e)),Q.on(`tradeLevelDragStart`,e=>$(`tradeLevelDragStart`,e)),Q.on(`tradeLevelEdit`,e=>$(`tradeLevelEdit`,e)),Q.on(`tradeLevelQtyChange`,e=>$(`tradeLevelQtyChange`,e)),Q.on(`tradeLevelConfirmed`,e=>$(`tradeLevelConfirmed`,e)),Q.on(`tradeLevelEditOpen`,e=>$(`tradeLevelEditOpen`,e)),Q.on(`tradeLevelBracketActivated`,e=>$(`tradeLevelBracketActivated`,e)),Q.on(`draftInitiated`,e=>$(`draftInitiated`,e)),Q.on(`draftCancelled`,e=>$(`draftCancelled`,e)),Q.on(`uiStateChange`,e=>$(`uiStateChange`,e)),Q.on(`orderLineMoveStart`,e=>$(`orderLineMoveStart`,e)),Q.on(`orderLineMoving`,e=>$(`orderLineMoving`,e)),Q.on(`orderLineMoved`,e=>$(`orderLineMoved`,e)),Q.on(`crosshairToggle`,e=>$(`crosshairToggle`,e)),Q.on(`compareAdded`,e=>$(`compareAdded`,e)),Q.on(`compareRemoved`,e=>$(`compareRemoved`,e)),Q.on(`compareError`,e=>$(`compareError`,e)),Q.on(`indicatorAdded`,e=>$(`indicatorAdded`,e)),Q.on(`indicatorRemoved`,e=>$(`indicatorRemoved`,e))}function qd(e){if(e.type===`init`){Kd(e.payload);return}if(!Q){$(`error`,{message:`Engine not initialized. Send an "init" command first.`});return}switch(e.type){case`loadData`:Q.loadData(e.payload.bars,e.payload.fitAll);break;case`pushTick`:Q.pushTick(e.payload);break;case`setTheme`:Q.setTheme(e.payload.theme);break;case`setTimezone`:Q.setTimezone(e.payload.timezone);break;case`setShowLtpPrice`:Q.setShowLtpPrice(e.payload.show);break;case`setShowAskLine`:Q.setShowAskLine(e.payload.show);break;case`setShowBidLine`:Q.setShowBidLine(e.payload.show);break;case`setTickClosePriceSource`:Q.setTickClosePriceSource(e.payload.source);break;case`setLayoutSync`:Q.setLayoutSync(e.payload);break;case`setCrosshairEnabled`:Q.setCrosshairEnabled(e.payload.enabled===!0);break;case`setSeries`:Q.setSeries(e.payload.series);break;case`setDuration`:Q.setDuration(e.payload.duration,e.payload.timeframe);break;case`setTimeframe`:Q.setTimeframe(e.payload.timeframe);break;case`setSymbol`:Q.setSymbol(e.payload.symbol);break;case`setInstrument`:Q.setInstrument(e.payload.instrument);break;case`setAccount`:Q.setAccount(e.payload.account);break;case`addIndicator`:Q.addIndicatorByName(e.payload.shortName,e.payload.params);break;case`removeIndicator`:Q.removeIndicator(e.payload.name);break;case`setDrawingTool`:Q.setDrawingTool(e.payload.tool);break;case`clearAllDrawings`:Q.clearAllDrawings();break;case`getState`:$(`stateSnapshot`,Q.getState());break;case`setState`:Q.setState(e.payload);break;case`resolveDataRequest`:{let t=Vd.get(e.payload.requestId);t&&(Vd.delete(e.payload.requestId),t.resolve(e.payload.bars));break}case`setDebug`:Q.setDebug(e.payload.enabled);break;case`destroy`:Q.destroy(),Q=null;break;case`setLevels`:Q.setLevels(e.payload.levels,e.payload.labelKey,e.payload.priceKey,e.payload.type,e.payload.pnlKey,e.payload.pnlTextKey);break;case`removeLevelByLabel`:Q.removeLevelByLabel(e.payload.label);break;case`updateLevelMainPrice`:Q.updateLevelMainPrice(e.payload.label,e.payload.price);break;case`updateLevelQty`:Q.updateLevelQty(e.payload.label,e.payload.qty);break;case`updateLevelBracket`:Q.updateLevelBracket(e.payload.label,e.payload.bracketType.toLowerCase(),e.payload.price);break;case`addLevelBracket`:Q.addLevelBracket(e.payload.label,e.payload.bracketType.toLowerCase());break;case`addBracket`:Q.addBracket(e.payload.bracketType.toLowerCase(),e.payload.label);break;case`removeBracket`:Q.removeBracket(e.payload.bracketType.toLowerCase(),e.payload.label);break;case`cancelLevelEdit`:Q.cancelLevelEdit(e.payload.label);break;case`selectLevel`:Q.selectLevel(e.payload.label);break;case`showDraftOrder`:Q.showDraftOrder(e.payload.price,e.payload.side,e.payload.orderType);break;case`showMarketDraft`:Q.showMarketDraft(e.payload.price,e.payload.side);break;case`clearDraftOrder`:Q.clearDraftOrder();break;case`cancelCurrentEdit`:Q.cancelCurrentEdit();break;case`updateDraftOrderPrice`:Q.updateDraftOrderPrice(e.payload.price);break;case`updateDraftOrderBracket`:Q.updateDraftOrderBracket(e.payload.bracketType,e.payload.price);break;case`setBracketLabelMode`:Q.setBracketLabelMode(e.payload.mode,e.payload.currencySymbol);break;case`setDraftBracketPnl`:Q.setDraftBracketPnl(e.payload.bracketType,e.payload.pnlText);break;case`setVolume`:Q.setVolume(e.payload.show);break;case`setIsins`:Q.setIsins(e.payload.isins);break;case`resetView`:Q.resetView();break;case`resetData`:Q.resetData();break;case`setLoading`:Q.setLoading(e.payload.loading);break;case`setThemeOverrides`:Q.setThemeOverrides(e.payload.overrides);break;case`setCanvasColors`:var t;Q.setCanvasColors((t=e.payload.colors)==null?null:t);break;case`correctBar`:Q.correctBar(e.payload.barTime,e.payload.bar);break;case`dismissAllUI`:Q.dismissAllUI();break;case`addCompare`:Q.addCompare(e.payload.symbol);break;case`removeCompare`:Q.removeCompare(e.payload.symbol);break;case`clearCompares`:Q.clearCompares();break;case`resolveCompareDataRequest`:{let t=Hd.get(e.payload.requestId);t&&(Hd.delete(e.payload.requestId),t.resolve(e.payload.bars));break}}}document.addEventListener(`DOMContentLoaded`,()=>{window.ChartBridge={send(e){let t;try{t=JSON.parse(e)}catch(t){$(`error`,{message:`Invalid JSON: ${e}`});return}try{qd(t)}catch(e){$(`error`,{message:String(e)})}}},$(`ready`,{})})})();</script>
|
|
279
279
|
</body>
|
|
280
280
|
</html>
|