4 lines
10 KiB
JavaScript
4 lines
10 KiB
JavaScript
"use strict";(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[9201,9725,4002],{89725:(t,s,e)=>{e.r(s),e.d(s,{createDialog:()=>h});var i=e(976),o=e(77544);function h(t){const s=t.type||"popup";return delete t.type,"modal"===s?new i.TVModal(t):new o.TVPopup(t)}},976:(t,s,e)=>{e.d(s,{TVModal:()=>v});var i=e(28353),o=e(68587),h=e(49483),n=e(43989),r=e(51536),a=e(4185),l=e(85739),d=e(25760),c=e(23127),p=e(25977);let g=[];const u={ajax:{},closingDuration:o.dur/2,fixBodyState:!0,overlayTemplate:'<div class="tv-dialog__overlay"></div>',containerTemplate:'<div class="tv-dialog__modal-wrap"><div class="tv-dialog__modal-container"><div class="tv-dialog__modal-body"></div></div></div>',ajaxErrorTemplate:`<div class="tv-dialog__error js-dialog__close">${(0,i.t)("Error")}</div>`};class v extends r.TVDialogAbstract{constructor(t={}){if(super({...u,...t}),this.$overlay=c(this.options.overlayTemplate),this.$modalWrap=c(this.options.containerTemplate),this.$body=this.$modalWrap.find(".tv-dialog__modal-body").append(this.$el),this.options.closeOnOutsideClick&&this.$overlay.add(this.$modalWrap).click(t=>{this.isEventOut(t)&&this.close()}),this.on("change:zIndex",()=>{this.$overlay.css("z-index",this.zIndex),this.$modalWrap.css("z-index",this.zIndex)}),this.on("destroy",()=>{const t=()=>{this.$overlay.remove(),this.$modalWrap.remove()};this.opened?(this.close(),setTimeout(t,this.options.closingDuration)):t()}),this.on("beforeOpen",()=>{g.push(this)}),this.options.ajax.url){const t=this.options.ajax.beforeSend||c.noop,s=this.options.ajax.success||!1,e=this.options.ajax.error||c.noop;c.extend(this.options.ajax,{beforeSend:()=>{this.trigger("beforeLoading",[this]),this.startSpinner(),t(this)},success:t=>{this.trigger("afterLoading",[this]),this.renderContent(s?s(this,t):t).showContent(),this.trigger("afterLoadingShow",[this])},error:()=>{this.renderContent(this.options.ajaxErrorTemplate),e(this),this.trigger("errorLoading",[this])}})}this.on("error",(t,s)=>{this.$modalWrap[0].getBoundingClientRect().height<this.$content[0].getBoundingClientRect().height&&s.addClass("i-fixed").css({width:this.$el.width()})}),this._keyboardBinderLockId=null}open(){if(this.opened)return;this.opened=!0,this._keyboardBinderLockId=l.disable(),this.options.fixBodyState&&(0,n.setFixedBodyState)(!0),this._hotkeys||(this._hotkeys=d.createGroup({desc:"Modal Dialog",isDisabled:()=>!this.opened,modal:!0}),this.options.closeOnEsc&&this._hotkeys.add({desc:"close",hotkey:27,handler:()=>this.close()}));const t=()=>{this.focus(),this.toTop(),this.trigger("beforeOpen",[this]),c(this.$wrap).append(this.$overlay.addClass("i-hidden i-closed").css("z-index",this.zIndex)).append(this.$modalWrap.addClass("i-hidden i-closed").css("z-index",this.zIndex)),this.$overlay.removeClass("i-hidden"),setTimeout(()=>{this.$overlay.removeClass("i-closed")},20),this.options.ajax.url?this.ajaxRequest=c.ajax(this.options.ajax):this.showContent()};return h.isSafari?setTimeout(()=>t(),50):t(),this}close(){if(this.opened)return this.opened=!1,
|
|
this._keyboardBinderLockId&&l.enable(this._keyboardBinderLockId),this._hotkeys&&(this._hotkeys.destroy(),this._hotkeys=null),this.trigger("beforeClose",[this]),this.ajaxRequest&&(this.ajaxRequest.abort(),delete this.ajaxRequest),this.hideContent(),this.$overlay.addClass("i-closed"),setTimeout(()=>{this.$modalWrap.addClass("i-hidden").detach(),this.$overlay.addClass("i-hidden").detach(),g=p.without(g,this),this.options.fixBodyState&&(0,n.setFixedBodyState)(!1),this.trigger("afterClose",[this]),this.unfocus(),g.length>0&&g[g.length-1].focus(),this.options.destroyOnClose&&this.destroy()},this.options.closingDuration),this}showContent(){return this.$modalWrap.removeClass("i-hidden"),setTimeout(()=>{this.$modalWrap.removeClass("i-closed")},20),setTimeout(()=>{this.trigger("afterOpen",[this]),this.spinner&&this.stopSpinner()},.75*o.dur+20),this}hideContent(){if(this.$el)return this.$modalWrap.addClass("i-closed"),this.unfocus(),this}startSpinner(){return this.spinner=new a.Spinner("large"),this.spinner.spin(this.$overlay[0]),this}stopSpinner(){if(this.spinner)return this.spinner.stop(),delete this.spinner,this}}},77544:(t,s,e)=>{e.d(s,{TVPopup:()=>g});var i=e(68587),o=e(52150),h=e(51536),n=e(30812),r=e(35190),a=e(25760),l=e(23127);const d=l("body"),c=l(window),p={closeOnClickAtOtherDialogs:!0,draggable:!0,scrollWrap:'<div class="tv-dialog__scroll-wrap">',scrollWrapInner:'<div class="tv-dialog__scroll-wrap-inner">',withScroll:!0};class g extends h.TVDialogAbstract{constructor(t={}){super({...p,...t}),this.$scrollWrap=this.$content.hasClass("js-dialog__scroll-wrap")?this.$content:this.$content.find(".js-dialog__scroll-wrap"),this.$scrollWrap.length?this.$scrollWrapInner=this.$scrollWrap.children().first():(this.$scrollWrap=this.$content.wrap(l(this.options.scrollWrap)).parent(),this.$scrollWrapInner=this.$content.wrap(l(this.options.scrollWrapInner)).parent()),this.$actions&&this.$scrollWrap.addClass("i-with-actions"),this.options.withScroll&&(this.scroll=new n.SidebarCustomScroll(this.$scrollWrap[0],this.$scrollWrapInner[0]),this.scroll.scrolled.subscribe(null,()=>this.trigger("scroll"))),this.$scrollWrap.css("overflow","");const s=this.getDialogId();this.$el.addClass("tv-dialog--popup i-closed i-hidden"),this.options.width&&this.$el.css({width:"calc(100% - 20px)","max-width":this.options.width}),this._hotkeys=a.createGroup({desc:"Dialog",isDisabled:()=>!this.opened,modal:!1}),this.options.closeOnEsc&&this._hotkeys.add({desc:"Close",hotkey:27,handler:()=>this.close()}),this.$el.on("mousedown touchstart",this.toTop.bind(this)),this.options.closeOnOutsideClick&&(this._preventClick=!0,this.on("beforeOpen",()=>{setTimeout(()=>{this.opened&&(l(document).on("mousedown touchstart",()=>{this._preventClick=!1}),l(document).on("click.tv-popup-"+s,t=>{if(this._preventClick)return;const s=l(t.target).closest(".js-dialog");(this.options.closeOnClickAtOtherDialogs||0===s.length)&&this.isEventOut(t)&&this.close()}))},0)}),this.on("beforeClose",()=>l(document).off("click.tv-popup-"+s))),this.on("change:zIndex",()=>{
|
|
this.$el.css("z-index",this.zIndex)}),this.on("destroy",()=>{const t=()=>{this.$el.remove(),this._hotkeys.destroy()};this.opened?(this.close(),setTimeout(t,i.dur/2)):t()})}open(){return this.opened||(this.opened=!0,this.trigger("beforeOpen",[this]),this.$el.appendTo(this.$wrap).removeClass("i-hidden").css((()=>{this.calcHeight();const t=c.height(),s=c.width(),e=this.$el.height(),i=this.$el.width();let o=this.options.position;return o||(o={top:t/2-e/2,left:s/2-i/2}),o.top>t-e&&(o.top=t-e),o.left>s-i&&(o.left=s-i),o.top<10&&(o.top=10),o.left<10&&(o.left=10),o})()),this.focus(),this.toTop(),this._doOpenAnimation().then(()=>{this.opened&&(this.$el.removeClass("i-closed"),this.options.draggable&&((0,r.lazyJqueryUI)(this.$el).draggable({handle:".js-dialog__drag",cancel:"input, textarea, button, select, option, .js-dialog__no-drag, .js-dialog__close",containment:"window",cursor:"-webkit-grabbing",stop:(t,s)=>{this.trigger("dragEnd",[this])}}),this.$el.find(".js-dialog__drag").addClass("tv-dialog__grab")),this.trigger("afterOpen",[this]))}),c.on("resize.tv-popup-"+this.getDialogId(),()=>{this.calcHeight(),this.fixPos()})),this}close(){if(this.opened)return this.trigger("beforeClose",[this]),this.$el.addClass("i-closed"),this.opened=!1,this._doCloseAnimation().then(()=>{this.opened||((0,r.lazyJqueryUI)(this.$el).draggable("instance").then(t=>{t&&t.destroy()}),this.$el.addClass("i-hidden").detach(),d.css("cursor","auto"),this.trigger("afterClose",[this]),this.options.destroyOnClose&&this.destroy())}),c.off("resize.tv-popup-"+this.getDialogId()),this}hide(){this.$el.addClass("i-hidden")}show(){this.$el.removeClass("i-hidden")}fixPos(){const t=this.$el[0].getBoundingClientRect(),s={};t.bottom>o.mediaState.height-10&&(s.top=o.mediaState.height-10-t.height,s.top<10&&(s.top=10)),t.right>o.mediaState.width-10&&(s.left=o.mediaState.width-10-t.width,s.left<10&&(s.left=10)),(s.top||s.left)&&this.$el.css(s)}calcHeight(){const t=this.$el[0].getBoundingClientRect(),s=this.$scrollWrapInner[0].getBoundingClientRect(),e=this.$scrollWrap[0].getBoundingClientRect();let i=this.options.height&&this.options.height<o.mediaState.height-20?this.options.height:o.mediaState.height-20;this.$scrollWrap.css({height:""}).removeClass("i-scrollable");const h=this.$el[0].getBoundingClientRect();(this.options.height||h.height>i)&&(i-=t.height-e.height,i<60&&(i=60),this.$scrollWrap.css({height:i})),this.options.withScroll&&this.scroll.resize();const n=i<s.height;n||this.$scrollWrapInner.css("top",0),this.$scrollWrap.toggleClass("i-scrollable",n),this.$actions&&this.$actions.toggleClass("tv-dialog__section--actions_with-border",n)}updateScroll(){this.scroll&&(this.scroll.updateScroll(),this.scroll.updateScrollBar())}scrollToStart(){this.scroll&&this.scroll.scrollToStart()}_doOpenAnimation(){return Promise.resolve()}_doCloseAnimation(){return Promise.resolve()}}},25258:(t,s,e)=>{e.r(s),e.d(s,{warningDialog:()=>h});var i=e(28353),o=e(89725);function h(t){const s={type:"modal",destroyOnClose:!0,width:510,
|
|
contentWrapTemplate:'\n\t\t\t<div class="tv-dialog__section tv-dialog__section--no-border">\n\t\t\t\t<div class="tv-text"></div>\n\t\t\t</div>\n\t\t',content:t.content||"",actionsWrapTemplate:'<div class="tv-dialog__section tv-dialog__section--actions tv-dialog__section--no-border">',actions:[{name:"no",type:"primary",text:t.closeButtonText?t.closeButtonText:(0,i.t)("OK"),method:"close"}]};return(0,o.createDialog)(Object.assign(s,t))}},52150:(t,s,e)=>{e.d(s,{mediaState:()=>l});var i=e(85459),o=e.n(i),h=e(69677),n=e(74664),r=e(68722);class a extends(o()){constructor(){super(),this.width=0,this.height=0,this.device=null,this.breakpoints=n.breakpoints,this._checkDevice(),window.addEventListener("resize",this._checkDevice),Object.entries(n.breakpoints).sort(([t,s],[e,i])=>s-i).forEach(([t,s],e,i)=>{let o;if(0!==e){const[,t]=i[e-1];o=t+1}else o=0;const h=(0,r.matchMediaMinMax)(o,s);h.matches&&this._setNewDevice(t),h.addListener(s=>{s.matches&&(this._checkDevice(),this._setNewDevice(t))})}),(0,h.whenDocumentReady)(this._checkDevice.bind(this)),this.isPhoneSizeDevice.bind(this)}isPhoneSizeDevice(){return"phone"===this.device||"phone-vertical"===this.device}_checkDevice(){this.width=window.innerWidth,this.height=window.innerHeight}_setNewDevice(t){const s=this.device;this.device=t,this.trigger("changeDevice",[t,s])}}const l=new a}}]); |