acttrader-charts 1.3.0-beta.27 → 1.3.0-beta.28
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/webview/chart.html +1 -1
- package/package.json +1 -1
package/dist/webview/chart.html
CHANGED
|
@@ -315,6 +315,6 @@
|
|
|
315
315
|
.${C_}:hover,
|
|
316
316
|
.${C_}:focus-visible { text-decoration: underline; }
|
|
317
317
|
.${C_}:focus { outline: none; }
|
|
318
|
-
`,document.head.appendChild(e)}function T_(){return typeof window<`u`&&(`ontouchstart`in window||navigator.maxTouchPoints>1)}function E_(e=2,t=!1,n=y_,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&&!T_()?n:r===void 0?Math.max(10,Math.round(n/e)):r}var D_=4;function O_(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 k_(e){let t=e.max-e.min;return t>=100?0:t>=10?1:t>=1?2:t>=.1?3:4}function A_(e){if(!e)return{};let t={};return e.lastPriceLabel!==void 0&&(t.lastPriceLabel=e.lastPriceLabel),e.bidLabel!==void 0&&(t.bidLabel=e.bidLabel),e.askLabel!==void 0&&(t.askLabel=e.askLabel),e.highLowLabels!==void 0&&(t.highLowLabels=e.highLowLabels),e.timeAxisCountdown!==void 0&&(t.timeAxisCountdown=e.timeAxisCountdown),t}var j_=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,s,c,l,u,d,p,m,h,_,v,y,b,C,w,T,E,D,O,k,A,j,M,P,I,L,R,ee,z,te,re,ie,oe,se,ce,le,ue,B,de,fe,pe,me,he;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={...Ni},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.indicatorTemplatesEnabled=!1,this.indicatorTemplateList=[],this.settingsTemplatesEnabled=!1,this.settingsTemplateList=[],this.savedLayoutsEnabled=!1,this.savedLayoutList=[],this.quickSearchEnabled=!1,this.quickSearchShowButton=!1,this.quickSearch=null,this.hostCommands=[],this.allowedTimeframes=null,this.seriesOptions={},this.cursorMode=`cross`,this.magnetMode=!1,this.keepDrawingMode=!1,this.drawingToolbarVisible=!0,this.copyDrawingsToAll=!1,this.pricePrecisionOverride=null,this.barColorSource=`open`,this.sidePanel=null,this.middleRow=null,this.priceScaleMode=`normal`,this.autoScaleEnabled=!0,this.autoScaleLock=null,this._lastPercentMode=!1,this.statusLineSettings={},this.scalesSettings={},this.canvasOptions={},this.pendingIconGlyph=`⭐`,this.pendingIconKind=`emoji`,this.demoTrail=[],this.valueTooltipEnabled=!1,this.valueTooltip=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=y_,this.dataStore=new t,this.scaleManager=new r,this.emitter=new f,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={...ut},this.levelClusteringEnabled=!0,this.clusterThresholdDistance=20,this.enableThemeToggle=!1,this.activeIndicators=[],this.indicatorInstanceSeq=0,this.indicatorResults=new Map,this.viewport={startIndex:0,endIndex:E_(),candleWidth:8,candleGap:2},this._targetViewport={startIndex:0,endIndex:E_(),candleWidth:8,candleGap:2},this._isPanning=!1,this.crosshair=null,this.drawingManager=new vd,this.textInputEl=null,this.textAreaEl=null,this.textInputDrawing=null,this._pendingDrawDrag=null,this._pendingDrawResize=null,this._pendingTradeDrag=null,this.paneHeightOverrides=new Map,this.separatorDrag=null,this.priceAxisWidth=m_,this.timeAxisHeight=h_,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={...Ri},this.minInitialBars=10,this.maxLookbackMs=365*24*60*60*1e3,this.prefetchThreshold=80,this.defaultVisibleBars=y_,this.defaultMobileVisibleBars=void 0,this.mobileBarDivisor=2,this.explicitMobileDivisor=!1,this._autoVisibleBars=!0,this.targetCandleWidth=b_,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.onPointerEnter=()=>{this._cachedWrapRect=null,this._cachedDrawRect=null},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;g&&this.recordDemoTrail(u,d);let _=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),ln(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),u,d),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(Ve(u,d,this.clusterBadgeAreas)||Ht(u,d,this.tradeLevelHitAreas)||Ut(u,d,this.tradeLevelEditAreas)||Wt(u,d,this.tradeLevelConfirmAreas)||cn(u,d,this.offViewportHitAreas)){this.drawCanvas.style.cursor=`pointer`,this.scheduleRender();return}let e=Kt(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=Gt(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.drawingContext());this.drawCanvas.style.cursor=e?`move`:this.idleCursor()}}}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=this.idleCursor(),this.renderTradeLayer();return}if(this.axisDrag){let e=this.axisDrag.axis===`price`||this.axisDrag.axis===`time`;this.axisDrag=null,this.drawCanvas.style.cursor=this.idleCursor(),this.scheduleRender(),e&&this.scheduleViewportPersist()}if(this.separatorDrag&&(this.separatorDrag=null,this.drawCanvas.style.cursor=this.idleCursor(),this.scheduleRender()),this._pendingDrawDrag=null,this._pendingDrawResize=null,this.drawingManager.isDraggingDrawing()&&(this.drawingManager.endDrag(),this.drawCanvas.style.cursor=this.idleCursor(),this.scheduleRender()),this.drawingManager.isResizingDrawing()){var r;this.drawingManager.endResize(),(r=this.drawingStylePopover)==null||r.refresh(),this.drawCanvas.style.cursor=this.idleCursor(),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+v_;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+v_}}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,this.drawingContext());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 _=Ve(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=cn(c,l,this.offViewportHitAreas);if(v){e.preventDefault(),this.panHandler.cancel(),this.scrollToCenterPrice(v.targetPrice);return}let y=Wt(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=Ht(c,l,this.tradeLevelHitAreas);if(b){e.preventDefault(),this._handleTradeLevelClose(b);return}if(!this.drawingManager.getActiveTool()){let t=Ut(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=Kt(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=qt(c,l,this.tradeAddBracketAreas);if(t){e.preventDefault(),this._startAddBracketFromHit(t,l),this.scheduleRender();return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let t=Gt(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]),i=this.touchToPixels(e.touches[0]);if(this._lastDrawingTouchPoint=r,this.axisDrag){var a;e.preventDefault();let t=e.touches[0],n=(a=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():a,r=t.clientX-n.left,i=t.clientY-n.top;if(this.axisDrag.axis===`price`){let e=i-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=i-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,i.x,i.y),this.scheduleRender();return}if(this.drawingManager.isDraggingDrawing()||this.drawingManager.isResizingDrawing()){e.preventDefault(),e.stopPropagation(),this.drawingManager.onMouseMove(r,i.x,i.y),this.scheduleRender();return}if(this._pendingTradeDrag){var o;e.preventDefault();let t=e.touches[0],n=(o=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():o;if(!this._upgradePendingTradeDrag(t.clientX-n.left,t.clientY-n.top))return}if((t=this.orderTimeDragHandler)!=null&&t.active){var s;e.preventDefault();let t=e.touches[0],n=(s=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():s,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 o=this.orderTimeDragHandler.dragLabel,c=a===null?void 0:this.barIndexToTimestamp(a);o&&a!==null&&c!==void 0&&this.emitter.emit(`orderLineMoving`,{label:o,toTimestamp:c,toBarIndex:a,isFullscreen:this.isFullscreen});return}if((n=this.tradeDragHandler)!=null&&n.active){var c,l,u,d,f;e.preventDefault();let t=e.touches[0],n=(c=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():c,r=t.clientY-n.top,{priceH:i}=this.getChartLayout(),a=(l=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):l,o=this.tradeDragHandler.onMouseMove(r,this.scaleManager,a,i);if(this.tradeDragNewPrice=(u=o==null?void 0:o.newPrice)==null?null:u,this.tradeDragNewSLPrice=(d=o==null?void 0:o.derivedSLPrice)==null?null:d,this.tradeDragNewTPPrice=(f=o==null?void 0:o.derivedTPPrice)==null?null:f,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 p,m;let t=e.touches[0],n=(p=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():p,r=(m=this._mobileTapStartXY)==null?this._longPressPoint:m;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 h,g;e.preventDefault();let t=e.touches[0],n=(h=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():h,r=t.clientX-n.left,i=t.clientY-n.top,{chartW:a,priceH:o}=this.getChartLayout(),s=(g=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):g,c=n.height-this.timeAxisHeight;if(r<a&&i<c){var _;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=(_=this.dataStore.all[n])==null?null:_;this.crosshair=this.selectedTradeLabel===null?{x:r,y:i,barIndex:n,price:t,bar:c}:null,this.tradeButton&&(this.tradeButton.setY(i),this._isTradingActive||ln(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()){var a;this.drawingManager.endResize(),(a=this.drawingStylePopover)==null||a.refresh(),this.scheduleRender()}if(this._mobileTapStartXY){var o,s;this._mobileTapStartXY=null,this._mobileCrosshairActive=!1,this.crosshair=null,(o=this.valueTooltip)==null||o.hide(),(s=this.tradeButton)==null||s.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=Ve(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=cn(i,a,this.offViewportHitAreas);if(p){this.scrollToCenterPrice(p.targetPrice);return}let m=Wt(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=Ht(i,a,this.tradeLevelHitAreas);if(h){this._handleTradeLevelClose(h);return}if(!this.drawingManager.getActiveTool()){let e=Ut(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=qt(i,a,this.tradeAddBracketAreas);if(e){this._startAddBracketFromHit(e,a);return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let e=Kt(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=Gt(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+v_;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+v_}}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?__:b;this.separatorDrag={instanceId:y.instanceId,startY:a,startH:t},this.scheduleRender();return}if(!this.handleEraserClick(i,a)){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.drawingContext());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=this.drawingManager.getSelectedDrawing();if(c&&pd.has(c.type)){let e=this.getScaledPriceRange(this.viewport);if(c.hitTest(r,i,this.scaleManager,this.viewport,e,a,o)){this.showTextInput(c);return}}this.scheduleRender()},this.onKeyDown=e=>{var t,n;if(this.quickSearchEnabled&&!((t=this.quickSearch)!=null&&t.isVisible)){let t=(e.ctrlKey||e.metaKey)&&(e.key===`k`||e.key===`K`),n=e.key===`/`&&!e.ctrlKey&&!e.metaKey&&!e.altKey;if(t||n&&!Hf(e.target)){e.preventDefault(),this.openQuickSearch();return}}if(e.key===`Escape`&&(n=this.orderTimeDragHandler)!=null&&n.active){this.orderTimeDragHandler.cancel(),this.tradeDragNewBarIndex=null,this.drawCanvas.style.cursor=this.idleCursor(),this.renderTradeLayer(),e.preventDefault();return}if(e.key===`Escape`&&this.pnlPillExpanded){var r;this.pnlPillExpanded=!1,(r=this.pnlPill)==null||r.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 i=(e.ctrlKey||e.metaKey)&&e.key===`z`?`z`:e.key;if(this.drawingManager.onKeyDown(i)){var a;e.preventDefault(),this.hideMobileDrawingFlyout(),(a=this.leftBar)==null||a.setActiveTool(this.drawingManager.getActiveTool()),this.drawCanvas.style.cursor=this.idleCursor(),this.scheduleRender()}},this.onTick=e=>{var t;if(this._isDestroyed)return;let n=this.dataStore.raw;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,this.dataStore.invalidate()}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.dataStore.invalidate(),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`);or();let ge=()=>{this._cachedWrapRect=null,this._cachedDrawRect=null},_e=window.visualViewport;_e&&(_e.addEventListener(`resize`,ge),_e.addEventListener(`scroll`,ge)),document.addEventListener(`scroll`,ge,{capture:!0,passive:!0}),window.addEventListener(`resize`,ge);let ve=typeof ResizeObserver<`u`?new ResizeObserver(ge):null;ve==null||ve.observe(document.documentElement),document.body&&(ve==null||ve.observe(document.body)),this.disposeVvListener=()=>{_e&&(_e.removeEventListener(`resize`,ge),_e.removeEventListener(`scroll`,ge)),document.removeEventListener(`scroll`,ge,{capture:!0}),window.removeEventListener(`resize`,ge),ve==null||ve.disconnect()};let{container:ye,theme:be=`dark`,series:xe=`candlestick`,showVolume:Se=!0,showUI:Ce=!0,timeframe:we=`1D`,duration:Te=void 0,symbol:Ee=``,isins:De,onIsinSelect:Oe,onSymbolClick:ke,onOrderSubmit:Ae,dataLoader:je,uiConfig:Me,labels:Ne,tickActivityMs:Pe=3e4,hideSymbolAndTick:Fe=!1,hideOHLCV:Ie=!1,showBottomBar:Le=!1}=i;if(this.dataLoader=je==null?null:je,this.compareDataLoader=(a=i.compareDataLoader)==null?null:a,this.compareManager=new Cf({emitter:this.emitter,loader:this.compareDataLoader,maxCompares:i.maxCompares}),this.indicatorTemplatesEnabled=i.enableIndicatorTemplates===!0,this.indicatorTemplateList=this.indicatorTemplatesEnabled?mp(i.indicatorTemplates):[],this.settingsTemplatesEnabled=i.enableSettingsTemplates===!0,this.settingsTemplateList=this.settingsTemplatesEnabled?cp(i.settingsTemplates):[],this.savedLayoutsEnabled=i.enableSavedLayouts===!0&&i.enableMultipleLayouts===!0,this.savedLayoutList=this.savedLayoutsEnabled?ep(i.savedLayouts):[],this.allowedTimeframes=(o=i.timeframes)==null?null:o,this.seriesOptions=(s=i.seriesOptions)==null?{}:s,this.cursorMode=(c=i.cursorMode)==null?`cross`:c,this.magnetMode=i.magnetMode===!0,this.keepDrawingMode=i.keepDrawingMode===!0,this.copyDrawingsToAll=i.copyDrawingsToAllCharts===!0,this.drawingManager.setKeepDrawingMode(this.keepDrawingMode),this.valueTooltipEnabled=i.valueTooltip===!0,this.quickSearchEnabled=i.enableQuickSearch===!0,this.quickSearchShowButton=this.quickSearchEnabled&&((l=i.quickSearch)==null?void 0:l.showButton)===!0,this.drawingToolsEnabled=i.showDrawingTools!==!1,this.settingsEnabled=i.showSettings!==!1,this.fullscreenEnabled=i.showFullscreenButton!==!1,this.uiConfig=N(Me),this.labels=F(Ne),this.tickActivityMs=Pe,this.maxCandles=(u=i.maxCandles)==null?200:u,this._durationTimeframeMap={...Ri,...i.durationTimeframeMap},this.minInitialBars=Math.max(0,(d=i.minInitialBars)==null?10:d),this.maxLookbackMs=Math.max(0,(p=i.maxLookbackMs)==null?365*24*60*60*1e3:p),this.prefetchThreshold=(m=i.prefetchThreshold)==null?80:m,this.defaultVisibleBars=(h=i.defaultVisibleBars)==null?y_:h,this.defaultMobileVisibleBars=i.defaultMobileVisibleBars,this.explicitMobileDivisor=i.mobileBarDivisor!==void 0,this.mobileBarDivisor=(_=i.mobileBarDivisor)==null?2:_,this._autoVisibleBars=i.defaultVisibleBars==null&&i.defaultMobileVisibleBars==null,this.targetCandleWidth=(v=i.targetCandleWidth)==null?b_:v,this.viewport={...this.viewport,endIndex:E_(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars)},this._targetViewport={...this.viewport},this.maxSubPanes=(y=i.maxSubPanes)==null?3:y,this.tickClosePriceSource=(b=i.tickClosePriceSource)==null?`bid`:b,this._reloadOnPriceSourceChange=i.reloadOnPriceSourceChange!==!1,this.showLtpPrice=i.showLtpPrice,this.tradesThresholdForHorizontalLine=(C=i.tradesThresholdForHorizontalLine)==null?2:C,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=(w=i.showBidAskLines)==null?!1:w,this.showAskLine=i.showAskLine,this.showBidLine=i.showBidLine,this.showActLogo=(T=i.showActLogo)==null?!1:T,this.hideLevelConfirmCancel=(E=i.hideLevelConfirmCancel)==null?!1:E,this.deselectActiveOnOutsideClick=(D=i.deselectActiveOnOutsideClick)==null?!1:D,this._orderTimeDragEnabled=((O=i.features)==null?void 0:O.orderLineTimeDrag)===!0,this._features=i.features,this.drawingManager.setFreehandEnabled(((k=i.features)==null?void 0:k.enableForecasting)===!0),this._orderLineDragSnap=i.orderLineDragSnap!==!1,this._orderLineDefaultAnchor=i.orderLineDefaultAnchor===`center`?`center`:`timestamp`,this._orderTimeDragEnabled&&i.orderLineAnchorPersistence!==!1&&(this._orderLineAnchorStore=new Yp(Yp.browserStorage())),this.tradeLevelButtonScale=Math.min(Math.max((A=i.tradeLevelButtonScale)==null?1:A,1),3),this.tradeLevelBadgeScale=Math.min(Math.max((j=i.tradeLevelBadgeScale)==null?1:j,.5),1),this.tradeLevelBadgeAnchor=i.tradeLevelBadgeAnchor===`left`?`left`:`auto`,this._bracketLabel={mode:(M=i.bracketLabelMode)==null?`price`:M,currencySymbol:(P=i.currencySymbol)==null?`$`:P},this.levelClusteringEnabled=(I=i.levelClusteringEnabled)==null?!0:I,this.clusterThresholdDistance=(L=i.clusterThresholdDistance)==null?20:L,this.enableThemeToggle=(R=i.enableThemeToggle)==null?!1:R,this.tfcEnabled=i.tfcEnabled!==!1,this.crosshairEnabled=i.crosshairEnabled!==!1,this.tfcActive=this.tfcEnabled,this.showCandleCountdown=(ee=i.showCandleCountdown)==null?!0:ee,this.statusLineSettings={...i.statusLine},this.scalesSettings=A_(i.scales),this.canvasOptions={...i.canvas},this.barColorSource=(z=i.barColorSource)==null?`open`:z,this.priceScaleMode=(te=i.priceScaleMode)==null?`normal`:te,this.autoScaleEnabled=i.autoScale!==!1;let Re=(re=(ie=(oe=i.scales)==null?void 0:oe.pricePrecision)==null?i.pricePrecision:ie)==null?null:re;this.pricePrecisionOverride=Re===null?null:Math.max(0,Math.min(8,Math.round(Re))),this.candleCountdownTimeframes=i.candleCountdownTimeframes,this.showTradeLevelsAlways=(se=i.showTradeLevelsAlways)==null?!0:se,this.showPriceAxisCountdown=(ce=i.showPriceAxisCountdown)==null?!1:ce,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=Ae,this._onAddAlert=(le=i.onAddAlert)==null?null:le,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=be===`dark`?`dark`:`light`,this.themeOverrides=i.themeOverrides;let ze=(ue=(B=i.scales)==null?void 0:B.timezone)==null?i.timezone:ue;this.timezone=ze===`local`?Intl.DateTimeFormat().resolvedOptions().timeZone:ze==null?`UTC`:ze,this.aggregateFrom=i.aggregateFrom;let Be=this.themeName===`dark`?x:S;this.theme=g(Be,(de=this.themeOverrides)==null?void 0:de[this.themeName]),this.chromeTheme=this.theme,this.series=xe,this.applySeriesTransform(),this.showVolume=Se,this.timeframe=we,this.duration=Te,this.symbol=Ee,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 He=i.headerLayout===`advanced`||i.headerLayout===void 0&&((fe=i.features)==null?void 0:fe.advancedToolbar)===!0,Ue=i.headerLayout===`compact`,We=i.headerLayout===`mobile`,Ge=i.hideHeader===!0,Ke=i.enableMultipleLayouts===!0,qe=i.enableSnapshot===!0,Je=i.enableCrossHairHeader===!0||i.enableCrosshairToggle===!0;i.layoutSync&&(this.currentSync={...Ni,...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."),qe&&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 Ye=(pe=i.onOneClickTradeToggle)==null?i.onOneClickToggle:pe;if(Ce){let e=e=>{this.timeframe=e,this.emitter.emit(`timeframeChange`,{timeframe:e}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`timeframe`)},t=[...Rm,...Xg()].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(qe)this.openSnapshotPopover();else{var e;(e=i.onScreenshotClick)==null||e.call(i)}},a=Ke||typeof i.onLayoutClick==`function`,o=qe||typeof i.onScreenshotClick==`function`;if(!Ge)if(We){var Xe,Ze;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 mi(e,t,(Xe=i.onAskAiClick)==null?null:Xe,this.settingsEnabled?()=>this.openChartSettings():null,e=>this.setSeries(e),this.timeframe,this.series,this.theme,(Ze=this.uiConfig.topBar)==null?void 0:Ze.dropBtnFontFamily,this._enabledGates(),Je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)}),this.wrapper.appendChild(this.mobileHeader.el)}else if(Ue)this.compactToolbar=new qr(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(He){var Qe,$e,et,tt;this.advancedToolbar=new zr(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,Ye,r,a,o,(Qe=i.priceSourceSelector)==null?null:Qe,this.tickClosePriceSource,e=>this._applyPriceSource(e,!0),Je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)},(($e=i.features)==null?void 0:$e.pnlPill)===!0,((et=i.pnlPill)==null?void 0:et.visible)!==!1,e=>{this.setPnlPillVisible(e)},i.headerOverflowMenu===!0,(tt=i.timeframes)==null?null:tt,this._onAddAlert?()=>{var e;(e=this._onAddAlert)==null||e.call(this,this._currentMarketPrice())}:null),this.advancedToolbar.setIndicatorOptions(t),this.indicatorTemplatesEnabled&&(this.advancedToolbar.enableIndicatorTemplates({labels:this.labels.topBar.indicatorTemplates,onApply:e=>{this.applyIndicatorTemplate(e)},onSave:e=>{this.captureIndicatorTemplate(e)},onDelete:e=>{this.deleteIndicatorTemplate(e)}}),this.advancedToolbar.setIndicatorTemplates(this.indicatorTemplateList)),this.wrapper.appendChild(this.advancedToolbar.el),this.advancedToolbar.setFullscreen(this.isFullscreen)}else{var nt,rt,it,at;let s=this._durationTimeframeMap;this.topBar=new fr(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,Ye==null?null:Ye,(nt=i.priceSourceSelector)==null?null:nt,this.tickClosePriceSource,e=>this._applyPriceSource(e,!0),Je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)},((rt=i.features)==null?void 0:rt.pnlPill)===!0,((it=i.pnlPill)==null?void 0:it.visible)!==!1,e=>{this.setPnlPillVisible(e)},(at=i.timeframes)==null?null:at),this.topBar.setIndicatorOptions(t),this.indicatorTemplatesEnabled&&(this.topBar.enableIndicatorTemplates({onApply:e=>{this.applyIndicatorTemplate(e)},onSave:e=>{this.captureIndicatorTemplate(e)},onDelete:e=>{this.deleteIndicatorTemplate(e)}}),this.topBar.setIndicatorTemplates(this.indicatorTemplateList)),this.wrapper.appendChild(this.topBar.el),this.topBar.setFullscreen(this.isFullscreen)}Ke&&(this.layoutPopover=new Fi(this.theme,this.currentPresetId,this.currentSync,e=>this.handleLayoutPresetSelect(e),e=>this.handleSyncToggle(e),()=>this.emitUiState()),this.savedLayoutsEnabled&&(this.layoutPopover.enableSavedLayouts({onApply:e=>{this.applySavedLayout(e)},onSave:e=>{this.captureSavedLayout(e)},onDelete:e=>{this.deleteSavedLayout(e)}}),this.layoutPopover.setSavedLayouts(this.savedLayoutList))),qe&&(this.snapshotPopover=new Ii(this.theme,e=>this.handleSnapshot(e),()=>this.emitUiState()))}let ot=document.createElement(`div`);if(Object.assign(ot.style,{display:`flex`,flex:`1`,minHeight:`0`,overflow:`hidden`,position:`relative`}),Ce&&this.drawingToolsEnabled&&(this.leftBar=new ea(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;case`toggle_magnet`:this.setMagnetMode(!this.magnetMode);break;case`toggle_keep_mode`:this.setKeepDrawingMode(!this.keepDrawingMode);break;case`toggle_copy_all`:this.setCopyDrawingsToAllCharts(!this.copyDrawingsToAll);break;case`hide_toolbar`:this.setDrawingToolbarVisible(!1);break}},()=>{var e;this.leftBarVisible=!1,(e=this._tb)==null||e.setDrawingsBtnActive(!1)},this.theme,this.uiConfig.drawingToolbar,this.labels.drawingToolbar,this._enabledGates(),e=>this.setCursorMode(e),(e,t)=>{this.pendingIconGlyph=e,this.pendingIconKind=t}),this.leftBar.setActiveCursor(this.cursorMode),ot.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.applyCursorCss(),this.valueTooltipEnabled&&(this.valueTooltip=new i_(this.chromeTheme,this.labels.ohlc),this.canvasWrap.appendChild(this.valueTooltip.el)),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),this.textAreaEl=document.createElement(`textarea`),this.textAreaEl.rows=3,this.textAreaEl.spellcheck=!1,Object.assign(this.textAreaEl.style,{position:`absolute`,display:`none`,zIndex:`15`,background:`rgba(20,24,34,0.95)`,border:`1px solid #2196f3`,borderRadius:`4px`,color:`#f5f5f5`,font:`16px system-ui, sans-serif`,outline:`none`,resize:`none`,overflow:`hidden`,minWidth:`140px`,padding:`4px 6px`,lineHeight:`1.35`}),this.canvasWrap.appendChild(this.textAreaEl),Ce){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(Ce&&!(Fe&&Ie)){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`}),!Fe){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:Ee?`inline`:`none`}),this.siSymbolSpan.textContent=Ee==null?``:Ee;let e=()=>{var e;let t=(e=i.symbolNameDecoration)==null?`underline`:e;t===`hover`?(w_(),this.siSymbolSpan.classList.add(C_),this.siSymbolSpan.tabIndex=0,this.siSymbolSpan.style.textDecoration=`none`):this.siSymbolSpan.style.textDecoration=t===`none`?`none`:`underline`};ke?(Object.assign(this.siSymbolSpan.style,{cursor:`pointer`,pointerEvents:`auto`}),e(),this.siSymbolSpan.addEventListener(`click`,()=>{var e,t;ke((e=(t=this.siSymbolSpan)==null?void 0:t.textContent)==null?``:e)})):Oe&&(De&&(this.isins=De),this.isinPickerModal=new bf(this.chromeTheme,Oe,()=>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`})}Ie||(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(Ce&&(this.indicatorOverlay=new bd(this.theme,this.uiConfig.indicatorOverlay,this.labels.chart),this.canvasWrap.appendChild(this.indicatorOverlay.el),this.indicatorSettingsDialog=new xd(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 Up,this.orderTimeDragHandler=new Wp,i.onLevelDragEnd&&this.emitter.on(`tradeLevelDragEnd`,i.onLevelDragEnd),i.onLevelEdit&&this.emitter.on(`tradeLevelEdit`,i.onLevelEdit),Ae){var st;this.tradePopover=new sf(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),((st=i.features)==null?void 0:st.tradeActionBar)===!0&&(this.tradeActionBar=new af({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 of(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=Ed(this.levels,this.draftOrderLabel);this.tradeActionBar.show(n,r,t,{pricePrecision:this.pricePrecision(),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.pricePrecision(),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(ln(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(ot.appendChild(this.canvasWrap),this.middleRow=ot,Ce&&((me=i.features)==null?void 0:me.enableSidePanels)===!0&&(this.sidePanel=new Mp(this.theme,this.labels.sidePanel,{onSelect:(e,t)=>{t===`drawings`?this.selectDrawing(e):this.openIndicatorSettings(e)},onToggleVisible:(e,t)=>{if(t===`drawings`){let t=this.drawingManager.getDrawingById(e);t&&this.setDrawingVisible(e,t.visible===!1)}else this.toggleIndicatorVisibility(e);this.refreshObjectTree()},onToggleLock:e=>{let t=this.drawingManager.getDrawingById(e);t&&this.setDrawingLocked(e,t.locked!==!0),this.refreshObjectTree()},onDelete:(e,t)=>{t===`drawings`?this.deleteDrawing(e):this.removeIndicator(e),this.refreshObjectTree()},onClose:()=>{var e,t;this.emitter.emit(`sidePanelVisibility`,{visible:!1,tab:(e=(t=this.sidePanel)==null?void 0:t.getTab())==null?`data`:e}),this.scheduleRender()},onExpandRequest:e=>{this.refreshObjectTree(),this.emitter.emit(`sidePanelVisibility`,{visible:!0,tab:e}),this.scheduleRender()}}),ot.appendChild(this.sidePanel.el)),this.wrapper.appendChild(ot),Ce&&Le){var ct,lt;let e=this._durationTimeframeMap;this.bottomBar=new Vi((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`)},(ct=this.duration)==null?null:ct,this.theme,e,this.uiConfig.bottomBar,this.labels.bottomBar),((lt=i.features)==null?void 0:lt.enableScaleControls)===!0&&this.bottomBar.enableTools({onGoToDate:e=>{this.goToDate(`${e}T00:00:00Z`)},onTimezoneChange:e=>{this.setTimezone(e)},onPriceScaleModeChange:e=>{this.setPriceScaleMode(e)},onAutoScaleChange:e=>{this.setAutoScale(e)},timezone:this.timezone,priceScaleMode:this.priceScaleMode,autoScale:this.autoScaleEnabled}),this.wrapper.appendChild(this.bottomBar.el)}ye.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 dt=this.canvas.getContext(`2d`);if(!dt)throw Error(`Canvas 2D context unavailable`);this.ctx=dt;let ft=this.drawCanvas.getContext(`2d`);if(!ft)throw Error(`Drawing canvas 2D context unavailable`);this.drawCtx=ft;let pt=this.tradeCanvas.getContext(`2d`);if(!pt)throw Error(`Trade canvas 2D context unavailable`);if(this.tradeCtx=pt,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=this.idleCursor()}),this.drawingManager.onDrawingsChange=()=>{this.emitStateChange(),this.refreshObjectTree()},this.drawingManager.onDrawingCreated=e=>{if(e.type===`icon`&&(e.text=this.pendingIconGlyph,e.style={...e.style,fontSize:Ki(this.pendingIconKind)}),e.type===`zoomIn`){this.applyZoomBox(e),this.drawingManager.selectDrawing(e),this.drawingManager.deleteSelected(),this.setDrawingTool(null);return}let[t]=this.drawingManager.getDrawingsSnapshot().filter(t=>t.id===e.id);t&&this.emitter.emit(`drawingCreated`,{drawing:t,copyToAll:this.copyDrawingsToAll})},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 gf(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.refreshObjectTree()},this.panHandler=new ne(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 ae(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(`mouseenter`,this.onPointerEnter),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 mt=()=>{var e;let t=!!document.fullscreenElement;t||(this._isCssFullscreen=!1),(e=this._tb)==null||e.setFullscreen(t),this.reparentFloatingElements()};if(this.wrapper.addEventListener(`fullscreenchange`,mt),document.addEventListener(`fullscreenchange`,mt),this.resizeObserver=new ResizeObserver(()=>this.onResize()),this.resizeObserver.observe(this.canvasWrap),this.onResize(),((he=i.features)==null?void 0:he.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=E_(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+D_),endIndex:e.length+D_},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()?e_(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=p_.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=hp(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,this.indicatorContext()));let c=i!==void 0&&i.fields.length>0,l=f_(e.name,a,i),u=(n=a.timeframe)==null?`Chart`:n;if(e.pane===`sub`){let t=new bd(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 this.refreshObjectTree(),(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=_p(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.refreshObjectTree(),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=p_.find(t=>t.shortName===e),o=u_.find(t=>t.shortName===e);if(!(!a&&!o)){if(c_.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=gp(l_,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)}}getIndicatorTemplates(){return this.indicatorTemplateList.map(e=>({...e,indicators:[...e.indicators]}))}setIndicatorTemplates(e){return this.indicatorTemplatesEnabled?(this.indicatorTemplateList=mp(e),this.refreshIndicatorTemplatesUi(),this):this}captureIndicatorTemplate(e){if(!this.indicatorTemplatesEnabled||e.trim()===``)return null;let t=up(e,this.activeIndicators.map(e=>({shortName:e.shortName,params:{...e.currentParams},visible:e.visible})),{savedAt:Date.now(),existingIds:this.indicatorTemplateList.map(e=>e.id)});return this.indicatorTemplateList=dp(this.indicatorTemplateList,t),this.refreshIndicatorTemplatesUi(),this.emitter.emit(`indicatorTemplateSaved`,{template:t}),t}applyIndicatorTemplate(e){if(!this.indicatorTemplatesEnabled)return!1;let t=pp(this.indicatorTemplateList,e);return t?(this.replaceIndicators(t.indicators),this.scheduleRender(),this.emitStateChange(),this.emitter.emit(`indicatorTemplateApplied`,{id:t.id,name:t.name,count:t.indicators.length}),!0):!1}deleteIndicatorTemplate(e){if(!this.indicatorTemplatesEnabled)return!1;let t=pp(this.indicatorTemplateList,e);return t?(this.indicatorTemplateList=fp(this.indicatorTemplateList,t.id),this.refreshIndicatorTemplatesUi(),this.emitter.emit(`indicatorTemplateDeleted`,{id:t.id}),!0):!1}refreshIndicatorTemplatesUi(){if(!this.indicatorTemplatesEnabled)return;let e=this._tb;(e instanceof fr||e instanceof zr)&&e.setIndicatorTemplates(this.indicatorTemplateList)}openIndicatorSettings(e){var t;let n=this.activeIndicators.find(t=>t.instanceId===e);if(!n)return;let r=p_.find(e=>e.shortName===n.shortName);if(!r||r.fields.length===0)return;let i={...r,fields:[...r.fields,d_]};(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=p_.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,f_(r.shortName,r.currentParams,i)),c==null||c.updatePillTimeframe(e,a==null?`Chart`:a),this.refreshObjectTree(),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:h(this.theme.background):t.axisText}buildTheme(e){var t;return v(g(g(e===`dark`?x:S,(t=this.themeOverrides)==null?void 0:t[e]),this.canvasColorOverride(e,!0)),this.wrapper)}buildChromeTheme(e){var t;return v(g(g(e===`dark`?x:S,(t=this.themeOverrides)==null?void 0:t[e]),this.canvasColorOverride(e,!1)),this.wrapper)}initPnlPill(e){var t,n,r;this.pnlPill=new Wd({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:()=>{Ed(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(Ed(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=Ed(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,_,v,y;(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.sidePanel)==null||o.setTheme(this.chromeTheme),(s=this._draftQtyFlyout)==null||s.setTheme(this.chromeTheme),(c=this.indicatorSettingsDialog)==null||c.setTheme(this.chromeTheme),(l=this.chartSettingsDialog)==null||l.setTheme(this.chromeTheme),(u=this.layoutPopover)==null||u.setTheme(this.chromeTheme),(d=this.quickSearch)==null||d.setTheme(this.chromeTheme),(f=this.valueTooltip)==null||f.setTheme(this.chromeTheme),(p=this.snapshotPopover)==null||p.setTheme(this.chromeTheme),(m=this.comparePickerModal)==null||m.setTheme(this.chromeTheme),(h=this.isinPickerModal)==null||h.setTheme(this.chromeTheme),(g=this.tradeButton)==null||g.setTheme(this.theme,this.priceAxisWidth),(_=this.compareLegend)==null||_.setTheme(this.theme),(v=this.pnlPill)==null||v.setTheme(this.theme),(y=this.indicatorOverlay)==null||y.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){var t;return this.timezone=e===`local`?Intl.DateTimeFormat().resolvedOptions().timeZone:e,(t=this.bottomBar)==null||t.setTimezone(e),this.emitter.emit(`timezoneChange`,{timezone:this.timezone}),this.scheduleRender(),this}getTimezone(){return this.timezone}setPricePrecision(e){return this.pricePrecisionOverride=e===null?null:Math.max(0,Math.min(8,Math.round(e))),this.emitter.emit(`pricePrecisionChange`,{digits:this.pricePrecision()}),this.scheduleRender(),this}getPricePrecision(){return this.pricePrecision()}getPricePrecisionOverride(){return this.pricePrecisionOverride}setBarColorSource(e){return this.barColorSource=e,this.emitter.emit(`barColorSourceChange`,{source:e}),this.scheduleRender(),this}getBarColorSource(){return this.barColorSource}updateValueTooltip(e,t,n,r,i){if(this.valueTooltip){if(!n||!this.crosshair){this.valueTooltip.hide();return}this.valueTooltip.show(n,e,t,r,i,this.timeframe,this.pricePrecision(),this.timezone)}}drawingContext(){return{instrument:this.getInstrument(),bars:this.dataStore.all,account:this.accountSpec,features:this._features}}indicatorContext(){var e,t;return{compares:((e=(t=this.compareManager)==null?void 0:t.list())==null?[]:e).map(e=>({symbol:e.symbol,bars:e.bars}))}}applyZoomBox(e){let[t,n]=e.points;if(!t||!n)return;let r=Math.min(t.barIndex,n.barIndex),i=Math.max(t.barIndex,n.barIndex),a=Math.min(t.price,n.price),o=Math.max(t.price,n.price);if(i-r<1||o-a<=0)return;this.viewport={...this.viewport,startIndex:r,endIndex:i},this._targetViewport={...this.viewport};let s=(o-a)*.05;this._displayedPriceRange={min:a-s,max:o+s},this._lockedAutoFitBase=this._displayedPriceRange,this.priceScaleFactor=1,this.pricePanOffset=0,this.recomputeIndicators(),this.scheduleRender(),this.emitter.emit(`zoom`,{viewport:this.viewport})}setCursorMode(e){var t;return this.cursorMode===e?this:(this.cursorMode=e,e!==`demonstration`&&(this.demoTrail=[]),(t=this.leftBar)==null||t.setActiveCursor(e),this.applyCursorCss(),this.emitter.emit(`cursorModeChange`,{mode:e}),this.scheduleRender(),this)}getCursorMode(){return this.cursorMode}idleCursor(){var e;return this.drawingManager.getActiveTool()?`crosshair`:(e=Ne[this.cursorMode])==null?`default`:e}applyCursorCss(){this.drawCanvas.style.cursor=this.idleCursor()}recordDemoTrail(e,t){if(this.cursorMode!==`demonstration`)return;let n=performance.now();this.demoTrail=Ae(this.demoTrail,n),this.demoTrail.push({x:e,y:t,t:n}),this.scheduleRender()}handleEraserClick(e,t){var n;if(this.cursorMode!==`eraser`)return!1;let{chartW:r,priceH:i}=this.getChartLayout(),a=this.drawingManager.hitTest(e,t,this.scaleManager,this.viewport,(n=this._displayedPriceRange)==null?this.dataStore.getPriceRange(this.viewport):n,r,i,this.drawingContext());return a&&(this.drawingManager.selectDrawing(a),this.drawingManager.deleteSelected(),this.emitStateChange(),this.scheduleRender()),!0}setSeries(e){var t;let n=n_(this.series);return this.series=e,this.applySeriesTransform(),n!==n_(e)&&this.resetView(),(t=this._tb)==null||t.setSeries(e),this.emitter.emit(`seriesChange`,{series:e}),this.scheduleRender(),this.emitStateChange(),this}setSeriesOptions(e){return this.seriesOptions={...this.seriesOptions,...e},n_(this.series)&&(this.dataStore.setTransform(null),this.applySeriesTransform(),this.recomputeIndicators(),this.resetView(),this.scheduleRender()),this}getSeriesOptions(){return{...this.seriesOptions}}applySeriesTransform(){let e=this.seriesOptions,t=null;switch(this.series){case`renko`:t=t=>{var n;return Nf(t,(n=e.renko)==null?{}:n)};break;case`linebreak`:t=t=>{var n;return Pf(t,(n=e.lineBreak)==null?{}:n)};break;case`kagi`:t=t=>{var n;return If(t,(n=e.kagi)==null?{}:n)};break;case`pointfigure`:t=t=>{var n;return Rf(t,(n=e.pointFigure)==null?{}:n)};break;default:t=null}this.dataStore.setTransform(t)}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,o;this.crosshair!==null&&(this.crosshair=null,this.emitter.emit(`crosshair`,null)),this._mobileCrosshairActive=!1,(a=this.valueTooltip)==null||a.hide(),(o=this.tradeButton)==null||o.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}}replaceIndicators(e){let t=this.activeIndicators.map(e=>e.instanceId);for(let e of t)this.removeIndicator(e);for(let t of e){var n,r;let e=p_.find(e=>e.shortName===t.shortName);if(!e)continue;let i={...t.params};delete i.timeframe,this.addIndicator(e.factory(i),t.params);let a=this.activeIndicators[this.activeIndicators.length-1];if(!a)continue;a.currentParams={...t.params};let o=(n=this.subPaneOverlays.get(a.instanceId))==null?this.indicatorOverlay:n;t.visible===!1&&(a.visible=!1,o==null||o.updatePillVisibility(a.instanceId,!1));let s=(r=t.params.timeframe)==null?`Chart`:r;o==null||o.updatePillTimeframe(a.instanceId,s)}}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()}this.replaceIndicators(e.indicators);let a=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(a),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 i;this.tfcActive=e.tfcEnabled,(i=this._tb)==null||i.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=L(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}pricePrecision(){var e;return(e=this.pricePrecisionOverride)==null?this.dataStore.getPricePrecision():e}applyScaleMode(e){return this.priceScaleMode!==`log`||e.max<=0?e:{min:e.min>0?e.min:e.max/1e4,max:e.max,log:!0}}setPriceScaleMode(e){var t;return this.priceScaleMode===e?this:(this.priceScaleMode=e,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this.autoScaleLock=null,this.pricePanOffset=0,this.priceScaleFactor=1,(t=this.bottomBar)==null||t.setPriceScaleMode(e),this.emitter.emit(`priceScaleModeChange`,{mode:e}),this.scheduleRender(),this)}getPriceScaleMode(){return this.priceScaleMode}setAutoScale(e){var t,n;return this.autoScaleEnabled===e?this:(this.autoScaleEnabled=e,this.autoScaleLock=e||(t=this._displayedPriceRange)==null?null:t,(n=this.bottomBar)==null||n.setAutoScale(e),this.emitter.emit(`autoScaleChange`,{enabled:e}),this.scheduleRender(),this)}getAutoScale(){return this.autoScaleEnabled}goToDate(e){let t=e instanceof Date?e.getTime():typeof e==`number`?e:Date.parse(e);if(!Number.isFinite(t))return null;let n=this.dataStore.all;if(n.length===0)return null;let r=0,i=n.length-1;for(;r<i;){let e=r+i>>1;n[e].time<t?r=e+1:i=e}let a=Math.max(0,r-1),o=Math.abs(n[a].time-t)<=Math.abs(n[r].time-t)?a:r,s=this.viewport.endIndex-this.viewport.startIndex,c=Math.max(0,o-s/2);return this.setViewport({startIndex:c,endIndex:c+s}),this.emitter.emit(`goToDate`,{time:n[o].time,barIndex:o}),o}statusLine(){var e,t,n,r;let i=this.statusLineSettings;return{symbol:(e=i.symbol)==null?!0:e,ohlc:(t=i.ohlc)==null?!0:t,volume:(n=i.volume)==null?!0:n,barChange:(r=i.barChange)==null?!1:r}}scales(){var e,t,n,r,i,a,o;let s=this.scalesSettings;return{lastPriceLabel:(e=s.lastPriceLabel)==null?!0:e,bidLabel:(t=(n=s.bidLabel)==null?this.showBidLine:n)==null?this.showBidAskLines:t,askLabel:(r=(i=s.askLabel)==null?this.showAskLine:i)==null?this.showBidAskLines:r,highLowLabels:(a=s.highLowLabels)==null?!1:a,timeAxisCountdown:(o=s.timeAxisCountdown)==null?this.showCandleCountdown:o}}canvasOpts(){var e,t,n,r,i,a,o,s;let c=this.canvasOptions;return{gridHorizontal:(e=c.gridHorizontal)==null?!0:e,gridVertical:(t=c.gridVertical)==null?!0:t,watermarkVisible:(n=c.watermarkVisible)==null?!1:n,watermarkText:(r=c.watermarkText)==null?``:r,watermarkSize:(i=c.watermarkSize)==null?72:i,watermarkOpacity:(a=c.watermarkOpacity)==null?.06:a,crosshairStyle:(o=c.crosshairStyle)==null?`dashed`:o,crosshairWidth:(s=c.crosshairWidth)==null?1:s}}setStatusLineSettings(e){return this.statusLineSettings={...this.statusLineSettings,...e},this.emitter.emit(`statusLineChange`,{statusLine:this.statusLine()}),this.scheduleRender(),this}getStatusLineSettings(){return this.statusLine()}setScalesSettings(e){let{pricePrecision:t,timezone:n}=e;return this.scalesSettings={...this.scalesSettings,...A_(e)},t!==void 0&&this.setPricePrecision(t),n!==void 0&&this.setTimezone(n),this.emitter.emit(`scalesChange`,{scales:this.getScalesSettings()}),this.scheduleRender(),this}getScalesSettings(){return{...this.scales(),pricePrecision:this.pricePrecisionOverride,timezone:this.timezone}}setCanvasOptions(e){return this.canvasOptions={...this.canvasOptions,...e},this.emitter.emit(`canvasOptionsChange`,{canvas:this.canvasOpts()}),this.scheduleRender(),this}getCanvasOptions(){return this.canvasOpts()}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.pricePrecision()),i=e=>e>=1e6?(e/1e6).toFixed(2)+`M`:e>=1e3?(e/1e3).toFixed(1)+`K`:e.toFixed(0),a=this.labels.ohlc,o=this.statusLine();this.siSymbolSpan&&(this.siSymbolSpan.style.display=o.symbol&&this.symbol?`inline`:`none`);let s=(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)}},c=this.previousClose(e),l=c===null?null:e.close-c,u=l!==null&&c?l/c*100:null,d=l===null?n:l>=0?this.theme.candle.up:this.theme.candle.down,f=l!==null&&l>=0?`+`:``,p=o.barChange&&l!==null?[[``,`${f}${r(l)} (${f}${(u==null?0:u).toFixed(2)}%)`,d]]:[];s(this.siOHLCSpan,[...o.ohlc?[[a.open,r(e.open),n],[a.high,r(e.high),n]]:[]]),this.siOHLC2Span&&s(this.siOHLC2Span,[...o.ohlc?[[a.low,r(e.low),n],[a.close,r(e.close),t]]:[],...o.volume&&e.volume!=null&&e.volume!==0?[[a.volume,i(e.volume),n]]:[],...p])}previousClose(e){let t=this.dataStore.all,n=t.indexOf(e);return n>0?t[n-1].close:null}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 _f(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),e?this.drawCanvas.style.cursor=`crosshair`:this.applyCursorCss(),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()}addDrawing(e){return this.drawingManager.addDrawing(e),this.scheduleRender(),this}getDrawings(){return this.drawingManager.getDrawings()}toggleIndicatorVisibility(e){let t=this.activeIndicators.find(t=>t.instanceId===e);if(!t)return this;t.visible=!t.visible;let n=t.indicator.pane===`sub`?this.subPaneOverlays.get(e):this.indicatorOverlay;return n==null||n.updatePillVisibility(e,t.visible),this.scheduleRender(),this.emitStateChange(),this}setSidePanelVisible(e){return!this.sidePanel||this.sidePanel.isExpanded()===e?this:(this.sidePanel.setExpanded(e),e&&this.refreshObjectTree(),this.scheduleRender(),this.emitter.emit(`sidePanelVisibility`,{visible:e,tab:this.sidePanel.getTab()}),this)}isSidePanelVisible(){var e;return((e=this.sidePanel)==null?void 0:e.isExpanded())===!0}setSidePanelTab(e){var t;return(t=this.sidePanel)==null||t.setTab(e),this.sidePanel&&(this.refreshObjectTree(),this.emitter.emit(`sidePanelVisibility`,{visible:this.isSidePanelVisible(),tab:e})),this}getSidePanelTab(){var e,t;return(e=(t=this.sidePanel)==null?void 0:t.getTab())==null?null:e}refreshDataWindow(e){if(!this.sidePanel||!this.sidePanel.isExpanded())return;let t=this.crosshair?this.crosshair.barIndex:this.dataStore.length-1,n=[];for(let e of this.visibleStates()){var r;let i=this.indicatorResults.get(e.instanceId);n.push({heading:f_(e.shortName,e.currentParams,p_.find(t=>t.shortName===e.shortName)),shortName:e.shortName,color:(r=e.currentParams.color)==null?e.indicator.color:r,result:i==null?void 0:i[t]})}this.sidePanel.setData(Lp({bar:e,prevClose:e?this.previousClose(e):null,dateText:e?this.formatPanelDate(e.time):``,precision:this.pricePrecision(),labels:this.labels.sidePanel.rows,upColor:this.theme.candle.up,downColor:this.theme.candle.down,indicators:n}))}formatPanelDate(e){let t=this.timeframeToMs(this.timeframe)<864e5;return new Date(e).toLocaleString(`en-GB`,{timeZone:this.timezone,day:`2-digit`,month:`short`,year:`numeric`,...t?{hour:`2-digit`,minute:`2-digit`,hour12:!1}:{}})}refreshObjectTree(){var e,t;!this.sidePanel||!this.sidePanel.isExpanded()||this.sidePanel.setObjects(Vp({drawings:this.drawingManager.getDrawingsSnapshot(),drawingNames:this.labels.drawingToolbar.tools,indicators:this.activeIndicators.map(e=>{var t;return{instanceId:e.instanceId,heading:f_(e.shortName,e.currentParams,p_.find(t=>t.shortName===e.shortName)),color:(t=e.currentParams.color)==null?e.indicator.color:t,visible:e.visible}}),selectedId:(e=(t=this.drawingManager.getSelectedDrawing())==null?void 0:t.id)==null?null:e}))}setDrawingVisible(e,t){return this.drawingManager.setDrawingVisible(e,t)&&this.scheduleRender(),this}setDrawingLocked(e,t){return this.drawingManager.setDrawingLocked(e,t)&&this.scheduleRender(),this}deleteDrawing(e){return this.drawingManager.deleteDrawing(e)&&this.scheduleRender(),this}selectDrawing(e){return this.drawingManager.selectDrawing(e===null?null:this.drawingManager.getDrawingById(e)),this.scheduleRender(),this}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)}}getSavedLayouts(){return this.savedLayoutList.map(e=>({...e,panes:e.panes.map(e=>({...e}))}))}setSavedLayouts(e){var t;return this.savedLayoutsEnabled?(this.savedLayoutList=ep(e),(t=this.layoutPopover)==null||t.setSavedLayouts(this.savedLayoutList),this):this}captureSavedLayout(e,t=`main`){var n;if(!this.savedLayoutsEnabled||e.trim()===``)return null;let r=Xf(e,this.currentPresetId,[{paneId:t,state:this.getState()}],{savedAt:Date.now(),existingIds:this.savedLayoutList.map(e=>e.id)});return this.savedLayoutList=Zf(this.savedLayoutList,r),(n=this.layoutPopover)==null||n.setSavedLayouts(this.savedLayoutList),this.emitter.emit(`layoutSaved`,{layout:r}),r}applySavedLayout(e,t=`main`){var n;if(!this.savedLayoutsEnabled)return!1;let r=$f(this.savedLayoutList,e);if(!r)return!1;this.handleLayoutPresetSelect(r.presetId);let i=(n=r.panes.find(e=>e.paneId===t))==null?r.panes[0]:n;return i&&this.setState(i.state),this.emitter.emit(`layoutApplied`,{id:r.id,name:r.name,presetId:r.presetId,layout:r}),!0}deleteSavedLayout(e){var t;if(!this.savedLayoutsEnabled)return!1;let n=$f(this.savedLayoutList,e);return n?(this.savedLayoutList=Qf(this.savedLayoutList,n.id),(t=this.layoutPopover)==null||t.setSavedLayouts(this.savedLayoutList),this.emitter.emit(`layoutDeleted`,{id:n.id}),!0):!1}openQuickSearch(){return this.quickSearchEnabled?(this.quickSearch||(this.quickSearch=new Uf(this.chromeTheme,e=>{e.run(),this.emitter.emit(`quickSearchCommand`,{id:e.id,label:e.label,group:e.group})},{placeholder:this.labels.chart.quickSearchPlaceholder,empty:this.labels.chart.quickSearchEmpty},()=>this.emitUiState()),this.wrapper.appendChild(this.quickSearch.el)),this.quickSearch.show([...this.buildChartCommands(),...this.hostCommands]),this):this}closeQuickSearch(){var e;return(e=this.quickSearch)==null||e.hide(),this}registerCommand(e){return this.hostCommands=[...this.hostCommands.filter(t=>t.id!==e.id),e],this}unregisterCommand(e){return this.hostCommands=this.hostCommands.filter(t=>t.id!==e),this}buildChartCommands(){var e;let t=[],n=this.labels,r=Object.keys(n.topBar.series);for(let e of r)t.push({id:`series.${e}`,label:n.topBar.series[e],group:n.chart.quickSearchGroups.chartType,active:this.series===e,run:()=>{this.setSeries(e)}});let i=(e=this.allowedTimeframes)==null?Object.keys(n.topBar.timeframes):e;for(let e of i)t.push({id:`timeframe.${e}`,label:n.topBar.timeframes[e],group:n.chart.quickSearchGroups.timeframe,active:this.timeframe===e,run:()=>{this.setTimeframe(e)}});for(let e of Object.keys(n.bottomBar.durations))t.push({id:`duration.${e}`,label:n.bottomBar.durations[e],group:n.chart.quickSearchGroups.duration,active:this.duration===e,run:()=>{this.setDuration(e)}});for(let e of Rm)e.enabled&&t.push({id:`indicator.${e.short_name}`,label:`${e.name} (${e.short_name})`,group:n.chart.quickSearchGroups.indicator,keywords:[e.short_name,e.type],run:()=>{this.addIndicatorByName(e.short_name)}});if(this.indicatorTemplatesEnabled)for(let e of this.indicatorTemplateList)t.push({id:`indicatorTemplate.${e.id}`,label:e.name,group:n.chart.quickSearchGroups.indicatorTemplate,hint:`${e.indicators.length}`,run:()=>{this.applyIndicatorTemplate(e.id)}});if(this.settingsTemplatesEnabled)for(let e of this.settingsTemplateList)t.push({id:`settingsTemplate.${e.id}`,label:e.name,group:n.chart.quickSearchGroups.settingsTemplate,run:()=>{this.applySettingsTemplate(e.id)}});if(this.savedLayoutsEnabled)for(let e of this.savedLayoutList)t.push({id:`savedLayout.${e.id}`,label:e.name,group:n.chart.quickSearchGroups.layout,hint:e.presetId,run:()=>{this.applySavedLayout(e.id)}});let a=n.drawingToolbar.tools;for(let e of Object.keys(a))t.push({id:`drawing.${e}`,label:a[e],group:n.chart.quickSearchGroups.drawing,active:this.drawingManager.getActiveTool()===e,run:()=>{this.setDrawingTool(e)}});return t.push(...this.buildActionCommands()),t}buildActionCommands(){let e=this.labels.chart.quickSearchGroups.action,t=this.labels.chart.quickSearchActions,n=[{id:`action.theme.dark`,label:t.themeDark,group:e,active:this.themeName===`dark`,run:()=>{this.setTheme(`dark`)}},{id:`action.theme.light`,label:t.themeLight,group:e,active:this.themeName===`light`,run:()=>{this.setTheme(`light`)}},{id:`action.volume`,label:t.toggleVolume,group:e,active:this.showVolume,run:()=>{this.setVolume(!this.showVolume)}},{id:`action.crosshair`,label:t.toggleCrosshair,group:e,active:this.crosshairEnabled,run:()=>{this.setCrosshairEnabled(!this.crosshairEnabled)}},{id:`action.resetView`,label:t.resetView,group:e,run:()=>{this.resetView()}},{id:`action.settings`,label:t.openSettings,group:e,run:()=>{this.openChartSettings()}},{id:`action.undo`,label:t.undoDrawing,group:e,run:()=>{this.undoDrawing()}},{id:`action.redo`,label:t.redoDrawing,group:e,run:()=>{this.redoDrawing()}},{id:`action.clearDrawings`,label:t.clearDrawings,group:e,run:()=>{this.clearAllDrawings()}}];return this.sidePanel&&n.push({id:`action.dataWindow`,label:t.dataWindow,group:e,run:()=>{this.setSidePanelVisible(!0),this.setSidePanelTab(`data`)}},{id:`action.objectTree`,label:t.objectTree,group:e,run:()=>{this.setSidePanelVisible(!0),this.setSidePanelTab(`objects`)}},{id:`action.toggleSidePanel`,label:t.toggleSidePanel,group:e,run:()=>{this.setSidePanelVisible(!this.isSidePanelVisible())}}),this.compareDataLoader&&n.push({id:`action.compare`,label:t.addCompare,group:e,run:()=>{this.openComparePicker()}}),this.snapshotPopover&&n.push({id:`action.snapshot.download`,label:t.snapshotDownload,group:e,run:()=>{this.handleSnapshot(`download`)}},{id:`action.snapshot.copy`,label:t.snapshotCopy,group:e,run:()=>{this.handleSnapshot(`copy`)}}),n}handleLayoutPresetSelect(e){var t,n,r,i;this.currentPresetId=e;let a=Mi(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:Mi(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,b,x,S,C,w;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.quickSearch)==null||r.destroy(),(i=this.valueTooltip)==null||i.destroy(),(a=this.isinPickerModal)==null||a.destroy(),(o=this.comparePickerModal)==null||o.destroy(),(s=this.compareLegend)==null||s.destroy(),(c=this.pnlPill)==null||c.destroy(),(l=this.tradePopover)==null||l.destroy(),(u=this.tradeActionBar)==null||u.destroy(),(d=this.drawingStylePopover)==null||d.destroy(),(f=this._draftQtyFlyout)==null||f.destroy(),(p=this.advancedToolbar)==null||p.destroy(),(m=this.mobileHeader)==null||m.destroy(),(h=this.leftBar)==null||h.destroy(),(g=this.bottomBar)==null||g.destroy(),(_=this.sidePanel)==null||_.destroy(),this.drawCanvas.removeEventListener(`mouseenter`,this.onPointerEnter),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),(v=this.streamAdapter)==null||v.disconnect(),this.rafId!==null&&cancelAnimationFrame(this.rafId),this.scrollAnimId!==null&&cancelAnimationFrame(this.scrollAnimId),this.stopCountdownLoop(),(y=this.resetViewBtn)==null||y.remove(),(b=this.textInputEl)==null||b.remove(),(x=this.textAreaEl)==null||x.remove(),(S=this._mobileDrawingFlyout)==null||S.remove(),(C=this.layoutPopover)==null||C.destroy(),(w=this.snapshotPopover)==null||w.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(jn,`Delete drawing`,!0);n.addEventListener(`pointerdown`,e=>{e.stopPropagation(),this.deleteSelectedDrawing(),this.hideMobileDrawingFlyout()});let r=t(On,`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(!T_())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.scales().timeAxisCountdown||this.showPriceAxisCountdown)&&t&&this.dataStore.length>0;n&&!this.countdownActive?(this.countdownActive=!0,this.startCountdownLoop()):!n&&this.countdownActive&&this.stopCountdownLoop()}getChartSettings(){return np({tradeDisplayFilter:this.tradeDisplayFilter,positionRenderStyle:this.baseRenderStyle(),theme:this.themeName,showTradeLevelsAlways:this.showTradeLevelsAlways,showPriceAxisCountdown:this.showPriceAxisCountdown,canvasColors:{...this.settingsCanvasColors},statusLine:this.statusLine(),scales:this.getScalesSettings(),canvas:this.canvasOpts(),barColorSource:this.barColorSource})}applyChartSettings(e){this.tradeDisplayFilter=e.tradeDisplayFilter,this.positionRenderStyleOverride=e.positionRenderStyle;try{localStorage.setItem(this.RENDER_STYLE_LS_KEY,e.positionRenderStyle)}catch(e){}if(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()}return e.statusLine&&this.setStatusLineSettings(e.statusLine),e.scales&&this.setScalesSettings(e.scales),e.canvas&&this.setCanvasOptions(e.canvas),e.barColorSource&&this.setBarColorSource(e.barColorSource),this.setTheme(e.theme),this.renderTradeLayer(),this.emitStateChange(),this}getSettingsTemplates(){return this.settingsTemplateList.map(e=>({...e,settings:np(e.settings)}))}setSettingsTemplates(e){var t;return this.settingsTemplatesEnabled?(this.settingsTemplateList=cp(e),(t=this.chartSettingsDialog)==null||t.setSettingsTemplates(this.settingsTemplateList),this):this}captureSettingsTemplate(e){var t;if(!this.settingsTemplatesEnabled||e.trim()===``)return null;let n=rp(e,this.getChartSettings(),{savedAt:Date.now(),existingIds:this.settingsTemplateList.map(e=>e.id)});return this.settingsTemplateList=ip(this.settingsTemplateList,n),(t=this.chartSettingsDialog)==null||t.setSettingsTemplates(this.settingsTemplateList),this.emitter.emit(`settingsTemplateSaved`,{template:n}),n}applySettingsTemplate(e){var t;if(!this.settingsTemplatesEnabled)return!1;let n=op(this.settingsTemplateList,e);return n?(this.applyChartSettings(n.settings),(t=this.chartSettingsDialog)==null||t.setCurrent(n.settings),this.emitter.emit(`settingsTemplateApplied`,{id:n.id,name:n.name}),!0):!1}deleteSettingsTemplate(e){var t;if(!this.settingsTemplatesEnabled)return!1;let n=op(this.settingsTemplateList,e);return n?(this.settingsTemplateList=ap(this.settingsTemplateList,n.id),(t=this.chartSettingsDialog)==null||t.setSettingsTemplates(this.settingsTemplateList),this.emitter.emit(`settingsTemplateDeleted`,{id:n.id}),!0):!1}openChartSettings(){var e;this.chartSettingsDialog||(this.chartSettingsDialog=new Td(this.chromeTheme,this.getChartSettings(),this.labels.dialogs,!!this._onOrderSubmit&&this.tfcActive,this.enableThemeToggle,()=>this.emitUiState()),this.getFloatingRoot().appendChild(this.chartSettingsDialog.el),this.settingsTemplatesEnabled&&(this.chartSettingsDialog.enableSettingsTemplates({onApply:e=>{this.applySettingsTemplate(e)},onSave:e=>{this.captureSettingsTemplate(e)},onDelete:e=>{this.deleteSettingsTemplate(e)}}),this.chartSettingsDialog.setSettingsTemplates(this.settingsTemplateList))),this.chartSettingsDialog.enableExtraTabs(((e=this._features)==null?void 0:e.enableChartSettings)===!0),this.chartSettingsDialog.show(this.getChartSettings(),e=>{if(this.applyChartSettings(e),this.settingsTemplatesEnabled){var t;this.emitter.emit(`chartSettingsApplied`,{settings:e,applyToAll:((t=this.chartSettingsDialog)==null?void 0:t.applyToAll)===!0})}},()=>{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=Dt(s,_,this.scaleManager,p,l,d,f,this.pricePrecision(),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=sn(s,_,p,l,d,f,(i=(a=this.tradeDragHandler)==null?void 0:a.dragLabel)==null?null:i,this.selectedTradeLabel);if(this.offViewportHitAreas=C.hitAreas,Jt(s,_,this.scaleManager,p,l,d,f,this.pricePrecision()),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.raw,c=e.type===`position`&&!a&&!o?(f=(p=s[s.length-1])==null?void 0:p.close)==null?0:f:0;if(!Up.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 xf({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 bf(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=Cp(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,r;if(this._isDestroyed)return;let{ctx:i,canvas:a,theme:o,viewport:s}=this,c=window.devicePixelRatio||1,l=a.width,u=a.height,d=l/c-this.priceAxisWidth,f=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),p=f.reduce((e,t)=>e+this.paneH(t)+v_,0),m=u/c-this.timeAxisHeight-p;i.clearRect(0,0,l,u),i.fillStyle=o.background,i.fillRect(0,0,l,u);let h=this.dataStore.getVisible(s);if(h.length===0){this.drawCtx.clearRect(0,0,this.drawCanvas.width,this.drawCanvas.height);return}let g=h;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*S_,endIndex:this.viewport.endIndex+t*S_,candleWidth:this._targetViewport.candleWidth,candleGap:this._targetViewport.candleGap},this.scheduleRender())}let _=!!((e=this.compareManager)!=null&&e.isActive()),v=null,y=[],b=[],x=null;if(!_&&this.priceScaleMode===`percent`){let e=yp(h,0);e!=null&&e!==0&&Number.isFinite(e)&&(g=bp(h,e),x=Sp(h,e,[]))}else if(_&&this.compareManager){var S,C;let e=this.dataStore.all,t=this.compareBaselineIndex(e),n=t==null||(S=(C=e[t])==null?void 0:C.close)==null?null:S;if(n!=null&&n!==0&&Number.isFinite(n)){v=n;let r=this.compareManager.list(),i=e.map(e=>e.time);y=r.map(e=>e.status===`ready`&&e.bars.length>0?Cp(e.bars,i,t==null?0:t):[]),b=r.map(e=>e.color),g=bp(h,n),x=Sp(h,n,y.map(e=>e.filter(e=>e.pct!=null)))}}let w=_&&x!==null,T=x!==null;(w!==this._lastInCompareMode||T!==this._lastPercentMode)&&(this._lastInCompareMode=w,this._lastPercentMode=T,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this.pricePanOffset=0,this.priceScaleFactor=1);let E=this.priceScaleFactor!==1||this.pricePanOffset!==0;if(!this.autoScaleEnabled&&this.autoScaleLock&&!E)this._displayedPriceRange=this.autoScaleLock;else if(E){if(!this._lockedAutoFitBase){var D,O;this._lockedAutoFitBase=(D=(O=this._displayedPriceRange)==null?x:O)==null?this.dataStore.getPriceRange(s):D}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 k;this._lockedAutoFitBase=null;let e=(k=x)==null?this.getScaledPriceRange(s):k;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*x_,max:this._displayedPriceRange.max+r*x_},this.scheduleRender())}}let A=this.applyScaleMode(this._displayedPriceRange),j=this.showVolume?this.dataStore.getVolumeRange(s):null,M=a;M._priceRange=A,M._chartWidth=d,i.save(),i.scale(c,c),i.save(),i.beginPath(),i.rect(0,0,d,m),i.clip();let N=this.canvasOpts();Te(i,A,this.scaleManager,o,d,m,void 0,{horizontal:N.gridHorizontal,vertical:N.gridVertical,verticalColor:(t=this.settingsCanvasColors)==null||(t=t[this.themeName])==null?void 0:t.gridVertical});let P=N.watermarkText||this.symbol||``;if(N.watermarkVisible&&P){var F,I;i.save(),i.globalAlpha=N.watermarkOpacity,i.fillStyle=(F=(I=this.settingsCanvasColors)==null||(I=I[this.themeName])==null?void 0:I.watermark)==null?o.axisText:F,i.font=`700 ${N.watermarkSize}px 'Inter', system-ui, sans-serif`,i.textAlign=`center`,i.textBaseline=`middle`,i.fillText(P,d/2,m/2),i.restore()}let L=oe(g,this.barColorSource,this.dataStore.getBarBeforeVisible(s));switch(this.series){case`candlestick`:ce(i,g,s,A,this.scaleManager,o,d,m,L);break;case`hollow`:le(i,g,s,A,this.scaleManager,o,d,m,L);break;case`line`:de(i,g,s,A,this.scaleManager,o,d,m,!1);break;case`area`:de(i,g,s,A,this.scaleManager,o,d,m,!0);break;case`ohlc`:fe(i,g,s,A,this.scaleManager,o,d,m,L);break;case`heikinashi`:he(i,g,s,A,this.scaleManager,o,d,m);break;case`volumecandles`:ge(i,g,s,A,this.scaleManager,o,d,m,L);break;case`linemarkers`:_e(i,g,s,A,this.scaleManager,o,d,m);break;case`step`:ve(i,g,s,A,this.scaleManager,o,d,m);break;case`hlcarea`:be(i,g,s,A,this.scaleManager,o,d,m);break;case`baseline`:Se(i,g,s,A,this.scaleManager,o,d,m);break;case`columns`:Ce(i,g,s,A,this.scaleManager,o,d,m,L);break;case`highlow`:we(i,g,s,A,this.scaleManager,o,d,m);break;case`hlc`:wf(i,g,s,A,this.scaleManager,o,d,m,L);break;case`renko`:case`linebreak`:Tf(i,g,s,A,this.scaleManager,o,d,m);break;case`kagi`:Ef(i,g,this.dataStore.getVisibleMeta(s),s,A,this.scaleManager,o,d,m);break;case`pointfigure`:Df(i,g,this.dataStore.getVisibleMeta(s),s,A,this.scaleManager,o,d,m);break}i.save(),i.beginPath(),i.rect(0,0,d,m),i.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 r=n.slice(Math.floor(s.startIndex),Math.ceil(s.endIndex)+1),a=_&&v!=null?xp(r,v):r;t.render(i,a,this.scaleManager,s,m)}if(_&&v!=null&&y.length>0){let e=this.dataStore.all,t=Math.floor(s.startIndex),n=Math.min(e.length-1,Math.ceil(s.endIndex)),r=new Map;for(let i=t;i<=n;i++)r.set(e[i].time,i);for(let e=0;e<y.length;e++){let t=y[e],n=b[e];if(!t||t.length===0)continue;i.save(),i.strokeStyle=n,i.lineWidth=1.5,i.lineJoin=`round`,i.lineCap=`round`,i.beginPath();let a=!1;for(let e of t){let t=r.get(e.time);if(t==null||e.pct==null){a=!1;continue}let n=this.scaleManager.xToPixel(t,s,d),o=this.scaleManager.yToPixel(e.pct,A,m);a?i.lineTo(n,o):(i.moveTo(n,o),a=!0)}i.stroke(),i.restore()}}i.restore(),i.restore(),bn(i,A,this.scaleManager,o,d,m,this.priceAxisWidth,void 0,this.pricePrecision(),this.uiConfig.priceAxis,T?`percent`:`price`);let R=this.dataStore.all[this.dataStore.all.length-1];if(R&&!T){let e=this.scales(),t=this.pricePrecision(),n=(e,n,r)=>{let a=this.scaleManager.yToPixel(e,A,m);i.save(),i.strokeStyle=n,i.lineWidth=1,i.setLineDash([3,3]),i.beginPath(),i.moveTo(0,a),i.lineTo(d,a),i.stroke(),i.setLineDash([]);let o=r+e.toFixed(t);i.font=`10px 'Inter', system-ui, sans-serif`;let s=i.measureText(o).width+12;return i.fillStyle=n,i.fillRect(d,a-16/2,s,16),i.fillStyle=`#ffffff`,i.textAlign=`left`,i.fillText(o,d+4,a+4),i.restore(),{y:a,boxW:s}},r=null,a=0;if(this.liveBidAsk){var ee,z,te,ne,re,ie,ae,se,ue;let{bid:e,ask:t}=this.liveBidAsk,i=this.tickClosePriceSource===`ltp`,s=((ee=this.showLtpPrice)==null?i:ee)?(z=this.liveLtp)==null?i?e:null:z:null,c=R.close>=R.open?o.candle.up:o.candle.down,l=this.scalesSettings,u=(te=(ne=l.askLabel)==null?this.showAskLine:ne)==null?this.showBidAskLines||this.tickClosePriceSource===`ask`:te,d=((re=(ie=l.bidLabel)==null?this.showBidLine:ie)==null?this.showBidAskLines||this.tickClosePriceSource===`bid`||i&&s==null:re)?n(e,o.candle.down,``):null,f=u?n(t,o.candle.up,``):null,p=s==null?null:n(s,c,``),m=i?(ae=p==null?d:p)==null?f:ae:this.tickClosePriceSource===`ask`?(se=f==null?p:f)==null?d:se:(ue=d==null?p:d)==null?f:ue;m&&(r=m.y,a=m.boxW)}else if(e.lastPriceLabel){let e=R.close>=R.open,t=n(R.close,e?o.candle.up:o.candle.down,``);r=t.y,a=t.boxW}if(e.highLowLabels){let e=this.dataStore.getVisible(s);if(e.length>0){let t=e[0].high,r=e[0].low;for(let n of e)n.high>t&&(t=n.high),n.low<r&&(r=n.low);n(t,o.candle.up,`H `),n(r,o.candle.down,`L `)}}if(this.showPriceAxisCountdown&&r!==null){var B;if(this.candleCountdownTimeframes===`all`||((B=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:B).includes(this.timeframe)){let e=this.timeframeToMs(this.timeframe);yn(i,R.time,e,o,d,r-16/2,16,a)}}}let me=m;for(let e of f){let t=e.indicator,n=this.paneH(e);if(i.fillStyle=o.axisBorder,i.fillRect(0,me,d+this.priceAxisWidth,v_),me+=v_,i.save(),i.beginPath(),i.rect(0,me,d+this.priceAxisWidth,n),i.clip(),i.translate(0,me),i.fillStyle=o.background,i.fillRect(0,0,d+this.priceAxisWidth,n),e.visible&&(()=>{let t=e.currentParams.timeframe;return!t||t===`Chart`||t===this.timeframe})()){let r=this.indicatorResults.get(e.instanceId);if(r){var ye,xe;let a=r.slice(Math.floor(s.startIndex),Math.ceil(s.endIndex)+1),c=(ye=t.getValueRange)==null?void 0:ye.call(t,a),l=(xe=this.subPaneScaleFactors.get(e.instanceId))==null?1:xe,u=c?O_(c,l):void 0;t.render(i,a,this.scaleManager,s,n,u),u&&bn(i,u,this.scaleManager,o,d,n,this.priceAxisWidth,3,k_(u),this.uiConfig.priceAxis)}}i.restore(),me+=n}if(this.showVolume&&j&&j.max>0){let e=m*g_;pe(i,g,s,j.max,this.scaleManager,o,d,e,m-e,L)}{var Ee;let e=this.candleCountdownTimeframes===`all`?!0:((Ee=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:Ee).includes(this.timeframe),t=this.scales().timeAxisCountdown&&!this.showPriceAxisCountdown&&e&&g.length>0&&s.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:`,g.length,`| endIndex:`,s.endIndex,`| dataLen:`,this.dataStore.length,`| atLiveEdge:`,s.endIndex>=this.dataStore.length-1),_n(i,g,s,this.scaleManager,o,d,me,T_()?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);vn(i,e.time,t,this.dataStore.length-1,s,this.scaleManager,o,d,me,this.uiConfig.timeAxis)}}}if(this.crosshair&&(this.cursorMode===`cross`||this.cursorMode===`dot`)&&(this.cursorMode===`cross`?Oe(i,this.crosshair,A,s,this.scaleManager,o,d,m,this.priceAxisWidth,me,this.timeframe,this.pricePrecision(),this.uiConfig.crosshair,this.timezone,this.canvasOpts().crosshairStyle,this.canvasOpts().crosshairWidth):je(i,this.crosshair,A,s,this.scaleManager,o,d,m)),this.cursorMode===`demonstration`&&this.demoTrail.length>1){let e=performance.now();this.demoTrail=Ae(this.demoTrail,e),Me(i,this.demoTrail,e,o.ui.accent),this.demoTrail.length>1&&this.scheduleRender()}if(this.logoImage){let e=m-20-40/2;i.save(),i.globalAlpha=.6,i.beginPath(),i.rect(0,0,d,m),i.clip(),i.beginPath(),i.arc(40,e,40/2,0,Math.PI*2),i.closePath(),i.clip(),i.drawImage(this.logoImage,40-40/2,e-40/2,40,40),i.restore()}i.restore();let De=this.crosshair?(n=this.dataStore.all[this.crosshair.barIndex])==null?null:n:(r=this.dataStore.all[this.dataStore.length-1])==null?null:r;if(this.renderSymbolInfoOHLC(De),this.refreshDataWindow(De),this.drawingManager.render(this.drawCtx,this.scaleManager,s,A,d,m,this.pricePrecision(),this.theme,this.drawingContext()),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,this.indicatorContext()))}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?__:t}getChartLayout(){var e;let t=this.activeIndicators.filter(e=>e.indicator.pane===`sub`).reduce((e,t)=>e+this.paneH(t)+v_,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+v_+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)+v_;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}}touchToPixels(e){var t;let n=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t;return{x:e.clientX-n.left,y:e.clientY-n.top}}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:this.magnetMode?this.magnetPrice(e,t):t},r=this.barIndexToTimestamp(e);return r!=null&&(n.timestamp=r),n}magnetPrice(e,t){var n;let r=this.dataStore.all[Math.round(e)];if(!r)return t;let{priceH:i}=this.getChartLayout(),a=(n=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):n,o=e=>this.scaleManager.yToPixel(e,a,i),s=o(t),c=t,l=1/0;for(let e of[r.open,r.high,r.low,r.close]){let t=Math.abs(o(e)-s);t<l&&(l=t,c=e)}return l<=s_?c:t}setMagnetMode(e){var t;return this.magnetMode===e?this:(this.magnetMode=e,(t=this.leftBar)==null||t.setMagnetMode(e),this.emitter.emit(`magnetModeChange`,{enabled:e}),this)}getMagnetMode(){return this.magnetMode}setKeepDrawingMode(e){var t;return this.keepDrawingMode=e,this.drawingManager.setKeepDrawingMode(e),(t=this.leftBar)==null||t.setKeepDrawingMode(e),this.emitter.emit(`keepDrawingModeChange`,{enabled:e}),this}getKeepDrawingMode(){return this.keepDrawingMode}setDrawingToolbarVisible(e){return this.leftBar?(this.leftBar.el.style.display=e?``:`none`,this.drawingToolbarVisible=e,this.emitter.emit(`drawingToolbarVisibility`,{visible:e}),this.scheduleRender(),this):this}isDrawingToolbarVisible(){return this.drawingToolbarVisible}setCopyDrawingsToAllCharts(e){var t;return this.copyDrawingsToAll=e,(t=this.leftBar)==null||t.setCopyToAllCharts(e),this.emitter.emit(`copyDrawingsToAllChange`,{enabled:e}),this}getCopyDrawingsToAllCharts(){return this.copyDrawingsToAll}_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.updateValueTooltip(e,t,p,o,s),this.tradeButton&&(this.tradeButton.setY(t),this._isTradingActive||!this.crosshairEnabled||ln(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&&Tt(t)}_upgradePendingTradeDrag(e,t){let r=this._pendingTradeDrag;if(!r)return!1;let i=Wp.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.raw,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=this.idleCursor(),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.raw,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,n;let r=md.has(e.type),i=r?this.textAreaEl:this.textInputEl;if(!i)return;this.textInputDrawing=e;let{chartW:a,priceH:o}=this.getChartLayout(),s=this.getScaledPriceRange(this.viewport),c=(t=e.points[1])==null?e.points[0]:t;if(!c)return;let l=this.scaleManager.xToPixel(c.barIndex,this.viewport,a),u=this.scaleManager.yToPixel(c.price,s,o),d=e.points.length>1,f=d?l-30:l,p=d?u-10:u;i.value=(n=e.text)==null?``:n,i.style.left=`${Math.max(0,Math.min(a-150,f))}px`,i.style.top=`${Math.max(0,Math.min(o-40,p))}px`,i.style.display=`block`;let m=()=>{if(!r)return;let e=i;e.style.height=`auto`,e.style.height=`${Math.min(240,e.scrollHeight)}px`};m(),this.drawingManager.setEditingText(!0);let h=()=>{i.removeEventListener(`keydown`,v),i.removeEventListener(`blur`,y),i.removeEventListener(`input`,m)},g=()=>{h(),this.textInputDrawing===e&&this.commitTextInput()},_=()=>{h(),this.textInputDrawing===e&&this.cancelTextInput()},v=e=>{let t=e;if(t.key===`Escape`){t.preventDefault(),_();return}t.key===`Enter`&&(r&&!t.ctrlKey&&!t.metaKey||(t.preventDefault(),g()))},y=()=>g();i.addEventListener(`keydown`,v),i.addEventListener(`input`,m),requestAnimationFrame(()=>{this.textInputDrawing===e&&(i.focus(),i.select(),i.addEventListener(`blur`,y,{once:!0}))})}hideTextEditors(){this.textInputEl&&(this.textInputEl.style.display=`none`),this.textAreaEl&&(this.textAreaEl.style.display=`none`)}commitTextInput(){var e,t;let n=this.textInputDrawing;if(!n)return;let r=md.has(n.type)?this.textAreaEl:this.textInputEl;r&&(n.text=r.value,this.hideTextEditors(),this.textInputDrawing=null,this.drawingManager.setEditingText(!1),(e=(t=this.drawingManager).onDrawingsChange)==null||e.call(t),this.scheduleRender())}cancelTextInput(){this.hideTextEditors(),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.raw,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,this.dataStore.invalidate();else{let t=n.findIndex(t=>t.time>e.time);n.splice(t===-1?n.length-1:t,0,e),this.dataStore.invalidate(),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.raw,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,this.dataStore.invalidate(),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.raw,r=n.findIndex(t=>t.time===e);r!==-1&&(n[r]=t,this.dataStore.invalidate(),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+D_,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,n;if(this.dataStore.length===0||this._lastInCompareMode)return;let{priceH:r}=this.getChartLayout(),i=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):t,a=(n=this._lockedAutoFitBase)==null?i:n,o=Kp(i,e,r,24,(a.max-a.min)*10);if(!o)return;this.scrollAnimId!==null&&(cancelAnimationFrame(this.scrollAnimId),this.scrollAnimId=null),this._lockedAutoFitBase||(this._lockedAutoFitBase={...i});let{factor:s,panOffset:c}=qp(this._lockedAutoFitBase,o),l=this.priceScaleFactor,u=this.pricePanOffset;if(Math.abs(s-l)<1e-9&&Math.abs(c-u)<1e-9)return;let d=performance.now(),f=e=>e<.5?2*e*e:-1+(4-2*e)*e,p=e=>{let t=Math.min((e-d)/350,1),n=f(t);this.priceScaleFactor=l+(s-l)*n,this.pricePanOffset=u+(c-u)*n,this.render(),t<1?this.scrollAnimId=requestAnimationFrame(p):(this.scrollAnimId=null,this.scheduleViewportPersist())};this.scrollAnimId=requestAnimationFrame(p)}_currentMarketPrice(){var e,t;let n=this.liveBidAsk;if(n)return n.ask||n.bid;let r=this.dataStore.raw;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=E_(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars);this._defaultVisibleBars=t;let n=Math.max(0,e-t+D_);this.viewport={...this.viewport,startIndex:n,endIndex:e+D_},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=Un(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=Hn(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`})}};o_=j_,o_.DRAW_GESTURE_THRESHOLD=4,o_.TOUCH_HANDLE_SLOP_PX=18,o_.TRADE_DRAG_PIXEL_THRESHOLD=3,o_.AXIS_LOCK_PIXEL_THRESHOLD=6;var M_={toolbar:[{id:`compare`,label:`Compare / Add Symbol`,available:!0},{id:`indicatorTemplates`,label:`Indicator Templates`,available:!0,note:`the chart stores nothing: save on indicatorTemplateSaved, seed with setIndicatorTemplates`},{id:`saveLayout`,label:`Save Chart Layout`,available:!0,note:`save on layoutSaved, seed with setSavedLayouts`},{id:`manageLayouts`,label:`Manage Saved Layouts`,available:!0,note:`applySavedLayout / deleteSavedLayout`},{id:`quickSearch`,label:`Quick Search`,available:!0,note:`openQuickSearch; picks arrive as quickSearchCommand`},{id:`snapshot`,label:`Snapshot`,available:!0},{id:`chartSettingTemplates`,label:`Chart Setting Templates`,available:!0,note:`save on settingsTemplateSaved, seed with setSettingsTemplates`},{id:`applyToAllCharts`,label:`Apply to All Charts`,available:!0,note:`chartSettingsApplied carries applyToAll`}],timeframes:[{id:`1m`,label:`1m`,available:!0,isShow:!0},{id:`3m`,label:`3m`,available:!0,isShow:!1},{id:`4m`,label:`4m`,available:!0,isShow:!1},{id:`5m`,label:`5m`,available:!0,isShow:!0},{id:`10m`,label:`10m`,available:!0,isShow:!1},{id:`15m`,label:`15m`,available:!0,isShow:!0},{id:`30m`,label:`30m`,available:!0,isShow:!0},{id:`1h`,label:`1H`,available:!0,isShow:!0},{id:`2h`,label:`2H`,available:!0,isShow:!1},{id:`4h`,label:`4H`,available:!0,isShow:!0},{id:`8h`,label:`8H`,available:!0,isShow:!1},{id:`1D`,label:`1D`,available:!0,isShow:!0},{id:`1W`,label:`1W`,available:!0,isShow:!0},{id:`1M`,label:`1M`,available:!0,isShow:!0}],durations:[{id:`1D`,label:`1D`,available:!0},{id:`5D`,label:`5D`,available:!0},{id:`1M`,label:`1M`,available:!0},{id:`3M`,label:`3M`,available:!0},{id:`6M`,label:`6M`,available:!0},{id:`1Y`,label:`1Y`,available:!0},{id:`5Y`,label:`5Y`,available:!0},{id:`All`,label:`All`,available:!0}],seriesTypes:[{id:`candlestick`,label:`Candles`,available:!0,isShow:!0},{id:`hollow`,label:`Hollow`,available:!0,isShow:!0},{id:`ohlc`,label:`OHLC`,available:!0,isShow:!0},{id:`line`,label:`Line`,available:!0,isShow:!0},{id:`area`,label:`Area`,available:!0,isShow:!0},{id:`heikinashi`,label:`Heikin Ashi`,available:!0,isShow:!0},{id:`volumecandles`,label:`Volume Candles`,available:!0,isShow:!0},{id:`linemarkers`,label:`Line with Markers`,available:!0,isShow:!0},{id:`step`,label:`Step Line`,available:!0,isShow:!0},{id:`hlcarea`,label:`HLC Area`,available:!0,isShow:!0},{id:`baseline`,label:`Baseline`,available:!0,isShow:!0},{id:`columns`,label:`Columns`,available:!0,isShow:!0},{id:`highlow`,label:`High-Low`,available:!0,isShow:!1},{id:`hlc`,label:`HLC Bars`,available:!0,isShow:!0},{id:`renko`,label:`Renko`,available:!0,isShow:!0},{id:`linebreak`,label:`Line Break`,available:!0,isShow:!0},{id:`kagi`,label:`Kagi`,available:!0,isShow:!0},{id:`pointfigure`,label:`Point & Figure`,available:!0,isShow:!0}],cursors:[{id:`cross`,label:`Cross`,available:!0},{id:`dot`,label:`Dot`,available:!0},{id:`arrow`,label:`Arrow`,available:!0},{id:`demonstration`,label:`Demonstration`,available:!0},{id:`eraser`,label:`Eraser`,available:!0},{id:`valueTooltip`,label:`Value Tooltip on Long Press`,available:!0,note:`mobile long-press crosshair with price/time readout`}],drawingGroups:[{id:`trend_lines`,label:`Trend Lines & Channels`,iconKey:`trend_lines`,available:!0,tools:[{id:`trendLine`,label:`Trendline`,iconKey:`trend_line`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`trendAngle`,label:`Trend By Angle`,iconKey:`trend_angle`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`horizontalLine`,label:`Horizontal Line`,iconKey:`horizontal_line`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`verticalLine`,label:`Vertical Line`,iconKey:`vertical_line`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`crossLine`,label:`Cross Line`,iconKey:`cross_line`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`parallelChannel`,label:`Parallel Channel`,iconKey:`parallel_channel`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`disjointChannel`,label:`Disjoint Channel`,iconKey:`disjoint_channel`,points:4,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`flatChannel`,label:`Flat Top/Bottom Channel`,iconKey:`flat_channel`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`ray`,label:`Ray`,iconKey:`ray`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`infoLine`,label:`Info Line`,iconKey:`info_line`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`extendedLine`,label:`Extended Line`,iconKey:`extended_line`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`horizontalRay`,label:`Horizontal Ray`,iconKey:`horizontal_ray`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0}]},{id:`fibonacci_gann`,label:`Fibonacci & Gann Tools`,iconKey:`fibonacci_gann`,available:!0,tools:[{id:`fibRetracement`,label:`Fibonacci Retracement`,iconKey:`fib_retracement`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibExtension`,label:`Fibonacci Extension`,iconKey:`fib_extension`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibChannel`,label:`Fibonacci Channel`,iconKey:`fib_channel`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibTimezone`,label:`Fibonacci Timezone`,iconKey:`fib_timezone`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibCircles`,label:`Fibonacci Circles`,iconKey:`fib_circles`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibSpiral`,label:`Fibonacci Spiral`,iconKey:`fib_spiral`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibFan`,label:`Fibonacci Speed Resistance Fan`,iconKey:`fib_fan`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gannFan`,label:`Gann Fan`,iconKey:`gann_fan`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gannSquare`,label:`Gann Square`,iconKey:`gann_square`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gannBox`,label:`Gann Box`,iconKey:`gann_box`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`trendBasedFibTime`,label:`Trend-Based Fib Time`,iconKey:`trend_based_fib_time`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibSpeedResistanceArcs`,label:`Fib Speed Resistance Arcs`,iconKey:`fib_speed_resistance_arcs`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibWedge`,label:`Fib Wedge`,iconKey:`fib_wedge`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`pitchfan`,label:`Pitchfan`,iconKey:`pitchfan`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gannSquareFixed`,label:`Gann Square Fixed`,iconKey:`gann_square_fixed`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`geometric_shapes`,label:`Geometric Shapes`,iconKey:`geometric_shapes`,available:!0,tools:[{id:`rectangle`,label:`Rectangle`,iconKey:`rectangle`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`rotatedRectangle`,label:`Rotated Rectangle`,iconKey:`rotated_rectangle`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`ellipse`,label:`Ellipse`,iconKey:`ellipse`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`triangle`,label:`Triangle`,iconKey:`triangle`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`circle`,label:`Circle`,iconKey:`circle`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`arc`,label:`Arc`,iconKey:`arc`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`polyline`,label:`Polyline`,iconKey:`polyline`,points:`multi`,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`path`,label:`Path`,iconKey:`path`,points:`multi`,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`curve`,label:`Curve`,iconKey:`curve`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`doubleCurve`,label:`Double Curve`,iconKey:`double_curve`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`measurement_tools`,label:`Measurement Tools`,iconKey:`measurement_tools`,available:!0,tools:[{id:`priceRange`,label:`Price Range`,iconKey:`price_range`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`dateRange`,label:`Date Range`,iconKey:`date_range`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`datePriceRange`,label:`Date & Price Range`,iconKey:`date_price_range`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`ruler`,label:`Ruler`,iconKey:`ruler`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`forecasting`,label:`Forecasting`,iconKey:`forecasting`,available:!0,tools:[{id:`longPosition`,label:`Long Position`,iconKey:`long_position`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`shortPosition`,label:`Short Position`,iconKey:`short_position`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`forecast`,label:`Forecast`,iconKey:`forecast`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`barsPattern`,label:`Bars Pattern`,iconKey:`bars_pattern`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`anchoredVwap`,label:`Anchored VWAP`,iconKey:`anchored_v_w_a_p`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`pitchfork_tools`,label:`Pitchfork Tools`,iconKey:`pitchfork_tools`,available:!0,tools:[{id:`pitchfork`,label:`Pitchfork`,iconKey:`pitchfork`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`schiffPitchfork`,label:`Schiff Pitchfork`,iconKey:`schiff_pitchfork`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`modifiedSchiff`,label:`Modified Schiff Pitchfork`,iconKey:`modified_schiff`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`insidePitchfork`,label:`Inside Pitchfork`,iconKey:`inside_pitchfork`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0}]},{id:`volume_statistics`,label:`Volume & Statistical Tools`,iconKey:`volume_statistics`,available:!0,tools:[{id:`fixedRangeVP`,label:`Fixed Range Volume Profile`,iconKey:`fixed_range_v_p`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`anchoredVP`,label:`Anchored Volume Profile`,iconKey:`anchored_v_p`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`volumeProfile`,label:`Volume Profile`,iconKey:`volume_profile`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`regressionTrend`,label:`Regression Trend`,iconKey:`regression_trend`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`annotation_tools`,label:`Annotation Tools`,iconKey:`annotation_tools`,available:!0,tools:[{id:`text`,label:`Text`,iconKey:`text`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`callout`,label:`Callout`,iconKey:`callout`,points:2,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`priceLabel`,label:`Price Label`,iconKey:`price_label`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowMarker`,label:`Arrow`,iconKey:`arrow_marker`,points:2,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`flag`,label:`Flag`,iconKey:`flag`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`priceNote`,label:`Price Note`,iconKey:`price_note`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`anchoredNote`,label:`Anchored Note`,iconKey:`anchored_note`,points:2,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowUp`,label:`Arrow Up`,iconKey:`arrow_up`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowDown`,label:`Arrow Down`,iconKey:`arrow_down`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowMarkLeft`,label:`Arrow Mark Left`,iconKey:`arrow_mark_left`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowMarkRight`,label:`Arrow Mark Right`,iconKey:`arrow_mark_right`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`anchoredText`,label:`Anchored Text`,iconKey:`anchored_text`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`note`,label:`Note`,iconKey:`note`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`pin`,label:`Pin`,iconKey:`pin`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`table`,label:`Table`,iconKey:`table`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`comment`,label:`Comment`,iconKey:`comment`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`signpost`,label:`Signpost`,iconKey:`signpost`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0}]},{id:`pattern_recognition`,label:`Pattern Recognition`,iconKey:`pattern_recognition`,available:!0,tools:[{id:`headShoulders`,label:`Head & Shoulders`,iconKey:`head_shoulders`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`trianglePattern`,label:`Triangle Pattern`,iconKey:`triangle_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`threeDrives`,label:`3 Drives Pattern`,iconKey:`three_drives`,points:7,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`abcdPattern`,label:`ABCD Pattern`,iconKey:`abcd_pattern`,points:4,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`cypherPattern`,label:`Cypher Pattern`,iconKey:`cypher_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`butterflyPattern`,label:`Butterfly Pattern`,iconKey:`butterfly_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`batPattern`,label:`Bat Pattern`,iconKey:`bat_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gartleyPattern`,label:`Gartley Pattern`,iconKey:`gartley_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`crabPattern`,label:`Crab Pattern`,iconKey:`crab_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`sharkPattern`,label:`Shark Pattern`,iconKey:`shark_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`xabcdPattern`,label:`XABCD Pattern`,iconKey:`xabcd_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`elliott_wave`,label:`Elliott Wave Tools`,iconKey:`elliott_wave`,available:!0,tools:[{id:`elliottImpulse`,label:`Elliott Impulse (12345)`,iconKey:`elliott_impulse`,points:6,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottCorrective`,label:`Elliott Corrective (ABC)`,iconKey:`elliott_corrective`,points:4,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottTriangle`,label:`Elliott Wave Triangle`,iconKey:`elliott_triangle`,points:6,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottCombination`,label:`Elliott Wave Combination`,iconKey:`elliott_combination`,points:7,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottWxy`,label:`Elliott Double Three (WXY)`,iconKey:`elliott_wxy`,points:4,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottTripleCombo`,label:`Elliott Triple Combo Wave (WXYXZ)`,iconKey:`elliott_triple_combo`,points:6,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0}]},{id:`brush_highlighter`,label:`Brush & Highlighter`,iconKey:`brush_highlighter`,available:!0,tools:[{id:`brush`,label:`Brush`,iconKey:`brush`,points:`multi`,hasText:!1,styleFields:[`strokeColor`,`lineWidth`],available:!0},{id:`highlighter`,label:`Highlighter`,iconKey:`highlighter`,points:`multi`,hasText:!1,styleFields:[`strokeColor`,`lineWidth`],available:!0}]},{id:`advanced_tools`,label:`Advanced Tools`,iconKey:`advanced_tools`,available:!0,tools:[{id:`ghostFeed`,label:`Ghost Feed`,iconKey:`ghost_feed`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`projection`,label:`Projection`,iconKey:`projection`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`sineLine`,label:`Sine Line`,iconKey:`sine_line`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`cyclicLines`,label:`Cyclic Lines`,iconKey:`cyclic_lines`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`timeCycles`,label:`Time Cycles`,iconKey:`time_cycles`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0}]},{id:`price_projections`,label:`Price Projection Tools`,iconKey:`price_projections`,available:!0,tools:[{id:`fibProjection`,label:`Fibonacci Projection`,iconKey:`fib_projection`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`priceProjection`,label:`Price Projection`,iconKey:`price_projection`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`icons`,label:`Emojis, Stickers & Icons`,iconKey:`icons`,available:!0,tools:[{id:`icon`,label:`Emojis, Stickers & Icons`,iconKey:`icon`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0}]}],drawingToolbarOptions:[{id:`magnet`,label:`Magnet Mode`,available:!0,command:`setMagnetMode`},{id:`keepDrawingMode`,label:`Keep Drawing Mode`,available:!0,command:`setKeepDrawingMode`},{id:`zoomIn`,label:`Zoom In`,available:!0,command:`setDrawingTool('zoomIn')`},{id:`copyToAllCharts`,label:`Copy New Drawings to All Charts`,available:!0,command:`setCopyDrawingsToAllCharts`},{id:`hideDrawingsToolbar`,label:`Hide Drawings Toolbar`,available:!0,note:`showDrawingTools at init, setDrawingToolbarVisible at runtime`},{id:`lockAllDrawings`,label:`Lock All Drawings`,available:!0},{id:`hideAllDrawings`,label:`Hide All Drawings`,available:!0},{id:`clearAllDrawings`,label:`Remove All Drawings`,available:!0}],drawingStyleDefaults:{strokeColor:`#2962ff`,lineWidth:1,lineStyle:`solid`,fillOpacity:.1,fontSize:13},indicators:[{shortName:`MA`,name:`Moving Average`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#F5A623`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`EMA`,name:`Exponential Moving Average`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#9B59B6`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`WMA`,name:`Weighted Moving Average`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#e91e63`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`HMA`,name:`Hull Moving Average`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#00bcd4`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`MARibbon`,name:`Moving Average Ribbon`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#ffcc80`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`BB`,name:`Bollinger Bands`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`stdDev`,label:`Std Dev`,min:.1,max:10,step:.1,default:2},{kind:`color`,key:`color`,label:`Color`,default:`#3B82F6`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`KC`,name:`Keltner Channels`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`mult`,label:`Multiplier`,min:.1,max:10,step:.1,default:2},{kind:`number`,key:`atrPeriod`,label:`ATR Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#4caf50`}]},{shortName:`DC`,name:`Donchian Channels`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#26c6da`}]},{shortName:`ATR`,name:`Average True Range`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#ff5722`}]},{shortName:`RSI`,name:`Relative Strength Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#e8b84b`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`Stoch`,name:`Stochastic Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`kPeriod`,label:`K Period`,min:1,max:500,step:1,default:14},{kind:`number`,key:`dPeriod`,label:`D Period`,min:1,max:100,step:1,default:3},{kind:`color`,key:`color`,label:`Color`,default:`#e040fb`}]},{shortName:`StochRSI`,name:`Stochastic RSI`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`rsiPeriod`,label:`RSI Period`,min:1,max:500,step:1,default:14},{kind:`number`,key:`stochPeriod`,label:`Stoch Period`,min:1,max:500,step:1,default:14},{kind:`number`,key:`kPeriod`,label:`K Smooth`,min:1,max:100,step:1,default:3},{kind:`number`,key:`dPeriod`,label:`D Smooth`,min:1,max:100,step:1,default:3},{kind:`color`,key:`color`,label:`Color`,default:`#00e5ff`}]},{shortName:`MACD`,name:`MACD`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast Period`,min:1,max:500,step:1,default:12},{kind:`number`,key:`slow`,label:`Slow Period`,min:1,max:500,step:1,default:26},{kind:`number`,key:`signal`,label:`Signal Period`,min:1,max:100,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#2196f3`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`CCI`,name:`Commodity Channel Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#4db6ac`}]},{shortName:`%R`,name:`Williams %R`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#ff7043`}]},{shortName:`ROC`,name:`Rate of Change`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:12},{kind:`color`,key:`color`,label:`Color`,default:`#80cbc4`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`OBV`,name:`On Balance Volume`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#aed581`}]},{shortName:`VOL`,name:`Volume`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26a69a`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#ef5350`}]},{shortName:`VWAP`,name:`Volume Weighted Average Price`,category:`Volume`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#9c27b0`}]},{shortName:`A/D`,name:`Accumulation/Distribution`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#ce93d8`}]},{shortName:`MFI`,name:`Money Flow Index`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#ffab40`}]},{shortName:`CMF`,name:`Chaikin Money Flow`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#80deea`}]},{shortName:`Pivot`,name:`Pivot Points Standard`,category:`Support/Resistance`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#ffd54f`}]},{shortName:`Fib`,name:`Fibonacci Retracement`,category:`Support/Resistance`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`lookback`,label:`Lookback`,min:1,max:500,step:1,default:50},{kind:`color`,key:`color`,label:`Color`,default:`#e1bee7`}]},{shortName:`Supertrend`,name:`Supertrend`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`atrPeriod`,label:`ATR Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`multiplier`,label:`Multiplier`,min:.1,max:20,step:.1,default:3},{kind:`color`,key:`color`,label:`Color`,default:`#26a69a`}]},{shortName:`PSAR`,name:`Parabolic SAR`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`step`,label:`Step`,min:.001,max:.1,step:.001,default:.02},{kind:`number`,key:`maxAF`,label:`Max AF`,min:.01,max:1,step:.01,default:.2},{kind:`color`,key:`color`,label:`Color`,default:`#ff6b9d`}]},{shortName:`Ichimoku`,name:`Ichimoku Cloud`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`tenkan`,label:`Tenkan Period`,min:1,max:100,step:1,default:9},{kind:`number`,key:`kijun`,label:`Kijun Period`,min:1,max:200,step:1,default:26},{kind:`number`,key:`senkouB`,label:`Senkou B Period`,min:1,max:500,step:1,default:52},{kind:`color`,key:`color`,label:`Color`,default:`#b0bec5`}]},{shortName:`ADX`,name:`ADX`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#fff176`}]},{shortName:`AO`,name:`Awesome Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fastPeriod`,label:`Fast Period`,min:1,max:100,step:1,default:5},{kind:`number`,key:`slowPeriod`,label:`Slow Period`,min:1,max:200,step:1,default:34},{kind:`color`,key:`color`,label:`Color`,default:`#b0bec5`}]},{shortName:`HA`,name:`Heikin Ashi`,category:`Price Transformation`,pane:`main`,multiInstance:!0,isShow:!1,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#90a4ae`},{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26a69a`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#ef5350`}]},{shortName:`LinReg`,name:`Linear Regression`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#ff9800`}]},{shortName:`52W`,name:`52 Week High/Low`,category:`Price`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:2e3,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#78909C`}]},{shortName:`AC`,name:`Accelerator Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`ASI`,name:`Accumulative Swing Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`limit`,label:`Limit Move`,min:1,max:1e4,step:1,default:300},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`ADLine`,name:`Advance/Decline`,category:`Breadth`,pane:`sub`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`ALMA`,name:`Arnaud Legoux MA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:9},{kind:`number`,key:`offset`,label:`Offset`,min:0,max:1,step:.05,default:.85},{kind:`number`,key:`sigma`,label:`Sigma`,min:1,max:20,step:1,default:6},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Aroon`,name:`Aroon`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`AvgPrice`,name:`Average Price`,category:`Price`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#78909C`}]},{shortName:`BOP`,name:`Balance of Power`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`BBPercentB`,name:`Bollinger Bands %B`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`mult`,label:`StdDev`,min:.1,max:10,step:.1,default:2},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`BBWidth`,name:`Bollinger Bands Width`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`mult`,label:`StdDev`,min:.1,max:10,step:.1,default:2},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`ChaikinOsc`,name:`Chaikin Oscillator`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast`,min:1,max:500,step:1,default:3},{kind:`number`,key:`slow`,label:`Slow`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`}]},{shortName:`ChaikinVol`,name:`Chaikin Volatility`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`rocPeriod`,label:`ROC Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`CKS`,name:`Chande Kroll Stop`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`mult`,label:`Multiplier`,min:.1,max:10,step:.1,default:3},{kind:`number`,key:`stopPeriod`,label:`Stop Period`,min:1,max:500,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`CMO`,name:`Chande Momentum Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`ChopZone`,name:`Chop Zone`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`Chop`,name:`Choppiness Index`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#78909C`}]},{shortName:`CRSI`,name:`Connors RSI`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`rsiPeriod`,label:`RSI Period`,min:1,max:500,step:1,default:3},{kind:`number`,key:`streakPeriod`,label:`Streak Period`,min:1,max:500,step:1,default:2},{kind:`number`,key:`rankPeriod`,label:`Rank Period`,min:1,max:500,step:1,default:100},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`Coppock`,name:`Coppock Curve`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`longRoc`,label:`Long ROC`,min:1,max:500,step:1,default:14},{kind:`number`,key:`shortRoc`,label:`Short ROC`,min:1,max:500,step:1,default:11},{kind:`number`,key:`wmaPeriod`,label:`WMA Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`CorrLog`,name:`Correlation – Log`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`}]},{shortName:`Corr`,name:`Correlation Coefficient`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`DPO`,name:`Detrended Price Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:21},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`DMI`,name:`Directional Movement (DMI)`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`number`,key:`adxPeriod`,label:`ADX Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`plusColor`,label:`+DI Color`,default:`#26A69A`},{kind:`color`,key:`minusColor`,label:`-DI Color`,default:`#EF5350`},{kind:`color`,key:`adxColor`,label:`ADX Color`,default:`#FFD600`}]},{shortName:`DEMA`,name:`Double EMA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`EOM`,name:`Ease of Movement`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`EFI`,name:`Elder's Force Index`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:13},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`}]},{shortName:`EMACross`,name:`EMA Cross`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast Period`,min:1,max:500,step:1,default:9},{kind:`number`,key:`slow`,label:`Slow Period`,min:1,max:500,step:1,default:21},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Env`,name:`Envelopes`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`percent`,label:`Percent`,min:.1,max:50,step:.1,default:2},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Fisher`,name:`Fisher Transform`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`Guppy`,name:`Guppy Multiple MA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`fastColor`,label:`Fast Color`,default:`#26A69A`},{kind:`color`,key:`slowColor`,label:`Slow Color`,default:`#EF5350`}]},{shortName:`HV`,name:`Historical Volatility`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`barsPerYear`,label:`Bars/Year`,min:1,max:1e5,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`KVO`,name:`Klinger Oscillator`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast`,min:1,max:500,step:1,default:34},{kind:`number`,key:`slow`,label:`Slow`,min:1,max:500,step:1,default:55},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`KST`,name:`Know Sure Thing`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`LSMA`,name:`Least Squares MA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:25},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`LinRegSlope`,name:`Linear Regression Slope`,category:`Trend`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MACross`,name:`MA Cross`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`slow`,label:`Slow Period`,min:1,max:500,step:1,default:20},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MAEMACross`,name:`MA with EMA Cross`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`MA Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`slow`,label:`EMA Period`,min:1,max:500,step:1,default:20},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MajRule`,name:`Majority Rule`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`MassIdx`,name:`Mass Index`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:25},{kind:`number`,key:`emaPeriod`,label:`EMA Period`,min:1,max:500,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#FFD600`}]},{shortName:`McGinley`,name:`McGinley Dynamic`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#FFD600`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MedPrice`,name:`Median Price`,category:`Price`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#90A4AE`}]},{shortName:`Mom`,name:`Momentum`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`AMA`,name:`MA Adaptive`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`fast`,label:`Fast`,min:1,max:50,step:1,default:2},{kind:`number`,key:`slow`,label:`Slow`,min:2,max:200,step:1,default:30},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MAChannel`,name:`MA Channel`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`},{kind:`color`,key:`color`,label:`Color`,default:`#78909C`}]},{shortName:`MA2`,name:`MA Double`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period1`,label:`Fast Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`period2`,label:`Slow Period`,min:1,max:500,step:1,default:20},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`HammingMA`,name:`MA Hamming`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#EF5350`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MAMulti`,name:`MA Multiple`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`start`,label:`Start Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`step`,label:`Step`,min:1,max:100,step:1,default:10},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`}]},{shortName:`MA3`,name:`MA Triple`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period1`,label:`Fast Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`period2`,label:`Mid Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`period3`,label:`Slow Period`,min:1,max:500,step:1,default:50},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`NetVol`,name:`Net Volume`,category:`Volume`,pane:`sub`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`PriceChannel`,name:`Price Channel`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`PPO`,name:`Price Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast`,min:1,max:500,step:1,default:12},{kind:`number`,key:`slow`,label:`Slow`,min:1,max:500,step:1,default:26},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`EMA`},{kind:`select`,key:`mode`,label:`Mode`,options:[`percent`,`absolute`],default:`percent`},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`PVT`,name:`Price Volume Trend`,category:`Volume`,pane:`sub`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`RCI`,name:`Rank Correlation Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Ratio`,name:`Ratio`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`}]},{shortName:`RVGI`,name:`Relative Vigor Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`color`,key:`signalColor`,label:`Signal Color`,default:`#FF6D00`}]},{shortName:`RVI`,name:`Relative Volatility Index`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`stdevPeriod`,label:`StdDev Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`SMII`,name:`SMI Ergodic Indicator/Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`longPeriod`,label:`Long`,min:1,max:500,step:1,default:20},{kind:`number`,key:`shortPeriod`,label:`Short`,min:1,max:500,step:1,default:5},{kind:`number`,key:`signalPeriod`,label:`Signal`,min:1,max:500,step:1,default:5},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`color`,key:`signalColor`,label:`Signal Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`SMMA`,name:`Smoothed MA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Spread`,name:`Spread`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`}]},{shortName:`StdDev`,name:`Standard Deviation`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#EF5350`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`StdErr`,name:`Standard Error`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:21},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`StdErrBands`,name:`Standard Error Bands`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:21},{kind:`number`,key:`mult`,label:`Multiplier`,min:.1,max:10,step:.1,default:2},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`TSIdx`,name:`Trend Strength Index`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`TEMA`,name:`Triple EMA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`TRIX`,name:`TRIX`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:18},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`TSI`,name:`True Strength Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`longPeriod`,label:`Long`,min:1,max:500,step:1,default:25},{kind:`number`,key:`shortPeriod`,label:`Short`,min:1,max:500,step:1,default:13},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`TypPrice`,name:`Typical Price`,category:`Price`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#B0BEC5`}]},{shortName:`UO`,name:`Ultimate Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`p1`,label:`Fast`,min:1,max:500,step:1,default:7},{kind:`number`,key:`p2`,label:`Mid`,min:1,max:500,step:1,default:14},{kind:`number`,key:`p3`,label:`Slow`,min:1,max:500,step:1,default:28},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`VolCtC`,name:`Volatility Close-to-Close`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`barsPerYear`,label:`Bars/Year`,min:1,max:1e5,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`VolIdx`,name:`Volatility Index`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#FFD600`}]},{shortName:`VolOHLC`,name:`Volatility O-H-L-C`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`barsPerYear`,label:`Bars/Year`,min:1,max:1e5,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`}]},{shortName:`VolZero`,name:`Volatility Zero Trend Close-to-Close`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`barsPerYear`,label:`Bars/Year`,min:1,max:1e5,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`}]},{shortName:`VolOsc`,name:`Volume Oscillator`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast`,min:1,max:500,step:1,default:5},{kind:`number`,key:`slow`,label:`Slow`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`VPVR`,name:`Volume Profile Visible Range`,category:`Volume`,pane:`main`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`number`,key:`rows`,label:`Rows`,min:4,max:200,step:1,default:24},{kind:`color`,key:`fillColor`,label:`Fill`,default:`rgba(120,144,156,0.45)`},{kind:`color`,key:`pocColor`,label:`POC Color`,default:`rgba(255,214,0,0.6)`}]},{shortName:`Vortex`,name:`Vortex Indicator`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`plusColor`,label:`+VI Color`,default:`#26A69A`},{kind:`color`,key:`minusColor`,label:`-VI Color`,default:`#EF5350`}]},{shortName:`VWMA`,name:`VWMA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Alligator`,name:`Williams Alligator`,category:`Trend`,pane:`main`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`jawColor`,label:`Jaw`,default:`#2962FF`},{kind:`color`,key:`teethColor`,label:`Teeth`,default:`#EF5350`},{kind:`color`,key:`lipsColor`,label:`Lips`,default:`#26A69A`}]},{shortName:`Fractal`,name:`Williams Fractal`,category:`Price`,pane:`main`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`number`,key:`n`,label:`Bars Each Side`,min:1,max:10,step:1,default:2},{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`ZigZag`,name:`Zig Zag`,category:`Price`,pane:`main`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`number`,key:`deviation`,label:`Deviation %`,min:.1,max:50,step:.1,default:5},{kind:`color`,key:`color`,label:`Color`,default:`#FFD600`}]}],chartSettings:{title:`Chart Settings`,available:!0,reset:{id:`reset`,label:`Reset to Defaults`,type:`action`,available:!0},tabs:[{id:`appearance`,label:`Appearance`,available:!0,sections:[{id:`theme`,label:`Theme`,available:!0,note:`row is shown only when the host enables enableThemeToggle`,items:[{id:`theme`,label:`Theme`,type:`toggle`,options:[{value:`dark`,label:`Dark`},{value:`light`,label:`Light`}],default:`dark`,available:!0}]},{id:`colors`,label:`Colors`,available:!0,note:`applies to the plot only (canvasColors / setCanvasColors), separately per theme`,items:[{id:`background`,label:`Background`,type:`color`,keys:[`background`],available:!0,default:{dark:`#141d22`,light:`#ffffff`}},{id:`grid`,label:`Grid`,type:`color`,keys:[`grid`],available:!0,default:{dark:`#243344`,light:`#efefef`}},{id:`axisText`,label:`Axis Text`,type:`color`,keys:[`axisText`],available:!0,default:{dark:`#a8bac8`,light:`#666666`}},{id:`axisBorder`,label:`Axis Border`,type:`color`,keys:[`axisBorder`],available:!0,default:{dark:`#1c2a35`,light:`#cccccc`}},{id:`crosshair`,label:`Crosshair`,type:`color`,keys:[`crosshair`],available:!0,default:{dark:`rgba(255,255,255,0.4)`,light:`#999999`}},{id:`candleBody`,label:`Candle Body`,type:`color`,keys:[`candleUp`,`candleDown`],available:!0,default:{dark:[`#5caf79`,`#DF6868`],light:[`#5caf79`,`#DF6868`]}},{id:`candleWick`,label:`Candle Wick`,type:`color`,keys:[`wickUp`,`wickDown`],available:!0,default:{dark:[`#5caf79`,`#DF6868`],light:[`#5caf79`,`#DF6868`]}},{id:`candleBorder`,label:`Candle Border`,type:`color`,keys:[`borderUp`,`borderDown`],available:!0,default:{dark:[`#5caf79`,`#DF6868`],light:[`#5caf79`,`#DF6868`]}},{id:`volume`,label:`Volume`,type:`color`,keys:[`volumeUp`,`volumeDown`],available:!0,default:{dark:[`rgba(92,175,121,0.4)`,`rgba(223,104,104,0.4)`],light:[`rgba(92,175,121,0.6)`,`rgba(223,104,104,0.6)`]}}]},{id:`chartElements`,label:`Chart elements`,available:!0,items:[{id:`priceAxisCountdown`,label:`Price-axis countdown`,description:`Show the candle close countdown on the right price axis.`,type:`toggle`,default:!1,available:!0}]}]},{id:`trading`,label:`Trading`,available:!0,sections:[{id:`tfc`,label:`Trade from Charts`,available:!0,items:[{id:`tradeDisplayFilter`,label:`Show`,description:`Controls which trade levels are displayed on the chart`,type:`segmented`,options:[{value:`all`,label:`All`},{value:`positions`,label:`Positions Only`},{value:`orders`,label:`Orders Only`},{value:`none`,label:`None`}],default:`all`,available:!0},{id:`positionRenderStyle`,label:`Position Style`,description:`How open positions are rendered on the chart`,type:`segmented`,options:[{value:`line`,label:`Full Line`},{value:`dot`,label:`Dot`}],default:`line`,available:!0,note:`switches to Dot automatically above tradesThresholdForHorizontalLine levels unless the user picked a style`},{id:`showTradeLevelsAlways`,label:`Always show SL/TP`,description:`Keep stop-loss and take-profit lines visible without hovering.`,type:`toggle`,default:!0,available:!0}]}]},{id:`symbol`,label:`Symbol`,available:!0,sections:[{id:`symbol`,label:`Symbol`,available:!0,items:[{id:`barColorSource`,label:`Color bars based on previous close`,type:`select`,available:!0,command:`setBarColorSource`,options:[{value:`open`,label:`Open`},{value:`previousClose`,label:`Previous close`}],default:`open`},{id:`pricePrecision`,label:`Price precision`,type:`select`,available:!0,command:`setPricePrecision`,key:`digits`,options:[{value:null,label:`Default`},{value:0,label:`1`},{value:1,label:`0.1`},{value:2,label:`0.01`},{value:3,label:`0.001`},{value:4,label:`0.0001`},{value:5,label:`0.00001`}],default:null},{id:`timezone`,label:`Timezone`,type:`select`,default:`UTC`,available:!0,command:`setScalesSettings`,key:`timezone`}]}]},{id:`statusLine`,label:`Status line`,available:!0,sections:[{id:`statusLine`,label:`Status line`,available:!0,items:[{id:`symbol`,label:`Symbol`,type:`toggle`,default:!0,available:!0,command:`setStatusLineSettings`,key:`symbol`},{id:`ohlc`,label:`OHLC values`,type:`toggle`,default:!0,available:!0,command:`setStatusLineSettings`,key:`ohlc`},{id:`barChange`,label:`Bar change values`,type:`toggle`,default:!1,available:!0,command:`setStatusLineSettings`,key:`barChange`},{id:`volume`,label:`Volume`,type:`toggle`,default:!0,available:!0,command:`setStatusLineSettings`,key:`volume`}]}]},{id:`scales`,label:`Scales and lines`,available:!0,sections:[{id:`scales`,label:`Scales and lines`,available:!0,items:[{id:`lastPriceLabel`,label:`Last price label`,type:`toggle`,default:!0,available:!0,command:`setScalesSettings`,key:`lastPriceLabel`},{id:`bidLabel`,label:`Bid label`,type:`toggle`,default:!1,available:!0,command:`setScalesSettings`,key:`bidLabel`},{id:`askLabel`,label:`Ask label`,type:`toggle`,default:!1,available:!0,command:`setScalesSettings`,key:`askLabel`},{id:`highLowLabels`,label:`High / low labels`,type:`toggle`,default:!1,available:!0,command:`setScalesSettings`,key:`highLowLabels`},{id:`timeAxisCountdown`,label:`Countdown to bar close`,type:`toggle`,default:!1,available:!0,command:`setScalesSettings`,key:`timeAxisCountdown`},{id:`priceScaleMode`,label:`Scale`,type:`select`,available:!0,command:`setPriceScaleMode`,key:`mode`,options:[{value:`normal`,label:`Regular`},{value:`percent`,label:`Percent`},{value:`log`,label:`Logarithmic`}],default:`normal`},{id:`autoScale`,label:`Auto scale`,type:`toggle`,default:!0,available:!0,command:`setAutoScale`,key:`enabled`}]}]},{id:`canvas`,label:`Canvas`,available:!0,note:`colours stay under Appearance > Colors`,sections:[{id:`canvas`,label:`Canvas`,available:!0,items:[{id:`gridHorizontal`,label:`Horizontal grid lines`,type:`toggle`,default:!0,available:!0,command:`setCanvasOptions`,key:`gridHorizontal`},{id:`gridVertical`,label:`Vertical grid lines`,type:`toggle`,default:!0,available:!0,command:`setCanvasOptions`,key:`gridVertical`},{id:`watermarkVisible`,label:`Watermark`,type:`toggle`,default:!1,available:!0,command:`setCanvasOptions`,key:`watermarkVisible`},{id:`watermarkText`,label:`Watermark text`,type:`text`,default:``,available:!0,command:`setCanvasOptions`,key:`watermarkText`},{id:`watermarkSize`,label:`Watermark size`,type:`number`,default:72,available:!0,command:`setCanvasOptions`,key:`watermarkSize`},{id:`watermarkOpacity`,label:`Watermark opacity`,type:`number`,default:.06,min:0,max:1,step:.01,available:!0,command:`setCanvasOptions`,key:`watermarkOpacity`},{id:`crosshairStyle`,label:`Crosshair style`,type:`select`,available:!0,command:`setCanvasOptions`,key:`crosshairStyle`,options:[{value:`dashed`,label:`Dashed`},{value:`solid`,label:`Solid`},{value:`dotted`,label:`Dotted`}],default:`dashed`},{id:`crosshairWidth`,label:`Crosshair width`,type:`number`,default:1,min:1,max:4,step:1,available:!0,command:`setCanvasOptions`,key:`crosshairWidth`}]}]},{id:`templates`,label:`Templates`,available:!0,sections:[{id:`templates`,label:`Templates`,available:!0,items:[{id:`saveTemplate`,label:`Save as template`,type:`action`,available:!0,command:`captureSettingsTemplate`},{id:`applyTemplate`,label:`Apply template`,type:`select`,available:!0,command:`applySettingsTemplate`},{id:`applyToAllCharts`,label:`Apply to all charts`,type:`action`,available:!0,command:`applyChartSettings`}]}]}]},canvasColorKeys:[`background`,`grid`,`axisText`,`axisBorder`,`crosshair`,`candleUp`,`candleDown`,`wickUp`,`wickDown`,`borderUp`,`borderDown`,`volumeUp`,`volumeDown`],priceSources:[`bid`,`ask`,`ltp`],limits:{maxSubPanes:3,maxCompares:8}};function N_(){$(`catalog`,{catalogVersion:`1.3.0-beta.27`,...M_})}var Q=null,P_=new Map,F_=new Map,I_=0;function L_(){return`dr_${Date.now()}_${I_++}`}function R_(){return`cr_${Date.now()}_${I_++}`}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 z_(e={}){var t;Q==null||Q.destroy();let n=document.getElementById(`chart`),{enableTrading:r,onSymbolClick:i,onAskAiClick:a,orderLineTimeDrag:o,enableForecasting:s,enableCursorModes:c,enableIconTools:l,enableChartSettings:u,enableScaleControls:d,enableSidePanels:f,...p}=e,m={...p.features,...o?{orderLineTimeDrag:!0}:{},...s?{enableForecasting:!0}:{},...c?{enableCursorModes:!0}:{},...l?{enableIconTools:!0}:{},...u?{enableChartSettings:!0}:{},...d?{enableScaleControls:!0}:{},...f?{enableSidePanels:!0}:{}},h=(t=p.timeframe)==null?`1D`:t;Q=new j_({theme:`dark`,...p,...Object.keys(m).length>0?{features:m}:{},container:n,dataLoader:e=>{for(let[,e]of P_)e.reject(Error(`cancelled`));P_.clear();let t=L_(),n=Q==null?void 0:Q.getState();return new Promise((r,i)=>{var a;P_.set(t,{resolve:r,reject:i}),$(`dataRequest`,{requestId:t,timeframe:(a=n==null?void 0:n.timeframe)==null?h:a,interval:e.interval,start:e.start.getTime(),end:e.end.getTime(),priceSource:e.priceSource})})},compareDataLoader:e=>{let t=R_(),n=Q==null?void 0:Q.getState();return new Promise((r,i)=>{var a;F_.set(t,{resolve:r,reject:i}),$(`compareDataRequest`,{requestId:t,symbol:e.symbol,timeframe:(a=n==null?void 0:n.timeframe)==null?h: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})=>{h=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)),Q.on(`snapshot`,e=>$(`snapshot`,e)),Q.on(`layoutChange`,e=>$(`layoutChange`,e)),Q.on(`layoutSaved`,e=>$(`layoutSaved`,e)),Q.on(`layoutApplied`,e=>$(`layoutApplied`,e)),Q.on(`layoutDeleted`,e=>$(`layoutDeleted`,e)),Q.on(`indicatorTemplateSaved`,e=>$(`indicatorTemplateSaved`,e)),Q.on(`indicatorTemplateApplied`,e=>$(`indicatorTemplateApplied`,e)),Q.on(`indicatorTemplateDeleted`,e=>$(`indicatorTemplateDeleted`,e)),Q.on(`settingsTemplateSaved`,e=>$(`settingsTemplateSaved`,e)),Q.on(`settingsTemplateApplied`,e=>$(`settingsTemplateApplied`,e)),Q.on(`settingsTemplateDeleted`,e=>$(`settingsTemplateDeleted`,e)),Q.on(`chartSettingsApplied`,e=>$(`chartSettingsApplied`,e)),Q.on(`quickSearchCommand`,e=>$(`quickSearchCommand`,e)),Q.on(`cursorModeChange`,e=>$(`cursorModeChange`,e)),Q.on(`magnetModeChange`,e=>$(`magnetModeChange`,e)),Q.on(`keepDrawingModeChange`,e=>$(`keepDrawingModeChange`,e)),Q.on(`copyDrawingsToAllChange`,e=>$(`copyDrawingsToAllChange`,e)),Q.on(`drawingToolbarVisibility`,e=>$(`drawingToolbarVisibility`,e)),Q.on(`drawingCreated`,e=>$(`drawingCreated`,e)),Q.on(`pricePrecisionChange`,e=>$(`pricePrecisionChange`,e)),Q.on(`barColorSourceChange`,e=>$(`barColorSourceChange`,e)),Q.on(`timezoneChange`,e=>$(`timezoneChange`,e)),Q.on(`statusLineChange`,e=>$(`statusLineChange`,e)),Q.on(`scalesChange`,e=>$(`scalesChange`,e)),Q.on(`canvasOptionsChange`,e=>$(`canvasOptionsChange`,e)),Q.on(`priceScaleModeChange`,e=>$(`priceScaleModeChange`,e)),Q.on(`autoScaleChange`,e=>$(`autoScaleChange`,e)),Q.on(`goToDate`,e=>$(`goToDate`,e)),Q.on(`sidePanelVisibility`,e=>$(`sidePanelVisibility`,e))}function B_(e){if(e.type===`init`){z_(e.payload),N_();return}if(e.type===`getCatalog`){N_();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`addDrawing`:Q.addDrawing(e.payload.drawing);break;case`getState`:$(`stateSnapshot`,Q.getState());break;case`setState`:Q.setState(e.payload);break;case`resolveDataRequest`:{let t=P_.get(e.payload.requestId);t&&(P_.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`requestSnapshot`:{var n;let t=Q.toDataUrl();t?$(`snapshot`,{dataUrl:t,action:(n=e.payload.action)==null?`download`:n}):$(`error`,{message:`Snapshot failed: no canvas to capture.`});break}case`setIndicatorTemplates`:Q.setIndicatorTemplates(e.payload.templates);break;case`captureIndicatorTemplate`:Q.captureIndicatorTemplate(e.payload.name);break;case`applyIndicatorTemplate`:Q.applyIndicatorTemplate(e.payload.id);break;case`deleteIndicatorTemplate`:Q.deleteIndicatorTemplate(e.payload.id);break;case`setSettingsTemplates`:Q.setSettingsTemplates(e.payload.templates);break;case`captureSettingsTemplate`:Q.captureSettingsTemplate(e.payload.name);break;case`applySettingsTemplate`:Q.applySettingsTemplate(e.payload.id);break;case`deleteSettingsTemplate`:Q.deleteSettingsTemplate(e.payload.id);break;case`applyChartSettings`:Q.applyChartSettings(e.payload.settings);break;case`setSavedLayouts`:Q.setSavedLayouts(e.payload.layouts);break;case`captureSavedLayout`:Q.captureSavedLayout(e.payload.name,e.payload.paneId);break;case`applySavedLayout`:Q.applySavedLayout(e.payload.id,e.payload.paneId);break;case`deleteSavedLayout`:Q.deleteSavedLayout(e.payload.id);break;case`setLayoutPreset`:Q.setLayoutPreset(e.payload.presetId);break;case`openQuickSearch`:Q.openQuickSearch();break;case`closeQuickSearch`:Q.closeQuickSearch();break;case`setSeriesOptions`:Q.setSeriesOptions(e.payload.options);break;case`setCursorMode`:Q.setCursorMode(e.payload.mode);break;case`setMagnetMode`:Q.setMagnetMode(e.payload.enabled);break;case`setKeepDrawingMode`:Q.setKeepDrawingMode(e.payload.enabled);break;case`setCopyDrawingsToAllCharts`:Q.setCopyDrawingsToAllCharts(e.payload.enabled);break;case`setDrawingToolbarVisible`:Q.setDrawingToolbarVisible(e.payload.visible);break;case`setStatusLineSettings`:Q.setStatusLineSettings(e.payload.statusLine);break;case`setScalesSettings`:Q.setScalesSettings(e.payload.scales);break;case`setCanvasOptions`:Q.setCanvasOptions(e.payload.canvas);break;case`setBarColorSource`:Q.setBarColorSource(e.payload.source);break;case`setPricePrecision`:Q.setPricePrecision(e.payload.digits);break;case`setPriceScaleMode`:Q.setPriceScaleMode(e.payload.mode);break;case`setAutoScale`:Q.setAutoScale(e.payload.enabled);break;case`goToDate`:Q.goToDate(e.payload.date);break;case`setSidePanelVisible`:Q.setSidePanelVisible(e.payload.visible);break;case`setSidePanelTab`:Q.setSidePanelTab(e.payload.tab);break;case`setDrawingVisible`:Q.setDrawingVisible(e.payload.id,e.payload.visible);break;case`setDrawingLocked`:Q.setDrawingLocked(e.payload.id,e.payload.locked);break;case`deleteDrawing`:Q.deleteDrawing(e.payload.id);break;case`selectDrawing`:Q.selectDrawing(e.payload.id);break;case`resolveCompareDataRequest`:{let t=F_.get(e.payload.requestId);t&&(F_.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{B_(t)}catch(e){$(`error`,{message:String(e)})}}},$(`ready`,{})})})();</script>
|
|
318
|
+
`,document.head.appendChild(e)}function T_(){return typeof window<`u`&&(`ontouchstart`in window||navigator.maxTouchPoints>1)}function E_(e=2,t=!1,n=y_,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&&!T_()?n:r===void 0?Math.max(10,Math.round(n/e)):r}var D_=4;function O_(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 k_(e){let t=e.max-e.min;return t>=100?0:t>=10?1:t>=1?2:t>=.1?3:4}function A_(e){if(!e)return{};let t={};return e.lastPriceLabel!==void 0&&(t.lastPriceLabel=e.lastPriceLabel),e.bidLabel!==void 0&&(t.bidLabel=e.bidLabel),e.askLabel!==void 0&&(t.askLabel=e.askLabel),e.highLowLabels!==void 0&&(t.highLowLabels=e.highLowLabels),e.timeAxisCountdown!==void 0&&(t.timeAxisCountdown=e.timeAxisCountdown),t}var j_=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,s,c,l,u,d,p,m,h,_,v,y,b,C,w,T,E,D,O,k,A,j,M,P,I,L,R,ee,z,te,re,ie,oe,se,ce,le,ue,B,de,fe,pe,me,he;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={...Ni},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.indicatorTemplatesEnabled=!1,this.indicatorTemplateList=[],this.settingsTemplatesEnabled=!1,this.settingsTemplateList=[],this.savedLayoutsEnabled=!1,this.savedLayoutList=[],this.quickSearchEnabled=!1,this.quickSearchShowButton=!1,this.quickSearch=null,this.hostCommands=[],this.allowedTimeframes=null,this.seriesOptions={},this.cursorMode=`cross`,this.magnetMode=!1,this.keepDrawingMode=!1,this.drawingToolbarVisible=!0,this.copyDrawingsToAll=!1,this.pricePrecisionOverride=null,this.barColorSource=`open`,this.sidePanel=null,this.middleRow=null,this.priceScaleMode=`normal`,this.autoScaleEnabled=!0,this.autoScaleLock=null,this._lastPercentMode=!1,this.statusLineSettings={},this.scalesSettings={},this.canvasOptions={},this.pendingIconGlyph=`⭐`,this.pendingIconKind=`emoji`,this.demoTrail=[],this.valueTooltipEnabled=!1,this.valueTooltip=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=y_,this.dataStore=new t,this.scaleManager=new r,this.emitter=new f,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={...ut},this.levelClusteringEnabled=!0,this.clusterThresholdDistance=20,this.enableThemeToggle=!1,this.activeIndicators=[],this.indicatorInstanceSeq=0,this.indicatorResults=new Map,this.viewport={startIndex:0,endIndex:E_(),candleWidth:8,candleGap:2},this._targetViewport={startIndex:0,endIndex:E_(),candleWidth:8,candleGap:2},this._isPanning=!1,this.crosshair=null,this.drawingManager=new vd,this.textInputEl=null,this.textAreaEl=null,this.textInputDrawing=null,this._pendingDrawDrag=null,this._pendingDrawResize=null,this._pendingTradeDrag=null,this.paneHeightOverrides=new Map,this.separatorDrag=null,this.priceAxisWidth=m_,this.timeAxisHeight=h_,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={...Ri},this.minInitialBars=10,this.maxLookbackMs=365*24*60*60*1e3,this.prefetchThreshold=80,this.defaultVisibleBars=y_,this.defaultMobileVisibleBars=void 0,this.mobileBarDivisor=2,this.explicitMobileDivisor=!1,this._autoVisibleBars=!0,this.targetCandleWidth=b_,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.onPointerEnter=()=>{this._cachedWrapRect=null,this._cachedDrawRect=null},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;g&&this.recordDemoTrail(u,d);let _=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),ln(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),u,d),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(Ve(u,d,this.clusterBadgeAreas)||Ht(u,d,this.tradeLevelHitAreas)||Ut(u,d,this.tradeLevelEditAreas)||Wt(u,d,this.tradeLevelConfirmAreas)||cn(u,d,this.offViewportHitAreas)){this.drawCanvas.style.cursor=`pointer`,this.scheduleRender();return}let e=Kt(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=Gt(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.drawingContext());this.drawCanvas.style.cursor=e?`move`:this.idleCursor()}}}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=this.idleCursor(),this.renderTradeLayer();return}if(this.axisDrag){let e=this.axisDrag.axis===`price`||this.axisDrag.axis===`time`;this.axisDrag=null,this.drawCanvas.style.cursor=this.idleCursor(),this.scheduleRender(),e&&this.scheduleViewportPersist()}if(this.separatorDrag&&(this.separatorDrag=null,this.drawCanvas.style.cursor=this.idleCursor(),this.scheduleRender()),this._pendingDrawDrag=null,this._pendingDrawResize=null,this.drawingManager.isDraggingDrawing()&&(this.drawingManager.endDrag(),this.drawCanvas.style.cursor=this.idleCursor(),this.scheduleRender()),this.drawingManager.isResizingDrawing()){var r;this.drawingManager.endResize(),(r=this.drawingStylePopover)==null||r.refresh(),this.drawCanvas.style.cursor=this.idleCursor(),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+v_;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+v_}}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,this.drawingContext());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 _=Ve(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=cn(c,l,this.offViewportHitAreas);if(v){e.preventDefault(),this.panHandler.cancel(),this.scrollToCenterPrice(v.targetPrice);return}let y=Wt(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=Ht(c,l,this.tradeLevelHitAreas);if(b){e.preventDefault(),this._handleTradeLevelClose(b);return}if(!this.drawingManager.getActiveTool()){let t=Ut(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=Kt(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=qt(c,l,this.tradeAddBracketAreas);if(t){e.preventDefault(),this._startAddBracketFromHit(t,l),this.scheduleRender();return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let t=Gt(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]),i=this.touchToPixels(e.touches[0]);if(this._lastDrawingTouchPoint=r,this.axisDrag){var a;e.preventDefault();let t=e.touches[0],n=(a=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():a,r=t.clientX-n.left,i=t.clientY-n.top;if(this.axisDrag.axis===`price`){let e=i-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=i-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,i.x,i.y),this.scheduleRender();return}if(this.drawingManager.isDraggingDrawing()||this.drawingManager.isResizingDrawing()){e.preventDefault(),e.stopPropagation(),this.drawingManager.onMouseMove(r,i.x,i.y),this.scheduleRender();return}if(this._pendingTradeDrag){var o;e.preventDefault();let t=e.touches[0],n=(o=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():o;if(!this._upgradePendingTradeDrag(t.clientX-n.left,t.clientY-n.top))return}if((t=this.orderTimeDragHandler)!=null&&t.active){var s;e.preventDefault();let t=e.touches[0],n=(s=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():s,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 o=this.orderTimeDragHandler.dragLabel,c=a===null?void 0:this.barIndexToTimestamp(a);o&&a!==null&&c!==void 0&&this.emitter.emit(`orderLineMoving`,{label:o,toTimestamp:c,toBarIndex:a,isFullscreen:this.isFullscreen});return}if((n=this.tradeDragHandler)!=null&&n.active){var c,l,u,d,f;e.preventDefault();let t=e.touches[0],n=(c=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():c,r=t.clientY-n.top,{priceH:i}=this.getChartLayout(),a=(l=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):l,o=this.tradeDragHandler.onMouseMove(r,this.scaleManager,a,i);if(this.tradeDragNewPrice=(u=o==null?void 0:o.newPrice)==null?null:u,this.tradeDragNewSLPrice=(d=o==null?void 0:o.derivedSLPrice)==null?null:d,this.tradeDragNewTPPrice=(f=o==null?void 0:o.derivedTPPrice)==null?null:f,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 p,m;let t=e.touches[0],n=(p=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():p,r=(m=this._mobileTapStartXY)==null?this._longPressPoint:m;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 h,g;e.preventDefault();let t=e.touches[0],n=(h=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():h,r=t.clientX-n.left,i=t.clientY-n.top,{chartW:a,priceH:o}=this.getChartLayout(),s=(g=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):g,c=n.height-this.timeAxisHeight;if(r<a&&i<c){var _;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=(_=this.dataStore.all[n])==null?null:_;this.crosshair=this.selectedTradeLabel===null?{x:r,y:i,barIndex:n,price:t,bar:c}:null,this.tradeButton&&(this.tradeButton.setY(i),this._isTradingActive||ln(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()){var a;this.drawingManager.endResize(),(a=this.drawingStylePopover)==null||a.refresh(),this.scheduleRender()}if(this._mobileTapStartXY){var o,s;this._mobileTapStartXY=null,this._mobileCrosshairActive=!1,this.crosshair=null,(o=this.valueTooltip)==null||o.hide(),(s=this.tradeButton)==null||s.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=Ve(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=cn(i,a,this.offViewportHitAreas);if(p){this.scrollToCenterPrice(p.targetPrice);return}let m=Wt(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=Ht(i,a,this.tradeLevelHitAreas);if(h){this._handleTradeLevelClose(h);return}if(!this.drawingManager.getActiveTool()){let e=Ut(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=qt(i,a,this.tradeAddBracketAreas);if(e){this._startAddBracketFromHit(e,a);return}}if(this.tradeDragHandler&&!this.drawingManager.getActiveTool()){let e=Kt(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=Gt(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+v_;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+v_}}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?__:b;this.separatorDrag={instanceId:y.instanceId,startY:a,startH:t},this.scheduleRender();return}if(!this.handleEraserClick(i,a)){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.drawingContext());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=this.drawingManager.getSelectedDrawing();if(c&&pd.has(c.type)){let e=this.getScaledPriceRange(this.viewport);if(c.hitTest(r,i,this.scaleManager,this.viewport,e,a,o)){this.showTextInput(c);return}}this.scheduleRender()},this.onKeyDown=e=>{var t,n;if(this.quickSearchEnabled&&!((t=this.quickSearch)!=null&&t.isVisible)){let t=(e.ctrlKey||e.metaKey)&&(e.key===`k`||e.key===`K`),n=e.key===`/`&&!e.ctrlKey&&!e.metaKey&&!e.altKey;if(t||n&&!Hf(e.target)){e.preventDefault(),this.openQuickSearch();return}}if(e.key===`Escape`&&(n=this.orderTimeDragHandler)!=null&&n.active){this.orderTimeDragHandler.cancel(),this.tradeDragNewBarIndex=null,this.drawCanvas.style.cursor=this.idleCursor(),this.renderTradeLayer(),e.preventDefault();return}if(e.key===`Escape`&&this.pnlPillExpanded){var r;this.pnlPillExpanded=!1,(r=this.pnlPill)==null||r.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 i=(e.ctrlKey||e.metaKey)&&e.key===`z`?`z`:e.key;if(this.drawingManager.onKeyDown(i)){var a;e.preventDefault(),this.hideMobileDrawingFlyout(),(a=this.leftBar)==null||a.setActiveTool(this.drawingManager.getActiveTool()),this.drawCanvas.style.cursor=this.idleCursor(),this.scheduleRender()}},this.onTick=e=>{var t;if(this._isDestroyed)return;let n=this.dataStore.raw;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,this.dataStore.invalidate()}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.dataStore.invalidate(),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`);or();let ge=()=>{this._cachedWrapRect=null,this._cachedDrawRect=null},_e=window.visualViewport;_e&&(_e.addEventListener(`resize`,ge),_e.addEventListener(`scroll`,ge)),document.addEventListener(`scroll`,ge,{capture:!0,passive:!0}),window.addEventListener(`resize`,ge);let ve=typeof ResizeObserver<`u`?new ResizeObserver(ge):null;ve==null||ve.observe(document.documentElement),document.body&&(ve==null||ve.observe(document.body)),this.disposeVvListener=()=>{_e&&(_e.removeEventListener(`resize`,ge),_e.removeEventListener(`scroll`,ge)),document.removeEventListener(`scroll`,ge,{capture:!0}),window.removeEventListener(`resize`,ge),ve==null||ve.disconnect()};let{container:ye,theme:be=`dark`,series:xe=`candlestick`,showVolume:Se=!0,showUI:Ce=!0,timeframe:we=`1D`,duration:Te=void 0,symbol:Ee=``,isins:De,onIsinSelect:Oe,onSymbolClick:ke,onOrderSubmit:Ae,dataLoader:je,uiConfig:Me,labels:Ne,tickActivityMs:Pe=3e4,hideSymbolAndTick:Fe=!1,hideOHLCV:Ie=!1,showBottomBar:Le=!1}=i;if(this.dataLoader=je==null?null:je,this.compareDataLoader=(a=i.compareDataLoader)==null?null:a,this.compareManager=new Cf({emitter:this.emitter,loader:this.compareDataLoader,maxCompares:i.maxCompares}),this.indicatorTemplatesEnabled=i.enableIndicatorTemplates===!0,this.indicatorTemplateList=this.indicatorTemplatesEnabled?mp(i.indicatorTemplates):[],this.settingsTemplatesEnabled=i.enableSettingsTemplates===!0,this.settingsTemplateList=this.settingsTemplatesEnabled?cp(i.settingsTemplates):[],this.savedLayoutsEnabled=i.enableSavedLayouts===!0&&i.enableMultipleLayouts===!0,this.savedLayoutList=this.savedLayoutsEnabled?ep(i.savedLayouts):[],this.allowedTimeframes=(o=i.timeframes)==null?null:o,this.seriesOptions=(s=i.seriesOptions)==null?{}:s,this.cursorMode=(c=i.cursorMode)==null?`cross`:c,this.magnetMode=i.magnetMode===!0,this.keepDrawingMode=i.keepDrawingMode===!0,this.copyDrawingsToAll=i.copyDrawingsToAllCharts===!0,this.drawingManager.setKeepDrawingMode(this.keepDrawingMode),this.valueTooltipEnabled=i.valueTooltip===!0,this.quickSearchEnabled=i.enableQuickSearch===!0,this.quickSearchShowButton=this.quickSearchEnabled&&((l=i.quickSearch)==null?void 0:l.showButton)===!0,this.drawingToolsEnabled=i.showDrawingTools!==!1,this.settingsEnabled=i.showSettings!==!1,this.fullscreenEnabled=i.showFullscreenButton!==!1,this.uiConfig=N(Me),this.labels=F(Ne),this.tickActivityMs=Pe,this.maxCandles=(u=i.maxCandles)==null?200:u,this._durationTimeframeMap={...Ri,...i.durationTimeframeMap},this.minInitialBars=Math.max(0,(d=i.minInitialBars)==null?10:d),this.maxLookbackMs=Math.max(0,(p=i.maxLookbackMs)==null?365*24*60*60*1e3:p),this.prefetchThreshold=(m=i.prefetchThreshold)==null?80:m,this.defaultVisibleBars=(h=i.defaultVisibleBars)==null?y_:h,this.defaultMobileVisibleBars=i.defaultMobileVisibleBars,this.explicitMobileDivisor=i.mobileBarDivisor!==void 0,this.mobileBarDivisor=(_=i.mobileBarDivisor)==null?2:_,this._autoVisibleBars=i.defaultVisibleBars==null&&i.defaultMobileVisibleBars==null,this.targetCandleWidth=(v=i.targetCandleWidth)==null?b_:v,this.viewport={...this.viewport,endIndex:E_(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars)},this._targetViewport={...this.viewport},this.maxSubPanes=(y=i.maxSubPanes)==null?3:y,this.tickClosePriceSource=(b=i.tickClosePriceSource)==null?`bid`:b,this._reloadOnPriceSourceChange=i.reloadOnPriceSourceChange!==!1,this.showLtpPrice=i.showLtpPrice,this.tradesThresholdForHorizontalLine=(C=i.tradesThresholdForHorizontalLine)==null?2:C,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=(w=i.showBidAskLines)==null?!1:w,this.showAskLine=i.showAskLine,this.showBidLine=i.showBidLine,this.showActLogo=(T=i.showActLogo)==null?!1:T,this.hideLevelConfirmCancel=(E=i.hideLevelConfirmCancel)==null?!1:E,this.deselectActiveOnOutsideClick=(D=i.deselectActiveOnOutsideClick)==null?!1:D,this._orderTimeDragEnabled=((O=i.features)==null?void 0:O.orderLineTimeDrag)===!0,this._features=i.features,this.drawingManager.setFreehandEnabled(((k=i.features)==null?void 0:k.enableForecasting)===!0),this._orderLineDragSnap=i.orderLineDragSnap!==!1,this._orderLineDefaultAnchor=i.orderLineDefaultAnchor===`center`?`center`:`timestamp`,this._orderTimeDragEnabled&&i.orderLineAnchorPersistence!==!1&&(this._orderLineAnchorStore=new Yp(Yp.browserStorage())),this.tradeLevelButtonScale=Math.min(Math.max((A=i.tradeLevelButtonScale)==null?1:A,1),3),this.tradeLevelBadgeScale=Math.min(Math.max((j=i.tradeLevelBadgeScale)==null?1:j,.5),1),this.tradeLevelBadgeAnchor=i.tradeLevelBadgeAnchor===`left`?`left`:`auto`,this._bracketLabel={mode:(M=i.bracketLabelMode)==null?`price`:M,currencySymbol:(P=i.currencySymbol)==null?`$`:P},this.levelClusteringEnabled=(I=i.levelClusteringEnabled)==null?!0:I,this.clusterThresholdDistance=(L=i.clusterThresholdDistance)==null?20:L,this.enableThemeToggle=(R=i.enableThemeToggle)==null?!1:R,this.tfcEnabled=i.tfcEnabled!==!1,this.crosshairEnabled=i.crosshairEnabled!==!1,this.tfcActive=this.tfcEnabled,this.showCandleCountdown=(ee=i.showCandleCountdown)==null?!0:ee,this.statusLineSettings={...i.statusLine},this.scalesSettings=A_(i.scales),this.canvasOptions={...i.canvas},this.barColorSource=(z=i.barColorSource)==null?`open`:z,this.priceScaleMode=(te=i.priceScaleMode)==null?`normal`:te,this.autoScaleEnabled=i.autoScale!==!1;let Re=(re=(ie=(oe=i.scales)==null?void 0:oe.pricePrecision)==null?i.pricePrecision:ie)==null?null:re;this.pricePrecisionOverride=Re===null?null:Math.max(0,Math.min(8,Math.round(Re))),this.candleCountdownTimeframes=i.candleCountdownTimeframes,this.showTradeLevelsAlways=(se=i.showTradeLevelsAlways)==null?!0:se,this.showPriceAxisCountdown=(ce=i.showPriceAxisCountdown)==null?!1:ce,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=Ae,this._onAddAlert=(le=i.onAddAlert)==null?null:le,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=be===`dark`?`dark`:`light`,this.themeOverrides=i.themeOverrides;let ze=(ue=(B=i.scales)==null?void 0:B.timezone)==null?i.timezone:ue;this.timezone=ze===`local`?Intl.DateTimeFormat().resolvedOptions().timeZone:ze==null?`UTC`:ze,this.aggregateFrom=i.aggregateFrom;let Be=this.themeName===`dark`?x:S;this.theme=g(Be,(de=this.themeOverrides)==null?void 0:de[this.themeName]),this.chromeTheme=this.theme,this.series=xe,this.applySeriesTransform(),this.showVolume=Se,this.timeframe=we,this.duration=Te,this.symbol=Ee,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 He=i.headerLayout===`advanced`||i.headerLayout===void 0&&((fe=i.features)==null?void 0:fe.advancedToolbar)===!0,Ue=i.headerLayout===`compact`,We=i.headerLayout===`mobile`,Ge=i.hideHeader===!0,Ke=i.enableMultipleLayouts===!0,qe=i.enableSnapshot===!0,Je=i.enableCrossHairHeader===!0||i.enableCrosshairToggle===!0;i.layoutSync&&(this.currentSync={...Ni,...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."),qe&&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 Ye=(pe=i.onOneClickTradeToggle)==null?i.onOneClickToggle:pe;if(Ce){let e=e=>{this.timeframe=e,this.emitter.emit(`timeframeChange`,{timeframe:e}),this.emitStateChange(),this.updateCountdownState(),this.triggerLoad(`timeframe`)},t=[...Rm,...Xg()].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(qe)this.openSnapshotPopover();else{var e;(e=i.onScreenshotClick)==null||e.call(i)}},a=Ke||typeof i.onLayoutClick==`function`,o=qe||typeof i.onScreenshotClick==`function`;if(!Ge)if(We){var Xe,Ze;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 mi(e,t,(Xe=i.onAskAiClick)==null?null:Xe,this.settingsEnabled?()=>this.openChartSettings():null,e=>this.setSeries(e),this.timeframe,this.series,this.theme,(Ze=this.uiConfig.topBar)==null?void 0:Ze.dropBtnFontFamily,this._enabledGates(),Je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)}),this.wrapper.appendChild(this.mobileHeader.el)}else if(Ue)this.compactToolbar=new qr(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(He){var Qe,$e,et,tt;this.advancedToolbar=new zr(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,Ye,r,a,o,(Qe=i.priceSourceSelector)==null?null:Qe,this.tickClosePriceSource,e=>this._applyPriceSource(e,!0),Je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)},(($e=i.features)==null?void 0:$e.pnlPill)===!0,((et=i.pnlPill)==null?void 0:et.visible)!==!1,e=>{this.setPnlPillVisible(e)},i.headerOverflowMenu===!0,(tt=i.timeframes)==null?null:tt,this._onAddAlert?()=>{var e;(e=this._onAddAlert)==null||e.call(this,this._currentMarketPrice())}:null),this.advancedToolbar.setIndicatorOptions(t),this.indicatorTemplatesEnabled&&(this.advancedToolbar.enableIndicatorTemplates({labels:this.labels.topBar.indicatorTemplates,onApply:e=>{this.applyIndicatorTemplate(e)},onSave:e=>{this.captureIndicatorTemplate(e)},onDelete:e=>{this.deleteIndicatorTemplate(e)}}),this.advancedToolbar.setIndicatorTemplates(this.indicatorTemplateList)),this.wrapper.appendChild(this.advancedToolbar.el),this.advancedToolbar.setFullscreen(this.isFullscreen)}else{var nt,rt,it,at;let s=this._durationTimeframeMap;this.topBar=new fr(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,Ye==null?null:Ye,(nt=i.priceSourceSelector)==null?null:nt,this.tickClosePriceSource,e=>this._applyPriceSource(e,!0),Je,this.crosshairEnabled,e=>{this.setCrosshairEnabled(e)},((rt=i.features)==null?void 0:rt.pnlPill)===!0,((it=i.pnlPill)==null?void 0:it.visible)!==!1,e=>{this.setPnlPillVisible(e)},(at=i.timeframes)==null?null:at),this.topBar.setIndicatorOptions(t),this.indicatorTemplatesEnabled&&(this.topBar.enableIndicatorTemplates({onApply:e=>{this.applyIndicatorTemplate(e)},onSave:e=>{this.captureIndicatorTemplate(e)},onDelete:e=>{this.deleteIndicatorTemplate(e)}}),this.topBar.setIndicatorTemplates(this.indicatorTemplateList)),this.wrapper.appendChild(this.topBar.el),this.topBar.setFullscreen(this.isFullscreen)}Ke&&(this.layoutPopover=new Fi(this.theme,this.currentPresetId,this.currentSync,e=>this.handleLayoutPresetSelect(e),e=>this.handleSyncToggle(e),()=>this.emitUiState()),this.savedLayoutsEnabled&&(this.layoutPopover.enableSavedLayouts({onApply:e=>{this.applySavedLayout(e)},onSave:e=>{this.captureSavedLayout(e)},onDelete:e=>{this.deleteSavedLayout(e)}}),this.layoutPopover.setSavedLayouts(this.savedLayoutList))),qe&&(this.snapshotPopover=new Ii(this.theme,e=>this.handleSnapshot(e),()=>this.emitUiState()))}let ot=document.createElement(`div`);if(Object.assign(ot.style,{display:`flex`,flex:`1`,minHeight:`0`,overflow:`hidden`,position:`relative`}),Ce&&this.drawingToolsEnabled&&(this.leftBar=new ea(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;case`toggle_magnet`:this.setMagnetMode(!this.magnetMode);break;case`toggle_keep_mode`:this.setKeepDrawingMode(!this.keepDrawingMode);break;case`toggle_copy_all`:this.setCopyDrawingsToAllCharts(!this.copyDrawingsToAll);break;case`hide_toolbar`:this.setDrawingToolbarVisible(!1);break}},()=>{var e;this.leftBarVisible=!1,(e=this._tb)==null||e.setDrawingsBtnActive(!1)},this.theme,this.uiConfig.drawingToolbar,this.labels.drawingToolbar,this._enabledGates(),e=>this.setCursorMode(e),(e,t)=>{this.pendingIconGlyph=e,this.pendingIconKind=t}),this.leftBar.setActiveCursor(this.cursorMode),ot.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.applyCursorCss(),this.valueTooltipEnabled&&(this.valueTooltip=new i_(this.chromeTheme,this.labels.ohlc),this.canvasWrap.appendChild(this.valueTooltip.el)),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),this.textAreaEl=document.createElement(`textarea`),this.textAreaEl.rows=3,this.textAreaEl.spellcheck=!1,Object.assign(this.textAreaEl.style,{position:`absolute`,display:`none`,zIndex:`15`,background:`rgba(20,24,34,0.95)`,border:`1px solid #2196f3`,borderRadius:`4px`,color:`#f5f5f5`,font:`16px system-ui, sans-serif`,outline:`none`,resize:`none`,overflow:`hidden`,minWidth:`140px`,padding:`4px 6px`,lineHeight:`1.35`}),this.canvasWrap.appendChild(this.textAreaEl),Ce){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(Ce&&!(Fe&&Ie)){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`}),!Fe){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:Ee?`inline`:`none`}),this.siSymbolSpan.textContent=Ee==null?``:Ee;let e=()=>{var e;let t=(e=i.symbolNameDecoration)==null?`underline`:e;t===`hover`?(w_(),this.siSymbolSpan.classList.add(C_),this.siSymbolSpan.tabIndex=0,this.siSymbolSpan.style.textDecoration=`none`):this.siSymbolSpan.style.textDecoration=t===`none`?`none`:`underline`};ke?(Object.assign(this.siSymbolSpan.style,{cursor:`pointer`,pointerEvents:`auto`}),e(),this.siSymbolSpan.addEventListener(`click`,()=>{var e,t;ke((e=(t=this.siSymbolSpan)==null?void 0:t.textContent)==null?``:e)})):Oe&&(De&&(this.isins=De),this.isinPickerModal=new bf(this.chromeTheme,Oe,()=>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`})}Ie||(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(Ce&&(this.indicatorOverlay=new bd(this.theme,this.uiConfig.indicatorOverlay,this.labels.chart),this.canvasWrap.appendChild(this.indicatorOverlay.el),this.indicatorSettingsDialog=new xd(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 Up,this.orderTimeDragHandler=new Wp,i.onLevelDragEnd&&this.emitter.on(`tradeLevelDragEnd`,i.onLevelDragEnd),i.onLevelEdit&&this.emitter.on(`tradeLevelEdit`,i.onLevelEdit),Ae){var st;this.tradePopover=new sf(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),((st=i.features)==null?void 0:st.tradeActionBar)===!0&&(this.tradeActionBar=new af({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 of(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=Ed(this.levels,this.draftOrderLabel);this.tradeActionBar.show(n,r,t,{pricePrecision:this.pricePrecision(),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.pricePrecision(),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(ln(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(ot.appendChild(this.canvasWrap),this.middleRow=ot,Ce&&((me=i.features)==null?void 0:me.enableSidePanels)===!0&&(this.sidePanel=new Mp(this.theme,this.labels.sidePanel,{onSelect:(e,t)=>{t===`drawings`?this.selectDrawing(e):this.openIndicatorSettings(e)},onToggleVisible:(e,t)=>{if(t===`drawings`){let t=this.drawingManager.getDrawingById(e);t&&this.setDrawingVisible(e,t.visible===!1)}else this.toggleIndicatorVisibility(e);this.refreshObjectTree()},onToggleLock:e=>{let t=this.drawingManager.getDrawingById(e);t&&this.setDrawingLocked(e,t.locked!==!0),this.refreshObjectTree()},onDelete:(e,t)=>{t===`drawings`?this.deleteDrawing(e):this.removeIndicator(e),this.refreshObjectTree()},onClose:()=>{var e,t;this.emitter.emit(`sidePanelVisibility`,{visible:!1,tab:(e=(t=this.sidePanel)==null?void 0:t.getTab())==null?`data`:e}),this.scheduleRender()},onExpandRequest:e=>{this.refreshObjectTree(),this.emitter.emit(`sidePanelVisibility`,{visible:!0,tab:e}),this.scheduleRender()}}),ot.appendChild(this.sidePanel.el)),this.wrapper.appendChild(ot),Ce&&Le){var ct,lt;let e=this._durationTimeframeMap;this.bottomBar=new Vi((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`)},(ct=this.duration)==null?null:ct,this.theme,e,this.uiConfig.bottomBar,this.labels.bottomBar),((lt=i.features)==null?void 0:lt.enableScaleControls)===!0&&this.bottomBar.enableTools({onGoToDate:e=>{this.goToDate(`${e}T00:00:00Z`)},onTimezoneChange:e=>{this.setTimezone(e)},onPriceScaleModeChange:e=>{this.setPriceScaleMode(e)},onAutoScaleChange:e=>{this.setAutoScale(e)},timezone:this.timezone,priceScaleMode:this.priceScaleMode,autoScale:this.autoScaleEnabled}),this.wrapper.appendChild(this.bottomBar.el)}ye.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 dt=this.canvas.getContext(`2d`);if(!dt)throw Error(`Canvas 2D context unavailable`);this.ctx=dt;let ft=this.drawCanvas.getContext(`2d`);if(!ft)throw Error(`Drawing canvas 2D context unavailable`);this.drawCtx=ft;let pt=this.tradeCanvas.getContext(`2d`);if(!pt)throw Error(`Trade canvas 2D context unavailable`);if(this.tradeCtx=pt,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=this.idleCursor()}),this.drawingManager.onDrawingsChange=()=>{this.emitStateChange(),this.refreshObjectTree()},this.drawingManager.onDrawingCreated=e=>{if(e.type===`icon`&&(e.text=this.pendingIconGlyph,e.style={...e.style,fontSize:Ki(this.pendingIconKind)}),e.type===`zoomIn`){this.applyZoomBox(e),this.drawingManager.selectDrawing(e),this.drawingManager.deleteSelected(),this.setDrawingTool(null);return}let[t]=this.drawingManager.getDrawingsSnapshot().filter(t=>t.id===e.id);t&&this.emitter.emit(`drawingCreated`,{drawing:t,copyToAll:this.copyDrawingsToAll})},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 gf(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.refreshObjectTree()},this.panHandler=new ne(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 ae(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(`mouseenter`,this.onPointerEnter),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 mt=()=>{var e;let t=!!document.fullscreenElement;t||(this._isCssFullscreen=!1),(e=this._tb)==null||e.setFullscreen(t),this.reparentFloatingElements()};if(this.wrapper.addEventListener(`fullscreenchange`,mt),document.addEventListener(`fullscreenchange`,mt),this.resizeObserver=new ResizeObserver(()=>this.onResize()),this.resizeObserver.observe(this.canvasWrap),this.onResize(),((he=i.features)==null?void 0:he.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=E_(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+D_),endIndex:e.length+D_},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()?e_(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=p_.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=hp(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,this.indicatorContext()));let c=i!==void 0&&i.fields.length>0,l=f_(e.name,a,i),u=(n=a.timeframe)==null?`Chart`:n;if(e.pane===`sub`){let t=new bd(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 this.refreshObjectTree(),(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=_p(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.refreshObjectTree(),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=p_.find(t=>t.shortName===e),o=u_.find(t=>t.shortName===e);if(!(!a&&!o)){if(c_.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=gp(l_,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)}}getIndicatorTemplates(){return this.indicatorTemplateList.map(e=>({...e,indicators:[...e.indicators]}))}setIndicatorTemplates(e){return this.indicatorTemplatesEnabled?(this.indicatorTemplateList=mp(e),this.refreshIndicatorTemplatesUi(),this):this}captureIndicatorTemplate(e){if(!this.indicatorTemplatesEnabled||e.trim()===``)return null;let t=up(e,this.activeIndicators.map(e=>({shortName:e.shortName,params:{...e.currentParams},visible:e.visible})),{savedAt:Date.now(),existingIds:this.indicatorTemplateList.map(e=>e.id)});return this.indicatorTemplateList=dp(this.indicatorTemplateList,t),this.refreshIndicatorTemplatesUi(),this.emitter.emit(`indicatorTemplateSaved`,{template:t}),t}applyIndicatorTemplate(e){if(!this.indicatorTemplatesEnabled)return!1;let t=pp(this.indicatorTemplateList,e);return t?(this.replaceIndicators(t.indicators),this.scheduleRender(),this.emitStateChange(),this.emitter.emit(`indicatorTemplateApplied`,{id:t.id,name:t.name,count:t.indicators.length}),!0):!1}deleteIndicatorTemplate(e){if(!this.indicatorTemplatesEnabled)return!1;let t=pp(this.indicatorTemplateList,e);return t?(this.indicatorTemplateList=fp(this.indicatorTemplateList,t.id),this.refreshIndicatorTemplatesUi(),this.emitter.emit(`indicatorTemplateDeleted`,{id:t.id}),!0):!1}refreshIndicatorTemplatesUi(){if(!this.indicatorTemplatesEnabled)return;let e=this._tb;(e instanceof fr||e instanceof zr)&&e.setIndicatorTemplates(this.indicatorTemplateList)}openIndicatorSettings(e){var t;let n=this.activeIndicators.find(t=>t.instanceId===e);if(!n)return;let r=p_.find(e=>e.shortName===n.shortName);if(!r||r.fields.length===0)return;let i={...r,fields:[...r.fields,d_]};(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=p_.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,f_(r.shortName,r.currentParams,i)),c==null||c.updatePillTimeframe(e,a==null?`Chart`:a),this.refreshObjectTree(),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:h(this.theme.background):t.axisText}buildTheme(e){var t;return v(g(g(e===`dark`?x:S,(t=this.themeOverrides)==null?void 0:t[e]),this.canvasColorOverride(e,!0)),this.wrapper)}buildChromeTheme(e){var t;return v(g(g(e===`dark`?x:S,(t=this.themeOverrides)==null?void 0:t[e]),this.canvasColorOverride(e,!1)),this.wrapper)}initPnlPill(e){var t,n,r;this.pnlPill=new Wd({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:()=>{Ed(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(Ed(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=Ed(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,_,v,y;(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.sidePanel)==null||o.setTheme(this.chromeTheme),(s=this._draftQtyFlyout)==null||s.setTheme(this.chromeTheme),(c=this.indicatorSettingsDialog)==null||c.setTheme(this.chromeTheme),(l=this.chartSettingsDialog)==null||l.setTheme(this.chromeTheme),(u=this.layoutPopover)==null||u.setTheme(this.chromeTheme),(d=this.quickSearch)==null||d.setTheme(this.chromeTheme),(f=this.valueTooltip)==null||f.setTheme(this.chromeTheme),(p=this.snapshotPopover)==null||p.setTheme(this.chromeTheme),(m=this.comparePickerModal)==null||m.setTheme(this.chromeTheme),(h=this.isinPickerModal)==null||h.setTheme(this.chromeTheme),(g=this.tradeButton)==null||g.setTheme(this.theme,this.priceAxisWidth),(_=this.compareLegend)==null||_.setTheme(this.theme),(v=this.pnlPill)==null||v.setTheme(this.theme),(y=this.indicatorOverlay)==null||y.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){var t;return this.timezone=e===`local`?Intl.DateTimeFormat().resolvedOptions().timeZone:e,(t=this.bottomBar)==null||t.setTimezone(e),this.emitter.emit(`timezoneChange`,{timezone:this.timezone}),this.scheduleRender(),this}getTimezone(){return this.timezone}setPricePrecision(e){return this.pricePrecisionOverride=e===null?null:Math.max(0,Math.min(8,Math.round(e))),this.emitter.emit(`pricePrecisionChange`,{digits:this.pricePrecision()}),this.scheduleRender(),this}getPricePrecision(){return this.pricePrecision()}getPricePrecisionOverride(){return this.pricePrecisionOverride}setBarColorSource(e){return this.barColorSource=e,this.emitter.emit(`barColorSourceChange`,{source:e}),this.scheduleRender(),this}getBarColorSource(){return this.barColorSource}updateValueTooltip(e,t,n,r,i){if(this.valueTooltip){if(!n||!this.crosshair){this.valueTooltip.hide();return}this.valueTooltip.show(n,e,t,r,i,this.timeframe,this.pricePrecision(),this.timezone)}}drawingContext(){return{instrument:this.getInstrument(),bars:this.dataStore.all,account:this.accountSpec,features:this._features}}indicatorContext(){var e,t;return{compares:((e=(t=this.compareManager)==null?void 0:t.list())==null?[]:e).map(e=>({symbol:e.symbol,bars:e.bars}))}}applyZoomBox(e){let[t,n]=e.points;if(!t||!n)return;let r=Math.min(t.barIndex,n.barIndex),i=Math.max(t.barIndex,n.barIndex),a=Math.min(t.price,n.price),o=Math.max(t.price,n.price);if(i-r<1||o-a<=0)return;this.viewport={...this.viewport,startIndex:r,endIndex:i},this._targetViewport={...this.viewport};let s=(o-a)*.05;this._displayedPriceRange={min:a-s,max:o+s},this._lockedAutoFitBase=this._displayedPriceRange,this.priceScaleFactor=1,this.pricePanOffset=0,this.recomputeIndicators(),this.scheduleRender(),this.emitter.emit(`zoom`,{viewport:this.viewport})}setCursorMode(e){var t;return this.cursorMode===e?this:(this.cursorMode=e,e!==`demonstration`&&(this.demoTrail=[]),(t=this.leftBar)==null||t.setActiveCursor(e),this.applyCursorCss(),this.emitter.emit(`cursorModeChange`,{mode:e}),this.scheduleRender(),this)}getCursorMode(){return this.cursorMode}idleCursor(){var e;return this.drawingManager.getActiveTool()?`crosshair`:(e=Ne[this.cursorMode])==null?`default`:e}applyCursorCss(){this.drawCanvas.style.cursor=this.idleCursor()}recordDemoTrail(e,t){if(this.cursorMode!==`demonstration`)return;let n=performance.now();this.demoTrail=Ae(this.demoTrail,n),this.demoTrail.push({x:e,y:t,t:n}),this.scheduleRender()}handleEraserClick(e,t){var n;if(this.cursorMode!==`eraser`)return!1;let{chartW:r,priceH:i}=this.getChartLayout(),a=this.drawingManager.hitTest(e,t,this.scaleManager,this.viewport,(n=this._displayedPriceRange)==null?this.dataStore.getPriceRange(this.viewport):n,r,i,this.drawingContext());return a&&(this.drawingManager.selectDrawing(a),this.drawingManager.deleteSelected(),this.emitStateChange(),this.scheduleRender()),!0}setSeries(e){var t;let n=n_(this.series);return this.series=e,this.applySeriesTransform(),n!==n_(e)&&this.resetView(),(t=this._tb)==null||t.setSeries(e),this.emitter.emit(`seriesChange`,{series:e}),this.scheduleRender(),this.emitStateChange(),this}setSeriesOptions(e){return this.seriesOptions={...this.seriesOptions,...e},n_(this.series)&&(this.dataStore.setTransform(null),this.applySeriesTransform(),this.recomputeIndicators(),this.resetView(),this.scheduleRender()),this}getSeriesOptions(){return{...this.seriesOptions}}applySeriesTransform(){let e=this.seriesOptions,t=null;switch(this.series){case`renko`:t=t=>{var n;return Nf(t,(n=e.renko)==null?{}:n)};break;case`linebreak`:t=t=>{var n;return Pf(t,(n=e.lineBreak)==null?{}:n)};break;case`kagi`:t=t=>{var n;return If(t,(n=e.kagi)==null?{}:n)};break;case`pointfigure`:t=t=>{var n;return Rf(t,(n=e.pointFigure)==null?{}:n)};break;default:t=null}this.dataStore.setTransform(t)}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,o;this.crosshair!==null&&(this.crosshair=null,this.emitter.emit(`crosshair`,null)),this._mobileCrosshairActive=!1,(a=this.valueTooltip)==null||a.hide(),(o=this.tradeButton)==null||o.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}}replaceIndicators(e){let t=this.activeIndicators.map(e=>e.instanceId);for(let e of t)this.removeIndicator(e);for(let t of e){var n,r;let e=p_.find(e=>e.shortName===t.shortName);if(!e)continue;let i={...t.params};delete i.timeframe,this.addIndicator(e.factory(i),t.params);let a=this.activeIndicators[this.activeIndicators.length-1];if(!a)continue;a.currentParams={...t.params};let o=(n=this.subPaneOverlays.get(a.instanceId))==null?this.indicatorOverlay:n;t.visible===!1&&(a.visible=!1,o==null||o.updatePillVisibility(a.instanceId,!1));let s=(r=t.params.timeframe)==null?`Chart`:r;o==null||o.updatePillTimeframe(a.instanceId,s)}}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()}this.replaceIndicators(e.indicators);let a=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(a),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 i;this.tfcActive=e.tfcEnabled,(i=this._tb)==null||i.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=L(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}pricePrecision(){var e;return(e=this.pricePrecisionOverride)==null?this.dataStore.getPricePrecision():e}applyScaleMode(e){return this.priceScaleMode!==`log`||e.max<=0?e:{min:e.min>0?e.min:e.max/1e4,max:e.max,log:!0}}setPriceScaleMode(e){var t;return this.priceScaleMode===e?this:(this.priceScaleMode=e,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this.autoScaleLock=null,this.pricePanOffset=0,this.priceScaleFactor=1,(t=this.bottomBar)==null||t.setPriceScaleMode(e),this.emitter.emit(`priceScaleModeChange`,{mode:e}),this.scheduleRender(),this)}getPriceScaleMode(){return this.priceScaleMode}setAutoScale(e){var t,n;return this.autoScaleEnabled===e?this:(this.autoScaleEnabled=e,this.autoScaleLock=e||(t=this._displayedPriceRange)==null?null:t,(n=this.bottomBar)==null||n.setAutoScale(e),this.emitter.emit(`autoScaleChange`,{enabled:e}),this.scheduleRender(),this)}getAutoScale(){return this.autoScaleEnabled}goToDate(e){let t=e instanceof Date?e.getTime():typeof e==`number`?e:Date.parse(e);if(!Number.isFinite(t))return null;let n=this.dataStore.all;if(n.length===0)return null;let r=0,i=n.length-1;for(;r<i;){let e=r+i>>1;n[e].time<t?r=e+1:i=e}let a=Math.max(0,r-1),o=Math.abs(n[a].time-t)<=Math.abs(n[r].time-t)?a:r,s=this.viewport.endIndex-this.viewport.startIndex,c=Math.max(0,o-s/2);return this.setViewport({startIndex:c,endIndex:c+s}),this.emitter.emit(`goToDate`,{time:n[o].time,barIndex:o}),o}statusLine(){var e,t,n,r;let i=this.statusLineSettings;return{symbol:(e=i.symbol)==null?!0:e,ohlc:(t=i.ohlc)==null?!0:t,volume:(n=i.volume)==null?!0:n,barChange:(r=i.barChange)==null?!1:r}}scales(){var e,t,n,r,i,a,o;let s=this.scalesSettings;return{lastPriceLabel:(e=s.lastPriceLabel)==null?!0:e,bidLabel:(t=(n=s.bidLabel)==null?this.showBidLine:n)==null?this.showBidAskLines:t,askLabel:(r=(i=s.askLabel)==null?this.showAskLine:i)==null?this.showBidAskLines:r,highLowLabels:(a=s.highLowLabels)==null?!1:a,timeAxisCountdown:(o=s.timeAxisCountdown)==null?this.showCandleCountdown:o}}canvasOpts(){var e,t,n,r,i,a,o,s;let c=this.canvasOptions;return{gridHorizontal:(e=c.gridHorizontal)==null?!0:e,gridVertical:(t=c.gridVertical)==null?!0:t,watermarkVisible:(n=c.watermarkVisible)==null?!1:n,watermarkText:(r=c.watermarkText)==null?``:r,watermarkSize:(i=c.watermarkSize)==null?72:i,watermarkOpacity:(a=c.watermarkOpacity)==null?.06:a,crosshairStyle:(o=c.crosshairStyle)==null?`dashed`:o,crosshairWidth:(s=c.crosshairWidth)==null?1:s}}setStatusLineSettings(e){return this.statusLineSettings={...this.statusLineSettings,...e},this.emitter.emit(`statusLineChange`,{statusLine:this.statusLine()}),this.scheduleRender(),this}getStatusLineSettings(){return this.statusLine()}setScalesSettings(e){let{pricePrecision:t,timezone:n}=e;return this.scalesSettings={...this.scalesSettings,...A_(e)},t!==void 0&&this.setPricePrecision(t),n!==void 0&&this.setTimezone(n),this.emitter.emit(`scalesChange`,{scales:this.getScalesSettings()}),this.scheduleRender(),this}getScalesSettings(){return{...this.scales(),pricePrecision:this.pricePrecisionOverride,timezone:this.timezone}}setCanvasOptions(e){return this.canvasOptions={...this.canvasOptions,...e},this.emitter.emit(`canvasOptionsChange`,{canvas:this.canvasOpts()}),this.scheduleRender(),this}getCanvasOptions(){return this.canvasOpts()}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.pricePrecision()),i=e=>e>=1e6?(e/1e6).toFixed(2)+`M`:e>=1e3?(e/1e3).toFixed(1)+`K`:e.toFixed(0),a=this.labels.ohlc,o=this.statusLine();this.siSymbolSpan&&(this.siSymbolSpan.style.display=o.symbol&&this.symbol?`inline`:`none`);let s=(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)}},c=this.previousClose(e),l=c===null?null:e.close-c,u=l!==null&&c?l/c*100:null,d=l===null?n:l>=0?this.theme.candle.up:this.theme.candle.down,f=l!==null&&l>=0?`+`:``,p=o.barChange&&l!==null?[[``,`${f}${r(l)} (${f}${(u==null?0:u).toFixed(2)}%)`,d]]:[];s(this.siOHLCSpan,[...o.ohlc?[[a.open,r(e.open),n],[a.high,r(e.high),n]]:[]]),this.siOHLC2Span&&s(this.siOHLC2Span,[...o.ohlc?[[a.low,r(e.low),n],[a.close,r(e.close),t]]:[],...o.volume&&e.volume!=null&&e.volume!==0?[[a.volume,i(e.volume),n]]:[],...p])}previousClose(e){let t=this.dataStore.all,n=t.indexOf(e);return n>0?t[n-1].close:null}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 _f(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),e?this.drawCanvas.style.cursor=`crosshair`:this.applyCursorCss(),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()}addDrawing(e){return this.drawingManager.addDrawing(e),this.scheduleRender(),this}getDrawings(){return this.drawingManager.getDrawings()}toggleIndicatorVisibility(e){let t=this.activeIndicators.find(t=>t.instanceId===e);if(!t)return this;t.visible=!t.visible;let n=t.indicator.pane===`sub`?this.subPaneOverlays.get(e):this.indicatorOverlay;return n==null||n.updatePillVisibility(e,t.visible),this.scheduleRender(),this.emitStateChange(),this}setSidePanelVisible(e){return!this.sidePanel||this.sidePanel.isExpanded()===e?this:(this.sidePanel.setExpanded(e),e&&this.refreshObjectTree(),this.scheduleRender(),this.emitter.emit(`sidePanelVisibility`,{visible:e,tab:this.sidePanel.getTab()}),this)}isSidePanelVisible(){var e;return((e=this.sidePanel)==null?void 0:e.isExpanded())===!0}setSidePanelTab(e){var t;return(t=this.sidePanel)==null||t.setTab(e),this.sidePanel&&(this.refreshObjectTree(),this.emitter.emit(`sidePanelVisibility`,{visible:this.isSidePanelVisible(),tab:e})),this}getSidePanelTab(){var e,t;return(e=(t=this.sidePanel)==null?void 0:t.getTab())==null?null:e}refreshDataWindow(e){if(!this.sidePanel||!this.sidePanel.isExpanded())return;let t=this.crosshair?this.crosshair.barIndex:this.dataStore.length-1,n=[];for(let e of this.visibleStates()){var r;let i=this.indicatorResults.get(e.instanceId);n.push({heading:f_(e.shortName,e.currentParams,p_.find(t=>t.shortName===e.shortName)),shortName:e.shortName,color:(r=e.currentParams.color)==null?e.indicator.color:r,result:i==null?void 0:i[t]})}this.sidePanel.setData(Lp({bar:e,prevClose:e?this.previousClose(e):null,dateText:e?this.formatPanelDate(e.time):``,precision:this.pricePrecision(),labels:this.labels.sidePanel.rows,upColor:this.theme.candle.up,downColor:this.theme.candle.down,indicators:n}))}formatPanelDate(e){let t=this.timeframeToMs(this.timeframe)<864e5;return new Date(e).toLocaleString(`en-GB`,{timeZone:this.timezone,day:`2-digit`,month:`short`,year:`numeric`,...t?{hour:`2-digit`,minute:`2-digit`,hour12:!1}:{}})}refreshObjectTree(){var e,t;!this.sidePanel||!this.sidePanel.isExpanded()||this.sidePanel.setObjects(Vp({drawings:this.drawingManager.getDrawingsSnapshot(),drawingNames:this.labels.drawingToolbar.tools,indicators:this.activeIndicators.map(e=>{var t;return{instanceId:e.instanceId,heading:f_(e.shortName,e.currentParams,p_.find(t=>t.shortName===e.shortName)),color:(t=e.currentParams.color)==null?e.indicator.color:t,visible:e.visible}}),selectedId:(e=(t=this.drawingManager.getSelectedDrawing())==null?void 0:t.id)==null?null:e}))}setDrawingVisible(e,t){return this.drawingManager.setDrawingVisible(e,t)&&this.scheduleRender(),this}setDrawingLocked(e,t){return this.drawingManager.setDrawingLocked(e,t)&&this.scheduleRender(),this}deleteDrawing(e){return this.drawingManager.deleteDrawing(e)&&this.scheduleRender(),this}selectDrawing(e){return this.drawingManager.selectDrawing(e===null?null:this.drawingManager.getDrawingById(e)),this.scheduleRender(),this}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)}}getSavedLayouts(){return this.savedLayoutList.map(e=>({...e,panes:e.panes.map(e=>({...e}))}))}setSavedLayouts(e){var t;return this.savedLayoutsEnabled?(this.savedLayoutList=ep(e),(t=this.layoutPopover)==null||t.setSavedLayouts(this.savedLayoutList),this):this}captureSavedLayout(e,t=`main`){var n;if(!this.savedLayoutsEnabled||e.trim()===``)return null;let r=Xf(e,this.currentPresetId,[{paneId:t,state:this.getState()}],{savedAt:Date.now(),existingIds:this.savedLayoutList.map(e=>e.id)});return this.savedLayoutList=Zf(this.savedLayoutList,r),(n=this.layoutPopover)==null||n.setSavedLayouts(this.savedLayoutList),this.emitter.emit(`layoutSaved`,{layout:r}),r}applySavedLayout(e,t=`main`){var n;if(!this.savedLayoutsEnabled)return!1;let r=$f(this.savedLayoutList,e);if(!r)return!1;this.handleLayoutPresetSelect(r.presetId);let i=(n=r.panes.find(e=>e.paneId===t))==null?r.panes[0]:n;return i&&this.setState(i.state),this.emitter.emit(`layoutApplied`,{id:r.id,name:r.name,presetId:r.presetId,layout:r}),!0}deleteSavedLayout(e){var t;if(!this.savedLayoutsEnabled)return!1;let n=$f(this.savedLayoutList,e);return n?(this.savedLayoutList=Qf(this.savedLayoutList,n.id),(t=this.layoutPopover)==null||t.setSavedLayouts(this.savedLayoutList),this.emitter.emit(`layoutDeleted`,{id:n.id}),!0):!1}openQuickSearch(){return this.quickSearchEnabled?(this.quickSearch||(this.quickSearch=new Uf(this.chromeTheme,e=>{e.run(),this.emitter.emit(`quickSearchCommand`,{id:e.id,label:e.label,group:e.group})},{placeholder:this.labels.chart.quickSearchPlaceholder,empty:this.labels.chart.quickSearchEmpty},()=>this.emitUiState()),this.wrapper.appendChild(this.quickSearch.el)),this.quickSearch.show([...this.buildChartCommands(),...this.hostCommands]),this):this}closeQuickSearch(){var e;return(e=this.quickSearch)==null||e.hide(),this}registerCommand(e){return this.hostCommands=[...this.hostCommands.filter(t=>t.id!==e.id),e],this}unregisterCommand(e){return this.hostCommands=this.hostCommands.filter(t=>t.id!==e),this}buildChartCommands(){var e;let t=[],n=this.labels,r=Object.keys(n.topBar.series);for(let e of r)t.push({id:`series.${e}`,label:n.topBar.series[e],group:n.chart.quickSearchGroups.chartType,active:this.series===e,run:()=>{this.setSeries(e)}});let i=(e=this.allowedTimeframes)==null?Object.keys(n.topBar.timeframes):e;for(let e of i)t.push({id:`timeframe.${e}`,label:n.topBar.timeframes[e],group:n.chart.quickSearchGroups.timeframe,active:this.timeframe===e,run:()=>{this.setTimeframe(e)}});for(let e of Object.keys(n.bottomBar.durations))t.push({id:`duration.${e}`,label:n.bottomBar.durations[e],group:n.chart.quickSearchGroups.duration,active:this.duration===e,run:()=>{this.setDuration(e)}});for(let e of Rm)e.enabled&&t.push({id:`indicator.${e.short_name}`,label:`${e.name} (${e.short_name})`,group:n.chart.quickSearchGroups.indicator,keywords:[e.short_name,e.type],run:()=>{this.addIndicatorByName(e.short_name)}});if(this.indicatorTemplatesEnabled)for(let e of this.indicatorTemplateList)t.push({id:`indicatorTemplate.${e.id}`,label:e.name,group:n.chart.quickSearchGroups.indicatorTemplate,hint:`${e.indicators.length}`,run:()=>{this.applyIndicatorTemplate(e.id)}});if(this.settingsTemplatesEnabled)for(let e of this.settingsTemplateList)t.push({id:`settingsTemplate.${e.id}`,label:e.name,group:n.chart.quickSearchGroups.settingsTemplate,run:()=>{this.applySettingsTemplate(e.id)}});if(this.savedLayoutsEnabled)for(let e of this.savedLayoutList)t.push({id:`savedLayout.${e.id}`,label:e.name,group:n.chart.quickSearchGroups.layout,hint:e.presetId,run:()=>{this.applySavedLayout(e.id)}});let a=n.drawingToolbar.tools;for(let e of Object.keys(a))t.push({id:`drawing.${e}`,label:a[e],group:n.chart.quickSearchGroups.drawing,active:this.drawingManager.getActiveTool()===e,run:()=>{this.setDrawingTool(e)}});return t.push(...this.buildActionCommands()),t}buildActionCommands(){let e=this.labels.chart.quickSearchGroups.action,t=this.labels.chart.quickSearchActions,n=[{id:`action.theme.dark`,label:t.themeDark,group:e,active:this.themeName===`dark`,run:()=>{this.setTheme(`dark`)}},{id:`action.theme.light`,label:t.themeLight,group:e,active:this.themeName===`light`,run:()=>{this.setTheme(`light`)}},{id:`action.volume`,label:t.toggleVolume,group:e,active:this.showVolume,run:()=>{this.setVolume(!this.showVolume)}},{id:`action.crosshair`,label:t.toggleCrosshair,group:e,active:this.crosshairEnabled,run:()=>{this.setCrosshairEnabled(!this.crosshairEnabled)}},{id:`action.resetView`,label:t.resetView,group:e,run:()=>{this.resetView()}},{id:`action.settings`,label:t.openSettings,group:e,run:()=>{this.openChartSettings()}},{id:`action.undo`,label:t.undoDrawing,group:e,run:()=>{this.undoDrawing()}},{id:`action.redo`,label:t.redoDrawing,group:e,run:()=>{this.redoDrawing()}},{id:`action.clearDrawings`,label:t.clearDrawings,group:e,run:()=>{this.clearAllDrawings()}}];return this.sidePanel&&n.push({id:`action.dataWindow`,label:t.dataWindow,group:e,run:()=>{this.setSidePanelVisible(!0),this.setSidePanelTab(`data`)}},{id:`action.objectTree`,label:t.objectTree,group:e,run:()=>{this.setSidePanelVisible(!0),this.setSidePanelTab(`objects`)}},{id:`action.toggleSidePanel`,label:t.toggleSidePanel,group:e,run:()=>{this.setSidePanelVisible(!this.isSidePanelVisible())}}),this.compareDataLoader&&n.push({id:`action.compare`,label:t.addCompare,group:e,run:()=>{this.openComparePicker()}}),this.snapshotPopover&&n.push({id:`action.snapshot.download`,label:t.snapshotDownload,group:e,run:()=>{this.handleSnapshot(`download`)}},{id:`action.snapshot.copy`,label:t.snapshotCopy,group:e,run:()=>{this.handleSnapshot(`copy`)}}),n}handleLayoutPresetSelect(e){var t,n,r,i;this.currentPresetId=e;let a=Mi(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:Mi(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,b,x,S,C,w;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.quickSearch)==null||r.destroy(),(i=this.valueTooltip)==null||i.destroy(),(a=this.isinPickerModal)==null||a.destroy(),(o=this.comparePickerModal)==null||o.destroy(),(s=this.compareLegend)==null||s.destroy(),(c=this.pnlPill)==null||c.destroy(),(l=this.tradePopover)==null||l.destroy(),(u=this.tradeActionBar)==null||u.destroy(),(d=this.drawingStylePopover)==null||d.destroy(),(f=this._draftQtyFlyout)==null||f.destroy(),(p=this.advancedToolbar)==null||p.destroy(),(m=this.mobileHeader)==null||m.destroy(),(h=this.leftBar)==null||h.destroy(),(g=this.bottomBar)==null||g.destroy(),(_=this.sidePanel)==null||_.destroy(),this.drawCanvas.removeEventListener(`mouseenter`,this.onPointerEnter),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),(v=this.streamAdapter)==null||v.disconnect(),this.rafId!==null&&cancelAnimationFrame(this.rafId),this.scrollAnimId!==null&&cancelAnimationFrame(this.scrollAnimId),this.stopCountdownLoop(),(y=this.resetViewBtn)==null||y.remove(),(b=this.textInputEl)==null||b.remove(),(x=this.textAreaEl)==null||x.remove(),(S=this._mobileDrawingFlyout)==null||S.remove(),(C=this.layoutPopover)==null||C.destroy(),(w=this.snapshotPopover)==null||w.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(jn,`Delete drawing`,!0);n.addEventListener(`pointerdown`,e=>{e.stopPropagation(),this.deleteSelectedDrawing(),this.hideMobileDrawingFlyout()});let r=t(On,`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(!T_())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.scales().timeAxisCountdown||this.showPriceAxisCountdown)&&t&&this.dataStore.length>0;n&&!this.countdownActive?(this.countdownActive=!0,this.startCountdownLoop()):!n&&this.countdownActive&&this.stopCountdownLoop()}getChartSettings(){return np({tradeDisplayFilter:this.tradeDisplayFilter,positionRenderStyle:this.baseRenderStyle(),theme:this.themeName,showTradeLevelsAlways:this.showTradeLevelsAlways,showPriceAxisCountdown:this.showPriceAxisCountdown,canvasColors:{...this.settingsCanvasColors},statusLine:this.statusLine(),scales:this.getScalesSettings(),canvas:this.canvasOpts(),barColorSource:this.barColorSource})}applyChartSettings(e){this.tradeDisplayFilter=e.tradeDisplayFilter,this.positionRenderStyleOverride=e.positionRenderStyle;try{localStorage.setItem(this.RENDER_STYLE_LS_KEY,e.positionRenderStyle)}catch(e){}if(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()}return e.statusLine&&this.setStatusLineSettings(e.statusLine),e.scales&&this.setScalesSettings(e.scales),e.canvas&&this.setCanvasOptions(e.canvas),e.barColorSource&&this.setBarColorSource(e.barColorSource),this.setTheme(e.theme),this.renderTradeLayer(),this.emitStateChange(),this}getSettingsTemplates(){return this.settingsTemplateList.map(e=>({...e,settings:np(e.settings)}))}setSettingsTemplates(e){var t;return this.settingsTemplatesEnabled?(this.settingsTemplateList=cp(e),(t=this.chartSettingsDialog)==null||t.setSettingsTemplates(this.settingsTemplateList),this):this}captureSettingsTemplate(e){var t;if(!this.settingsTemplatesEnabled||e.trim()===``)return null;let n=rp(e,this.getChartSettings(),{savedAt:Date.now(),existingIds:this.settingsTemplateList.map(e=>e.id)});return this.settingsTemplateList=ip(this.settingsTemplateList,n),(t=this.chartSettingsDialog)==null||t.setSettingsTemplates(this.settingsTemplateList),this.emitter.emit(`settingsTemplateSaved`,{template:n}),n}applySettingsTemplate(e){var t;if(!this.settingsTemplatesEnabled)return!1;let n=op(this.settingsTemplateList,e);return n?(this.applyChartSettings(n.settings),(t=this.chartSettingsDialog)==null||t.setCurrent(n.settings),this.emitter.emit(`settingsTemplateApplied`,{id:n.id,name:n.name}),!0):!1}deleteSettingsTemplate(e){var t;if(!this.settingsTemplatesEnabled)return!1;let n=op(this.settingsTemplateList,e);return n?(this.settingsTemplateList=ap(this.settingsTemplateList,n.id),(t=this.chartSettingsDialog)==null||t.setSettingsTemplates(this.settingsTemplateList),this.emitter.emit(`settingsTemplateDeleted`,{id:n.id}),!0):!1}openChartSettings(){var e;this.chartSettingsDialog||(this.chartSettingsDialog=new Td(this.chromeTheme,this.getChartSettings(),this.labels.dialogs,!!this._onOrderSubmit&&this.tfcActive,this.enableThemeToggle,()=>this.emitUiState()),this.getFloatingRoot().appendChild(this.chartSettingsDialog.el),this.settingsTemplatesEnabled&&(this.chartSettingsDialog.enableSettingsTemplates({onApply:e=>{this.applySettingsTemplate(e)},onSave:e=>{this.captureSettingsTemplate(e)},onDelete:e=>{this.deleteSettingsTemplate(e)}}),this.chartSettingsDialog.setSettingsTemplates(this.settingsTemplateList))),this.chartSettingsDialog.enableExtraTabs(((e=this._features)==null?void 0:e.enableChartSettings)===!0),this.chartSettingsDialog.show(this.getChartSettings(),e=>{if(this.applyChartSettings(e),this.settingsTemplatesEnabled){var t;this.emitter.emit(`chartSettingsApplied`,{settings:e,applyToAll:((t=this.chartSettingsDialog)==null?void 0:t.applyToAll)===!0})}},()=>{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=Dt(s,_,this.scaleManager,p,l,d,f,this.pricePrecision(),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=sn(s,_,p,l,d,f,(i=(a=this.tradeDragHandler)==null?void 0:a.dragLabel)==null?null:i,this.selectedTradeLabel);if(this.offViewportHitAreas=C.hitAreas,Jt(s,_,this.scaleManager,p,l,d,f,this.pricePrecision()),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.raw,c=e.type===`position`&&!a&&!o?(f=(p=s[s.length-1])==null?void 0:p.close)==null?0:f:0;if(!Up.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 xf({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 bf(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=Cp(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,r;if(this._isDestroyed)return;let{ctx:i,canvas:a,theme:o,viewport:s}=this,c=window.devicePixelRatio||1,l=a.width,u=a.height,d=l/c-this.priceAxisWidth,f=this.activeIndicators.filter(e=>e.indicator.pane===`sub`),p=f.reduce((e,t)=>e+this.paneH(t)+v_,0),m=u/c-this.timeAxisHeight-p;i.clearRect(0,0,l,u),i.fillStyle=o.background,i.fillRect(0,0,l,u);let h=this.dataStore.getVisible(s);if(h.length===0){this.drawCtx.clearRect(0,0,this.drawCanvas.width,this.drawCanvas.height);return}let g=h;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*S_,endIndex:this.viewport.endIndex+t*S_,candleWidth:this._targetViewport.candleWidth,candleGap:this._targetViewport.candleGap},this.scheduleRender())}let _=!!((e=this.compareManager)!=null&&e.isActive()),v=null,y=[],b=[],x=null;if(!_&&this.priceScaleMode===`percent`){let e=yp(h,0);e!=null&&e!==0&&Number.isFinite(e)&&(g=bp(h,e),x=Sp(h,e,[]))}else if(_&&this.compareManager){var S,C;let e=this.dataStore.all,t=this.compareBaselineIndex(e),n=t==null||(S=(C=e[t])==null?void 0:C.close)==null?null:S;if(n!=null&&n!==0&&Number.isFinite(n)){v=n;let r=this.compareManager.list(),i=e.map(e=>e.time);y=r.map(e=>e.status===`ready`&&e.bars.length>0?Cp(e.bars,i,t==null?0:t):[]),b=r.map(e=>e.color),g=bp(h,n),x=Sp(h,n,y.map(e=>e.filter(e=>e.pct!=null)))}}let w=_&&x!==null,T=x!==null;(w!==this._lastInCompareMode||T!==this._lastPercentMode)&&(this._lastInCompareMode=w,this._lastPercentMode=T,this._displayedPriceRange=null,this._lockedAutoFitBase=null,this.pricePanOffset=0,this.priceScaleFactor=1);let E=this.priceScaleFactor!==1||this.pricePanOffset!==0;if(!this.autoScaleEnabled&&this.autoScaleLock&&!E)this._displayedPriceRange=this.autoScaleLock;else if(E){if(!this._lockedAutoFitBase){var D,O;this._lockedAutoFitBase=(D=(O=this._displayedPriceRange)==null?x:O)==null?this.dataStore.getPriceRange(s):D}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 k;this._lockedAutoFitBase=null;let e=(k=x)==null?this.getScaledPriceRange(s):k;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*x_,max:this._displayedPriceRange.max+r*x_},this.scheduleRender())}}let A=this.applyScaleMode(this._displayedPriceRange),j=this.showVolume?this.dataStore.getVolumeRange(s):null,M=a;M._priceRange=A,M._chartWidth=d,i.save(),i.scale(c,c),i.save(),i.beginPath(),i.rect(0,0,d,m),i.clip();let N=this.canvasOpts();Te(i,A,this.scaleManager,o,d,m,void 0,{horizontal:N.gridHorizontal,vertical:N.gridVertical,verticalColor:(t=this.settingsCanvasColors)==null||(t=t[this.themeName])==null?void 0:t.gridVertical});let P=N.watermarkText||this.symbol||``;if(N.watermarkVisible&&P){var F,I;i.save(),i.globalAlpha=N.watermarkOpacity,i.fillStyle=(F=(I=this.settingsCanvasColors)==null||(I=I[this.themeName])==null?void 0:I.watermark)==null?o.axisText:F,i.font=`700 ${N.watermarkSize}px 'Inter', system-ui, sans-serif`,i.textAlign=`center`,i.textBaseline=`middle`,i.fillText(P,d/2,m/2),i.restore()}let L=oe(g,this.barColorSource,this.dataStore.getBarBeforeVisible(s));switch(this.series){case`candlestick`:ce(i,g,s,A,this.scaleManager,o,d,m,L);break;case`hollow`:le(i,g,s,A,this.scaleManager,o,d,m,L);break;case`line`:de(i,g,s,A,this.scaleManager,o,d,m,!1);break;case`area`:de(i,g,s,A,this.scaleManager,o,d,m,!0);break;case`ohlc`:fe(i,g,s,A,this.scaleManager,o,d,m,L);break;case`heikinashi`:he(i,g,s,A,this.scaleManager,o,d,m);break;case`volumecandles`:ge(i,g,s,A,this.scaleManager,o,d,m,L);break;case`linemarkers`:_e(i,g,s,A,this.scaleManager,o,d,m);break;case`step`:ve(i,g,s,A,this.scaleManager,o,d,m);break;case`hlcarea`:be(i,g,s,A,this.scaleManager,o,d,m);break;case`baseline`:Se(i,g,s,A,this.scaleManager,o,d,m);break;case`columns`:Ce(i,g,s,A,this.scaleManager,o,d,m,L);break;case`highlow`:we(i,g,s,A,this.scaleManager,o,d,m);break;case`hlc`:wf(i,g,s,A,this.scaleManager,o,d,m,L);break;case`renko`:case`linebreak`:Tf(i,g,s,A,this.scaleManager,o,d,m);break;case`kagi`:Ef(i,g,this.dataStore.getVisibleMeta(s),s,A,this.scaleManager,o,d,m);break;case`pointfigure`:Df(i,g,this.dataStore.getVisibleMeta(s),s,A,this.scaleManager,o,d,m);break}i.save(),i.beginPath(),i.rect(0,0,d,m),i.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 r=n.slice(Math.floor(s.startIndex),Math.ceil(s.endIndex)+1),a=_&&v!=null?xp(r,v):r;t.render(i,a,this.scaleManager,s,m)}if(_&&v!=null&&y.length>0){let e=this.dataStore.all,t=Math.floor(s.startIndex),n=Math.min(e.length-1,Math.ceil(s.endIndex)),r=new Map;for(let i=t;i<=n;i++)r.set(e[i].time,i);for(let e=0;e<y.length;e++){let t=y[e],n=b[e];if(!t||t.length===0)continue;i.save(),i.strokeStyle=n,i.lineWidth=1.5,i.lineJoin=`round`,i.lineCap=`round`,i.beginPath();let a=!1;for(let e of t){let t=r.get(e.time);if(t==null||e.pct==null){a=!1;continue}let n=this.scaleManager.xToPixel(t,s,d),o=this.scaleManager.yToPixel(e.pct,A,m);a?i.lineTo(n,o):(i.moveTo(n,o),a=!0)}i.stroke(),i.restore()}}i.restore(),i.restore(),bn(i,A,this.scaleManager,o,d,m,this.priceAxisWidth,void 0,this.pricePrecision(),this.uiConfig.priceAxis,T?`percent`:`price`);let R=this.dataStore.all[this.dataStore.all.length-1];if(R&&!T){let e=this.scales(),t=this.pricePrecision(),n=(e,n,r)=>{let a=this.scaleManager.yToPixel(e,A,m);i.save(),i.strokeStyle=n,i.lineWidth=1,i.setLineDash([3,3]),i.beginPath(),i.moveTo(0,a),i.lineTo(d,a),i.stroke(),i.setLineDash([]);let o=r+e.toFixed(t);i.font=`10px 'Inter', system-ui, sans-serif`;let s=i.measureText(o).width+12;return i.fillStyle=n,i.fillRect(d,a-16/2,s,16),i.fillStyle=`#ffffff`,i.textAlign=`left`,i.fillText(o,d+4,a+4),i.restore(),{y:a,boxW:s}},r=null,a=0;if(this.liveBidAsk){var ee,z,te,ne,re,ie,ae,se,ue;let{bid:e,ask:t}=this.liveBidAsk,i=this.tickClosePriceSource===`ltp`,s=((ee=this.showLtpPrice)==null?i:ee)?(z=this.liveLtp)==null?i?e:null:z:null,c=R.close>=R.open?o.candle.up:o.candle.down,l=this.scalesSettings,u=(te=(ne=l.askLabel)==null?this.showAskLine:ne)==null?this.showBidAskLines||this.tickClosePriceSource===`ask`:te,d=((re=(ie=l.bidLabel)==null?this.showBidLine:ie)==null?this.showBidAskLines||this.tickClosePriceSource===`bid`||i&&s==null:re)?n(e,o.candle.down,``):null,f=u?n(t,o.candle.up,``):null,p=s==null?null:n(s,c,``),m=i?(ae=p==null?d:p)==null?f:ae:this.tickClosePriceSource===`ask`?(se=f==null?p:f)==null?d:se:(ue=d==null?p:d)==null?f:ue;m&&(r=m.y,a=m.boxW)}else if(e.lastPriceLabel){let e=R.close>=R.open,t=n(R.close,e?o.candle.up:o.candle.down,``);r=t.y,a=t.boxW}if(e.highLowLabels){let e=this.dataStore.getVisible(s);if(e.length>0){let t=e[0].high,r=e[0].low;for(let n of e)n.high>t&&(t=n.high),n.low<r&&(r=n.low);n(t,o.candle.up,`H `),n(r,o.candle.down,`L `)}}if(this.showPriceAxisCountdown&&r!==null){var B;if(this.candleCountdownTimeframes===`all`||((B=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:B).includes(this.timeframe)){let e=this.timeframeToMs(this.timeframe);yn(i,R.time,e,o,d,r-16/2,16,a)}}}let me=m;for(let e of f){let t=e.indicator,n=this.paneH(e);if(i.fillStyle=o.axisBorder,i.fillRect(0,me,d+this.priceAxisWidth,v_),me+=v_,i.save(),i.beginPath(),i.rect(0,me,d+this.priceAxisWidth,n),i.clip(),i.translate(0,me),i.fillStyle=o.background,i.fillRect(0,0,d+this.priceAxisWidth,n),e.visible&&(()=>{let t=e.currentParams.timeframe;return!t||t===`Chart`||t===this.timeframe})()){let r=this.indicatorResults.get(e.instanceId);if(r){var ye,xe;let a=r.slice(Math.floor(s.startIndex),Math.ceil(s.endIndex)+1),c=(ye=t.getValueRange)==null?void 0:ye.call(t,a),l=(xe=this.subPaneScaleFactors.get(e.instanceId))==null?1:xe,u=c?O_(c,l):void 0;t.render(i,a,this.scaleManager,s,n,u),u&&bn(i,u,this.scaleManager,o,d,n,this.priceAxisWidth,3,k_(u),this.uiConfig.priceAxis)}}i.restore(),me+=n}if(this.showVolume&&j&&j.max>0){let e=m*g_;pe(i,g,s,j.max,this.scaleManager,o,d,e,m-e,L)}{var Ee;let e=this.candleCountdownTimeframes===`all`?!0:((Ee=this.candleCountdownTimeframes)==null?[`1m`,`3m`,`4m`,`5m`,`10m`,`15m`,`30m`,`1h`,`2h`,`4h`,`8h`]:Ee).includes(this.timeframe),t=this.scales().timeAxisCountdown&&!this.showPriceAxisCountdown&&e&&g.length>0&&s.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:`,g.length,`| endIndex:`,s.endIndex,`| dataLen:`,this.dataStore.length,`| atLiveEdge:`,s.endIndex>=this.dataStore.length-1),_n(i,g,s,this.scaleManager,o,d,me,T_()?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);vn(i,e.time,t,this.dataStore.length-1,s,this.scaleManager,o,d,me,this.uiConfig.timeAxis)}}}if(this.crosshair&&(this.cursorMode===`cross`||this.cursorMode===`dot`)&&(this.cursorMode===`cross`?Oe(i,this.crosshair,A,s,this.scaleManager,o,d,m,this.priceAxisWidth,me,this.timeframe,this.pricePrecision(),this.uiConfig.crosshair,this.timezone,this.canvasOpts().crosshairStyle,this.canvasOpts().crosshairWidth):je(i,this.crosshair,A,s,this.scaleManager,o,d,m)),this.cursorMode===`demonstration`&&this.demoTrail.length>1){let e=performance.now();this.demoTrail=Ae(this.demoTrail,e),Me(i,this.demoTrail,e,o.ui.accent),this.demoTrail.length>1&&this.scheduleRender()}if(this.logoImage){let e=m-20-40/2;i.save(),i.globalAlpha=.6,i.beginPath(),i.rect(0,0,d,m),i.clip(),i.beginPath(),i.arc(40,e,40/2,0,Math.PI*2),i.closePath(),i.clip(),i.drawImage(this.logoImage,40-40/2,e-40/2,40,40),i.restore()}i.restore();let De=this.crosshair?(n=this.dataStore.all[this.crosshair.barIndex])==null?null:n:(r=this.dataStore.all[this.dataStore.length-1])==null?null:r;if(this.renderSymbolInfoOHLC(De),this.refreshDataWindow(De),this.drawingManager.render(this.drawCtx,this.scaleManager,s,A,d,m,this.pricePrecision(),this.theme,this.drawingContext()),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,this.indicatorContext()))}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?__:t}getChartLayout(){var e;let t=this.activeIndicators.filter(e=>e.indicator.pane===`sub`).reduce((e,t)=>e+this.paneH(t)+v_,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+v_+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)+v_;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}}touchToPixels(e){var t;let n=(t=this._cachedDrawRect)==null?this.drawCanvas.getBoundingClientRect():t;return{x:e.clientX-n.left,y:e.clientY-n.top}}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:this.magnetMode?this.magnetPrice(e,t):t},r=this.barIndexToTimestamp(e);return r!=null&&(n.timestamp=r),n}magnetPrice(e,t){var n;let r=this.dataStore.all[Math.round(e)];if(!r)return t;let{priceH:i}=this.getChartLayout(),a=(n=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):n,o=e=>this.scaleManager.yToPixel(e,a,i),s=o(t),c=t,l=1/0;for(let e of[r.open,r.high,r.low,r.close]){let t=Math.abs(o(e)-s);t<l&&(l=t,c=e)}return l<=s_?c:t}setMagnetMode(e){var t;return this.magnetMode===e?this:(this.magnetMode=e,(t=this.leftBar)==null||t.setMagnetMode(e),this.emitter.emit(`magnetModeChange`,{enabled:e}),this)}getMagnetMode(){return this.magnetMode}setKeepDrawingMode(e){var t;return this.keepDrawingMode=e,this.drawingManager.setKeepDrawingMode(e),(t=this.leftBar)==null||t.setKeepDrawingMode(e),this.emitter.emit(`keepDrawingModeChange`,{enabled:e}),this}getKeepDrawingMode(){return this.keepDrawingMode}setDrawingToolbarVisible(e){return this.leftBar?(this.leftBar.el.style.display=e?``:`none`,this.drawingToolbarVisible=e,this.emitter.emit(`drawingToolbarVisibility`,{visible:e}),this.scheduleRender(),this):this}isDrawingToolbarVisible(){return this.drawingToolbarVisible}setCopyDrawingsToAllCharts(e){var t;return this.copyDrawingsToAll=e,(t=this.leftBar)==null||t.setCopyToAllCharts(e),this.emitter.emit(`copyDrawingsToAllChange`,{enabled:e}),this}getCopyDrawingsToAllCharts(){return this.copyDrawingsToAll}_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.updateValueTooltip(e,t,p,o,s),this.tradeButton&&(this.tradeButton.setY(t),this._isTradingActive||!this.crosshairEnabled||ln(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&&Tt(t)}_upgradePendingTradeDrag(e,t){let r=this._pendingTradeDrag;if(!r)return!1;let i=Wp.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.raw,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=this.idleCursor(),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.raw,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,n;let r=md.has(e.type),i=r?this.textAreaEl:this.textInputEl;if(!i)return;this.textInputDrawing=e;let{chartW:a,priceH:o}=this.getChartLayout(),s=this.getScaledPriceRange(this.viewport),c=(t=e.points[1])==null?e.points[0]:t;if(!c)return;let l=this.scaleManager.xToPixel(c.barIndex,this.viewport,a),u=this.scaleManager.yToPixel(c.price,s,o),d=e.points.length>1,f=d?l-30:l,p=d?u-10:u;i.value=(n=e.text)==null?``:n,i.style.left=`${Math.max(0,Math.min(a-150,f))}px`,i.style.top=`${Math.max(0,Math.min(o-40,p))}px`,i.style.display=`block`;let m=()=>{if(!r)return;let e=i;e.style.height=`auto`,e.style.height=`${Math.min(240,e.scrollHeight)}px`};m(),this.drawingManager.setEditingText(!0);let h=()=>{i.removeEventListener(`keydown`,v),i.removeEventListener(`blur`,y),i.removeEventListener(`input`,m)},g=()=>{h(),this.textInputDrawing===e&&this.commitTextInput()},_=()=>{h(),this.textInputDrawing===e&&this.cancelTextInput()},v=e=>{let t=e;if(t.key===`Escape`){t.preventDefault(),_();return}t.key===`Enter`&&(r&&!t.ctrlKey&&!t.metaKey||(t.preventDefault(),g()))},y=()=>g();i.addEventListener(`keydown`,v),i.addEventListener(`input`,m),requestAnimationFrame(()=>{this.textInputDrawing===e&&(i.focus(),i.select(),i.addEventListener(`blur`,y,{once:!0}))})}hideTextEditors(){this.textInputEl&&(this.textInputEl.style.display=`none`),this.textAreaEl&&(this.textAreaEl.style.display=`none`)}commitTextInput(){var e,t;let n=this.textInputDrawing;if(!n)return;let r=md.has(n.type)?this.textAreaEl:this.textInputEl;r&&(n.text=r.value,this.hideTextEditors(),this.textInputDrawing=null,this.drawingManager.setEditingText(!1),(e=(t=this.drawingManager).onDrawingsChange)==null||e.call(t),this.scheduleRender())}cancelTextInput(){this.hideTextEditors(),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.raw,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,this.dataStore.invalidate();else{let t=n.findIndex(t=>t.time>e.time);n.splice(t===-1?n.length-1:t,0,e),this.dataStore.invalidate(),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.raw,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,this.dataStore.invalidate(),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.raw,r=n.findIndex(t=>t.time===e);r!==-1&&(n[r]=t,this.dataStore.invalidate(),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+D_,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,n;if(this.dataStore.length===0||this._lastInCompareMode)return;let{priceH:r}=this.getChartLayout(),i=(t=this._displayedPriceRange)==null?this.getScaledPriceRange(this.viewport):t,a=(n=this._lockedAutoFitBase)==null?i:n,o=Kp(i,e,r,24,(a.max-a.min)*10);if(!o)return;this.scrollAnimId!==null&&(cancelAnimationFrame(this.scrollAnimId),this.scrollAnimId=null),this._lockedAutoFitBase||(this._lockedAutoFitBase={...i});let{factor:s,panOffset:c}=qp(this._lockedAutoFitBase,o),l=this.priceScaleFactor,u=this.pricePanOffset;if(Math.abs(s-l)<1e-9&&Math.abs(c-u)<1e-9)return;let d=performance.now(),f=e=>e<.5?2*e*e:-1+(4-2*e)*e,p=e=>{let t=Math.min((e-d)/350,1),n=f(t);this.priceScaleFactor=l+(s-l)*n,this.pricePanOffset=u+(c-u)*n,this.render(),t<1?this.scrollAnimId=requestAnimationFrame(p):(this.scrollAnimId=null,this.scheduleViewportPersist())};this.scrollAnimId=requestAnimationFrame(p)}_currentMarketPrice(){var e,t;let n=this.liveBidAsk;if(n)return n.ask||n.bid;let r=this.dataStore.raw;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=E_(this.mobileBarDivisor,this.explicitMobileDivisor,this.defaultVisibleBars,this.defaultMobileVisibleBars);this._defaultVisibleBars=t;let n=Math.max(0,e-t+D_);this.viewport={...this.viewport,startIndex:n,endIndex:e+D_},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=Un(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=Hn(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`})}};o_=j_,o_.DRAW_GESTURE_THRESHOLD=4,o_.TOUCH_HANDLE_SLOP_PX=18,o_.TRADE_DRAG_PIXEL_THRESHOLD=3,o_.AXIS_LOCK_PIXEL_THRESHOLD=6;var M_={toolbar:[{id:`compare`,label:`Compare / Add Symbol`,available:!0},{id:`indicatorTemplates`,label:`Indicator Templates`,available:!0,note:`the chart stores nothing: save on indicatorTemplateSaved, seed with setIndicatorTemplates`},{id:`saveLayout`,label:`Save Chart Layout`,available:!0,note:`save on layoutSaved, seed with setSavedLayouts`},{id:`manageLayouts`,label:`Manage Saved Layouts`,available:!0,note:`applySavedLayout / deleteSavedLayout`},{id:`quickSearch`,label:`Quick Search`,available:!0,note:`openQuickSearch; picks arrive as quickSearchCommand`},{id:`snapshot`,label:`Snapshot`,available:!0},{id:`chartSettingTemplates`,label:`Chart Setting Templates`,available:!0,note:`save on settingsTemplateSaved, seed with setSettingsTemplates`},{id:`applyToAllCharts`,label:`Apply to All Charts`,available:!0,note:`chartSettingsApplied carries applyToAll`}],timeframes:[{id:`1m`,label:`1m`,available:!0,isShow:!0},{id:`3m`,label:`3m`,available:!0,isShow:!1},{id:`4m`,label:`4m`,available:!0,isShow:!1},{id:`5m`,label:`5m`,available:!0,isShow:!0},{id:`10m`,label:`10m`,available:!0,isShow:!1},{id:`15m`,label:`15m`,available:!0,isShow:!0},{id:`30m`,label:`30m`,available:!0,isShow:!0},{id:`1h`,label:`1H`,available:!0,isShow:!0},{id:`2h`,label:`2H`,available:!0,isShow:!1},{id:`4h`,label:`4H`,available:!0,isShow:!0},{id:`8h`,label:`8H`,available:!0,isShow:!1},{id:`1D`,label:`1D`,available:!0,isShow:!0},{id:`1W`,label:`1W`,available:!0,isShow:!0},{id:`1M`,label:`1M`,available:!0,isShow:!0}],durations:[{id:`1D`,label:`1D`,available:!0},{id:`5D`,label:`5D`,available:!0},{id:`1M`,label:`1M`,available:!0},{id:`3M`,label:`3M`,available:!0},{id:`6M`,label:`6M`,available:!0},{id:`1Y`,label:`1Y`,available:!0},{id:`5Y`,label:`5Y`,available:!0},{id:`All`,label:`All`,available:!0}],seriesTypes:[{id:`candlestick`,label:`Candles`,available:!0,isShow:!0},{id:`hollow`,label:`Hollow`,available:!0,isShow:!0},{id:`ohlc`,label:`OHLC`,available:!0,isShow:!0},{id:`line`,label:`Line`,available:!0,isShow:!0},{id:`area`,label:`Area`,available:!0,isShow:!0},{id:`heikinashi`,label:`Heikin Ashi`,available:!0,isShow:!0},{id:`volumecandles`,label:`Volume Candles`,available:!0,isShow:!0},{id:`linemarkers`,label:`Line with Markers`,available:!0,isShow:!0},{id:`step`,label:`Step Line`,available:!0,isShow:!0},{id:`hlcarea`,label:`HLC Area`,available:!0,isShow:!0},{id:`baseline`,label:`Baseline`,available:!0,isShow:!0},{id:`columns`,label:`Columns`,available:!0,isShow:!0},{id:`highlow`,label:`High-Low`,available:!0,isShow:!1},{id:`hlc`,label:`HLC Bars`,available:!0,isShow:!0},{id:`renko`,label:`Renko`,available:!0,isShow:!0},{id:`linebreak`,label:`Line Break`,available:!0,isShow:!0},{id:`kagi`,label:`Kagi`,available:!0,isShow:!0},{id:`pointfigure`,label:`Point & Figure`,available:!0,isShow:!0}],cursors:[{id:`cross`,label:`Cross`,available:!0},{id:`dot`,label:`Dot`,available:!0},{id:`arrow`,label:`Arrow`,available:!0},{id:`demonstration`,label:`Demonstration`,available:!0},{id:`eraser`,label:`Eraser`,available:!0},{id:`valueTooltip`,label:`Value Tooltip on Long Press`,available:!0,note:`mobile long-press crosshair with price/time readout`}],drawingGroups:[{id:`trend_lines`,label:`Trend Lines & Channels`,iconKey:`trend_lines`,available:!0,tools:[{id:`trendLine`,label:`Trendline`,iconKey:`trend_line`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`trendAngle`,label:`Trend By Angle`,iconKey:`trend_angle`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`horizontalLine`,label:`Horizontal Line`,iconKey:`horizontal_line`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`verticalLine`,label:`Vertical Line`,iconKey:`vertical_line`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`crossLine`,label:`Cross Line`,iconKey:`cross_line`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`parallelChannel`,label:`Parallel Channel`,iconKey:`parallel_channel`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`disjointChannel`,label:`Disjoint Channel`,iconKey:`disjoint_channel`,points:4,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`flatChannel`,label:`Flat Top/Bottom Channel`,iconKey:`flat_channel`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`ray`,label:`Ray`,iconKey:`ray`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`infoLine`,label:`Info Line`,iconKey:`info_line`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`extendedLine`,label:`Extended Line`,iconKey:`extended_line`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`horizontalRay`,label:`Horizontal Ray`,iconKey:`horizontal_ray`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0}]},{id:`fibonacci_gann`,label:`Fibonacci & Gann Tools`,iconKey:`fibonacci_gann`,available:!0,tools:[{id:`fibRetracement`,label:`Fibonacci Retracement`,iconKey:`fib_retracement`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibExtension`,label:`Fibonacci Extension`,iconKey:`fib_extension`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibChannel`,label:`Fibonacci Channel`,iconKey:`fib_channel`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibTimezone`,label:`Fibonacci Timezone`,iconKey:`fib_timezone`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibCircles`,label:`Fibonacci Circles`,iconKey:`fib_circles`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibSpiral`,label:`Fibonacci Spiral`,iconKey:`fib_spiral`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibFan`,label:`Fibonacci Speed Resistance Fan`,iconKey:`fib_fan`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gannFan`,label:`Gann Fan`,iconKey:`gann_fan`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gannSquare`,label:`Gann Square`,iconKey:`gann_square`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gannBox`,label:`Gann Box`,iconKey:`gann_box`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`trendBasedFibTime`,label:`Trend-Based Fib Time`,iconKey:`trend_based_fib_time`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibSpeedResistanceArcs`,label:`Fib Speed Resistance Arcs`,iconKey:`fib_speed_resistance_arcs`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`fibWedge`,label:`Fib Wedge`,iconKey:`fib_wedge`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`pitchfan`,label:`Pitchfan`,iconKey:`pitchfan`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gannSquareFixed`,label:`Gann Square Fixed`,iconKey:`gann_square_fixed`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`geometric_shapes`,label:`Geometric Shapes`,iconKey:`geometric_shapes`,available:!0,tools:[{id:`rectangle`,label:`Rectangle`,iconKey:`rectangle`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`rotatedRectangle`,label:`Rotated Rectangle`,iconKey:`rotated_rectangle`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`ellipse`,label:`Ellipse`,iconKey:`ellipse`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`triangle`,label:`Triangle`,iconKey:`triangle`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`circle`,label:`Circle`,iconKey:`circle`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`arc`,label:`Arc`,iconKey:`arc`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`polyline`,label:`Polyline`,iconKey:`polyline`,points:`multi`,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`path`,label:`Path`,iconKey:`path`,points:`multi`,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`curve`,label:`Curve`,iconKey:`curve`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`doubleCurve`,label:`Double Curve`,iconKey:`double_curve`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`measurement_tools`,label:`Measurement Tools`,iconKey:`measurement_tools`,available:!0,tools:[{id:`priceRange`,label:`Price Range`,iconKey:`price_range`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`dateRange`,label:`Date Range`,iconKey:`date_range`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`datePriceRange`,label:`Date & Price Range`,iconKey:`date_price_range`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`ruler`,label:`Ruler`,iconKey:`ruler`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`forecasting`,label:`Forecasting`,iconKey:`forecasting`,available:!0,tools:[{id:`longPosition`,label:`Long Position`,iconKey:`long_position`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`shortPosition`,label:`Short Position`,iconKey:`short_position`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`forecast`,label:`Forecast`,iconKey:`forecast`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`barsPattern`,label:`Bars Pattern`,iconKey:`bars_pattern`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`anchoredVwap`,label:`Anchored VWAP`,iconKey:`anchored_v_w_a_p`,points:1,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`pitchfork_tools`,label:`Pitchfork Tools`,iconKey:`pitchfork_tools`,available:!0,tools:[{id:`pitchfork`,label:`Pitchfork`,iconKey:`pitchfork`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`schiffPitchfork`,label:`Schiff Pitchfork`,iconKey:`schiff_pitchfork`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`modifiedSchiff`,label:`Modified Schiff Pitchfork`,iconKey:`modified_schiff`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`insidePitchfork`,label:`Inside Pitchfork`,iconKey:`inside_pitchfork`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0}]},{id:`volume_statistics`,label:`Volume & Statistical Tools`,iconKey:`volume_statistics`,available:!0,tools:[{id:`fixedRangeVP`,label:`Fixed Range Volume Profile`,iconKey:`fixed_range_v_p`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`anchoredVP`,label:`Anchored Volume Profile`,iconKey:`anchored_v_p`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`volumeProfile`,label:`Volume Profile`,iconKey:`volume_profile`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`regressionTrend`,label:`Regression Trend`,iconKey:`regression_trend`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`annotation_tools`,label:`Annotation Tools`,iconKey:`annotation_tools`,available:!0,tools:[{id:`text`,label:`Text`,iconKey:`text`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`callout`,label:`Callout`,iconKey:`callout`,points:2,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`priceLabel`,label:`Price Label`,iconKey:`price_label`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowMarker`,label:`Arrow`,iconKey:`arrow_marker`,points:2,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`flag`,label:`Flag`,iconKey:`flag`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`priceNote`,label:`Price Note`,iconKey:`price_note`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`anchoredNote`,label:`Anchored Note`,iconKey:`anchored_note`,points:2,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowUp`,label:`Arrow Up`,iconKey:`arrow_up`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowDown`,label:`Arrow Down`,iconKey:`arrow_down`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowMarkLeft`,label:`Arrow Mark Left`,iconKey:`arrow_mark_left`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`arrowMarkRight`,label:`Arrow Mark Right`,iconKey:`arrow_mark_right`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`anchoredText`,label:`Anchored Text`,iconKey:`anchored_text`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`note`,label:`Note`,iconKey:`note`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`pin`,label:`Pin`,iconKey:`pin`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`table`,label:`Table`,iconKey:`table`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`comment`,label:`Comment`,iconKey:`comment`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0},{id:`signpost`,label:`Signpost`,iconKey:`signpost`,points:1,hasText:!0,styleFields:[`strokeColor`,`fontSize`],available:!0}]},{id:`pattern_recognition`,label:`Pattern Recognition`,iconKey:`pattern_recognition`,available:!0,tools:[{id:`headShoulders`,label:`Head & Shoulders`,iconKey:`head_shoulders`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`trianglePattern`,label:`Triangle Pattern`,iconKey:`triangle_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`threeDrives`,label:`3 Drives Pattern`,iconKey:`three_drives`,points:7,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`abcdPattern`,label:`ABCD Pattern`,iconKey:`abcd_pattern`,points:4,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`cypherPattern`,label:`Cypher Pattern`,iconKey:`cypher_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`butterflyPattern`,label:`Butterfly Pattern`,iconKey:`butterfly_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`batPattern`,label:`Bat Pattern`,iconKey:`bat_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`gartleyPattern`,label:`Gartley Pattern`,iconKey:`gartley_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`crabPattern`,label:`Crab Pattern`,iconKey:`crab_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`sharkPattern`,label:`Shark Pattern`,iconKey:`shark_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`xabcdPattern`,label:`XABCD Pattern`,iconKey:`xabcd_pattern`,points:5,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`elliott_wave`,label:`Elliott Wave Tools`,iconKey:`elliott_wave`,available:!0,tools:[{id:`elliottImpulse`,label:`Elliott Impulse (12345)`,iconKey:`elliott_impulse`,points:6,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottCorrective`,label:`Elliott Corrective (ABC)`,iconKey:`elliott_corrective`,points:4,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottTriangle`,label:`Elliott Wave Triangle`,iconKey:`elliott_triangle`,points:6,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottCombination`,label:`Elliott Wave Combination`,iconKey:`elliott_combination`,points:7,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottWxy`,label:`Elliott Double Three (WXY)`,iconKey:`elliott_wxy`,points:4,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`elliottTripleCombo`,label:`Elliott Triple Combo Wave (WXYXZ)`,iconKey:`elliott_triple_combo`,points:6,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0}]},{id:`brush_highlighter`,label:`Brush & Highlighter`,iconKey:`brush_highlighter`,available:!0,tools:[{id:`brush`,label:`Brush`,iconKey:`brush`,points:`multi`,hasText:!1,styleFields:[`strokeColor`,`lineWidth`],available:!0},{id:`highlighter`,label:`Highlighter`,iconKey:`highlighter`,points:`multi`,hasText:!1,styleFields:[`strokeColor`,`lineWidth`],available:!0}]},{id:`advanced_tools`,label:`Advanced Tools`,iconKey:`advanced_tools`,available:!0,tools:[{id:`ghostFeed`,label:`Ghost Feed`,iconKey:`ghost_feed`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`projection`,label:`Projection`,iconKey:`projection`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`sineLine`,label:`Sine Line`,iconKey:`sine_line`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`cyclicLines`,label:`Cyclic Lines`,iconKey:`cyclic_lines`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0},{id:`timeCycles`,label:`Time Cycles`,iconKey:`time_cycles`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`],available:!0}]},{id:`price_projections`,label:`Price Projection Tools`,iconKey:`price_projections`,available:!0,tools:[{id:`fibProjection`,label:`Fibonacci Projection`,iconKey:`fib_projection`,points:3,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0},{id:`priceProjection`,label:`Price Projection`,iconKey:`price_projection`,points:2,hasText:!1,styleFields:[`strokeColor`,`lineWidth`,`lineStyle`,`fillColor`,`fillOpacity`],available:!0}]},{id:`icons`,label:`Emojis, Stickers & Icons`,iconKey:`icons`,available:!0,tools:[{id:`icon`,label:`Emojis, Stickers & Icons`,iconKey:`icon`,points:1,hasText:!1,styleFields:[`strokeColor`,`fontSize`],available:!0}]}],drawingToolbarOptions:[{id:`magnet`,label:`Magnet Mode`,available:!0,command:`setMagnetMode`},{id:`keepDrawingMode`,label:`Keep Drawing Mode`,available:!0,command:`setKeepDrawingMode`},{id:`zoomIn`,label:`Zoom In`,available:!0,command:`setDrawingTool('zoomIn')`},{id:`copyToAllCharts`,label:`Copy New Drawings to All Charts`,available:!0,command:`setCopyDrawingsToAllCharts`},{id:`hideDrawingsToolbar`,label:`Hide Drawings Toolbar`,available:!0,note:`showDrawingTools at init, setDrawingToolbarVisible at runtime`},{id:`lockAllDrawings`,label:`Lock All Drawings`,available:!0},{id:`hideAllDrawings`,label:`Hide All Drawings`,available:!0},{id:`clearAllDrawings`,label:`Remove All Drawings`,available:!0}],drawingStyleDefaults:{strokeColor:`#2962ff`,lineWidth:1,lineStyle:`solid`,fillOpacity:.1,fontSize:13},indicators:[{shortName:`MA`,name:`Moving Average`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#F5A623`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`EMA`,name:`Exponential Moving Average`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#9B59B6`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`WMA`,name:`Weighted Moving Average`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#e91e63`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`HMA`,name:`Hull Moving Average`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#00bcd4`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`MARibbon`,name:`Moving Average Ribbon`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#ffcc80`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`BB`,name:`Bollinger Bands`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`stdDev`,label:`Std Dev`,min:.1,max:10,step:.1,default:2},{kind:`color`,key:`color`,label:`Color`,default:`#3B82F6`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`KC`,name:`Keltner Channels`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`mult`,label:`Multiplier`,min:.1,max:10,step:.1,default:2},{kind:`number`,key:`atrPeriod`,label:`ATR Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#4caf50`}]},{shortName:`DC`,name:`Donchian Channels`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#26c6da`}]},{shortName:`ATR`,name:`Average True Range`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#ff5722`}]},{shortName:`RSI`,name:`Relative Strength Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#e8b84b`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`Stoch`,name:`Stochastic Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`kPeriod`,label:`K Period`,min:1,max:500,step:1,default:14},{kind:`number`,key:`dPeriod`,label:`D Period`,min:1,max:100,step:1,default:3},{kind:`color`,key:`color`,label:`Color`,default:`#e040fb`}]},{shortName:`StochRSI`,name:`Stochastic RSI`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`rsiPeriod`,label:`RSI Period`,min:1,max:500,step:1,default:14},{kind:`number`,key:`stochPeriod`,label:`Stoch Period`,min:1,max:500,step:1,default:14},{kind:`number`,key:`kPeriod`,label:`K Smooth`,min:1,max:100,step:1,default:3},{kind:`number`,key:`dPeriod`,label:`D Smooth`,min:1,max:100,step:1,default:3},{kind:`color`,key:`color`,label:`Color`,default:`#00e5ff`}]},{shortName:`MACD`,name:`MACD`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast Period`,min:1,max:500,step:1,default:12},{kind:`number`,key:`slow`,label:`Slow Period`,min:1,max:500,step:1,default:26},{kind:`number`,key:`signal`,label:`Signal Period`,min:1,max:100,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#2196f3`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`CCI`,name:`Commodity Channel Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#4db6ac`}]},{shortName:`%R`,name:`Williams %R`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#ff7043`}]},{shortName:`ROC`,name:`Rate of Change`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:12},{kind:`color`,key:`color`,label:`Color`,default:`#80cbc4`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`],default:`close`}]},{shortName:`OBV`,name:`On Balance Volume`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#aed581`}]},{shortName:`VOL`,name:`Volume`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26a69a`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#ef5350`}]},{shortName:`VWAP`,name:`Volume Weighted Average Price`,category:`Volume`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#9c27b0`}]},{shortName:`A/D`,name:`Accumulation/Distribution`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#ce93d8`}]},{shortName:`MFI`,name:`Money Flow Index`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#ffab40`}]},{shortName:`CMF`,name:`Chaikin Money Flow`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#80deea`}]},{shortName:`Pivot`,name:`Pivot Points Standard`,category:`Support/Resistance`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#ffd54f`}]},{shortName:`Fib`,name:`Fibonacci Retracement`,category:`Support/Resistance`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`lookback`,label:`Lookback`,min:1,max:500,step:1,default:50},{kind:`color`,key:`color`,label:`Color`,default:`#e1bee7`}]},{shortName:`Supertrend`,name:`Supertrend`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`atrPeriod`,label:`ATR Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`multiplier`,label:`Multiplier`,min:.1,max:20,step:.1,default:3},{kind:`color`,key:`color`,label:`Color`,default:`#26a69a`}]},{shortName:`PSAR`,name:`Parabolic SAR`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`step`,label:`Step`,min:.001,max:.1,step:.001,default:.02},{kind:`number`,key:`maxAF`,label:`Max AF`,min:.01,max:1,step:.01,default:.2},{kind:`color`,key:`color`,label:`Color`,default:`#ff6b9d`}]},{shortName:`Ichimoku`,name:`Ichimoku Cloud`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`tenkan`,label:`Tenkan Period`,min:1,max:100,step:1,default:9},{kind:`number`,key:`kijun`,label:`Kijun Period`,min:1,max:200,step:1,default:26},{kind:`number`,key:`senkouB`,label:`Senkou B Period`,min:1,max:500,step:1,default:52},{kind:`color`,key:`color`,label:`Color`,default:`#b0bec5`}]},{shortName:`ADX`,name:`ADX`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#fff176`}]},{shortName:`AO`,name:`Awesome Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fastPeriod`,label:`Fast Period`,min:1,max:100,step:1,default:5},{kind:`number`,key:`slowPeriod`,label:`Slow Period`,min:1,max:200,step:1,default:34},{kind:`color`,key:`color`,label:`Color`,default:`#b0bec5`}]},{shortName:`HA`,name:`Heikin Ashi`,category:`Price Transformation`,pane:`main`,multiInstance:!0,isShow:!1,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#90a4ae`},{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26a69a`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#ef5350`}]},{shortName:`LinReg`,name:`Linear Regression`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#ff9800`}]},{shortName:`52W`,name:`52 Week High/Low`,category:`Price`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:2e3,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#78909C`}]},{shortName:`AC`,name:`Accelerator Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`ASI`,name:`Accumulative Swing Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`limit`,label:`Limit Move`,min:1,max:1e4,step:1,default:300},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`ADLine`,name:`Advance/Decline`,category:`Breadth`,pane:`sub`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`ALMA`,name:`Arnaud Legoux MA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:9},{kind:`number`,key:`offset`,label:`Offset`,min:0,max:1,step:.05,default:.85},{kind:`number`,key:`sigma`,label:`Sigma`,min:1,max:20,step:1,default:6},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Aroon`,name:`Aroon`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`AvgPrice`,name:`Average Price`,category:`Price`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#78909C`}]},{shortName:`BOP`,name:`Balance of Power`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`BBPercentB`,name:`Bollinger Bands %B`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`mult`,label:`StdDev`,min:.1,max:10,step:.1,default:2},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`BBWidth`,name:`Bollinger Bands Width`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`mult`,label:`StdDev`,min:.1,max:10,step:.1,default:2},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`ChaikinOsc`,name:`Chaikin Oscillator`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast`,min:1,max:500,step:1,default:3},{kind:`number`,key:`slow`,label:`Slow`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`}]},{shortName:`ChaikinVol`,name:`Chaikin Volatility`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`rocPeriod`,label:`ROC Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`CKS`,name:`Chande Kroll Stop`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`mult`,label:`Multiplier`,min:.1,max:10,step:.1,default:3},{kind:`number`,key:`stopPeriod`,label:`Stop Period`,min:1,max:500,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`CMO`,name:`Chande Momentum Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`ChopZone`,name:`Chop Zone`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`Chop`,name:`Choppiness Index`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#78909C`}]},{shortName:`CRSI`,name:`Connors RSI`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`rsiPeriod`,label:`RSI Period`,min:1,max:500,step:1,default:3},{kind:`number`,key:`streakPeriod`,label:`Streak Period`,min:1,max:500,step:1,default:2},{kind:`number`,key:`rankPeriod`,label:`Rank Period`,min:1,max:500,step:1,default:100},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`Coppock`,name:`Coppock Curve`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`longRoc`,label:`Long ROC`,min:1,max:500,step:1,default:14},{kind:`number`,key:`shortRoc`,label:`Short ROC`,min:1,max:500,step:1,default:11},{kind:`number`,key:`wmaPeriod`,label:`WMA Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`CorrLog`,name:`Correlation – Log`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`}]},{shortName:`Corr`,name:`Correlation Coefficient`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`DPO`,name:`Detrended Price Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:21},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`DMI`,name:`Directional Movement (DMI)`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`number`,key:`adxPeriod`,label:`ADX Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`plusColor`,label:`+DI Color`,default:`#26A69A`},{kind:`color`,key:`minusColor`,label:`-DI Color`,default:`#EF5350`},{kind:`color`,key:`adxColor`,label:`ADX Color`,default:`#FFD600`}]},{shortName:`DEMA`,name:`Double EMA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`EOM`,name:`Ease of Movement`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`EFI`,name:`Elder's Force Index`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:13},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`}]},{shortName:`EMACross`,name:`EMA Cross`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast Period`,min:1,max:500,step:1,default:9},{kind:`number`,key:`slow`,label:`Slow Period`,min:1,max:500,step:1,default:21},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Env`,name:`Envelopes`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`percent`,label:`Percent`,min:.1,max:50,step:.1,default:2},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Fisher`,name:`Fisher Transform`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`Guppy`,name:`Guppy Multiple MA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`fastColor`,label:`Fast Color`,default:`#26A69A`},{kind:`color`,key:`slowColor`,label:`Slow Color`,default:`#EF5350`}]},{shortName:`HV`,name:`Historical Volatility`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`barsPerYear`,label:`Bars/Year`,min:1,max:1e5,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`KVO`,name:`Klinger Oscillator`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast`,min:1,max:500,step:1,default:34},{kind:`number`,key:`slow`,label:`Slow`,min:1,max:500,step:1,default:55},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`KST`,name:`Know Sure Thing`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`LSMA`,name:`Least Squares MA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:25},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`LinRegSlope`,name:`Linear Regression Slope`,category:`Trend`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MACross`,name:`MA Cross`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`slow`,label:`Slow Period`,min:1,max:500,step:1,default:20},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MAEMACross`,name:`MA with EMA Cross`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`MA Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`slow`,label:`EMA Period`,min:1,max:500,step:1,default:20},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MajRule`,name:`Majority Rule`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`MassIdx`,name:`Mass Index`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:25},{kind:`number`,key:`emaPeriod`,label:`EMA Period`,min:1,max:500,step:1,default:9},{kind:`color`,key:`color`,label:`Color`,default:`#FFD600`}]},{shortName:`McGinley`,name:`McGinley Dynamic`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#FFD600`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MedPrice`,name:`Median Price`,category:`Price`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#90A4AE`}]},{shortName:`Mom`,name:`Momentum`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`AMA`,name:`MA Adaptive`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`fast`,label:`Fast`,min:1,max:50,step:1,default:2},{kind:`number`,key:`slow`,label:`Slow`,min:2,max:200,step:1,default:30},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MAChannel`,name:`MA Channel`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`},{kind:`color`,key:`color`,label:`Color`,default:`#78909C`}]},{shortName:`MA2`,name:`MA Double`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period1`,label:`Fast Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`period2`,label:`Slow Period`,min:1,max:500,step:1,default:20},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`HammingMA`,name:`MA Hamming`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#EF5350`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`MAMulti`,name:`MA Multiple`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`start`,label:`Start Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`step`,label:`Step`,min:1,max:100,step:1,default:10},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`}]},{shortName:`MA3`,name:`MA Triple`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period1`,label:`Fast Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`period2`,label:`Mid Period`,min:1,max:500,step:1,default:20},{kind:`number`,key:`period3`,label:`Slow Period`,min:1,max:500,step:1,default:50},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`SMA`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`NetVol`,name:`Net Volume`,category:`Volume`,pane:`sub`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`PriceChannel`,name:`Price Channel`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`PPO`,name:`Price Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast`,min:1,max:500,step:1,default:12},{kind:`number`,key:`slow`,label:`Slow`,min:1,max:500,step:1,default:26},{kind:`select`,key:`method`,label:`Method`,options:[`SMA`,`EMA`,`WMA`,`RMA`,`ALMA`,`DEMA`,`TEMA`,`LSMA`,`McGinley`,`VWMA`,`Hamming`],default:`EMA`},{kind:`select`,key:`mode`,label:`Mode`,options:[`percent`,`absolute`],default:`percent`},{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`PVT`,name:`Price Volume Trend`,category:`Volume`,pane:`sub`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`RCI`,name:`Rank Correlation Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Ratio`,name:`Ratio`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#FF6D00`}]},{shortName:`RVGI`,name:`Relative Vigor Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`color`,key:`signalColor`,label:`Signal Color`,default:`#FF6D00`}]},{shortName:`RVI`,name:`Relative Volatility Index`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`stdevPeriod`,label:`StdDev Period`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`}]},{shortName:`SMII`,name:`SMI Ergodic Indicator/Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`longPeriod`,label:`Long`,min:1,max:500,step:1,default:20},{kind:`number`,key:`shortPeriod`,label:`Short`,min:1,max:500,step:1,default:5},{kind:`number`,key:`signalPeriod`,label:`Signal`,min:1,max:500,step:1,default:5},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`color`,key:`signalColor`,label:`Signal Color`,default:`#FF6D00`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`SMMA`,name:`Smoothed MA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Spread`,name:`Spread`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`}]},{shortName:`StdDev`,name:`Standard Deviation`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#EF5350`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`StdErr`,name:`Standard Error`,category:`Statistics`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:21},{kind:`color`,key:`color`,label:`Color`,default:`#AB47BC`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`StdErrBands`,name:`Standard Error Bands`,category:`Volatility`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:21},{kind:`number`,key:`mult`,label:`Multiplier`,min:.1,max:10,step:.1,default:2},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`TSIdx`,name:`Trend Strength Index`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`TEMA`,name:`Triple EMA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`TRIX`,name:`TRIX`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:18},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`TSI`,name:`True Strength Index`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`longPeriod`,label:`Long`,min:1,max:500,step:1,default:25},{kind:`number`,key:`shortPeriod`,label:`Short`,min:1,max:500,step:1,default:13},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`TypPrice`,name:`Typical Price`,category:`Price`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`color`,key:`color`,label:`Color`,default:`#B0BEC5`}]},{shortName:`UO`,name:`Ultimate Oscillator`,category:`Momentum`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`p1`,label:`Fast`,min:1,max:500,step:1,default:7},{kind:`number`,key:`p2`,label:`Mid`,min:1,max:500,step:1,default:14},{kind:`number`,key:`p3`,label:`Slow`,min:1,max:500,step:1,default:28},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`VolCtC`,name:`Volatility Close-to-Close`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`barsPerYear`,label:`Bars/Year`,min:1,max:1e5,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#2962FF`}]},{shortName:`VolIdx`,name:`Volatility Index`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`color`,label:`Color`,default:`#FFD600`}]},{shortName:`VolOHLC`,name:`Volatility O-H-L-C`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`barsPerYear`,label:`Bars/Year`,min:1,max:1e5,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#D500F9`}]},{shortName:`VolZero`,name:`Volatility Zero Trend Close-to-Close`,category:`Volatility`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:10},{kind:`number`,key:`barsPerYear`,label:`Bars/Year`,min:1,max:1e5,step:1,default:252},{kind:`color`,key:`color`,label:`Color`,default:`#00BFA5`}]},{shortName:`VolOsc`,name:`Volume Oscillator`,category:`Volume`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`fast`,label:`Fast`,min:1,max:500,step:1,default:5},{kind:`number`,key:`slow`,label:`Slow`,min:1,max:500,step:1,default:10},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`}]},{shortName:`VPVR`,name:`Volume Profile Visible Range`,category:`Volume`,pane:`main`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`number`,key:`rows`,label:`Rows`,min:4,max:200,step:1,default:24},{kind:`color`,key:`fillColor`,label:`Fill`,default:`rgba(120,144,156,0.45)`},{kind:`color`,key:`pocColor`,label:`POC Color`,default:`rgba(255,214,0,0.6)`}]},{shortName:`Vortex`,name:`Vortex Indicator`,category:`Trend Strength`,pane:`sub`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:14},{kind:`color`,key:`plusColor`,label:`+VI Color`,default:`#26A69A`},{kind:`color`,key:`minusColor`,label:`-VI Color`,default:`#EF5350`}]},{shortName:`VWMA`,name:`VWMA`,category:`Trend`,pane:`main`,multiInstance:!0,isShow:!0,available:!0,fields:[{kind:`number`,key:`period`,label:`Period`,min:1,max:500,step:1,default:20},{kind:`color`,key:`color`,label:`Color`,default:`#26A69A`},{kind:`select`,key:`source`,label:`Source`,options:[`open`,`high`,`low`,`close`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`],default:`close`}]},{shortName:`Alligator`,name:`Williams Alligator`,category:`Trend`,pane:`main`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`color`,key:`jawColor`,label:`Jaw`,default:`#2962FF`},{kind:`color`,key:`teethColor`,label:`Teeth`,default:`#EF5350`},{kind:`color`,key:`lipsColor`,label:`Lips`,default:`#26A69A`}]},{shortName:`Fractal`,name:`Williams Fractal`,category:`Price`,pane:`main`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`number`,key:`n`,label:`Bars Each Side`,min:1,max:10,step:1,default:2},{kind:`color`,key:`upColor`,label:`Up Color`,default:`#26A69A`},{kind:`color`,key:`downColor`,label:`Down Color`,default:`#EF5350`}]},{shortName:`ZigZag`,name:`Zig Zag`,category:`Price`,pane:`main`,multiInstance:!1,isShow:!0,available:!0,fields:[{kind:`number`,key:`deviation`,label:`Deviation %`,min:.1,max:50,step:.1,default:5},{kind:`color`,key:`color`,label:`Color`,default:`#FFD600`}]}],chartSettings:{title:`Chart Settings`,available:!0,reset:{id:`reset`,label:`Reset to Defaults`,type:`action`,available:!0},tabs:[{id:`appearance`,label:`Appearance`,available:!0,sections:[{id:`theme`,label:`Theme`,available:!0,note:`row is shown only when the host enables enableThemeToggle`,items:[{id:`theme`,label:`Theme`,type:`toggle`,options:[{value:`dark`,label:`Dark`},{value:`light`,label:`Light`}],default:`dark`,available:!0}]},{id:`colors`,label:`Colors`,available:!0,note:`applies to the plot only (canvasColors / setCanvasColors), separately per theme`,items:[{id:`background`,label:`Background`,type:`color`,keys:[`background`],available:!0,default:{dark:`#141d22`,light:`#ffffff`}},{id:`grid`,label:`Grid`,type:`color`,keys:[`grid`],available:!0,default:{dark:`#243344`,light:`#efefef`}},{id:`axisText`,label:`Axis Text`,type:`color`,keys:[`axisText`],available:!0,default:{dark:`#a8bac8`,light:`#666666`}},{id:`axisBorder`,label:`Axis Border`,type:`color`,keys:[`axisBorder`],available:!0,default:{dark:`#1c2a35`,light:`#cccccc`}},{id:`crosshair`,label:`Crosshair`,type:`color`,keys:[`crosshair`],available:!0,default:{dark:`rgba(255,255,255,0.4)`,light:`#999999`}},{id:`candleBody`,label:`Candle Body`,type:`color`,keys:[`candleUp`,`candleDown`],available:!0,default:{dark:[`#5caf79`,`#DF6868`],light:[`#5caf79`,`#DF6868`]}},{id:`candleWick`,label:`Candle Wick`,type:`color`,keys:[`wickUp`,`wickDown`],available:!0,default:{dark:[`#5caf79`,`#DF6868`],light:[`#5caf79`,`#DF6868`]}},{id:`candleBorder`,label:`Candle Border`,type:`color`,keys:[`borderUp`,`borderDown`],available:!0,default:{dark:[`#5caf79`,`#DF6868`],light:[`#5caf79`,`#DF6868`]}},{id:`volume`,label:`Volume`,type:`color`,keys:[`volumeUp`,`volumeDown`],available:!0,default:{dark:[`rgba(92,175,121,0.4)`,`rgba(223,104,104,0.4)`],light:[`rgba(92,175,121,0.6)`,`rgba(223,104,104,0.6)`]}}]},{id:`chartElements`,label:`Chart elements`,available:!0,items:[{id:`priceAxisCountdown`,label:`Price-axis countdown`,description:`Show the candle close countdown on the right price axis.`,type:`toggle`,default:!1,available:!0}]}]},{id:`trading`,label:`Trading`,available:!0,sections:[{id:`tfc`,label:`Trade from Charts`,available:!0,items:[{id:`tradeDisplayFilter`,label:`Show`,description:`Controls which trade levels are displayed on the chart`,type:`segmented`,options:[{value:`all`,label:`All`},{value:`positions`,label:`Positions Only`},{value:`orders`,label:`Orders Only`},{value:`none`,label:`None`}],default:`all`,available:!0},{id:`positionRenderStyle`,label:`Position Style`,description:`How open positions are rendered on the chart`,type:`segmented`,options:[{value:`line`,label:`Full Line`},{value:`dot`,label:`Dot`}],default:`line`,available:!0,note:`switches to Dot automatically above tradesThresholdForHorizontalLine levels unless the user picked a style`},{id:`showTradeLevelsAlways`,label:`Always show SL/TP`,description:`Keep stop-loss and take-profit lines visible without hovering.`,type:`toggle`,default:!0,available:!0}]}]},{id:`symbol`,label:`Symbol`,available:!0,sections:[{id:`symbol`,label:`Symbol`,available:!0,items:[{id:`barColorSource`,label:`Color bars based on previous close`,type:`select`,available:!0,command:`setBarColorSource`,options:[{value:`open`,label:`Open`},{value:`previousClose`,label:`Previous close`}],default:`open`},{id:`pricePrecision`,label:`Price precision`,type:`select`,available:!0,command:`setPricePrecision`,key:`digits`,options:[{value:null,label:`Default`},{value:0,label:`1`},{value:1,label:`0.1`},{value:2,label:`0.01`},{value:3,label:`0.001`},{value:4,label:`0.0001`},{value:5,label:`0.00001`}],default:null},{id:`timezone`,label:`Timezone`,type:`select`,default:`UTC`,available:!0,command:`setScalesSettings`,key:`timezone`}]}]},{id:`statusLine`,label:`Status line`,available:!0,sections:[{id:`statusLine`,label:`Status line`,available:!0,items:[{id:`symbol`,label:`Symbol`,type:`toggle`,default:!0,available:!0,command:`setStatusLineSettings`,key:`symbol`},{id:`ohlc`,label:`OHLC values`,type:`toggle`,default:!0,available:!0,command:`setStatusLineSettings`,key:`ohlc`},{id:`barChange`,label:`Bar change values`,type:`toggle`,default:!1,available:!0,command:`setStatusLineSettings`,key:`barChange`},{id:`volume`,label:`Volume`,type:`toggle`,default:!0,available:!0,command:`setStatusLineSettings`,key:`volume`}]}]},{id:`scales`,label:`Scales and lines`,available:!0,sections:[{id:`scales`,label:`Scales and lines`,available:!0,items:[{id:`lastPriceLabel`,label:`Last price label`,type:`toggle`,default:!0,available:!0,command:`setScalesSettings`,key:`lastPriceLabel`},{id:`bidLabel`,label:`Bid label`,type:`toggle`,default:!1,available:!0,command:`setScalesSettings`,key:`bidLabel`},{id:`askLabel`,label:`Ask label`,type:`toggle`,default:!1,available:!0,command:`setScalesSettings`,key:`askLabel`},{id:`highLowLabels`,label:`High / low labels`,type:`toggle`,default:!1,available:!0,command:`setScalesSettings`,key:`highLowLabels`},{id:`timeAxisCountdown`,label:`Countdown to bar close`,type:`toggle`,default:!1,available:!0,command:`setScalesSettings`,key:`timeAxisCountdown`},{id:`priceScaleMode`,label:`Scale`,type:`select`,available:!0,command:`setPriceScaleMode`,key:`mode`,options:[{value:`normal`,label:`Regular`},{value:`percent`,label:`Percent`},{value:`log`,label:`Logarithmic`}],default:`normal`},{id:`autoScale`,label:`Auto scale`,type:`toggle`,default:!0,available:!0,command:`setAutoScale`,key:`enabled`}]}]},{id:`canvas`,label:`Canvas`,available:!0,note:`colours stay under Appearance > Colors`,sections:[{id:`canvas`,label:`Canvas`,available:!0,items:[{id:`gridHorizontal`,label:`Horizontal grid lines`,type:`toggle`,default:!0,available:!0,command:`setCanvasOptions`,key:`gridHorizontal`},{id:`gridVertical`,label:`Vertical grid lines`,type:`toggle`,default:!0,available:!0,command:`setCanvasOptions`,key:`gridVertical`},{id:`watermarkVisible`,label:`Watermark`,type:`toggle`,default:!1,available:!0,command:`setCanvasOptions`,key:`watermarkVisible`},{id:`watermarkText`,label:`Watermark text`,type:`text`,default:``,available:!0,command:`setCanvasOptions`,key:`watermarkText`},{id:`watermarkSize`,label:`Watermark size`,type:`number`,default:72,available:!0,command:`setCanvasOptions`,key:`watermarkSize`},{id:`watermarkOpacity`,label:`Watermark opacity`,type:`number`,default:.06,min:0,max:1,step:.01,available:!0,command:`setCanvasOptions`,key:`watermarkOpacity`},{id:`crosshairStyle`,label:`Crosshair style`,type:`select`,available:!0,command:`setCanvasOptions`,key:`crosshairStyle`,options:[{value:`dashed`,label:`Dashed`},{value:`solid`,label:`Solid`},{value:`dotted`,label:`Dotted`}],default:`dashed`},{id:`crosshairWidth`,label:`Crosshair width`,type:`number`,default:1,min:1,max:4,step:1,available:!0,command:`setCanvasOptions`,key:`crosshairWidth`}]}]},{id:`templates`,label:`Templates`,available:!0,sections:[{id:`templates`,label:`Templates`,available:!0,items:[{id:`saveTemplate`,label:`Save as template`,type:`action`,available:!0,command:`captureSettingsTemplate`},{id:`applyTemplate`,label:`Apply template`,type:`select`,available:!0,command:`applySettingsTemplate`},{id:`applyToAllCharts`,label:`Apply to all charts`,type:`action`,available:!0,command:`applyChartSettings`}]}]}]},canvasColorKeys:[`background`,`grid`,`axisText`,`axisBorder`,`crosshair`,`candleUp`,`candleDown`,`wickUp`,`wickDown`,`borderUp`,`borderDown`,`volumeUp`,`volumeDown`],priceSources:[`bid`,`ask`,`ltp`],limits:{maxSubPanes:3,maxCompares:8}};function N_(){$(`catalog`,{catalogVersion:`1.3.0-beta.28`,...M_})}var Q=null,P_=new Map,F_=new Map,I_=0;function L_(){return`dr_${Date.now()}_${I_++}`}function R_(){return`cr_${Date.now()}_${I_++}`}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 z_(e={}){var t;Q==null||Q.destroy();let n=document.getElementById(`chart`),{enableTrading:r,onSymbolClick:i,onAskAiClick:a,orderLineTimeDrag:o,enableForecasting:s,enableCursorModes:c,enableIconTools:l,enableChartSettings:u,enableScaleControls:d,enableSidePanels:f,...p}=e,m={...p.features,...o?{orderLineTimeDrag:!0}:{},...s?{enableForecasting:!0}:{},...c?{enableCursorModes:!0}:{},...l?{enableIconTools:!0}:{},...u?{enableChartSettings:!0}:{},...d?{enableScaleControls:!0}:{},...f?{enableSidePanels:!0}:{}},h=(t=p.timeframe)==null?`1D`:t;Q=new j_({theme:`dark`,...p,...Object.keys(m).length>0?{features:m}:{},container:n,dataLoader:e=>{for(let[,e]of P_)e.reject(Error(`cancelled`));P_.clear();let t=L_(),n=Q==null?void 0:Q.getState();return new Promise((r,i)=>{var a;P_.set(t,{resolve:r,reject:i}),$(`dataRequest`,{requestId:t,timeframe:(a=n==null?void 0:n.timeframe)==null?h:a,interval:e.interval,start:e.start.getTime(),end:e.end.getTime(),priceSource:e.priceSource})})},compareDataLoader:e=>{let t=R_(),n=Q==null?void 0:Q.getState();return new Promise((r,i)=>{var a;F_.set(t,{resolve:r,reject:i}),$(`compareDataRequest`,{requestId:t,symbol:e.symbol,timeframe:(a=n==null?void 0:n.timeframe)==null?h: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})=>{h=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)),Q.on(`snapshot`,e=>$(`snapshot`,e)),Q.on(`layoutChange`,e=>$(`layoutChange`,e)),Q.on(`layoutSaved`,e=>$(`layoutSaved`,e)),Q.on(`layoutApplied`,e=>$(`layoutApplied`,e)),Q.on(`layoutDeleted`,e=>$(`layoutDeleted`,e)),Q.on(`indicatorTemplateSaved`,e=>$(`indicatorTemplateSaved`,e)),Q.on(`indicatorTemplateApplied`,e=>$(`indicatorTemplateApplied`,e)),Q.on(`indicatorTemplateDeleted`,e=>$(`indicatorTemplateDeleted`,e)),Q.on(`settingsTemplateSaved`,e=>$(`settingsTemplateSaved`,e)),Q.on(`settingsTemplateApplied`,e=>$(`settingsTemplateApplied`,e)),Q.on(`settingsTemplateDeleted`,e=>$(`settingsTemplateDeleted`,e)),Q.on(`chartSettingsApplied`,e=>$(`chartSettingsApplied`,e)),Q.on(`quickSearchCommand`,e=>$(`quickSearchCommand`,e)),Q.on(`cursorModeChange`,e=>$(`cursorModeChange`,e)),Q.on(`magnetModeChange`,e=>$(`magnetModeChange`,e)),Q.on(`keepDrawingModeChange`,e=>$(`keepDrawingModeChange`,e)),Q.on(`copyDrawingsToAllChange`,e=>$(`copyDrawingsToAllChange`,e)),Q.on(`drawingToolbarVisibility`,e=>$(`drawingToolbarVisibility`,e)),Q.on(`drawingCreated`,e=>$(`drawingCreated`,e)),Q.on(`pricePrecisionChange`,e=>$(`pricePrecisionChange`,e)),Q.on(`barColorSourceChange`,e=>$(`barColorSourceChange`,e)),Q.on(`timezoneChange`,e=>$(`timezoneChange`,e)),Q.on(`statusLineChange`,e=>$(`statusLineChange`,e)),Q.on(`scalesChange`,e=>$(`scalesChange`,e)),Q.on(`canvasOptionsChange`,e=>$(`canvasOptionsChange`,e)),Q.on(`priceScaleModeChange`,e=>$(`priceScaleModeChange`,e)),Q.on(`autoScaleChange`,e=>$(`autoScaleChange`,e)),Q.on(`goToDate`,e=>$(`goToDate`,e)),Q.on(`sidePanelVisibility`,e=>$(`sidePanelVisibility`,e))}function B_(e){if(e.type===`init`){z_(e.payload),N_();return}if(e.type===`getCatalog`){N_();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`addDrawing`:Q.addDrawing(e.payload.drawing);break;case`getState`:$(`stateSnapshot`,Q.getState());break;case`setState`:Q.setState(e.payload);break;case`resolveDataRequest`:{let t=P_.get(e.payload.requestId);t&&(P_.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`requestSnapshot`:{var n;let t=Q.toDataUrl();t?$(`snapshot`,{dataUrl:t,action:(n=e.payload.action)==null?`download`:n}):$(`error`,{message:`Snapshot failed: no canvas to capture.`});break}case`setIndicatorTemplates`:Q.setIndicatorTemplates(e.payload.templates);break;case`captureIndicatorTemplate`:Q.captureIndicatorTemplate(e.payload.name);break;case`applyIndicatorTemplate`:Q.applyIndicatorTemplate(e.payload.id);break;case`deleteIndicatorTemplate`:Q.deleteIndicatorTemplate(e.payload.id);break;case`setSettingsTemplates`:Q.setSettingsTemplates(e.payload.templates);break;case`captureSettingsTemplate`:Q.captureSettingsTemplate(e.payload.name);break;case`applySettingsTemplate`:Q.applySettingsTemplate(e.payload.id);break;case`deleteSettingsTemplate`:Q.deleteSettingsTemplate(e.payload.id);break;case`applyChartSettings`:Q.applyChartSettings(e.payload.settings);break;case`setSavedLayouts`:Q.setSavedLayouts(e.payload.layouts);break;case`captureSavedLayout`:Q.captureSavedLayout(e.payload.name,e.payload.paneId);break;case`applySavedLayout`:Q.applySavedLayout(e.payload.id,e.payload.paneId);break;case`deleteSavedLayout`:Q.deleteSavedLayout(e.payload.id);break;case`setLayoutPreset`:Q.setLayoutPreset(e.payload.presetId);break;case`openQuickSearch`:Q.openQuickSearch();break;case`closeQuickSearch`:Q.closeQuickSearch();break;case`setSeriesOptions`:Q.setSeriesOptions(e.payload.options);break;case`setCursorMode`:Q.setCursorMode(e.payload.mode);break;case`setMagnetMode`:Q.setMagnetMode(e.payload.enabled);break;case`setKeepDrawingMode`:Q.setKeepDrawingMode(e.payload.enabled);break;case`setCopyDrawingsToAllCharts`:Q.setCopyDrawingsToAllCharts(e.payload.enabled);break;case`setDrawingToolbarVisible`:Q.setDrawingToolbarVisible(e.payload.visible);break;case`setStatusLineSettings`:Q.setStatusLineSettings(e.payload.statusLine);break;case`setScalesSettings`:Q.setScalesSettings(e.payload.scales);break;case`setCanvasOptions`:Q.setCanvasOptions(e.payload.canvas);break;case`setBarColorSource`:Q.setBarColorSource(e.payload.source);break;case`setPricePrecision`:Q.setPricePrecision(e.payload.digits);break;case`setPriceScaleMode`:Q.setPriceScaleMode(e.payload.mode);break;case`setAutoScale`:Q.setAutoScale(e.payload.enabled);break;case`goToDate`:Q.goToDate(e.payload.date);break;case`setSidePanelVisible`:Q.setSidePanelVisible(e.payload.visible);break;case`setSidePanelTab`:Q.setSidePanelTab(e.payload.tab);break;case`setDrawingVisible`:Q.setDrawingVisible(e.payload.id,e.payload.visible);break;case`setDrawingLocked`:Q.setDrawingLocked(e.payload.id,e.payload.locked);break;case`deleteDrawing`:Q.deleteDrawing(e.payload.id);break;case`selectDrawing`:Q.selectDrawing(e.payload.id);break;case`resolveCompareDataRequest`:{let t=F_.get(e.payload.requestId);t&&(F_.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{B_(t)}catch(e){$(`error`,{message:String(e)})}}},$(`ready`,{})})})();</script>
|
|
319
319
|
</body>
|
|
320
320
|
</html>
|