- Redesign KPI cards to look like stock tickers - Add ticker ID (e.g. ВЫРУЧК:KPI, AOV:KPI) - Arrow up/down SVG indicators for change direction - Mini trend-line (50px) inside each card - Change color: green (#16a34a) for up, red (#e21d1d) for down - Remove sparkline background area, keep only line - Fix duplicate arrowUp variable naming (bArrowUp/bArrowDown/bArrowNeutral)
1 line
46 KiB
JavaScript
1 line
46 KiB
JavaScript
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8696],{92138:function(e,t,n){n.d(t,{D:function(){return l}});var r=n(77997),a=n(48189),i=n(48820);let o=a.Lw.getInstance(),l=async function(e,t){var n,a,l;let u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"PX_LAST",c=arguments.length>3?arguments[3]:void 0,s=arguments.length>4?arguments[4]:void 0;try{let{startDate:n,endDate:a}=(0,i.fD)(t),l=null!=s?s:"5Y"===t?r.ST.Weekly:r.ST.Daily;return await o.getHistory({securities:e.join(","),startDate:n,endDate:a,periodicity:l,fields:u,referenceFields:c})}catch(r){throw null===(a=window)||void 0===a||null===(n=(l=a.newrelic).noticeError)||void 0===n||n.call(l,r,{context:"fetchHistoryChartData",tickers:e}),Error("Failed to fetch fetchHistoryChartData for ".concat(e.join(", ")," (").concat(t,")"))}}},82642:function(e,t,n){n.d(t,{q:function(){return l},v:function(){return u}});var r=n(77997),a=n(48189),i=n(99464);let o=a.Lw.getInstance(),l=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.VI.Close,a=arguments.length>3?arguments[3]:void 0,l=arguments.length>4?arguments[4]:void 0,u=arguments.length>5&&void 0!==arguments[5]&&arguments[5];try{return await o.getIntraday({securities:e.join(","),dataPoints:n,intervalMinutes:a,tradingDayCount:t,referenceFields:l,includeOutOfSessionBars:u})}catch(t){throw(0,i.H)(Error("Error Fetching IntradayChartData"),{context:"fetchIntradayChartData",tickers:e,errorMsg:JSON.stringify(t)}),Error("Failed to fetch intradayChartData for ".concat(e.join(", ")))}},u=async function(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:r.VI.Close,l=arguments.length>4?arguments[4]:void 0,u=arguments.length>5?arguments[5]:void 0,c=arguments.length>6&&void 0!==arguments[6]&&arguments[6];try{return await o.getIntraday({securities:e.join(","),dataPoints:a,intervalMinutes:l,startDate:t,endDate:n,referenceFields:u,includeOutOfSessionBars:c})}catch(t){throw(0,i.H)(Error("Error Fetching IntradayChartData With Dates"),{context:"fetchIntradayChartData",tickers:e,errorMsg:JSON.stringify(t)}),Error("Failed to fetch intradayChartData for ".concat(e.join(", ")))}}},48189:function(e,t,n){let r,a,i;n.d(t,{Lw:function(){return h},Ny:function(){return v},ff:function(){return m}});var o=n(31356),l=n(47041);let u="".concat("https://login.bloomberg.com","/octagon/api/"),c="oBtK6TVu4JI2wTjkTpXYr0uLsv9Tq2Bd0qUbczS1Fr4OmQ==",s="octagon-jwtToken",f=async()=>{let e=await (0,l.getCookie)(s);return"string"==typeof e?e:void 0},d=async e=>{e&&await (0,l.setCookie)(s,e,{maxAge:300,secure:!0,sameSite:"strict"})},m={getInstance:()=>r||(r=new o.TJ({appId:c,getJWTTokenHandler:f,setJWTTokenHandler:d,serviceUrl:u})),resetInstance(){r=void 0}},h={getInstance:()=>a||(a=new o.bg({appId:c,getJWTTokenHandler:f,setJWTTokenHandler:d,serviceUrl:u})),resetInstance(){a=void 0}},v={getInstance:()=>i||(i=new o.Sq({appId:c,getJWTTokenHandler:f,setJWTTokenHandler:d,serviceUrl:u})),resetInstance(){i=void 0}}},87278:function(e,t,n){var r,a;n.d(t,{Kd:function(){return i},Z7:function(){return o},lK:function(){return l},tB:function(){return u}}),(a=r||(r={})).REFERENCE="reference",a.INTRADAY="intraday",a.BOTH="both";let i=["1D","1M","6M","YTD","1Y","5Y"],o=["1H","1D","1M","6M","YTD","1Y","5Y"],l={"1H":["1m"],"1D":["1m","5m","15m","30m","1h","4h"],"3D":["1m","5m","15m","30m","1h","4h"],"5D":["1m","5m","15m","30m","1h","4h"],"1W":["1m","5m","15m","30m","1h","4h"],"1M":["1h","4h","1d","1w"],"6M":["1d","1w","1M"],YTD:["1d","1w","1M"],"1Y":["1d","1w","1M"],"5Y":["1w","1M","1y"]},u={"1m":"1 Min","5m":"5 Min","15m":"15 Min","30m":"30 Min","1h":"1 Hour","2h":"2 Hour","4h":"4 Hour","1d":"1 Day","1w":"1 Week","1M":"1 Month","1y":"1 Year"}},99464:function(e,t,n){n.d(t,{H:function(){return a},f:function(){return i}});let r="object"==typeof window.NREUM&&window.NREUM,a=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r&&(null===(t=r.noticeError)||void 0===t||t.call(r,e,n))},i=(e,t)=>{var n;r&&(null===(n=r.addPageAction)||void 0===n||n.call(r,e,t))}},79281:function(e,t,n){n.d(t,{Bl:function(){return s},Mx:function(){return o},RN:function(){return f},Ru:function(){return a},ZE:function(){return i},_r:function(){return l},fK:function(){return c}});var r=n(2887);let a="#2563eb",i=[a,"#0032F1","#AE8E00","#97542B","#65a30d","#8317B2","#FF6200","#FF008C","#0094D9"],o={up:"#338736",down:"#E51503",unchanged:"#767676",wick:"#999999"};function l(e,t){return t&&/^#([0-9A-F]{3}|[0-9A-F]{6}|[0-9A-F]{8})$/i.test(t)?u(t):i[e%i.length]}function u(e){if(/^#[0-9A-F]{6}([0-9A-F]{2})?$/i.test(e))return e.toUpperCase();if(/^#[0-9A-F]{3}$/i.test(e)){let t=e[1],n=e[2],r=e[3];return"#".concat(t).concat(t).concat(n).concat(n).concat(r).concat(r).toUpperCase()}let t=/^rgba?\((\d+),\s*(\d+),\s*(\d+)/i.exec(e);if((null==t?void 0:t[1])&&t[2]&&t[3]){let e=Number.parseInt(t[1],10).toString(16).padStart(2,"0"),n=Number.parseInt(t[2],10).toString(16).padStart(2,"0"),r=Number.parseInt(t[3],10).toString(16).padStart(2,"0");return"#".concat(e).concat(n).concat(r).toUpperCase()}return(0,r.Tg)().warn("Unrecognized color format passed through: ".concat(e)),e}function c(e,t){let n=t-e;return n>0?"positive":n<0?"negative":"neutral"}function s(e){switch(e){case"positive":return o.up;case"negative":return o.down;default:return o.unchanged}}function f(e){return function(e){let t=u(e).replace("#",""),n=Number.parseInt(t.substring(0,2),16)/255,r=Number.parseInt(t.substring(2,4),16)/255,a=Number.parseInt(t.substring(4,6),16)/255,i=e=>e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4);return .2126*i(n)+.7152*i(r)+.0722*i(a)}(e)>.179?"#000000":"#ffffff"}},2887:function(e,t,n){n.d(t,{Tg:function(){return a},YK:function(){return i}});let r=null;function a(){return null!=r||(r=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t,r=(t,n)=>{let r=new Date,a=e=>e.toString().padStart(2,"0"),i="".concat(r.getFullYear(),"-").concat(a(r.getMonth()+1),"-").concat(a(r.getDate())," ").concat(a(r.getHours()),":").concat(a(r.getMinutes()),":").concat(a(r.getSeconds()));return"[".concat(i,"] [").concat(t.toUpperCase(),"] [").concat(e,"] ").concat(n)},a=function(e,t){for(var a=arguments.length,i=Array(a>2?a-2:0),o=2;o<a;o++)i[o-2]=arguments[o];if(!n&&"debug"===e)return;let l=r(e,t);switch(e){case"debug":case"info":console.log(l,...i);break;case"warn":console.warn(l,...i);break;case"error":console.error(l,...i)}};return{debug:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return a("debug",e,...n)},info:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return a("info",e,...n)},warn:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return a("warn",e,...n)},error:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return a("error",e,...n)},setEnabled:e=>{n=e},isEnabled:()=>n}}("TickerPriceChart",!1)),r}function i(e){a().setEnabled(e)}},48820:function(e,t,n){function r(e){return{appendData:(t,n,r)=>{e().appendData(t,n,r)},setSeriesData:(t,n)=>{e().setSeriesData(t,n)},addSeries:t=>{e().addSeries(t)},removeSeries:t=>{e().removeSeries(t)},setVisibleRange:t=>{e().setViewport({start:t.start,end:t.end})},resetView:()=>{e().resetView()},zoomIn:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1.5,n=e(),r=n.getLayout(),a=r.priceArea.x+r.priceArea.width/2;n.zoom(t,a)},zoomOut:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1.5,n=e(),r=n.getLayout(),a=r.priceArea.x+r.priceArea.width/2;n.zoom(1/t,a)},panBy:t=>{let n=e(),r=n.getViewport(),a=n.getLayout(),i=(r.end-r.start)/a.priceArea.width;n.pan(t/i)},getSeries:()=>Array.from(e().getState().seriesMeta.values()),getVisibleRange:()=>{let t=e().getViewport();return{start:t.start,end:t.end}}}}n.d(t,{Mx:function(){return a.Mx},Ru:function(){return a.Ru},Rn:function(){return i},rX:function(){return ey},AK:function(){return o},ll:function(){return U},e5:function(){return T},Rc:function(){return ee},Y6:function(){return H},kw:function(){return V},Rr:function(){return K},QZ:function(){return eg},H1:function(){return R},uP:function(){return O},iE:function(){return ew},ef:function(){return r},Yi:function(){return eV},uQ:function(){return l},D0:function(){return _},vR:function(){return G},L3:function(){return j},_r:function(){return q},T4:function(){return d},i$:function(){return f},fP:function(){return m},ug:function(){return em},bx:function(){return ev},mT:function(){return eb},g5:function(){return ed},Cy:function(){return eD},tE:function(){return ep},UO:function(){return el},f6:function(){return M},fD:function(){return S},Tg:function(){return u.Tg},Rx:function(){return eu},Bl:function(){return a.Bl},AD:function(){return h},fW:function(){return B},fK:function(){return a.fK},RP:function(){return eM},WG:function(){return a._r},VW:function(){return c},Lq:function(){return Q},w5:function(){return $},NP:function(){return y},LF:function(){return E},mq:function(){return ea},mW:function(){return s},YK:function(){return u.YK},sR:function(){return Z},DM:function(){return J}});var a=n(79281);let i=1e4;function o(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.95,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.5,i=e,o=null,l=()=>{if(Math.abs(i)<a){o=null,n();return}t(i),i*=r,o=requestAnimationFrame(l)};return o=requestAnimationFrame(l),{cancel:()=>{null!==o&&(cancelAnimationFrame(o),o=null)}}}function l(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100,t=[];return{track:n=>{let r=performance.now();for(t.push({position:n,time:r});t.length>0&&r-t[0].time>e;)t.shift()},getVelocity:()=>{if(t.length<2)return 0;let e=t[0],n=t.at(-1),r=n.time-e.time;return 0===r?0:(n.position-e.position)/r},reset:()=>{t.length=0}}}var u=n(2887);function c(e){return e<36e5?"second":e<864e5?"minute":e<6048e5?"hour":e<15768e6?"day":e<94608e6?"month":"year"}function s(e){switch(e){case"1m":case"5m":case"15m":case"30m":return"minute";case"1h":case"2h":case"4h":return"hour";case"1d":return"day";case"1w":case"1M":return"month";case"1y":return"year";default:return e}}function f(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"en-US",r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=new Date(e),i={};switch(null!=t?t:"day"){case"second":i.hour="2-digit",i.minute="2-digit",i.second="2-digit",i.hour12=!1;break;case"minute":i.hour="2-digit",i.minute="2-digit",i.hour12=!1;break;case"hour":i.hour="2-digit",i.minute="2-digit",i.hour12=!1,r&&(i.month="short",i.day="numeric");break;case"day":i.month="short",i.day="numeric",r&&(i.year="numeric");break;case"month":i.month="short",r&&(i.year="numeric");break;case"year":i.year="numeric"}try{return new Intl.DateTimeFormat(n,i).format(a)}catch(e){return a.toISOString().substring(0,10)}}function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{currency:n,decimals:r=function(e){let t=Math.abs(e);return t>=1?2:t>=.01?4:6}(e),compact:a=!1,showSign:i=!1,locale:o="en-US"}=t,l={minimumFractionDigits:r,maximumFractionDigits:r,notation:a?"compact":"standard",signDisplay:i?"exceptZero":"auto"};n&&(l.style="currency",l.currency=n);try{return new Intl.NumberFormat(o,l).format(e)}catch(n){let t=i&&e>0?"+":"";return"".concat(t).concat(e.toFixed(r))}}function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US",n=Math.abs(e);if(n<1e3)return e.toFixed(0);try{return new Intl.NumberFormat(t,{notation:"compact",maximumFractionDigits:1}).format(e)}catch(t){if(n>=1e9)return"".concat((e/1e9).toFixed(1),"B");if(n>=1e6)return"".concat((e/1e6).toFixed(1),"M");return"".concat((e/1e3).toFixed(1),"K")}}function h(e){var t;let n=e.values().next().value;return null!==(t=null==n?void 0:n.issuedCurrency)&&void 0!==t?t:"USD"}var v=n(77997),p=n(49681);let g={"1H":{line:{intervalMinutes:1,dataInterval:"1m",tradingDayCount:1},ohlcv:{intervalMinutes:1,dataInterval:"1m",tradingDayCount:1}},"1D":{line:{intervalMinutes:5,dataInterval:"5m",tradingDayCount:1},ohlcv:{intervalMinutes:5,dataInterval:"5m",tradingDayCount:1}},"3D":{line:{intervalMinutes:30,dataInterval:"30m",tradingDayCount:3},ohlcv:{intervalMinutes:30,dataInterval:"30m",tradingDayCount:3}},"5D_1W":{line:{intervalMinutes:60,dataInterval:"1h",tradingDayCount:5},ohlcv:{intervalMinutes:60,dataInterval:"1h",tradingDayCount:5}}};function y(){let e=new Date,t=new Date(e.getFullYear(),0,1);return(e.getTime()-t.getTime())/864e5}function M(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=t?"ohlcv":"line",a="YTD"===e?n<=1?"1D":n<=3?"3D":n<=5?"5D":n<=7?"1W":n<=120?"1M":n<=180?"6M":"1Y":e;switch(a){case"1H":return{source:"intraday",...g["1H"][r]};case"1D":return{source:"intraday",...g["1D"][r],staleTime:5*p.Rq};case"3D":return{source:"intraday",...g["3D"][r]};case"5D":case"1W":return{source:"intraday",...g["5D_1W"][r]};case"1M":case"6M":case"1Y":return{source:"history",periodicity:v.ST.Daily,dataInterval:"1d"};case"5Y":return{source:"history",periodicity:v.ST.Monthly,dataInterval:"1w"};default:throw Error("Unhandled chart date range: ".concat(String(a)))}}let w=(e,t)=>{let n=new Date(e),r=n.getDate();return n.setMonth(n.getMonth()-t),n.getDate()!==r&&n.setDate(0),n},D=(e,t)=>{let n=new Date(e),r=n.getDate();return n.setFullYear(n.getFullYear()-t),n.getDate()!==r&&n.setDate(0),n},b=e=>new Date(Date.UTC(e.getFullYear(),0,1,12,0,0)),x=e=>{let t=Object.fromEntries(new Intl.DateTimeFormat("en-US",{timeZone:"America/New_York",year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(e).map(e=>[e.type,e.value]));return"".concat(t.year,"-").concat(t.month,"-").concat(t.day)};function S(e){let t;let n=new Date,r=x(n);switch(e){case"1M":t=x(w(n,1));break;case"6M":t=x(w(n,6));break;case"YTD":t=x(b(n));break;case"1Y":t=x(D(n,1));break;case"5Y":t=x(D(n,5));break;default:t=x(n)}return{startDate:t,endDate:r}}function A(e){return!0===e.isFilled}function C(e,t){if(0===e.length)return -1;if(1===e.length)return 0;let n=0,r=e.length-1;for(;n<r;){let a=Math.floor((n+r)/2),i=e[a];if(!i)break;i.timestamp<t?n=a+1:r=a}if(n>0){let r=e[n],a=e[n-1];if(!r||!a)return n;let i=Math.abs(r.timestamp-t);if(Math.abs(a.timestamp-t)<i)return n-1}return n}function F(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(0===e.length)return{data:[],startIndex:0,endIndex:0};let{startIndex:r,endIndex:a}=function(e,t,n){if(0===e.length)return{startIndex:0,endIndex:0};let r=0,a=0,i=e.length-1;for(;a<=i;){let n=Math.floor((a+i)/2),r=e[n];if(!r)break;r.timestamp<t?a=n+1:i=n-1}r=a;let o=e.length-1;for(a=0,i=e.length-1;a<=i;){let t=Math.floor((a+i)/2),r=e[t];if(!r)break;r.timestamp<=n?a=t+1:i=t-1}return o=i,{startIndex:Math.max(0,r),endIndex:Math.min(e.length-1,o)}}(e,t.start,t.end),i=Math.max(0,r-n),o=Math.min(e.length-1,a+n);return{data:e.slice(i,o+1),startIndex:i,endIndex:o}}function T(e,t,n,r){if("single"===e){var a;let e=Array.from(t.nearestPoints.keys())[0];if(!e)return null;let i=n.get(e),o=null!==(a=t.nearestPoints.get(e))&&void 0!==a?a:null;return i?{mode:"single",screenX:t.screenX,screenY:t.screenY,chartX:t.chartX,chartY:t.chartY,timestamp:r,series:i,datum:o}:null}let i={},o={};for(let[e,r]of t.nearestPoints){let t=n.get(e);t&&(i[e]=r,o[e]=t)}return{mode:"comparison",screenX:t.screenX,screenY:t.screenY,chartX:t.chartX,chartY:t.chartY,timestamp:r,seriesPoints:i,seriesMeta:o}}function Y(e){return"value"in e}let k={leftPoint:void 0,rightPoint:void 0,foundBracket:!1,exactMatch:void 0};function I(e,t,n,r){for(let a=t;1===n?a<e.length:a>=0;a+=n){let t=e[a];if(t&&Y(t)&&r(t))return t}}function E(e,t,n){if(!e.length)return{y:null,value:null};let{leftPoint:r,rightPoint:a,foundBracket:i,exactMatch:o}=function(e,t){if(0===e.length)return k;let n=C(e,t);if(n<0||n>=e.length)return k;let r=e[n];if(!r)return k;if(r.timestamp===t&&Y(r))return{...k,exactMatch:r};let a=r.timestamp<=t?n:n-1,i=r.timestamp>t?n:n+1,o=I(e,a,-1,e=>e.timestamp<=t),l=I(e,i,1,e=>e.timestamp>t);return{leftPoint:o,rightPoint:l,foundBracket:void 0!==o&&void 0!==l,exactMatch:void 0}}(e,t);if(o)return{y:n.scale(o.value),value:o.value};if(!r)return{y:null,value:null};if(!i||!a)return{y:n.scale(r.value),value:r.value};let l=r.timestamp,u=a.timestamp,c=r.value,s=a.value;if(u===l)return{y:n.scale(c),value:c};let f=c+(t-l)/(u-l)*(s-c);return{y:n.scale(f),value:f}}function H(e,t,n){let r=n.invert(t),a=Math.max(e.low,Math.min(e.high,r));return n.scale(a)}function R(e){let t;let{snappedX:n,chartLeft:r,chartRight:a,chartTop:i,chartHeight:o,tooltipWidth:l,tooltipHeight:u,offsetX:c,offsetY:s}=e;t=a-n>=l+c?n+c:n-r>=l+c?n-l-c:Math.max(r,Math.min(n-l/2,a-l));let f=i+s;return f+u>i+o&&(f=i+o-u-s),{x:t,y:f}}function P(e){for(let t=1;t<e.length;t++){let n=e[t],r=e[t-1];if(n&&r&&n.timestamp<r.timestamp)return!1}return!0}function L(e,t,n,r){var a,i,o,l,u,c,s,f,d,m;if(0===e.length)return null;let h=null!==(i=t.normalizationBase)&&void 0!==i?i:"first-data";if("number"==typeof h)return h;if("previous-close"===h)return void 0!==r&&0!==r?r:null!==(l=null===(o=e[0])||void 0===o?void 0:o.value)&&void 0!==l?l:null;if("first-data"===h)return null!==(c=null===(u=e[0])||void 0===u?void 0:u.value)&&void 0!==c?c:null;if("first-visible"===h&&n){let t=e.find(e=>e.timestamp>=n.start);return null!==(d=null!==(f=null==t?void 0:t.value)&&void 0!==f?f:null===(s=e[0])||void 0===s?void 0:s.value)&&void 0!==d?d:null}return null!==(m=null===(a=e[0])||void 0===a?void 0:a.value)&&void 0!==m?m:null}function N(e,t,n){let r=e.priceMovements,a=L(r,t,n,e.previousClose);return null===a||0===a?r.map(e=>({...e,value:100})):r.map(e=>({...e,value:e.value/a*100}))}function W(e,t,n){var r;let a=e.priceMovements;if(0===a.length)return[];let i=L(a,{...t,normalizationBase:null!==(r=t.normalizationBase)&&void 0!==r?r:"previous-close"},n,e.previousClose),o=null===i||0===i?1:i;return a.map(e=>({...e,value:(e.value-o)/o*100}))}function B(e){return"value"in e&&"number"==typeof e.value?e.value:"close"in e&&"number"==typeof e.close?e.close:0}function X(e){if(0===e.length)return null;let t=1/0,n=-1/0;for(let r of e)r.timestamp<t&&(t=r.timestamp),r.timestamp>n&&(n=r.timestamp);return[t,n]}function z(e){var t;if(e.length<2)return null;let n=[];for(let t=1;t<e.length;t++){let r=e[t],a=e[t-1];r&&a&&n.push(r.timestamp-a.timestamp)}if(0===n.length)return null;n.sort((e,t)=>e-t);let r=Math.floor(n.length/2);if(n.length%2==0){let e=n[r-1],t=n[r];return void 0===e||void 0===t?null:(e+t)/2}return null!==(t=n[r])&&void 0!==t?t:null}function V(e){var t,n;let r;let{seriesId:i,locale:o,state:l,scales:u,layout:c,visibleData:s}=e;if(0===s.length)return null;let f=s.at(-1);if(!f)return null;let m=B(f),h=u.x.scale(f.timestamp),v=u.y.scale(m),[p,g]=u.y.domain();if(m<p||m>g)return null;let y=l.seriesMeta.get(i);if("comparison"===l.mode)r=null!==(t=null==y?void 0:y.color)&&void 0!==t?t:a.Ru;else{let e=(0,a.fK)(l.baseValue,m);r=(0,a.Bl)(e)}let M=d(m,{currency:null!==(n=null==y?void 0:y.issuedCurrency)&&void 0!==n?n:"USD",locale:o,compact:Math.abs(g)>=1e4||Math.abs(p)>=1e4}),w=c.yAxisArea.x>c.priceArea.x,D=(0,a.RN)(r);return{dotX:h,y:v,priceLabel:M,color:r,textColor:D,yAxisOnRight:w,lineX1:c.priceArea.x,lineX2:c.priceArea.x+c.priceArea.width,typography:c.typography}}function U(e){let{labelY:t,labelHeight:n,centerY:r,totalLabelWidth:a,arrowWidth:i,labelX:o,textWidth:l,yAxisOnRight:u}=e,c=t+n;if(u){let e=o+i,n=o+a;return"\n M ".concat(o," ").concat(r,"\n L ").concat(e," ").concat(t,"\n L ").concat(n," ").concat(t,"\n L ").concat(n," ").concat(c,"\n L ").concat(e," ").concat(c,"\n Z\n ")}let s=o+l;return"\n M ".concat(o," ").concat(t,"\n L ").concat(s," ").concat(t,"\n L ").concat(o+a," ").concat(r,"\n L ").concat(s," ").concat(c,"\n L ").concat(o," ").concat(c,"\n Z\n ")}function K(e){let{y:t,lineX2:n,lineX1:r,yAxisOnRight:a,priceLabel:i,typography:o}=e,{axisLabelSize:l,charWidth:u}=o,c=i.length*u+12,s=l+6,f=c+6,d=a?n+2:r-f-2;return{paddingX:6,paddingY:3,arrowWidth:6,labelGap:2,textWidth:c,labelHeight:s,totalLabelWidth:f,labelX:d,labelY:t-s/2,textX:a?d+6+c/2:d+c/2}}function j(e,t,n,r,a,i){let o=e-n+a.priceArea.x,l=t-r+a.priceArea.y,u=i.invert(o);return{chartX:o,chartY:l,timestamp:u}}function q(e,t,n,r){let a=new Map;for(let o of e){var i;let e=function(e,t,n){let r;if(0===e.length)return null;let a=n.invert(t),i=e[0],o=e.at(-1);if(!i||!o||-1===(r=a<=i.timestamp?0:a>=o.timestamp?e.length-1:C(e,a)))return null;let l=function(e,t){let n=e[t];if(n&&!A(n))return{point:n,index:t};let r=t-1,a=t+1;for(;r>=0||a<e.length;){if(r>=0){let t=e[r];if(t&&!A(t))return{point:t,index:r};r--}if(a<e.length){let t=e[a];if(t&&!A(t))return{point:t,index:a};a++}}return null}(e,r);if(!l)return null;let{point:u,index:c}=l,s=n.scale(u.timestamp);return{point:u,index:c,distanceX:Math.abs(s-t),distanceY:0,distanceTotal:Math.abs(s-t),screenX:s,screenY:0}}(n(o),t,r);a.set(o,null!==(i=null==e?void 0:e.point)&&void 0!==i?i:null)}return a}function O(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.02;return e>0?1-t:1+t}function _(e,t,n){let r=Math.abs(e),a=Math.abs(t);return{isPinch:n,isHorizontalScroll:r>0&&r>2*a,isMouseWheel:a>0&&!n&&r<.5*a}}function J(e){return e.isPinch||e.isMouseWheel}function Z(e){return e.isHorizontalScroll&&!e.isPinch}function G(e){return 1===e?"pan":2===e?"pinch":"none"}function $(e,t){return Math.hypot(t.clientX-e.clientX,t.clientY-e.clientY)}function Q(e,t){return{x:(e.clientX+t.clientX)/2,y:(e.clientY+t.clientY)/2}}function ee(e){let{mode:t,screenX:n,screenY:r,chartX:a,chartY:i,timestamp:o,seriesIds:l,nearestPoints:u,seriesMetaMap:c}=e;if("single"===t){var s;let e=l[0];if(!e)return null;let t=c.get(e);return t?{mode:"single",screenX:n,screenY:r,chartX:a,chartY:i,timestamp:o,series:t,datum:null!==(s=u.get(e))&&void 0!==s?s:null}:null}return function(e,t,n,r,a,i,o){let l={},u={};for(let[e,t]of i){l[e]=t;let n=o.get(e);n&&(u[e]=n)}return{mode:"comparison",screenX:e,screenY:t,chartX:n,chartY:r,timestamp:a,seriesPoints:l,seriesMeta:u}}(n,r,a,i,o,u,c)}var et=n(64339),en=n(87278);let er={"1m":6e4,"5m":3e5,"15m":9e5,"30m":18e5,"1h":36e5,"2h":72e5,"4h":144e5,"1d":864e5,"1w":6048e5,"1M":2592e6,"1y":31536e6};function ea(e){return er[e]}function ei(e,t){switch(t){case"hour":e.setHours(e.getHours()+1);break;case"day":e.setDate(e.getDate()+1);break;case"week":e.setDate(e.getDate()+7);break;case"month":e.setMonth(e.getMonth()+1);break;case"year":e.setFullYear(e.getFullYear()+1)}}function eo(e,t,n){var r;let a=null!=n?n:(r=t-e)<864e5?"hour":r<6048e5?"day":r<2592e6?"week":r<31536e6?"month":"year",i=[],o=new Date(e);for(!function(e,t){switch(t){case"hour":e.setMinutes(0,0,0);break;case"day":e.setHours(0,0,0,0);break;case"week":e.setHours(0,0,0,0),e.setDate(e.getDate()-e.getDay());break;case"month":e.setDate(1),e.setHours(0,0,0,0);break;case"year":e.setMonth(0,1),e.setHours(0,0,0,0)}}(o,a),o.getTime()<e&&ei(o,a);o.getTime()<=t;){let t=o.getTime();t>=e&&i.push({timestamp:t,type:a,label:function(e,t){switch(t){case"hour":return e.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"});case"day":return e.toLocaleDateString(void 0,{weekday:"short",day:"numeric"});case"week":return e.toLocaleDateString(void 0,{month:"short",day:"numeric"});case"month":return e.toLocaleDateString(void 0,{month:"short",year:0===e.getMonth()?"numeric":void 0});case"year":return e.getFullYear().toString()}throw Error("Unsupported format type: ".concat(t))}(o,a)}),ei(o,a)}return i}function el(e){if("YTD"===e){let e=(0,et.NP)();return e<=3?en.lK["1D"]:e<=31?en.lK["1M"]:en.lK.YTD}return en.lK[e]}function eu(e){switch(e){case"1H":return"1m";case"1D":return"5m";case"1M":return"1h";case"6M":case"1Y":default:return"1d";case"YTD":{let e=(0,et.NP)();if(e<=3)return"5m";return e<=31?"1h":"1d"}case"5Y":return"1M"}}function ec(e){return!!(e&&"number"==typeof e.timestamp&&Number.isFinite(e.timestamp))&&("value"in e?"number"==typeof e.value&&Number.isFinite(e.value):"close"in e&&"number"==typeof e.open&&Number.isFinite(e.open)&&"number"==typeof e.high&&Number.isFinite(e.high)&&"number"==typeof e.low&&Number.isFinite(e.low)&&"number"==typeof e.close&&Number.isFinite(e.close))}function es(e,t,n){return 0!==n&&t.timestamp-e.timestamp>2*n}function ef(e){return Math.round(100*e)/100}function ed(e,t){var n;let{xScale:r,yScale:a,breakOnGaps:i=!1}=t;if(0===e.length)return"";let o=i&&null!==(n=z(e))&&void 0!==n?n:0,l=[],u="",c=!0,s=null;for(let t of e){if(!ec(t))continue;let e=ef(r.scale(t.timestamp)),n=ef(a.scale(B(t)));i&&s&&es(s,t,o)?(u&&l.push(u),u="M ".concat(e,",").concat(n),c=!1):c?(u="M ".concat(e,",").concat(n),c=!1):u+=" L ".concat(e,",").concat(n),s=t}return u&&l.push(u),l.join(" ")}function em(e,t){var n;let{xScale:r,yScale:a,baselineY:i,breakOnGaps:o=!1}=t;if(0===e.length)return"";let l=o&&null!==(n=z(e))&&void 0!==n?n:0,u=[],c="",s=0,f=!0,d=null;for(let t of e){if(!ec(t))continue;let e=ef(r.scale(t.timestamp)),n=ef(a.scale(B(t)));if(o&&d&&es(d,t,l)){if(c){let e=ef(r.scale(d.timestamp));c+=" L ".concat(e,",").concat(i," L ").concat(s,",").concat(i," Z"),u.push(c)}c="M ".concat(e,",").concat(n),s=e,f=!1}else f?(c="M ".concat(e,",").concat(n),s=e,f=!1):c+=" L ".concat(e,",").concat(n);d=t}if(c&&d){let e=ef(r.scale(d.timestamp));c+=" L ".concat(e,",").concat(i," L ").concat(s,",").concat(i," Z"),u.push(c)}return u.join(" ")}function eh(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:20;return 0===e?n:Math.floor(Math.max(n,Math.min(r,t/e*.8)))}function ev(e,t){var n;let{xScale:r,yScale:a,spacing:i=1}=t,o=null!==(n=t.candleWidth)&&void 0!==n?n:eh(e.length,r.range()[1]-r.range()[0]);return e.map(e=>{let t=r.scale(e.timestamp),n=a.scale(e.open),l=a.scale(e.close),u=a.scale(e.high),c=a.scale(e.low),s="neutral";return e.close>e.open?s="up":e.close<e.open&&(s="down"),{timestamp:e.timestamp,x:ef(t-o/2),y:ef(Math.min(n,l)),width:o-i,height:Math.max(1,ef(Math.abs(l-n))),wickTop:ef(u),wickBottom:ef(c),direction:s}})}function ep(e,t){var n;let{xScale:r,volumeScale:a,baselineY:i,priceData:o,spacing:l=1}=t,u=null!==(n=t.barWidth)&&void 0!==n?n:eh(e.length,r.range()[1]-r.range()[0]);return e.map((e,t)=>{var n;let c=r.scale(e.timestamp),s=null!==(n=e.volume)&&void 0!==n?n:0,f=a.scale(s),d=function(e,t){if(!e)return"neutral";let n=e[t];if(!n)return"neutral";if("close"in n&&"open"in n)return n.close>=n.open?"up":"down";if("value"in n&&t>0){let r=e[t-1];if(r)return n.value>=B(r)?"up":"down"}return"neutral"}(o,t);return{timestamp:e.timestamp,x:ef(c-u/2),y:ef(Math.min(f,i)),width:Math.max(1,u-l),height:ef(Math.abs(i-f)),direction:d}})}function eg(e){let{visibleData:t,scales:n,layout:r}=e;if(0===t.length)return null;let a=t.at(-1);if(!a)return null;let i=B(a),o=n.x.scale(a.timestamp),l=n.y.scale(i);return o<r.priceArea.x||o>r.priceArea.x+r.priceArea.width?null:{x:o,y:l}}let ey={positive:{line:a.Mx.up},negative:{line:a.Mx.down},neutral:{line:a.Mx.unchanged}};function eM(e){switch(e){case"minute":case"hour":return"date";case"day":case"month":return"year";default:return null}}function ew(e,t,n,r,a){if(!t||0===e.length)return[];let i=[];for(let n=1;n<e.length;n++){let r=e[n-1],a=e[n];r&&a&&function(e,t,n){let r=new Date(e),a=new Date(t);return"year"===n?r.getFullYear()!==a.getFullYear():r.getFullYear()!==a.getFullYear()||r.getMonth()!==a.getMonth()||r.getDate()!==a.getDate()}(r.timestamp,a.timestamp,t)&&i.push((r.x+a.x)/2)}let o=[n,...i,r],l=[];for(let n=0;n<o.length-1;n++){let r=o[n],i=o[n+1];if(void 0===r||void 0===i)continue;let u=(r+i)/2,c=e.find(e=>e.x>=r&&e.x<=i);c&&l.push({x:u,label:function(e,t,n){let r=new Date(e);try{if("date"===t)return new Intl.DateTimeFormat(n,{month:"short",day:"numeric"}).format(r);if("year"===t)return new Intl.DateTimeFormat(n,{year:"numeric"}).format(r)}catch(e){}return"year"===t?r.getFullYear().toString():"".concat(r.getMonth()+1,"/").concat(r.getDate())}(c.timestamp,t,a),timestamp:c.timestamp})}return l}function eD(e,t){let[n,r]=e,a=r-n;if(0===a||t<=1)return[n];let i=function(e,t){if(0===e)return 1;let n=Math.floor(Math.log10(Math.abs(e))),r=Math.abs(e)/Math.pow(10,n);return(t?r<1.5?1:r<2.25?2:r<3.5?2.5:r<7?5:10:r<=1?1:r<=2?2:r<=2.5?2.5:r<=5?5:10)*Math.pow(10,n)}(a/(t-1),!0),o=Math.floor(n/i),l=Math.ceil(r/i),u=[];for(let e=o;e<=l&&u.length<100;e++)u.push(e*i);return u}function eb(e,t){if(0===e.length||t<=0)return[];let n=e[0];if(1===e.length)return n?[n.timestamp]:[];let r=(e.length-1)/(t+1),a=[];for(let n=1;n<=t;n++){let t=e[Math.round(n*r)];t&&a.push(t.timestamp)}return[...new Set(a)]}let ex={top:20,right:0,bottom:5,left:0};function eS(e){let{width:t,height:n,padding:r={},volume:a,yAxisPosition:i="right",xAxisHeight:o=45,yAxisWidth:l=60,baseFontSize:u}=e,c={...ex,...r},s=t-c.left-c.right-l,{priceHeight:f,volumeHeight:d}={priceHeight:n-c.top-c.bottom-o,volumeHeight:0},m="left"===i?c.left+l:c.left,h="left"===i?c.left:t-c.right-l,v={x:m,y:c.top,width:s,height:f},p=d>0?{x:m,y:c.top+f,width:s,height:d}:null,g={x:m,y:c.top+f+d,width:s,height:o},y={x:h,y:c.top,width:l,height:f+d},M=function(e,t,n){let r=null!=n?n:14,a=Math.sqrt(e/800*(t/400)),i=Math.round(Math.max(10,Math.min(16,r*a)));return{axisLabelSize:i,secondaryLabelSize:Math.round(Math.max(10,Math.min(16,(null!=n?n:14)*a))),charWidth:i/r*6.5,lineHeight:1.4}}(t,n,u);return{width:t,height:n,priceArea:v,volumeArea:p,xAxisArea:g,yAxisArea:y,chartWidth:s,chartHeight:f+d,typography:M}}function eA(e,t,n){return e===t?.5:(n-e)/(t-e)}function eC(e,t,n){return Math.max(t,Math.min(n,e))}function eF(e){let{clamp:t=!1,range:n}=e,{domain:r}=e,[a,i]=r,[o,l]=n;return{domain:()=>r,range:()=>n,scale:e=>{if(a===i)return(o+l)/2;let n=o+(l-o)*eA(a,i,e);return t?eC(n,Math.min(o,l),Math.max(o,l)):n},invert:e=>{if(o===l)return(a+i)/2;let n=a+(i-a)*eA(o,l,e);return t?eC(n,Math.min(a,i),Math.max(a,i)):n}}}function eT(e,t,n){return n?{start:n.start,end:n.end}:{start:e,end:t}}function eY(e,t,n){let r=e.start+t,a=e.end+t,i=!1,o=null,{dataStart:l,dataEnd:u,allowOverscroll:c,overscrollRatio:s=.1}=n,f=a-r,d=c?f*s:0;if(r<l-d){let e=l-d-r;r+=e,a+=e,i=!0,o="left"}if(a>u+d){let e=a-(u+d);r-=e,a-=e,i=!0,o="right"}return{viewport:{start:r,end:a},wasConstrained:i,reachedEdge:o}}function ek(e,t){let{dataStart:n,dataEnd:r,allowOverscroll:a,overscrollRatio:i=.1}=t,o=e.end-e.start,l=a?o*i:0,{start:u,end:c}=e,s=n-l,f=r+l;return u<s&&(c=(u=s)+o),c>f&&(u=(c=f)-o),u<s&&(u=s),{start:u,end:c}}function eI(e,t){if(0===e.length)return null;let n=0,r=e.length-1,a=null;for(;n<=r;){let i=Math.floor((n+r)/2),o=e[i];void 0!==o&&o<=t?(a=o,n=i+1):r=i-1}return a}function eE(e,t){if(0===e.length)return null;let n=0,r=e.length-1,a=null;for(;n<=r;){let i=Math.floor((n+r)/2),o=e[i];void 0!==o&&o>=t?(a=o,r=i-1):n=i+1}return a}function eH(e,t,n){var r,a;let i=t[0],o=t.at(-1);if(void 0===i||void 0===o)return e;let l=null!==(r=eE(t,e.start))&&void 0!==r?r:o,u=null!==(a=eI(t,e.end))&&void 0!==a?a:i;if(l>u){let n=function(e,t,n){let r=(t+n)/2,a=eI(e,r),i=eE(e,r);if(null!==a&&null!==i){let e=r-a<=i-r?a:i;return{snappedStart:e,snappedEnd:e}}return null!==a?{snappedStart:a,snappedEnd:a}:null!==i?{snappedStart:i,snappedEnd:i}:{snappedStart:t,snappedEnd:n}}(t,e.start,e.end);l=n.snappedStart,u=n.snappedEnd}if(u-l<n.minRange){let e=function(e,t,n,r){let a=t,i=n,o=e.indexOf(a),l=e.indexOf(i);for(;i-a<r&&(o>0||l<e.length-1);){let t=o,n=l,u=function(e,t){if(t>=e.length-1)return null;let n=e[t+1];return void 0===n?null:{value:n,idx:t+1}}(e,l);if(u&&(i=u.value,l=u.idx),i-a<r){let t=function(e,t){if(t<=0)return null;let n=e[t-1];return void 0===n?null:{value:n,idx:t-1}}(e,o);t&&(a=t.value,o=t.idx)}if(o===t&&l===n)break}return{start:a,end:i}}(t,l,u,n.minRange);l=e.start,u=e.end}return ek({start:l,end:u},n)}function eR(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15,n=arguments.length>2?arguments[2]:void 0;if(0===e.length)return[0,100];let r=1/0,a=-1/0;for(let t of e){let{lo:e,hi:n}="high"in t&&"low"in t?{lo:t.low,hi:t.high}:{lo:t.value,hi:t.value};e<r&&(r=e),n>a&&(a=n)}return(void 0!==n&&(n<r&&(r=n),n>a&&(a=n)),r===1/0||a===-1/0)?[0,100]:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15,[n,r]=e;if(n===r){let e=Math.abs(n)*t||1;return[n-e,r+e]}let a=(r-n)*t;return[n-a,r+a]}([r,a],t)}function eP(e){let t=function(e){if(0===e.length)return null;let t=1/0,n=-1/0;for(let r of e)void 0!==r.volume&&(r.volume<t&&(t=r.volume),r.volume>n&&(n=r.volume));return t===1/0||n===-1/0?null:[Math.min(t,0),n]}(e);return null!=t?t:[0,100]}function eL(e,t,n){if(n&&void 0!==t)return t;if(e.length>=1){let t=e[0];if(t)return B(t)}return 0}function eN(e,t,n,r){if("comparison"!==n||!(null==t?void 0:t.valueMode))return e.priceMovements;let a=t.valueMode;return"absolute"===a?e.priceMovements:"percentage"===a?W(e,t,r):"normalized"===a?N(e,t,r):e.priceMovements}function eW(e,t){var n,r;if(e.size<=1)return;let a=Array.from(e.entries()),i=null===(r=a[0])||void 0===r?void 0:null===(n=r[1])||void 0===n?void 0:n.priceMovements;if(!(null==i?void 0:i.length))return;let o=X(i);if(!o)return;let[l,u]=o;for(let n=1;n<a.length;n++){let r=a[n];if(!r)continue;let[i,o]=r,c=function(e,t,n){if(0===e.length)return[];let r=e.filter(e=>e.timestamp>=t&&e.timestamp<=n);if(0===r.length){var a;let r=null!==(a=e.find(e=>e.timestamp>=t))&&void 0!==a?a:e.at(-1);return r?[{...r,timestamp:t,volume:void 0},{...r,timestamp:n,volume:void 0}]:[]}let i=[...r],o=r[0],l=r.at(-1);return o&&o.timestamp>t&&i.unshift({...o,timestamp:t,volume:void 0}),l&&l.timestamp<n&&i.push({...l,timestamp:n,volume:void 0}),i}(o.priceMovements,l,u);e.set(i,{...o,priceMovements:c}),t.set(i,c)}}function eB(e,t,n,r,a,i){let o=new Map;for(let[l,u]of("comparison"===a&&eW(e,t),e)){let e=function(e,t,n,r,a){let i=e.priceMovements;(null==t?void 0:t.normalization)==="percentage"?i=W(e,null!=n?n:{}):(null==t?void 0:t.normalization)==="indexed"?i=N(e,null!=n?n:{}):"comparison"===r&&(null==n?void 0:n.valueMode)&&(i=eN(e,n,r));let o=i.map(e=>({...e}));if((null==t?void 0:t.fillGaps)&&t.interval){let e=er[t.interval],n=function(e,t){if(e.length<2)return[];let n=3*t,r=[];for(let a=1;a<e.length;a++){let i=e[a],o=e[a-1];if(!i||!o)continue;let l=i.timestamp-o.timestamp;l>t&&r.push({start:o.timestamp,end:i.timestamp,size:l,isLarge:l>n})}return r}(i,e);n.length>0&&(o=function(e,t,n){if(0===e.length)return[];if(0===t.length)return e.map(e=>({...e}));let r=[],a=0,i=t.length-1;for(let o of e)if(o)for(r.push({...o});a<t.length;){let e=t[a];if(!e)break;if(e.start===o.timestamp){if(a===i){a++;break}!function(e,t,n,r){let a=t.timestamp+r;for(;a<n.end;)e.push({timestamp:a,value:t.value,volume:void 0,isFilled:!0}),a+=r}(r,o,e,n),a++}else if(e.start>o.timestamp)break;else a++}return r}(i,n,e))}return(null==t?void 0:t.autoDownsample)!==!1&&a>0&&(o=function(e,t){let n=Math.max(10,Math.floor(t/2));return e.length<=n?e:function(e,t){if(e.length<=t)return e;let n=e[0];if(!n)return e;let r=[n],a=(e.length-2)/(t-2);for(let n=0;n<t-2;n++){let t=Math.floor((n+1)*a)+1,i=Math.floor((n+2)*a)+1,o=Math.floor((n+2)*a)+1,l=Math.min(Math.floor((n+3)*a)+1,e.length),u=r.at(-1);if(!u)continue;let c=function(e,t,n){let r={x:0,y:0},a=0;for(let i=t;i<n;i++){let t=e[i];t&&(r.x+=t.timestamp,r.y+=B(t),a++)}return a>0&&(r.x/=a,r.y/=a),r}(e,o,l),s=function(e,t,n,r,a){let i=-1,o=t,l=B(r);for(let u=t;u<n&&u<e.length;u++){let t=e[u];if(!t)continue;let n=Math.abs((r.timestamp-a.x)*(B(t)-l)-(r.timestamp-t.timestamp)*(a.y-l));n>i&&(i=n,o=u)}return o}(e,t,i,u,c),f=e[s];f&&r.push(f)}let i=e.at(-1);return i&&r.push(i),r}(e,n)}(o,a)),o}(u,n,r,a,i);o.set(l,e)}return"comparison"===a&&o.size>1&&(null==n?void 0:n.interval)?function(e){let t=Array.from(e.keys());if(0===t.length)return e;let n=t[0];if(!n)return e;let r=e.get(n);if(!r||0===r.length)return e;let a=r.map(e=>e.timestamp),i=new Map;i.set(n,r);for(let n=1;n<t.length;n++){let r=t[n];if(!r)continue;let o=e.get(r);if(!o||0===o.length){i.set(r,[]);continue}i.set(r,function(e,t){var n,r;let a=[],i=0,o=null!==(r=null===(n=e[0])||void 0===n?void 0:n.value)&&void 0!==r?r:0;for(let n of t){for(;i<e.length-1;){let t=e[i+1];if(!t||t.timestamp>n)break;let r=e[i];r&&(o=r.value),i++}let t=e[i];(null==t?void 0:t.timestamp)===n?(a.push({...t}),o=t.value):a.push({timestamp:n,value:o,volume:void 0,isFilled:!0})}return a}(o,a))}return i}(o):o}function eX(e){return[...new Set(Array.from(e.seriesData.values()).flat().map(e=>e.timestamp))].sort((e,t)=>e-t)}function ez(e){var t;let n=X(Array.from(e.seriesData.values()).flat());if(!n)return{minRange:6e4,maxRange:864e5,dataStart:0,dataEnd:1e3};let[r,a]=n,i=a-r,o=e.viewportEndBuffer;return{minRange:(null===(t=e.dataConfig)||void 0===t?void 0:t.interval)?5*er[e.dataConfig.interval]:.005*i,maxRange:i*(1+o),dataStart:r,dataEnd:function(e,t,n,r){var a;if(!(null===(a=e.dataConfig)||void 0===a?void 0:a.interval))return t+n*r;let i=er[e.dataConfig.interval];if(i>18e5)return t+n*r;let o=t+n*r,l=o%i;return 0===l?o:o+(i-l)}(e,a,i,o),allowOverscroll:!1,overscrollRatio:0}}function eV(e){var t,n,r,a,i,o;let l;let c=new Map;["data","viewport","scales","hover","layout","config"].forEach(e=>c.set(e,new Set));let s=new Map,f=new Map;e.series.forEach(e=>{s.set(e.id,[...e.priceMovements]),f.set(e.id,e)}),"comparison"===e.mode&&eW(f,s);let d=eS({width:e.width,height:e.height,padding:e.padding,volume:e.volumeEnabled?{enabled:!0,heightRatio:e.volumeHeightRatio}:void 0,yAxisPosition:e.yAxisPosition,baseFontSize:e.baseFontSize}),m=Array.from(s.values()).flat(),h=X(m),[v,p]=null!=h?h:[0,1e3],g=!1===e.viewportEndBuffer?0:null!==(r=e.viewportEndBuffer)&&void 0!==r?r:.1,y=p-v,M=e.initialViewport?eT(v,p,e.initialViewport):eT(v,p+y*g),w=eF({domain:[M.start,M.end],range:[d.priceArea.x,d.priceArea.x+d.priceArea.width]});if("comparison"===e.mode&&(null===(t=e.comparisonConfig)||void 0===t?void 0:t.valueMode)&&"absolute"!==e.comparisonConfig.valueMode){let t=[];for(let n of e.series){let r=eN(n,e.comparisonConfig,e.mode,M);t.push(...r)}l=t}else l=m;let D=l.filter(e=>e.timestamp>=M.start&&e.timestamp<=M.end),b=e.series[0],x="single"===e.mode&&e.usePreviousCloseAsBaseline?null==b?void 0:b.previousClose:void 0,S=eR(D.length>0?D:l,.15,x),A=eL(D.length>0?D:l,x,null!==(a=e.usePreviousCloseAsBaseline)&&void 0!==a&&a),C=eF({domain:S,range:[d.priceArea.y+d.priceArea.height,d.priceArea.y]}),T=null,Y=null;if(e.volumeEnabled){let e=m.filter(e=>e.timestamp>=M.start&&e.timestamp<=M.end);Y=eP(e.length>0?e:m);let t=d.priceArea.y+.7*d.priceArea.height;T=eF({domain:Y,range:[d.priceArea.y+d.priceArea.height,t]})}let k=eB(f,s,e.dataConfig,e.comparisonConfig,e.mode,d.priceArea.width),I=[];(null===(n=e.dataConfig)||void 0===n?void 0:n.showTimeSeparators)!==!1&&(I=eo(M.start,M.end));let E={mode:e.mode,chartType:e.chartType,theme:null!==(i=e.theme)&&void 0!==i?i:"light",comparisonConfig:e.comparisonConfig,dataConfig:e.dataConfig,intraday:null!==(o=e.intraday)&&void 0!==o&&o,viewportEndBuffer:g,seriesData:s,seriesMeta:f,processedData:k,timeSeparators:I,layout:d,viewport:M,xScale:w,yScale:C,volumeScale:T,yDomain:S,volumeDomain:Y,baseValue:A,hover:{visible:!1,screenX:0,screenY:0,chartX:0,chartY:0,timestamp:null,nearestPoints:new Map},isDragging:!1,isPinching:!1},H=(0,u.Tg)(),R=e=>{var t,n,r;let a=null!==(r=null===(t=c.get(e))||void 0===t?void 0:t.size)&&void 0!==r?r:0;H.debug("dispatch('".concat(e,"'), listeners: ").concat(a)),null===(n=c.get(e))||void 0===n||n.forEach(e=>e())},L=new Set,N=!1,W=()=>{N=!1;let e=[...L];L.clear(),e.forEach(e=>R(e))},B=e=>{L.add(e),N||(N=!0,queueMicrotask(W))},z=new Map,V=e=>{let t=z.get(e);t||(t={pending:!1,frameId:null},z.set(e,t)),t.pending||(t.pending=!0,"undefined"!=typeof requestAnimationFrame?t.frameId=requestAnimationFrame(()=>{R(e),t&&(t.pending=!1)}):t.frameId=globalThis.setTimeout(()=>{R(e),t&&(t.pending=!1)},16))},U=()=>{var t,n;let r=function(e,t){var n;if("comparison"===e.mode&&(null===(n=e.comparisonConfig)||void 0===n?void 0:n.valueMode)&&"absolute"!==e.comparisonConfig.valueMode){let t=[];for(let[,n]of e.seriesMeta){let r=eN(n,e.comparisonConfig,e.mode,e.viewport);t.push(...r)}return t}return Array.from(e.seriesData.values()).flat()}(E,0),a=r.filter(e=>e.timestamp>=E.viewport.start&&e.timestamp<=E.viewport.end);E.xScale=function(e){var t;let n=[e.layout.priceArea.x,e.layout.priceArea.x+e.layout.priceArea.width];if(null===(t=e.dataConfig)||void 0===t?void 0:t.fillGaps)return eF({domain:[e.viewport.start,e.viewport.end],range:n});let r=e.seriesMeta.keys().next().value,a=r?e.processedData.get(r):void 0;if(!a||a.length<2)return eF({domain:[e.viewport.start,e.viewport.end],range:n});let{data:i}=F(a,e.viewport,1);return i.length<2?eF({domain:[e.viewport.start,e.viewport.end],range:n}):function(e,t){let[n,r]=t;if(e.length<2)return eF({domain:1===e.length?[e[0],e[0]]:[0,1],range:t});let a=e[0],i=e.at(-1),o=(r-n)/(e.length-1);return{domain:()=>[a,i],range:()=>t,scale:t=>n+function(t){if(t<=a)return 0;if(t>=i)return e.length-1;let n=0,r=e.length-1;for(;n<r;){let a=Math.floor((n+r)/2);e[a]<t?n=a+1:r=a}return 0===n?0:Math.abs(t-e[n-1])<=Math.abs(e[n]-t)?n-1:n}(t)*o,invert:t=>{let r=Math.max(0,Math.min(e.length-1,(t-n)/o)),a=Math.floor(r),i=Math.min(a+1,e.length-1),l=r-a;return e[a]*(1-l)+e[i]*l}}}(i.map(e=>e.timestamp),n)}(E),(null===(t=E.dataConfig)||void 0===t?void 0:t.showTimeSeparators)!==!1&&(E.timeSeparators=eo(E.viewport.start,E.viewport.end));let i=E.seriesMeta.values().next().value,o="single"===E.mode&&e.usePreviousCloseAsBaseline?null==i?void 0:i.previousClose:void 0,l=eR(a.length>0?a:r,.15,o);E.yDomain=l,E.yScale=eF({domain:l,range:[E.layout.priceArea.y+E.layout.priceArea.height,E.layout.priceArea.y]}),E.baseValue=eL(a.length>0?a:r,o,null!==(n=e.usePreviousCloseAsBaseline)&&void 0!==n&&n);let u=function(e,t){if(!t.volumeEnabled)return null;let n=Array.from(e.seriesData.values()).flat(),r=n.filter(t=>t.timestamp>=e.viewport.start&&t.timestamp<=e.viewport.end),a=eP(r.length>0?r:n),i=e.layout.priceArea.y+.7*e.layout.priceArea.height;return{volumeDomain:a,volumeScale:eF({domain:a,range:[e.layout.priceArea.y+e.layout.priceArea.height,i]})}}(E,e);u&&(E.volumeDomain=u.volumeDomain,E.volumeScale=u.volumeScale)},K=()=>{E.processedData=eB(E.seriesMeta,E.seriesData,E.dataConfig,E.comparisonConfig,E.mode,E.layout.priceArea.width)};return{getState:()=>E,getSeriesData:e=>{var t;return null!==(t=E.seriesData.get(e))&&void 0!==t?t:[]},getVisibleData:e=>{if(E.dataConfig){let t=E.processedData.get(e);return t?F(t,E.viewport,0).data:[]}let t=E.seriesMeta.get(e);return t?F(eN(t,E.comparisonConfig,E.mode,E.viewport),E.viewport,0).data:[]},getRenderableData:e=>{if(E.dataConfig){var t;return null!==(t=E.processedData.get(e))&&void 0!==t?t:[]}let n=E.seriesMeta.get(e);return n?F(eN(n,E.comparisonConfig,E.mode,E.viewport),E.viewport,1).data:[]},getHoverState:()=>E.hover,getViewport:()=>E.viewport,getScales:()=>({x:E.xScale,y:E.yScale,volume:E.volumeScale}),getLayout:()=>E.layout,getTimeSeparators:()=>E.timeSeparators,subscribe:(e,t)=>{var n;return null===(n=c.get(e))||void 0===n||n.add(t),()=>{var n;return null===(n=c.get(e))||void 0===n?void 0:n.delete(t)}},subscribeMany:(e,t)=>(e.forEach(e=>{var n;return null===(n=c.get(e))||void 0===n?void 0:n.add(t)}),()=>e.forEach(e=>{var n;return null===(n=c.get(e))||void 0===n?void 0:n.delete(t)})),appendData:(t,n)=>{var r,a,i,o,l;let u=function(e,t){if(0===t.length)return e;if(0===e.length)return[...t].sort((e,t)=>e.timestamp-t.timestamp);if(!P(e)||!P(t)){let n=new Map;for(let t of e)n.set(t.timestamp,t);for(let e of t)n.set(e.timestamp,e);return Array.from(n.values()).sort((e,t)=>e.timestamp-t.timestamp)}let n=[],r=0,a=0;for(;r<e.length&&a<t.length;){let i=e[r],o=t[a];if(!i||!o)break;i.timestamp<o.timestamp?(n.push(i),r++):(i.timestamp>o.timestamp?n.push(o):(n.push(o),r++),a++)}for(;r<e.length;){let t=e[r];t&&n.push(t),r++}for(;a<t.length;){let e=t[a];e&&n.push(e),a++}return n}(null!==(i=E.seriesData.get(t))&&void 0!==i?i:[],n);(null===(r=e.realtime)||void 0===r?void 0:r.maxPoints)&&(o=u,l=e.realtime.maxPoints,u=o.length<=l?o:o.slice(o.length-l)),E.seriesData.set(t,u);let c=E.seriesMeta.get(t);c&&E.seriesMeta.set(t,{...c,priceMovements:u}),E.dataConfig&&K(),U(),(null===(a=e.realtime)||void 0===a?void 0:a.throttleMs)?(V("data"),V("scales")):(B("data"),B("scales"));let s=function(e,t,n,r){var a,i,o;if(!(null===(a=t.realtime)||void 0===a?void 0:a.autoScroll)||0===e.length)return null;let l=e.at(-1);if(!l)return null;let u=n.end-n.start,c=null!==(i=t.realtime.bufferRatio)&&void 0!==i?i:.1,s=u*c,f=l.timestamp+s;return f<=n.end?null:"grow"===(null!==(o=t.realtime.autoScrollBehavior)&&void 0!==o?o:"grow")?function(e,t,n,r){let a=e.end-e.start;return ek({start:e.start,end:t+a*n},r)}(n,l.timestamp,c,r):ek({start:f-u,end:f},r)}(u,e,E.viewport,ez(E));s&&(E.viewport=s,U(),R("viewport"))},setSeriesData:(e,t)=>{E.seriesData.set(e,t);let n=E.seriesMeta.get(e);n&&E.seriesMeta.set(e,{...n,priceMovements:t}),E.dataConfig&&K(),U(),B("data"),B("scales")},addSeries:e=>{E.seriesData.set(e.id,[...e.priceMovements]),E.seriesMeta.set(e.id,e),E.dataConfig&&K(),U(),B("data"),B("scales")},removeSeries:e=>{E.seriesData.delete(e),E.seriesMeta.delete(e),E.processedData.delete(e),E.dataConfig&&"comparison"===E.mode&&K(),U(),B("data"),B("scales")},setViewport:e=>{let t=eX(E),n=ez(E);E.viewport=eH(e,t,n),U(),B("viewport"),B("scales")},setViewportWithoutSnap:e=>{let t=ez(E),n=e.end-e.start,r=Math.max(t.minRange,Math.min(t.maxRange,n)),a=e.start,i=a+r;a<t.dataStart&&(i=(a=t.dataStart)+r),i>t.dataEnd&&(a=(i=t.dataEnd)-r),E.viewport={start:a,end:i},U(),B("viewport"),B("scales")},pan:e=>{let[t,n]=E.xScale.domain(),[r,a]=E.xScale.range(),i=ez(E),o=eY(E.viewport,-((n-t)/(a-r)*e),i),l=eX(E);E.viewport=eH(o.viewport,l,i),U(),B("viewport"),B("scales")},panWithoutSnap:e=>{let[t,n]=E.xScale.domain(),[r,a]=E.xScale.range(),i=ez(E),o=eY(E.viewport,-((n-t)/(a-r)*e),i);E.viewport=o.viewport,U(),B("viewport"),B("scales")},snapViewport:()=>{let e=eX(E),t=ez(E);E.viewport=eH(E.viewport,e,t),U(),B("viewport"),B("scales")},zoom:(e,t)=>{let n=E.xScale.invert(t),r=ez(E),a=function(e,t,n,r){let a=e.end-e.start,i=a/t,o=!1,l=null;i<r.minRange&&(i=r.minRange,o=!0,l="min"),i>r.maxRange&&(i=r.maxRange,o=!0,l="max");let u=(n-e.start)/a,c=n-i*u,s=c+i;return{viewport:ek({start:c,end:s},r),wasConstrained:o,reachedLimit:l}}(E.viewport,e,n,r);E.viewport=a.viewport,U(),B("viewport"),B("scales")},resetView:()=>{let e=X(Array.from(E.seriesData.values()).flat());e&&(E.viewport={start:e[0],end:e[1]},U(),R("viewport"),R("scales"))},setHover:e=>{Object.assign(E.hover,e),V("hover")},clearHover:()=>{E.hover.visible=!1,E.hover.nearestPoints.clear(),R("hover")},setDimensions:(t,n,r)=>{let a=eS({width:t,height:n,padding:e.padding,volume:e.volumeEnabled?{enabled:!0,heightRatio:e.volumeHeightRatio}:void 0,yAxisPosition:e.yAxisPosition,baseFontSize:null!=r?r:e.baseFontSize});E.layout=a,U(),B("layout"),B("scales")},setDragging:e=>{E.isDragging=e},setPinching:e=>{E.isPinching=e},destroy:()=>{c.forEach(e=>e.clear()),z.forEach(e=>{e.frameId&&(cancelAnimationFrame?cancelAnimationFrame(e.frameId):clearTimeout(e.frameId))})}}}}}]); |