(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[3005],{77511:e=>{e.exports={group:"group-T57LDNqT",noLeftDecoration:"noLeftDecoration-T57LDNqT",noRightDecoration:"noRightDecoration-T57LDNqT",noMinimalWidth:"noMinimalWidth-T57LDNqT",newStyles:"newStyles-T57LDNqT",separator:"separator-T57LDNqT",separatorWrap:"separatorWrap-T57LDNqT"}},71747:e=>{e.exports={"css-value-header-toolbar-height":"38px",wrap:"wrap-7mUBPdQo"}},85291:e=>{e.exports={"css-value-header-toolbar-height":"38px",toolbar:"toolbar-ymEQuMuZ",isHidden:"isHidden-ymEQuMuZ",overflowWrap:"overflowWrap-ymEQuMuZ",customButton:"customButton-ymEQuMuZ",hovered:"hovered-ymEQuMuZ"}},36971:e=>{e.exports={wrap:"wrap-zQWNyqoF",icon:"icon-zQWNyqoF"}},93067:e=>{e.exports={"css-value-header-toolbar-height":"38px",inner:"inner-Kbdz4qEM",fake:"fake-Kbdz4qEM",fill:"fill-Kbdz4qEM",collapse:"collapse-Kbdz4qEM",button:"button-Kbdz4qEM",iconButton:"iconButton-Kbdz4qEM",hidden:"hidden-Kbdz4qEM",content:"content-Kbdz4qEM",desktopPublish:"desktopPublish-Kbdz4qEM",mobilePublish:"mobilePublish-Kbdz4qEM"}},41814:e=>{e.exports={wrap:"wrap-sfzcrPlH",wrapWithArrowsOuting:"wrapWithArrowsOuting-sfzcrPlH",wrapOverflow:"wrapOverflow-sfzcrPlH",scrollWrap:"scrollWrap-sfzcrPlH",noScrollBar:"noScrollBar-sfzcrPlH",icon:"icon-sfzcrPlH",scrollLeft:"scrollLeft-sfzcrPlH",scrollRight:"scrollRight-sfzcrPlH",isVisible:"isVisible-sfzcrPlH",iconWrap:"iconWrap-sfzcrPlH",fadeLeft:"fadeLeft-sfzcrPlH",fadeRight:"fadeRight-sfzcrPlH"}},9745:(e,t,r)=>{"use strict";r.d(t,{Icon:()=>i});var n=r(59496);const i=n.forwardRef((e,t)=>{const{icon:r="",...i}=e;return n.createElement("span",{...i,ref:t,dangerouslySetInnerHTML:{__html:r}})})},53374:(e,t,r)=>{"use strict";r.d(t,{INTERVALS:()=>i});var n=r(28353);const i=[{name:"",label:(0,n.t)("minutes",{context:"interval"})},{name:"H",label:(0,n.t)("hours",{context:"interval"})},{name:"D",label:(0,n.t)("days",{context:"interval"})},{name:"W",label:(0,n.t)("weeks",{context:"interval"})},{name:"M",label:(0,n.t)("months",{context:"interval"})}]},53335:(e,t,r)=>{"use strict";r.r(t),r.d(t,{HeaderToolbarRenderer:()=>ge});var n=r(59496),i=r(87995),o=r(88537),s=r(97754),a=r(85459),l=r.n(a),u=r(43370),c=r(67337),d=r(76422),h=r(19036),p=r(9837),f=r(32563),m=r(42142),v=r(37669),y=r(77511);function g(e){const{children:t,className:r,noLeftDecoration:i,noRightDecoration:o,noMinimalWidth:a,onClick:l,removeSeparator:u}=e;return n.createElement(n.Fragment,null,v.hasNewHeaderToolbarStyles&&!u&&n.createElement("div",{className:y.separatorWrap},n.createElement("div",{className:y.separator})),n.createElement("div",{className:s(r,y.group,{[y.noMinimalWidth]:a,[y.noLeftDecoration]:i,[y.noRightDecoration]:o,[y.newStyles]:v.hasNewHeaderToolbarStyles}),onClick:l},t))}var b=r(71747);class S extends n.PureComponent{constructor(){super(...arguments),this._handleMeasure=({width:e})=>{this.props.onWidthChange(e)}}render(){const{children:e,shouldMeasure:t}=this.props;return n.createElement(p,{shouldMeasure:t,onMeasure:this._handleMeasure,whitelist:["width"]},n.createElement("div",{ className:b.wrap},e))}}var w=r(28353),_=r(9745),E=r(36971),C=r(59266);const M={text:(0,w.t)("View Only Mode")};function T(e){return n.createElement("div",{className:E.wrap},n.createElement(_.Icon,{className:E.icon,icon:C}),M.text)}var k,R=r(39440),O=r(54475);!function(e){e.SymbolSearch="header-toolbar-symbol-search",e.Intervals="header-toolbar-intervals",e.ChartStyles="header-toolbar-chart-styles",e.Compare="header-toolbar-compare",e.Indicators="header-toolbar-indicators",e.StudyTemplates="header-toolbar-study-templates",e.Dropdown="header-toolbar-dropdown",e.Alerts="header-toolbar-alerts",e.Layouts="header-toolbar-layouts",e.SaveLoad="header-toolbar-save-load",e.UndoRedo="header-toolbar-undo-redo",e.Properties="header-toolbar-properties",e.PublishDesktop="header-toolbar-publish-desktop",e.PublishMobile="header-toolbar-publish-mobile",e.Fullscreen="header-toolbar-fullscreen",e.Screenshot="header-toolbar-screenshot",e.Replay="header-toolbar-replay",e.Financials="header-toolbar-financials",e.StartTrial="header-toolbar-start-trial"}(k||(k={}));var N=r(70412),I=r(55402),x=r(93067);const P=(0,I.registryContextType)();class V extends n.PureComponent{constructor(e,t){super(e,t),this._handleMouseOver=e=>{(0,N.hoverMouseEventFilter)(e)&&this.setState({isHovered:!0})},this._handleMouseOut=e=>{(0,N.hoverMouseEventFilter)(e)&&this.setState({isHovered:!1})},this._handleInnerResize=e=>{const{onWidthChange:t}=this.props;t&&t(e)},this._handleMeasureAvailableSpace=({width:e})=>{const{onAvailableSpaceChange:t}=this.props;t&&t(e)},this._processCustoms=e=>{const{isFake:t,displayMode:r}=this.props,{tools:i}=this.context;return e.map(e=>n.createElement(g,{key:e.id},(e=>{switch(e.type){case"Button":return n.createElement(i.Custom,{...e.params,isFake:t});case"TradingViewStyledButton":return n.createElement(i.CustomTradingViewStyledButton,{...e.params,className:x.button,displayMode:r});case"Dropdown":return n.createElement(i.Dropdown,{displayMode:r,params:e.params});default:return null}})(e)))},this._fixLastGroup=(e,t,r)=>{if(t===r.length-1&&n.isValidElement(e)&&e.type===g){const t=void 0!==this.context.tools.Publish&&!this.props.readOnly;return n.cloneElement(e,{noRightDecoration:t})}return e},(0,I.validateRegistry)(t,{tools:h.any.isRequired}),this.state={isHovered:!1,isAuthenticated:void 0}}componentDidMount(){0}componentWillUnmount(){0}render(){const{tools:e}=this.context,{features:t,displayMode:r,chartSaver:i,studyMarket:o,readOnly:a,saveLoadSyncEmitter:l,leftCustomElements:u,rightCustomElements:c,showScrollbarWhen:d,isFake:h=!1}=this.props,{isHovered:y,isAuthenticated:b}=this.state,w=this._processCustoms(u),_=this._processCustoms(c),E=d.includes(r);return n.createElement("div",{className:s(x.inner,{[x.fake]:h}),onContextMenu:O.preventDefaultForContextMenu,"data-is-fake-main-panel":h},n.createElement(p,{onMeasure:this._handleMeasureAvailableSpace,whitelist:["width"],shouldMeasure:!h},n.createElement(R.HorizontalScroll,{isVisibleFade:f.mobiletouch&&E,isVisibleButtons:!f.mobiletouch&&E&&y,isVisibleScrollbar:!1,shouldMeasure:E&&!h, onMouseOver:this._handleMouseOver,onMouseOut:this._handleMouseOut},n.createElement("div",{className:x.content},n.createElement(S,{onWidthChange:this._handleInnerResize,shouldMeasure:h},n.createElement(m.FragmentMap,{map:this._fixLastGroup},!a&&n.Children.toArray([e.SymbolSearch&&n.createElement(g,{key:"symbol"},n.createElement(e.SymbolSearch,{id:h?void 0:k.SymbolSearch,isActionsVisible:t.allowSymbolSearchSpread}),v.hasNewHeaderToolbarStyles&&e.Compare&&n.createElement(e.Compare,{id:h?void 0:k.Compare,className:x.button,displayMode:r})),e.DateRange&&n.createElement(g,{key:"range"},n.createElement(e.DateRange,null)),e.Intervals&&n.createElement(g,{key:"intervals"},n.createElement(e.Intervals,{id:h?void 0:k.Intervals,isShownQuicks:t.allowFavoriting,isFavoritingAllowed:t.allowFavoriting,displayMode:r,isFake:h})),e.Bars&&n.createElement(g,{key:"styles"},n.createElement(e.Bars,{id:h?void 0:k.ChartStyles,isShownQuicks:t.allowFavoriting,isFavoritingAllowed:t.allowFavoriting,displayMode:r,isFake:h})),!v.hasNewHeaderToolbarStyles&&e.Compare&&n.createElement(g,{key:"compare"},n.createElement(e.Compare,{id:h?void 0:k.Compare,className:x.button,displayMode:r})),e.Indicators&&n.createElement(g,{key:"indicators"},n.createElement(e.Indicators,{id:h?void 0:k.Indicators,className:x.button,studyMarket:o,displayMode:r}),v.hasNewHeaderToolbarStyles&&e.Templates&&n.createElement(e.Templates,{id:h?void 0:k.StudyTemplates,isShownQuicks:t.allowFavoriting,isFavoritingAllowed:t.allowFavoriting,displayMode:r})),!v.hasNewHeaderToolbarStyles&&e.Templates&&n.createElement(g,{key:"templates"},n.createElement(e.Templates,{id:h?void 0:k.StudyTemplates,isShownQuicks:t.allowFavoriting,isFavoritingAllowed:t.allowFavoriting,displayMode:r})),e.Alert&&n.createElement(g,{key:"alert"},n.createElement(e.Alert,{id:h?void 0:k.Alerts,className:x.button,displayMode:r}),v.hasNewHeaderToolbarStyles&&e.Replay&&n.createElement(e.Replay,{id:h?void 0:k.Replay,className:x.button,displayMode:r})),e.AlertReferral&&n.createElement(g,{key:"alert-referral"},n.createElement(e.AlertReferral,{className:x.button,displayMode:r})),!v.hasNewHeaderToolbarStyles&&e.Replay&&n.createElement(g,{key:"replay"},n.createElement(e.Replay,{id:h?void 0:k.Replay,className:x.button,displayMode:r})),!v.hasNewHeaderToolbarStyles&&e.UndoRedo&&n.createElement(g,{key:"undo-redo"},n.createElement(e.UndoRedo,{id:h?void 0:k.UndoRedo})),e.ScalePercentage&&n.createElement(g,{key:"percentage"},n.createElement(e.ScalePercentage,null)),e.ScaleLogarithm&&n.createElement(g,{key:"logarithm"},n.createElement(e.ScaleLogarithm,null)),...w]),function(e){const t=e.findIndex(e=>n.isValidElement(e)&&!!e.key&&-1!==e.key.toString().indexOf("view-only-badge"));return[t].filter(e=>e>=0).forEach(t=>{e=n.Children.map(e,(e,r)=>{if(n.isValidElement(e)){switch([t-1,t,t+1].indexOf(r)){case 0:const t={noRightDecoration:!0};e=n.cloneElement(e,t);break;case 1:const r={noLeftDecoration:!0,noRightDecoration:!0};e=n.cloneElement(e,r);break;case 2:const i={noLeftDecoration:!0};e=n.cloneElement(e,i)}}return e})}),e }(n.Children.toArray([a&&n.createElement(g,{key:"view-only-badge",removeSeparator:v.hasNewHeaderToolbarStyles},n.createElement(T,null)),n.createElement(g,{key:"gap",className:s(x.fill,h&&x.collapse),removeSeparator:v.hasNewHeaderToolbarStyles}),v.hasNewHeaderToolbarStyles&&!a&&e.UndoRedo&&n.createElement(g,{key:"undo-redo",removeSeparator:!0},n.createElement(e.UndoRedo,{id:h?void 0:k.UndoRedo})),(!a||v.hasNewHeaderToolbarStyles)&&e.Layout&&n.createElement(g,{key:"layout",removeSeparator:v.hasNewHeaderToolbarStyles&&a},!a&&n.createElement(e.Layout,{id:h?void 0:k.Layouts}),v.hasNewHeaderToolbarStyles&&e.SaveLoad&&n.createElement(e.SaveLoad,{id:h?void 0:k.SaveLoad,chartSaver:i,isReadOnly:a,displayMode:r,isFake:h,stateSyncEmitter:l})),!v.hasNewHeaderToolbarStyles&&e.SaveLoad&&n.createElement(g,{key:"save-load-right"},n.createElement(e.SaveLoad,{id:h?void 0:k.SaveLoad,chartSaver:i,isReadOnly:a,displayMode:r,isFake:h,stateSyncEmitter:l})),e.SaveLoadReferral&&n.createElement(g,{key:"save-load-referral"},n.createElement(e.SaveLoadReferral,{isReadOnly:a,displayMode:r})),t.showLaunchInPopupButton&&e.OpenPopup&&n.createElement(g,{key:"popup"},n.createElement(e.OpenPopup,null)),(!a||v.hasNewHeaderToolbarStyles)&&e.Properties&&n.createElement(g,{key:"properties",removeSeparator:v.hasNewHeaderToolbarStyles&&a},!a&&n.createElement(e.Properties,{id:h?void 0:k.Properties,className:x.iconButton}),v.hasNewHeaderToolbarStyles&&n.createElement(n.Fragment,null,!a&&e.Fullscreen&&n.createElement(e.Fullscreen,{id:h?void 0:k.Fullscreen}),e.Screenshot&&n.createElement(e.Screenshot,{id:h?void 0:k.Screenshot,className:x.iconButton}))),!v.hasNewHeaderToolbarStyles&&!a&&e.Fullscreen&&n.createElement(g,{key:"fullscreen",onClick:this._trackFullscreenButtonClick},n.createElement(e.Fullscreen,{id:h?void 0:k.Fullscreen})),!v.hasNewHeaderToolbarStyles&&e.Screenshot&&n.createElement(g,{key:"screenshot"},n.createElement(e.Screenshot,{id:h?void 0:k.Screenshot,className:x.iconButton})),!a&&e.Publish&&n.createElement(g,{key:"publish",className:x.mobilePublish,removeSeparator:v.hasNewHeaderToolbarStyles},n.createElement(e.Publish,{id:h?void 0:k.PublishMobile})),..._]))))))),e.Publish&&!a&&!h&&n.createElement(e.Publish,{id:k.PublishDesktop,className:x.desktopPublish}))}_onLoginStateChange(){0}_trackFullscreenButtonClick(){0}}V.contextType=P;var W=r(52714),D=r.n(W),F=r(9127);class L extends F.CommonJsonStoreService{constructor(e,t,r=[]){super(e,t,"FAVORITE_CHART_STYLES_CHANGED","StyleWidget.quicks",r)}}var A=r(9315),H=r(96397);class B extends F.AbstractJsonStoreService{constructor(e,t,r){super(e,t,"FAVORITE_INTERVALS_CHANGED","IntervalWidget.quicks",r)}_serialize(e){return(0,H.uniq)(e.map(A.normalizeIntervalString))}_deserialize(e){return(0,H.uniq)((0,A.convertResolutionsFromSettings)(e).filter(A.isResolutionMultiplierValid).map(A.normalizeIntervalString))}}var z=r(82992),j=r(2872),q=r.n(j),U=r(56840),K=r(21097);class Q extends F.AbstractJsonStoreService{constructor(e,t,r=[]){super(e,t,"CUSTOM_INTERVALS_CHANGED","IntervalWidget.intervals",r)}set(e,t){e.length, this.get().length,super.set(e,t)}_serialize(e){return(0,H.uniq)(e.map(A.normalizeIntervalString))}_deserialize(e){return(0,H.uniq)((0,A.convertResolutionsFromSettings)(e).filter(A.isResolutionMultiplierValid).map(A.normalizeIntervalString))}}const J=new Q(K.TVXWindowEvents,U);var X=r(53374);class G{constructor(e){this._customIntervalsService=J,this._supportedIntervalsMayChange=new(q()),this._fireSupportedIntervalsMayChange=()=>{this._supportedIntervalsMayChange.fire()},this._chartApiInstance=e,z.linking.supportedResolutions.subscribe(this._fireSupportedIntervalsMayChange),z.linking.range.subscribe(this._fireSupportedIntervalsMayChange),z.linking.seconds.subscribe(this._fireSupportedIntervalsMayChange),z.linking.ticks.subscribe(this._fireSupportedIntervalsMayChange),z.linking.intraday.subscribe(this._fireSupportedIntervalsMayChange)}destroy(){z.linking.supportedResolutions.unsubscribe(this._fireSupportedIntervalsMayChange),z.linking.range.unsubscribe(this._fireSupportedIntervalsMayChange),z.linking.seconds.unsubscribe(this._fireSupportedIntervalsMayChange),z.linking.ticks.unsubscribe(this._fireSupportedIntervalsMayChange),z.linking.intraday.unsubscribe(this._fireSupportedIntervalsMayChange)}getDefaultIntervals(){return null===this._chartApiInstance?[]:this._chartApiInstance.defaultResolutions().map(A.normalizeIntervalString)}getCustomIntervals(){return this._customIntervalsService.get()}add(e,t,r){if(!this.isValidInterval(e,t))return null;const n=(0,A.normalizeIntervalString)(`${e}${t}`),i=this.getCustomIntervals();return this._isIntervalDefault(n)||i.includes(n)?null:(this._customIntervalsService.set((0,A.sortResolutions)([...i,n])),n)}remove(e){this._customIntervalsService.set(this.getCustomIntervals().filter(t=>t!==e))}isValidInterval(e,t){return(0,A.isResolutionMultiplierValid)(`${e}${t}`)}isSupportedInterval(e){return(0,A.isAvailable)(e)}supportedIntervalsMayChange(){return this._supportedIntervalsMayChange}getOnChange(){return this._customIntervalsService.getOnChange()}getPossibleIntervals(){return X.INTERVALS}getResolutionUtils(){return{getMaxResolutionValue:A.getMaxResolutionValue,getTranslatedResolutionModel:A.getTranslatedResolutionModel,mergeResolutions:A.mergeResolutions,sortResolutions:A.sortResolutions}}_isIntervalDefault(e){return this.getDefaultIntervals().includes(e)}}var $=r(18387),Y=r(88145),Z=r(14905);const ee={};let te=null;class re{constructor(e=U){this._favorites=[],this._favoritesChanged=new(q()),this._settings=e,K.TVXWindowEvents.on("StudyFavoritesChanged",e=>{const t=JSON.parse(e);this._loadFromState(t.favorites||[])}),this._settings.onSync.subscribe(this,this._loadFavs),this._loadFavs()}isFav(e){const t=this.favId(e);return-1!==this._findFavIndex(t)}toggleFavorite(e){this.isFav(e)?this.removeFavorite(e):this.addFavorite(e)}addFavorite(e){const t=this.favId(e);this._favorites.push(ie(t)),this._favoritesChanged.fire(),this._saveFavs()}removeFavorite(e){const t=this.favId(e),r=this._findFavIndex(t);-1!==r&&(this._favorites.splice(r,1),this._favoritesChanged.fire()),this._saveFavs()}favId(e){ return(0,Z.isPineIdString)(e)?e:(0,Z.extractPineId)(e)||(0,Y.extractStudyId)(e)}favorites(){return this._favorites}favoritePineIds(){return this._favorites.filter(e=>"pine"===e.type).map(e=>e.pineId)}favoritesChanged(){return this._favoritesChanged}static getInstance(){return null===te&&(te=new re),te}static create(e){return new re(e)}_loadFavs(){const e=this._settings.getJSON("studyMarket.favorites",[]);this._loadFromState(e)}_saveFavs(){const e=this._stateToSave();this._settings.setJSON("studyMarket.favorites",e,{forceFlush:!0}),K.TVXWindowEvents.emit("StudyFavoritesChanged",JSON.stringify({favorites:e}))}_stateToSave(){return this._favorites.map(ne)}_loadFromState(e){this._favorites=e.map(e=>ie(function(e){return e in ee?ee[e]:e}(e))),this._favoritesChanged.fire()}_findFavIndex(e){return this._favorites.findIndex(t=>e===ne(t))}}function ne(e){return"java"===e.type?e.studyId:e.pineId}function ie(e){return(0,Z.isPineIdString)(e)?{type:"pine",pineId:e}:{type:"java",studyId:e}}var oe=r(29823);const se={[oe.ResolutionKind.Ticks]:!1,[oe.ResolutionKind.Seconds]:!1,[oe.ResolutionKind.Minutes]:!1,[oe.SpecialResolutionKind.Hours]:!1,[oe.ResolutionKind.Days]:!1,[oe.ResolutionKind.Range]:!1};class ae extends F.CommonJsonStoreService{constructor(e,t,r=se){super(e,t,"INTERVALS_MENU_VIEW_STATE_CHANGED","IntervalWidget.menu.viewState",r)}isAllowed(e){return Object.keys(se).includes(e)}}var le=r(22668);const ue={Area:3,Bars:0,Candles:1,"Heiken Ashi":8,"Hollow Candles":9,Line:2,Renko:4,Kagi:5,"Point & figure":6,"Line Break":7,Baseline:10},ce=["1","30","60"];function de(e=[]){let t=e.map(e=>ue[e])||[1,4,5,6];return c.enabled("widget")&&(t=[0,1,3]),t}function he(e=[]){return(0,A.mergeResolutions)(e,c.enabled("star_some_intervals_by_default")?ce:[])}new B(K.TVXWindowEvents,U,he()),new L(K.TVXWindowEvents,U,de()),new le.FavoriteStudyTemplateService(K.TVXWindowEvents,U);const pe={tools:h.any.isRequired,isFundamental:h.any,chartApiInstance:h.any,availableTimeFrames:h.any,chartWidgetCollection:h.any,windowMessageService:h.any,favoriteChartStylesService:h.any,favoriteIntervalsService:h.any,intervalService:h.any,favoriteStudyTemplatesService:h.any,studyTemplates:h.any,chartChangesWatcher:h.any,saveChartService:h.any,sharingChartService:h.any,loadChartService:h.any,chartWidget:h.any,favoriteScriptsModel:h.any,intervalsMenuViewStateService:h.any,templatesMenuViewStateService:h.any,financialsDialogController:h.any,snapshotUrl:h.any};var fe=r(62046),me=r(85291);const ve=[];class ye extends n.PureComponent{constructor(e){super(e),this._saveLoadSyncEmitter=new(l()),this._handleFullWidthChange=e=>{this._fullWidth=e,this.setState({measureValid:!1})},this._handleFavoritesWidthChange=e=>{this._favoritesWidth=e,this.setState({measureValid:!1})},this._handleCollapseWidthChange=e=>{this._collapseWidth=e,this.setState({measureValid:!1})},this._handleMeasure=e=>{this.setState({availableWidth:e,measureValid:!1})} ;const{tools:t,windowMessageService:r,chartWidgetCollection:n,chartApiInstance:i,availableTimeFrames:s,isFundamental:a,favoriteIntervalsService:d,favoriteChartStylesService:h,favoriteStudyTemplatesService:p,studyTemplates:f,saveChartService:m,sharingChartService:v,loadChartService:y,financialsDialogController:g,snapshotUrl:b}=e;this._showScrollbarWhen=(0,o.ensureDefined)(e.allowedModes).slice(-1),this._panelWidthChangeHandlers={full:this._handleFullWidthChange,medium:this._handleFavoritesWidthChange,small:this._handleCollapseWidthChange};const{chartChangesWatcher:S}=e;this._chartChangesWatcher=S;const w=de(this.props.defaultFavoriteStyles);this._favoriteChartStylesService=h||new L(K.TVXWindowEvents,U,w);const _=he(this.props.defaultFavoriteIntervals);this._favoriteIntervalsService=d||new B(K.TVXWindowEvents,U,_),this._intervalsMenuViewStateService=new ae(K.TVXWindowEvents,U),this._intervalService=new G(i),this._registry={tools:t,isFundamental:a,chartWidgetCollection:n,windowMessageService:r,chartApiInstance:i,availableTimeFrames:s,favoriteStudyTemplatesService:p,studyTemplates:f,saveChartService:m,sharingChartService:v,loadChartService:y,intervalsMenuViewStateService:this._intervalsMenuViewStateService,favoriteChartStylesService:this._favoriteChartStylesService,favoriteIntervalsService:this._favoriteIntervalsService,intervalService:this._intervalService,chartChangesWatcher:this._chartChangesWatcher,chartWidget:n.activeChartWidget.value(),favoriteScriptsModel:re.getInstance(),templatesMenuViewStateService:this._templatesMenuVuewStateService,financialsDialogController:g,snapshotUrl:b},this.state={isVisible:!0,availableWidth:0,displayMode:"full",measureValid:!1,leftCustomElements:[],rightCustomElements:[]},this._readOnly=n.readOnly(),this._features={allowFavoriting:c.enabled("items_favoriting"),showIdeasButton:Boolean(this.props.ideas),showLaunchInPopupButton:Boolean(this.props.popupButton),allowSymbolSearchSpread:c.enabled("header_symbol_search")&&c.enabled("show_spread_operators"),allowToolbarHiding:c.enabled("collapsible_header")},this._setDisplayMode=(0,u.default)(this._setDisplayMode,100),this._negotiateResizer()}componentDidUpdate(e,t){const{isVisible:r,measureValid:n}=this.state;r!==t.isVisible&&(d.emit("toggle_header",r),this._negotiateResizer()),n||this._setDisplayMode()}render(){const{resizerBridge:e,allowedModes:t,...r}=this.props,{displayMode:i,isVisible:a,leftCustomElements:l,rightCustomElements:u}=this.state,c={features:this._features,readOnly:this._readOnly,isFake:!1,saveLoadSyncEmitter:this._saveLoadSyncEmitter,leftCustomElements:l,rightCustomElements:u,...r},d={...c,isFake:!0,showScrollbarWhen:ve},h=(0,o.ensureDefined)(t),p=this.props.tools.PublishButtonManager||n.Fragment;return n.createElement(I.RegistryProvider,{value:this._registry,validation:pe},n.createElement(p,null,n.createElement("div",{className:s(me.toolbar,{[me.isHidden]:!a}),onClick:this.props.onClick},n.createElement("div",{className:me.overflowWrap},n.createElement(V,{key:"live",showScrollbarWhen:this._showScrollbarWhen,displayMode:i, onAvailableSpaceChange:this._handleMeasure,...c}),h.map(e=>n.createElement(V,{key:e,displayMode:e,onWidthChange:this._panelWidthChangeHandlers[e],...d}))))))}addButton(e,t){if(!t.useTradingViewStyle)return this._addCustomHTMLButton(e,t.align);this._addCustomTradingViewStyledButton(e,t)}addDropdown(e,t){const{leftCustomElements:r,rightCustomElements:n}=this.state,i={type:"Dropdown",id:e,params:t};"left"===t.align?this.setState({leftCustomElements:[...r,i]}):this.setState({rightCustomElements:[...n,i]})}updateDropdown(e,t){const r=t=>"Dropdown"===t.type&&t.id===e,n=this.state.leftCustomElements.find(r)||this.state.rightCustomElements.find(r);void 0!==n&&(n.params={...n.params,...t},this.setState({leftCustomElements:this.state.leftCustomElements.slice(),rightCustomElements:this.state.rightCustomElements.slice()}))}removeDropdown(e){const t=t=>"Dropdown"===t.type&&t.id!==e,r=this.state.leftCustomElements.filter(t),n=this.state.rightCustomElements.filter(t);this.setState({leftCustomElements:r,rightCustomElements:n})}_negotiateResizer(){this.props.resizerBridge.negotiateHeight(this.state.isVisible?$.HEADER_TOOLBAR_HEIGHT_EXPANDED:$.HEADER_TOOLBAR_HEIGHT_COLLAPSED)}_setDisplayMode(){const{availableWidth:e}=this.state,{allowedModes:t}=this.props,r={full:this._fullWidth,medium:this._favoritesWidth,small:this._collapseWidth},n=(0,o.ensureDefined)(t);let i=n.map(e=>r[e]).findIndex(t=>e>=t);-1===i&&(i=n.length-1);const s=n[i];this.setState({measureValid:!0,displayMode:s})}_addCustomHTMLButton(e,t="left"){const r=new(D())(0),n=(0,fe.parseHtmlElement)(`
`),i={type:"Button",id:e,params:{key:Number(new Date),element:n,width:r}};return this._addCustomElementToState(t,i),n}_addCustomTradingViewStyledButton(e,t){const r={type:"TradingViewStyledButton",id:e,params:{key:Number(new Date),text:t.text,title:t.title,onClick:t.onClick}};this._addCustomElementToState(t.align,r)}_addCustomElementToState(e,t){const{leftCustomElements:r,rightCustomElements:n}=this.state;"left"===e?this.setState({leftCustomElements:[...r,t]}):this.setState({rightCustomElements:[...n,t]})}}ye.defaultProps={allowedModes:["full","medium"]};class ge{constructor(e,t){this._component=null,this._handleRef=e=>{this._component=e},this._container=e,i.render(n.createElement(ye,{...t,ref:this._handleRef}),this._container)}destroy(){i.unmountComponentAtNode(this._container)}getComponent(){return(0,o.ensureNotNull)(this._component)}}},37669:(e,t,r)=>{"use strict";r.d(t,{hasNewHeaderToolbarStyles:()=>n});r(67337);const n=!1},55402:(e,t,r)=>{"use strict";r.d(t,{validateRegistry:()=>a,RegistryProvider:()=>l,registryContextType:()=>u});var n=r(59496),i=r(19036),o=r.n(i);const s=n.createContext({});function a(e,t){o().checkPropTypes(t,e,"context","RegistryContext")}function l(e){const{validation:t,value:r}=e;return a(r,t),n.createElement(s.Provider,{value:r},e.children)}function u(){return s}},9837:function(e,t,r){var n,i,o;e.exports=(n=r(59496),i=r(87995),o=r(59255),function(e){function t(n){if(r[n])return r[n].exports ;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var r={};return t.m=e,t.c=r,t.p="dist/",t(0)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=function(e){return e&&e.__esModule?e:{default:e}}(r(1));t.default=n.default,e.exports=t.default},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:r.props.includeMargin;if(r.props.shouldMeasure){r._node.parentNode||r._setDOMNode();var t=r.getDimensions(r._node,e),n="function"==typeof r.props.children;r._propsToMeasure.some((function(e){if(t[e]!==r._lastDimensions[e])return r.props.onMeasure(t),n&&void 0!==r&&r.setState({dimensions:t}),r._lastDimensions=t,!0}))}},r.state={dimensions:{width:0,height:0,top:0,right:0,bottom:0,left:0}},r._node=null,r._propsToMeasure=r._getPropsToMeasure(e),r._lastDimensions={},r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;this._setDOMNode(),this.measure(),this.resizeObserver=new u.default((function(){return e.measure()})),this.resizeObserver.observe(this._node)}},{key:"componentWillReceiveProps",value:function(e){var t=(e.config,e.whitelist),r=e.blacklist;this.props.whitelist===t&&this.props.blacklist===r||(this._propsToMeasure=this._getPropsToMeasure({whitelist:t,blacklist:r}))}},{key:"componentWillUnmount",value:function(){this.resizeObserver.disconnect(this._node),this._node=null}},{key:"_setDOMNode",value:function(){this._node=l.default.findDOMNode(this)}},{key:"getDimensions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._node,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.props.includeMargin;return(0,c.default)(e,{margin:t})}},{key:"_getPropsToMeasure",value:function(e){var t=e.whitelist,r=e.blacklist;return t.filter((function(e){return r.indexOf(e)<0}))}},{key:"render",value:function(){var e=this.props.children ;return o.Children.only("function"==typeof e?e(this.state.dimensions):e)}}]),t}(o.Component);d.propTypes={whitelist:a.default.array,blacklist:a.default.array,includeMargin:a.default.bool,useClone:a.default.bool,cloneOptions:a.default.object,shouldMeasure:a.default.bool,onMeasure:a.default.func},d.defaultProps={whitelist:["width","height","top","right","bottom","left"],blacklist:[],includeMargin:!0,useClone:!1,cloneOptions:{},shouldMeasure:!0,onMeasure:function(){return null}},t.default=d,e.exports=t.default},function(e,t){e.exports=n},function(e,t,r){(function(t){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};if("production"!==t.env.NODE_ENV){var i="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;e.exports=r(5)((function(e){return"object"===(void 0===e?"undefined":n(e))&&null!==e&&e.$$typeof===i}),!0)}else e.exports=r(12)()}).call(t,r(4))},function(e,t){"use strict";function r(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function i(e){if(u===setTimeout)return setTimeout(e,0);if((u===r||!u)&&setTimeout)return u=setTimeout,setTimeout(e,0);try{return u(e,0)}catch(t){try{return u.call(null,e,0)}catch(t){return u.call(this,e,0)}}}function o(){f&&h&&(f=!1,h.length?p=h.concat(p):m=-1,p.length&&s())}function s(){if(!f){var e=i(o);f=!0;for(var t=p.length;t;){for(h=p,p=[];++m1)for(var r=1;r1?t-1:0),n=1;n2?r-2:0),o=2;o1&&void 0!==arguments[1]?arguments[1]:{},r=e.getBoundingClientRect(),i=void 0,o=void 0,s=void 0;return t.margin&&(s=(0,n.default)(getComputedStyle(e))),t.margin?(i=s.left+r.width+s.right,o=s.top+r.height+s.bottom):(i=r.width,o=r.height),{width:i,height:o,top:r.top,right:r.right,bottom:r.bottom,left:r.left}};var n=function(e){return e&&e.__esModule?e:{default:e}}(r(16));e.exports=t.default},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return{top:r((e=e||{}).marginTop),right:r(e.marginRight),bottom:r(e.marginBottom),left:r(e.marginLeft)}};var r=function(e){return parseInt(e)||0};e.exports=t.default}]))},42142:(e,t,r)=>{"use strict";r.d(t,{FragmentMap:()=>i});var n=r(59496);function i(e){if(e.map){return n.Children.toArray(e.children).map(e.map)}return e.children}},70412:(e,t,r)=>{"use strict";r.d(t,{hoverMouseEventFilter:()=>o,useAccurateHover:()=>s,useHover:()=>i});var n=r(59496);function i(){const[e,t]=(0,n.useState)(!1);return[e,{onMouseOver:function(e){o(e)&&t(!0)},onMouseOut:function(e){o(e)&&t(!1)}}]}function o(e){return!e.currentTarget.contains(e.relatedTarget)}function s(e){const[t,r]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{const t=t=>{if(null===e.current)return;const n=e.current.contains(t.target);r(n)};return document.addEventListener("mouseover",t),()=>document.removeEventListener("mouseover",t)},[]),t}},39440:(e,t,r)=>{"use strict";r.d(t,{HorizontalScroll:()=>b});var n=r(59496),i=r(97754),o=r(9837),s=r(88537),a=r(9745),l=r(59199),u=r(68587),c=r(62820),d=r(33086),h=r(41814);const p={isVisibleScrollbar:!0,shouldMeasure:!0,hideButtonsFrom:1};function f(e){return n.createElement("div",{className:i(h.fadeLeft,e.className,{[h.isVisible]:e.isVisible})})}function m(e){return n.createElement("div",{className:i(h.fadeRight,e.className,{[h.isVisible]:e.isVisible})})} function v(e){return n.createElement(g,{...e,className:h.scrollLeft})}function y(e){return n.createElement(g,{...e,className:h.scrollRight})}function g(e){return n.createElement("div",{className:i(e.className,{[h.isVisible]:e.isVisible}),onClick:e.onClick},n.createElement("div",{className:h.iconWrap},n.createElement(a.Icon,{icon:d,className:h.icon})))}const b=function(e=v,t=y,r=f,a=m){var d;return(d=class extends n.PureComponent{constructor(e){super(e),this._scroll=n.createRef(),this._wrapMeasureRef=n.createRef(),this._contentMeasureRef=n.createRef(),this._handleScrollLeft=()=>{if(this.props.onScrollButtonClick)return void this.props.onScrollButtonClick("left");const e=this.props.scrollStepSize||this.state.widthWrap-50;this.animateTo(Math.max(0,this.currentPosition()-e))},this._handleScrollRight=()=>{if(this.props.onScrollButtonClick)return void this.props.onScrollButtonClick("right");const e=this.props.scrollStepSize||this.state.widthWrap-50;this.animateTo(Math.min((this.state.widthContent||0)-(this.state.widthWrap||0),this.currentPosition()+e))},this._handleResizeWrap=e=>{this.props.onMeasureWrap&&this.props.onMeasureWrap(e),this.setState({widthWrap:e.width}),this._checkButtonsVisibility()},this._handleResizeContent=e=>{this.props.onMeasureContent&&this.props.onMeasureContent(e);const{shouldDecreaseWidthContent:t,buttonsWidthIfDecreasedWidthContent:r}=this.props;t&&r?this.setState({widthContent:e.width+2*r}):this.setState({widthContent:e.width})},this._handleScroll=()=>{const{onScroll:e}=this.props;e&&e(this.currentPosition(),this.isAtLeft(),this.isAtRight()),this._checkButtonsVisibility()},this._checkButtonsVisibility=()=>{const{isVisibleLeftButton:e,isVisibleRightButton:t}=this.state,r=this.isAtLeft(),n=this.isAtRight();r||e?r&&e&&this.setState({isVisibleLeftButton:!1}):this.setState({isVisibleLeftButton:!0}),n||t?n&&t&&this.setState({isVisibleRightButton:!1}):this.setState({isVisibleRightButton:!0})},this.state={widthContent:0,widthWrap:0,isVisibleRightButton:!1,isVisibleLeftButton:!1}}componentDidMount(){this._checkButtonsVisibility()}componentDidUpdate(e,t){t.widthWrap===this.state.widthWrap&&t.widthContent===this.state.widthContent||this._handleScroll(),this.props.shouldMeasure&&this._wrapMeasureRef.current&&this._contentMeasureRef.current&&(this._wrapMeasureRef.current.measure(),this._contentMeasureRef.current.measure())}currentPosition(){return this._scroll.current?(0,c.isRtl)()?(0,c.getLTRScrollLeft)(this._scroll.current):this._scroll.current.scrollLeft:0}isAtLeft(){return!this._isOverflowed()||this.currentPosition()<=(0,s.ensureDefined)(this.props.hideButtonsFrom)}isAtRight(){return!this._isOverflowed()||this.currentPosition()+this.state.widthWrap>=this.state.widthContent-(0,s.ensureDefined)(this.props.hideButtonsFrom)}animateTo(e,t=u.dur){const r=this._scroll.current;r&&((0,c.isRtl)()&&(e=(0,c.getLTRScrollLeftOffset)(r,e)),t<=0?r.scrollLeft=Math.round(e):(0,l.doAnimate)({onStep(e,t){r.scrollLeft=Math.round(t)},from:r.scrollLeft,to:Math.round(e),easing:u.easingFunc.easeInOutCubic,duration:t}))}render(){ const{children:s,isVisibleScrollbar:l,isVisibleFade:u,isVisibleButtons:c,shouldMeasure:d,shouldDecreaseWidthContent:p,buttonsWidthIfDecreasedWidthContent:f,onMouseOver:m,onMouseOut:v,scrollWrapClassName:y,fadeClassName:g}=this.props,{isVisibleRightButton:b,isVisibleLeftButton:S}=this.state,w=p&&f;return n.createElement(o,{whitelist:["width"],onMeasure:this._handleResizeWrap,shouldMeasure:d,ref:this._wrapMeasureRef},n.createElement("div",{className:h.wrapOverflow,onMouseOver:m,onMouseOut:v},n.createElement("div",{className:i(h.wrap,w?h.wrapWithArrowsOuting:"")},n.createElement("div",{className:i(h.scrollWrap,y,{[h.noScrollBar]:!l}),onScroll:this._handleScroll,ref:this._scroll},n.createElement(o,{onMeasure:this._handleResizeContent,whitelist:["width"],shouldMeasure:d,ref:this._contentMeasureRef},s)),u&&n.createElement(r,{isVisible:S,className:g}),u&&n.createElement(a,{isVisible:b,className:g}),c&&n.createElement(e,{onClick:this._handleScrollLeft,isVisible:S}),c&&n.createElement(t,{onClick:this._handleScrollRight,isVisible:b}))))}_isOverflowed(){const{widthContent:e,widthWrap:t}=this.state;return e>t}}).defaultProps=p,d}(v,y,f,m)},33086:e=>{e.exports=''},59266:e=>{e.exports=''}}]);