1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"80ef2cdf9e309e2aad9550e3141d0d77395a37e3"},e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];if(null!=a)for(var n in a)a.hasOwnProperty(n)&&(e[n]=a[n])}return e}({},e._sentryModuleMetadata[(new e.Error).stack],{"_sentryBundlerPluginAppKey:finviz":!0});var t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0c2cf891-64fd-4b33-9b25-daf48b58b8d1",e._sentryDebugIdIdentifier="sentry-dbid-0c2cf891-64fd-4b33-9b25-daf48b58b8d1")}catch(e){}}(),(self.webpackChunkFinvizModern=self.webpackChunkFinvizModern||[]).push([[5904],{84355(e,t,a){a.r(t),a.d(t,{default:()=>te});var n=a(63696),r=a(32443),s=a(39393),i=a(57490),o=a(34007),l=a(96267),c=a(57591),d=a(63496),u=a(23916),m=a(85665),x=a(97233),g=a(75216),h=a(16299),v=a(88014),y=a(54066),f=a(92815),p=a(35721);function j(e,t){const[a,n]=e?.split(t?"S":"Q")??[],r=Number.parseInt(a),s=Number.parseInt(n);return isNaN(r)||isNaN(s)?{year:null,period:null}:{year:r,period:s}}function b(e){return e<1.5?"Strong Buy":e<=2.5?"Buy":e<3.5?"Hold":e<=4.5?"Sell":"Strong Sell"}function w(e,t){return t&&null!==e?e/t*100-100:void 0}var N=a(62540);function k(e){return e&&e>0?y.L.Positive:y.L.Negative}function D(e){switch(e){case"Strong Buy":case"Buy":return y.L.Positive;case"Sell":case"Strong Sell":return y.L.Negative;default:return y.L.Default}}function A(e){let{recommendationsData:t,targetPrice:a,targetPriceLow:n,targetPriceHigh:r,targetPriceAnalysts:s,lastClose:i}=e;const o=w(n,i),l=w(a,i),c=w(r,i);let d="",u=null,m=null;if(t&&t.length>0){const e=t[t.length-1];d=b((1*e.buy+2*e.overweight+3*e.hold+4*e.underweight+5*e.sell)/e.analysts),u=g.H(e.recomDate),m=(0,v.Qi)({value:h.e(u,1),outFormat:v.ow.MonthShortYear})}return(0,N.jsxs)(f.N,{className:"my-6",children:[(0,N.jsx)(y.y,{datapoint:d,label:`Analyst Consensus (${s})`,variant:D(d),sublabel:u&&(0,v.Qi)({value:u,outFormat:v.ow.MonthShortDayNumYearFull})}),(0,N.jsx)(y.y,{datapoint:(0,p.gp)(n),label:"Low Target",subdatapoint:(0,p.ZV)(o,p.xM),sublabel:m,variant:k(o)}),(0,N.jsx)(y.y,{datapoint:(0,p.gp)(a),label:"Avg Target",subdatapoint:(0,p.ZV)(l,p.xM),sublabel:m,variant:k(l)}),(0,N.jsx)(y.y,{datapoint:(0,p.gp)(r),label:"High Target",subdatapoint:(0,p.ZV)(c,p.xM),sublabel:m,variant:k(c)})]})}var I=a(34648),M=a(62412),P=(a(14846),a(94364),a(36409)),S=a(63160),T=a(47530),C=a(55735),F=a(90147),H=a(80672),L=a(24931);const K={...d.jX,timeframe:u.Z4.quarterly};var R=a(4452),Y=a.n(R);function _(e){let{className:t,name:a,value:n}=e;return(0,N.jsxs)("div",{className:"flex flex-1 items-center",children:[(0,N.jsx)("div",{className:Y()(t,"mr-1.5 h-3 w-3 rounded-sm border bg-current dark:opacity-50")}),a,": ",n]})}function Q(e){let{row:t}=e;return(0,N.jsxs)("div",{className:"mt-2 flex justify-between text-2xs text-default tabular-nums",style:{paddingRight:60},children:[(0,N.jsxs)("div",{className:"flex-1 text-muted-2",children:[t.analysts," Analysts"]}),(0,N.jsx)(_,{name:"Strong Buy",value:t.buy,className:"border-green-400 text-green-200 dark:text-green-400"}),(0,N.jsx)(_,{name:"Buy",value:t.overweight,className:"border-green-300 text-green-100 dark:border-green-600 dark:text-green-500"}),(0,N.jsx)(_,{name:"Hold",value:t.hold,className:"border-gray-300 text-white dark:border-gray-600 dark:text-gray-800"}),(0,N.jsx)(_,{name:"Sell",value:t.underweight,className:"border-red-300 text-red-100 dark:border-red-600 dark:text-red-600"}),(0,N.jsx)(_,{name:"Strong Sell",value:t.sell,className:"border-red-400 text-red-200 dark:text-red-500"}),(0,N.jsxs)("div",{className:"flex w-46 shrink-0 items-center whitespace-pre",children:["Consensus:"," ",(0,N.jsxs)("span",{className:"font-semibold",children:[b(t.consensus)," (",t.consensus.toFixed(2),")"]})]}),(0,N.jsx)("div",{className:"flex-1 text-right text-muted-2",children:(0,v.Qi)({value:g.H(t.date),outFormat:v.ow.MonthShortDayNumYearFull})})]})}const E={top:0,right:0,left:0,bottom:0},B={strokeDivider:!0,stackId:"1",strokeWidth:2,type:"monotone",yAxisId:"yAxisRecommendations"};function G(e){let{recommendationsData:t,startingTimestamp:a,endingTimestamp:r,activeIndex:s,onSetActiveIndex:i}=e;const o=n.useMemo(()=>t.map(e=>{let{recomDate:t,...a}=e;return{...a,date:t,timestamp:(0,p.V7)(t),consensus:(1*a.buy+2*a.over
1weight+3*a.hold+4*a.underweight+5*a.sell)/a.analysts}}),[t]);return 0===o.length?null:(0,N.jsxs)("div",{children:[(0,N.jsx)(P.u,{height:100,children:(0,N.jsxs)(S.X,{data:o,stackOffset:"expand",syncId:"targetPriceAndRecommendations",margin:E,onMouseMove:e=>i(e.activeTooltipIndex??-1),onMouseLeave:()=>i(-1),children:[(0,N.jsx)(C.d,{}),(0,N.jsx)(v.WX,{hide:!0,dataKey:"timestamp",scale:"time",type:"number",domain:[a,r]}),(0,N.jsx)(L.h,{yAxisId:"yAxisConsensus",domain:[-2,2],interval:0,orientation:"right",tickCount:5,width:60,tickFormatter:()=>""}),(0,N.jsx)(L.h,{hide:!0,orientation:"right",yAxisId:"yAxisRecommendations"}),(0,N.jsx)(T.G,{...B,dataKey:"sell",color:"red",className:"dark:text-red-500"}),(0,N.jsx)(T.G,{...B,dataKey:"underweight",color:"redMuted"}),(0,N.jsx)(T.G,{...B,dataKey:"hold",fillOpacity:0}),(0,N.jsx)(T.G,{...B,dataKey:"overweight",color:"greenMuted"}),(0,N.jsx)(T.G,{...B,dataKey:"buy",color:!1,className:"text-green-300 dark:text-green-400"}),(0,N.jsx)(F.N,{yAxisId:"yAxisConsensus",dataKey:"consensus",color:"darkGray"}),(0,N.jsx)(H.m_,{content:H.HT})]})}),(0,N.jsx)(Q,{row:s in o?o[s]:o[o.length-1]})]})}a(15724),a(69655);var W=a(130),Z=a(24752),V=a(4530);const O=Math.floor(10);function X(e){const{chartWidth:t,color:a="blue",text:n,x:r,value:s,y:i}=e;if(void 0===r||void 0===i)return null;const o=e.isActive?r:t-4,l=i>=O?i:O,c=o>t-250,d=c?o-5-200:o+5;return(0,N.jsx)("foreignObject",{x:d,y:l-10,width:200,height:20,children:(0,N.jsxs)("div",{className:Y()("flex items-center gap-1 font-sans text-2xs leading-normal tabular-nums",{"flex-row-reverse":c}),children:[(0,N.jsx)("div",{className:"flex min-w-12",children:(0,N.jsx)("div",{className:Y()(V.yi[a],"rounded-sm bg-current px-0.5"),children:(0,N.jsx)("span",{className:"text-white",children:(0,p.tN)(s)})})}),(0,N.jsx)("span",{className:Y()("h-min rounded-sm bg-white/70 px-0.5 leading-tight text-gray-600 backdrop-blur-xs backdrop-saturate-150 dark:bg-gray-800/70 dark:text-white",{"text-right":c}),children:n})]})})}function z(e){const t=e.isActive?e.activeIndex:e.lastIndex;if(!e.date||e.index!==t)return null;const a=(0,v.Qi)({value:e.date,outFormat:v.ow.MonthShortDayNumYearFull});return(0,N.jsx)(X,{...e,text:a})}function $(e){const t=e.isActive?e.activeIndex:e.lastIndex;if(!e.value||e.index!==t)return null;let a;if(e.isActive&&e.price?a=w(e.value,e.price):!e.isActive&&e.lastPrice&&(a=w(e.value,e.lastPrice)),void 0===a)return null;let n=e.color;return e.computeColor&&(n=a&&a>0?"darkGreen":"darkRed"),(0,N.jsx)(X,{...e,color:n,text:`${e.name} ${(0,p.ZV)(a,p.xM)}`})}function q(e){let{recommendationsData:t,startingTimestamp:a,endingTimestamp:r,activeIndex:s,onSetActiveIndex:i}=e;const{isTooltipActive:o}=n.useContext(I.lo),[l,c]=(0,n.useState)(0),d=n.useMemo(()=>{const e=[];return t.forEach(t=>{e.push({...t,date:t.recomDate,low:t.targetPriceLow,lowHigh:[t.targetPriceLow,t.targetPriceHigh],timestamp:(0,p.V7)(t.recomDate)})}),e},[t]),u=n.useMemo(()=>(0,Z.Q0)(a,r),[a,r]),m=d.length-1;if(m<0)return null;const x=d[m].price;return(0,N.jsx)("div",{children:(0,N.jsx)(P.u,{width:"100%",height:311,onResize:e=>c(e),children:(0,N.jsxs)(S.X,{data:d,syncId:"targetPriceAndRecommendations",margin:{top:0,right:0,left:0,bottom:0},onMouseMove:e=>i(e.activeTooltipIndex??-1),onMouseLeave:()=>i(-1),children:[(0,N.jsx)(C.d,{vertical:!0}),(0,N.jsx)(v.WX,{type:"number",scale:"time",dataKey:"timestamp",domain:[a,r],ticks:u,tickFormatter:e=>(0,v.Qi)({value:e,outFormat:v.ow.MonthSingleChar,breakOnYear:!0})}),(0,N.jsx)(L.h,{interval:"preserveStartEnd",orientation:"right",tickCount:9,width:60,tickFormatter:e=>(0,p.tN)(e)}),(0,N.jsx)(T.G,{connectNulls:!0,dataKey:"lowHigh",color:"orangeLight",fillOpacity:.12,children:(0,N.jsx)(W.Z,{position:"center",content:(0,N.jsx)($,{activeIndex:s,computeColor:!0,chartWidth:l,isActive:o,lastIndex:m,lastPrice:x,name:"High",price:d[s]?.price})})}),(0,N.jsx)(F.N,{dataKey:"low",color:"transparent",children:(0,N.jsx)(W.Z,{position:"center",content:(0,N.jsx)($,{activeIndex:s,computeColor:!0,chartWidth:l,isActive:o,lastIndex:m,lastPrice:x,name:"Low",price:d[s]?.price})})}),(0,N.jsx)(F.N,{dataKey:"price",color:"darkBlue",children:(0,N.jsx)(W.Z,{position:"center",content:(0,N.jsx)(z,{activeIndex:s,color:"darkBlue",chartWidth:l,date:o?d[s]?.date:d[m].date,isActive:o,lastIndex:m})})}),(0,N.jsx)(F.N,{dataKey:"targetPrice",name:"Avg",color:"darkYellow",children:(0,N.jsx)(W.Z,{position:"center",content:(0,N.jsx)($,{activeIndex:s,color:"darkYellow",chartWidth:l,isActive:o,lastIndex:m,lastPrice:x,name:"Avg",price:d[s]?.price})})}),(0,N.jsx)(H.m_,{content:H.HT})]})})})}function J(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()}function U(e){let{recommendationsData:t}=e;const[a,r]=n.useState(-1),[s,i]=n.useMemo(()=>[J((0,g.H)(t[0]?.recomDate)),J((0,g.H)(t[t.length-1]?.recomDate))],[t]);return 0===t.length?null:(0,N.jsxs)("div",{children:[(0,N.jsx)("div",{className:"mb-1.5 space-y-1.5",children:(0,N.jsx)(M.e,{children:"Target Price and Recommendations"})}),(0,N.jsxs)(I.uR,{isHoverHighlight:!1,children:[(0,N.jsx)(q,{recommendationsData:t,startingTimestamp:s,endingTimestamp:i,activeIndex:a,onSetActiveIndex:r}),(0,N.jsx)(G,{recommendationsData:t,startingTimestamp:s,endingTimestamp:i,activeIndex:a,onSetActiveIndex:r})]})]})}function ee(){const{data:e}=(0,i.TT)(),{settings:t}=(0,r.Fb)(),a=(l=e?.earningsData??[],!!l[0]?.fiscalPeriod.includes("S"));var l;const g=n.useMemo(()=>
1{if(null===e)return null;const t=(e,t)=>{const{year:n,period:r}=j(e.fiscalPeriod,a),{year:s,period:i}=j(t.fiscalPeriod,a);return[n,s,r,i].includes(null)?0:n===s?r-i:n-s},n=[...e?.earningsData??[]].sort(t),r=[...e?.earningsAnnualData??[]].sort(t);return{...e,earningsData:n,earningsAnnualData:r}},[e,a]);(0,s._)({categoryAreasCounts:[2,2,2],dataKeys:[u.hD.mainChange,u.hD.mainChangePct,u.hD.extraChangeYoYonQoQ,u.hD.extraChangePctYoYonQoQ]});const h=!!g?.earningsData?.length,v=!!g?.earningsAnnualData?.length,y=!!g&&!!g.recommendationsData.length&&(v||h);return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(x.V,{leftContent:(0,N.jsx)(m.L,{}),rightContent:(0,N.jsx)(c.A,{timeframe:t.timeframe,isSemiAnnual:a,hasAnnualData:v,hasQuarterlyData:h})}),y?(0,N.jsxs)("div",{className:"fv-container mb-4",children:[(0,N.jsx)(A,{recommendationsData:g.recommendationsData,targetPrice:g?.targetPrice,targetPriceLow:g?.targetPriceLow,targetPriceHigh:g.targetPriceHigh,targetPriceAnalysts:g?.targetPriceAnalysts,lastClose:g?.lastClose}),(0,N.jsxs)("div",{className:"space-y-10",children:[(0,N.jsx)(U,{recommendationsData:g.recommendationsData}),[d.ou.Eps,d.ou.EpsGaap,d.ou.Revenue].map(e=>(0,N.jsx)(o.M,{data:g,earningsWidgetCategory:e,priceReactionData:g?.priceReactionData,settings:t},e))]})]}):(0,N.jsx)("div",{className:"fv-container flex h-60 items-center justify-center text-muted",children:"Forecast data are not available for this stock."})]})}function te(){return(0,N.jsxs)(r.lP,{defaultSettings:K,cookieKey:"forecastSettings",children:[(0,N.jsx)(l.T,{defaultSettings:K,keysReplace:[["earningsTimeframe","timeframe"]]}),(0,N.jsx)(ee,{})]})}}}]); 2//# sourceMappingURL=5904.v1.d5d32f1d.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.