{"version":3,"file":"8803.04f1cd18.js","mappings":"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","sources":["webpack://@finviz/website/./js/main/components/SubMenu/SubMenu.tsx","webpack://@finviz/website/./js/main/components/SubMenu/SubMenuTabs.tsx","webpack://@finviz/website/./js/main/components/chart/Area.tsx","webpack://@finviz/website/./js/main/components/chart/CartesianGrid.tsx","webpack://@finviz/website/./js/main/components/chart/LineDot.tsx","webpack://@finviz/website/./js/main/components/chart/ManualGrid.tsx","webpack://@finviz/website/./js/main/components/chart/XAxis.tsx","webpack://@finviz/website/./js/main/components/financials-table/constants.ts","webpack://@finviz/website/./js/main/components/financials-table/useFinancialsTablePersistScrollPosition.ts","webpack://@finviz/website/./js/main/components/keystats/KeyStat.tsx","webpack://@finviz/website/./js/main/components/keystats/KeyStats.tsx","webpack://@finviz/website/./js/main/modules/earnings-common/charts/PerformanceTooltip.tsx","webpack://@finviz/website/./js/main/modules/earnings-common/charts/EarningsChart.tsx","webpack://@finviz/website/./js/main/modules/earnings-common/useTableColumns.tsx","webpack://@finviz/website/./js/main/modules/earnings-common/EarningsWidget.tsx","webpack://@finviz/website/./js/main/modules/earnings-common/TempRenameSettingsProperties.tsx","webpack://@finviz/website/./js/main/modules/earnings-common/WidgetHeader.tsx","webpack://@finviz/website/./js/main/modules/earnings-common/WidgetSettingsSection.tsx","webpack://@finviz/website/./js/main/modules/earnings-common/constants.ts","webpack://@finviz/website/./js/main/modules/earnings-common/types.ts","webpack://@finviz/website/./js/main/modules/earnings-common/utils.ts","webpack://@finviz/website/./js/main/modules/earnings/HighlightedBox.tsx","webpack://@finviz/website/./js/main/modules/earnings/constants.ts","webpack://@finviz/website/./js/main/modules/earnings/types.ts","webpack://@finviz/website/./js/main/modules/earnings/RsiValue.tsx","webpack://@finviz/website/./js/main/modules/earnings/utils.tsx","webpack://@finviz/website/./js/main/modules/quote/components/QuoteFinancialsTabMenu.tsx","webpack://@finviz/website/./js/main/modules/quote/components/QuoteStickySubMenu.tsx","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/CartesianGrid.js"],"sourcesContent":["import classNames from 'classnames'\r\nimport { isRedesignEnabled } from 'finviz-charts/app/utils'\r\nimport * as React from 'react'\r\n\r\ninterface Props extends React.HTMLProps {\r\n leftContent?: React.ReactNode\r\n middleContent?: React.ReactNode\r\n rightContent?: React.ReactNode\r\n}\r\n\r\nexport function SubMenu({ leftContent, middleContent, rightContent, ...props }: Props) {\r\n return (\r\n
\r\n
\r\n \r\n {leftContent}\r\n
\r\n {middleContent &&
{middleContent}
}\r\n
{rightContent}
\r\n
\r\n \r\n )\r\n}\r\n","import { Link } from 'react-router-dom'\r\n\r\nimport { Button, ButtonSizeType } from '../button'\r\n\r\ninterface Props {\r\n items: Array<{ label: string; href: string; isActive: boolean; reloadDocument?: boolean }>\r\n size?: ButtonSizeType\r\n}\r\n\r\nexport function SubMenuTabs({ items, size = 'medium' }: Props) {\r\n return (\r\n
\r\n {items.map(({ label, href, isActive, reloadDocument }) => (\r\n \r\n {label}\r\n \r\n ))}\r\n
\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\nimport { Area as RechartsArea } from 'recharts'\r\n\r\nimport { CHART_ITEM_COLORS, ChartItemColorType } from './constants'\r\n\r\ninterface AreaGradientProps {\r\n id: string\r\n color: ChartItemColorType\r\n}\r\n\r\nexport function AreaGradient({ id, color }: AreaGradientProps) {\r\n const gradientColor = CHART_ITEM_COLORS[color] ?? CHART_ITEM_COLORS.blue\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\ninterface AreaProps extends React.PropsWithoutRef, 'color'>> {\r\n color?: ChartItemColorType | false\r\n strokeDivider?: boolean\r\n}\r\n\r\nexport class Area extends React.Component {\r\n static getComposedData = RechartsArea.getComposedData\r\n static displayName = RechartsArea.displayName\r\n\r\n static defaultProps = {\r\n ...RechartsArea.defaultProps,\r\n type: 'linear',\r\n dot: false,\r\n activeDot: false,\r\n isAnimationActive: false,\r\n connectNulls: false,\r\n stroke: null,\r\n fill: null,\r\n fillOpacity: 0.5,\r\n }\r\n\r\n render() {\r\n const { color = 'blue', strokeDivider, ...props } = this.props\r\n\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\nimport { CartesianGrid as RechartsCartesianGrid } from 'recharts'\r\n\r\nimport { CARTESIAN_STROKE } from './constants'\r\n\r\nexport function CartesianGrid({\r\n vertical = false,\r\n ...props\r\n}: React.PropsWithoutRef>) {\r\n return (\r\n \r\n )\r\n}\r\n\r\nCartesianGrid.displayName = RechartsCartesianGrid.displayName\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\nimport { Dot, DotProps } from 'recharts'\r\n\r\nimport { ChartWrapperContext } from './ChartWrapper'\r\nimport { CHART_ITEM_COLORS, ChartItemColorType } from './constants'\r\n\r\ninterface LineDotProps extends DotProps {\r\n dataKey?: string\r\n value?: unknown\r\n color?: ChartItemColorType\r\n isActive?: boolean\r\n}\r\n\r\nexport function LineDot({ cx, cy, r = 4, dataKey, color, className, isActive, value }: LineDotProps) {\r\n const { setActiveKey } = React.useContext(ChartWrapperContext)\r\n const lineColor = color ? CHART_ITEM_COLORS[color] : undefined\r\n\r\n if (value === null) return null\r\n\r\n return (\r\n setActiveKey(dataKey ?? null)}\r\n onMouseLeave={() => setActiveKey(null)}\r\n />\r\n )\r\n}\r\n\r\nexport function RedGreenDot({ cx, cy, value, isActive }: LineDotProps) {\r\n if (typeof value !== 'number') return null\r\n\r\n return (\r\n 0 ? 'green' : 'red'}\r\n className=\"stroke-bg-primary stroke-1\"\r\n />\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\n\r\ninterface ManualGridProps extends React.HTMLProps {\r\n numberOfLines?: number\r\n visibleLeftAxes?: number\r\n estimateAreaWidth?: number\r\n rightOffset?: number\r\n}\r\n\r\nfunction ManualGridComponent(\r\n {\r\n numberOfLines = 5,\r\n visibleLeftAxes = 0,\r\n rightOffset = 32,\r\n estimateAreaWidth,\r\n children,\r\n ...props\r\n }: React.PropsWithChildren,\r\n ref: React.ForwardedRef\r\n) {\r\n const lines = Array.from({ length: numberOfLines })\r\n\r\n return (\r\n
\r\n \r\n {lines.map((_, index) => (\r\n
\r\n ))}\r\n {!!estimateAreaWidth && (\r\n \r\n )}\r\n
\r\n\r\n {children}\r\n
\r\n )\r\n}\r\n\r\nexport const ManualGrid = React.forwardRef(ManualGridComponent)\r\n","import { format } from 'date-fns'\r\nimport { XAxis as RechartsXAxis } from 'recharts'\r\n\r\nimport { getDate } from '../../../app/header/utils'\r\nimport { CARTESIAN_STROKE } from './constants'\r\n\r\nexport enum DateFormat {\r\n MonthSingleChar = 'MMMMM',\r\n MonthShort = 'MMM',\r\n MonthShortDayNum = 'MMM dd',\r\n MonthShortYear = 'MMM yyy',\r\n MonthShortDayNumYearFull = 'MMM dd, yyyy',\r\n}\r\n\r\nconst TICK_STYLE = {\r\n fontSize: 10,\r\n fontWeight: 400, // Different from YAxis\r\n fill: '',\r\n}\r\n\r\nexport function dateAxisFormatter({\r\n value,\r\n outFormat,\r\n parseAsNY = false,\r\n breakOnYear = false,\r\n}: {\r\n value: any\r\n outFormat: DateFormat\r\n parseAsNY?: boolean\r\n breakOnYear?: boolean\r\n}) {\r\n if (!Number.isFinite(new Date(value).getTime())) return ''\r\n\r\n const date = parseAsNY ? getDate(value) : new Date(value)\r\n\r\n if (breakOnYear && date.getMonth() === 0) {\r\n if ([DateFormat.MonthSingleChar, DateFormat.MonthShort].includes(outFormat))\r\n return date.getFullYear().toString().substring(2)\r\n return date.getFullYear().toString()\r\n }\r\n\r\n return format(date, outFormat)\r\n}\r\n\r\nexport class XAxis extends RechartsXAxis {\r\n static defaultProps = {\r\n ...RechartsXAxis.defaultProps,\r\n className: 'fill-gray-500 dark:fill-gray-300',\r\n tickLine: false,\r\n axisLine: false,\r\n dy: 5,\r\n tick: TICK_STYLE,\r\n dataKey: 'date',\r\n scale: 'time',\r\n type: 'number',\r\n interval: 'equidistantPreserveStart',\r\n }\r\n}\r\n\r\nexport const SOLID_AXIS_LINE = { stroke: 'currentColor', className: CARTESIAN_STROKE }\r\n","export const TABLE_ROW_HIGHT = 24\r\n","import React from 'react'\r\n\r\nimport { usePrevious } from '../../hooks/use-previous'\r\nimport { useFinancialsTableContext } from './FinancialsTableContext'\r\nimport { TABLE_ROW_HIGHT } from './constants'\r\n\r\ninterface Props {\r\n categoryAreasCounts: number[]\r\n dataKeys: string[]\r\n}\r\n\r\nexport function useFinancialsTablePersistScrollPosition({ categoryAreasCounts, dataKeys }: Props) {\r\n const { settings, scrollInfo } = useFinancialsTableContext()\r\n const previousSettings = usePrevious(settings)\r\n\r\n React.useLayoutEffect(() => {\r\n const widgetSettingsSectionElement = document.getElementById('js-widget-settings-section')\r\n if (!previousSettings || !scrollInfo || !widgetSettingsSectionElement) return\r\n\r\n const financialsTables = document.getElementsByClassName('js-financials-widget')\r\n const widgetSettingsSectionElementTopPosition = widgetSettingsSectionElement.getBoundingClientRect().top\r\n let index = 0\r\n let lastAbsDiffInPx: number | null = null\r\n\r\n Array.from(financialsTables).forEach((financialTableElement, i) => {\r\n const { top } = financialTableElement.getBoundingClientRect()\r\n const absDiffInPx = Math.abs(top - widgetSettingsSectionElementTopPosition)\r\n if (lastAbsDiffInPx === null || absDiffInPx < lastAbsDiffInPx) {\r\n lastAbsDiffInPx = absDiffInPx\r\n index = i\r\n }\r\n })\r\n\r\n let areas = 0\r\n for (let i = 0; i < index; i++) {\r\n areas += categoryAreasCounts[i]\r\n }\r\n\r\n let sign = 0\r\n dataKeys.forEach((dataKey) => {\r\n if (settings[dataKey] !== previousSettings[dataKey]) {\r\n sign = settings[dataKey] ? 1 : -1\r\n }\r\n })\r\n\r\n const shift = areas * TABLE_ROW_HIGHT * sign\r\n window.scrollTo(window.scrollX, scrollInfo.yPosition + shift)\r\n\r\n // effect should run only when scroll info is changed = user toggled data settings\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [scrollInfo])\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nexport enum KeyStatVariant {\r\n Default,\r\n Positive,\r\n Negative,\r\n}\r\n\r\ntype KeyStatProps = {\r\n datapoint: React.ReactNode\r\n label: React.ReactNode\r\n subdatapoint?: React.ReactNode\r\n sublabel?: React.ReactNode\r\n variant?: KeyStatVariant\r\n}\r\n\r\nexport function KeyStat({ datapoint, label, subdatapoint, sublabel, variant = KeyStatVariant.Default }: KeyStatProps) {\r\n return (\r\n
\r\n {label}\r\n \r\n {datapoint}\r\n {subdatapoint && (\r\n \r\n {subdatapoint}\r\n \r\n )}\r\n \r\n {sublabel && {sublabel}}\r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport { PropsWithChildren } from 'react'\r\n\r\nexport enum KeyStatsVariant {\r\n Compact,\r\n Stretched,\r\n}\r\n\r\ntype KeyStatsProps = {\r\n className?: string\r\n variant?: KeyStatsVariant\r\n}\r\n\r\nexport function KeyStats({ children, className, variant = KeyStatsVariant.Compact }: PropsWithChildren) {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import * as dateFns from 'date-fns'\r\nimport React from 'react'\r\n\r\nimport { RedGreenText } from '../../../components/RedGreenText'\r\nimport { ChartWrapperContext } from '../../../components/chart/ChartWrapper'\r\nimport { FORMAT_PERCENT, formatNumber, getEarningsDateSuffix, shortFormatNumber } from '../../../util'\r\nimport { ESTIMATE_TYPE_LABEL } from '../constants'\r\nimport { EarningReportReaction, EarningsEstimateType, PriceReactionWhen } from '../types'\r\nimport { ChartYearData } from './EarningsChart'\r\n\r\nconst PERFORMANCE_TOOLTIP_LABELS: { [K in EarningsEstimateType]: string } = {\r\n ...ESTIMATE_TYPE_LABEL,\r\n [EarningsEstimateType.sales]: 'Revenue',\r\n}\r\n\r\ntype DailyChangeProps = {\r\n dateClassName?: string\r\n reportReaction: EarningReportReaction\r\n when: PriceReactionWhen\r\n}\r\n\r\nfunction DailyChange({ dateClassName, reportReaction, when }: DailyChangeProps) {\r\n const reaction = reportReaction.reactions[when]\r\n if (!reaction || !reaction.price || !reaction.prevPrice) {\r\n return null\r\n }\r\n const date = dateFns.parseISO(reaction.date)\r\n const diff = reaction.price - reaction.prevPrice\r\n return (\r\n <>\r\n
{dateFns.format(date, 'MMM dd')}
\r\n
\r\n \r\n {formatNumber(diff)} ({formatNumber(Math.abs(reaction.priceDiff), FORMAT_PERCENT)})\r\n \r\n
\r\n \r\n )\r\n}\r\n\r\ntype PerformanceTooltipProps = {\r\n payload?: Array<{ payload?: ChartYearData }>\r\n estimateType: EarningsEstimateType\r\n}\r\n\r\nexport function PerformanceTooltip({ estimateType, payload }: PerformanceTooltipProps) {\r\n const { isTooltipActive } = React.useContext(ChartWrapperContext)\r\n const data = payload?.[0]?.payload\r\n\r\n if (!estimateType || !isTooltipActive || !data || !data.reportReaction) return null\r\n\r\n const reportReaction = data.reportReaction\r\n const earningsDate = dateFns.parseISO(reportReaction.reportDate)\r\n const fiscalEndDate = reportReaction.fiscalEndDate ? dateFns.parseISO(reportReaction.fiscalEndDate) : null\r\n\r\n let estimate\r\n let reported\r\n switch (estimateType) {\r\n case EarningsEstimateType.eps:\r\n estimate = data.epsEstimate\r\n reported = data.epsActual\r\n break\r\n case EarningsEstimateType.epsGaap:\r\n estimate = data.epsReportedEstimate\r\n reported = data.epsReportedActual\r\n break\r\n case EarningsEstimateType.sales:\r\n estimate = data.salesEstimate\r\n reported = data.salesActual\r\n break\r\n default:\r\n return null\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
{PERFORMANCE_TOOLTIP_LABELS[estimateType]}
\r\n
Report Date
\r\n
\r\n {dateFns.format(earningsDate, 'MMM dd, yyy')} {getEarningsDateSuffix(earningsDate)}\r\n
\r\n
Fiscal Period
\r\n
{`${reportReaction.fiscalPeriod.substring(4, 6)} ${reportReaction.fiscalPeriod.substring(0, 4)}`}
\r\n
Period Ending
\r\n
{fiscalEndDate && dateFns.format(fiscalEndDate, 'MMM yyyy')}
\r\n
 
\r\n
Estimate
\r\n
{shortFormatNumber(estimate)}
\r\n
Reported
\r\n
{shortFormatNumber(reported)}
\r\n
Surprise
\r\n
\r\n {data.surprise !== null && estimate && (\r\n \r\n {shortFormatNumber(data.surprise)} (\r\n {formatNumber(Math.abs((data.surprise / estimate) * 100), FORMAT_PERCENT)})\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
Daily Change
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport { ComposedChart } from 'recharts'\r\n\r\nimport { Bar } from '../../../components/chart/Bar'\r\nimport { ChartContext } from '../../../components/chart/ChartWrapper'\r\nimport { CursorBar } from '../../../components/chart/Cursor'\r\nimport { Line } from '../../../components/chart/Line'\r\nimport { RedGreenDot } from '../../../components/chart/LineDot'\r\nimport { ManualGrid } from '../../../components/chart/ManualGrid'\r\nimport { Tooltip } from '../../../components/chart/Tooltip'\r\nimport { YAxis } from '../../../components/chart/YAxis'\r\nimport { ChartItemColorType } from '../../../components/chart/constants'\r\nimport {\r\n BAR_GAP,\r\n BAR_WIDTH,\r\n BAR_WIDTH_NARROW,\r\n CHART_HEIGHT,\r\n CHART_MARGINS,\r\n EXTRA_WIDTH,\r\n LABELS_MARGIN,\r\n LABELS_WIDTH,\r\n} from '../constants'\r\nimport { EarningReportReaction, EarningValueProperty, EarningsDataType, EarningsEstimateType } from '../types'\r\nimport { tickFormatter } from '../utils'\r\nimport { PerformanceTooltip } from './PerformanceTooltip'\r\n\r\nexport type Props = {\r\n annualData: EarningsDataType[]\r\n estimateType: EarningsEstimateType\r\n isCompact: boolean\r\n reportReactions: EarningReportReaction[]\r\n}\r\n\r\nexport type ChartYearData = {\r\n year: string\r\n isEstimate: boolean\r\n reportReaction: EarningReportReaction | undefined\r\n} & Record\r\n\r\nexport function EarningsChart({ annualData, estimateType, isCompact, reportReactions }: Props) {\r\n const columnsCount = annualData[0].values.length\r\n const barWidth = isCompact ? BAR_WIDTH_NARROW : BAR_WIDTH\r\n const { estimateColumnsCount, hasBarChart, hasLineChart } = React.useMemo(\r\n () => ({\r\n estimateColumnsCount: annualData[0].values.filter(({ isEstimate }) => isEstimate).length,\r\n hasLineChart: annualData.some(({ id, isSelected }) => id === EarningValueProperty.Surprise && isSelected),\r\n hasBarChart: annualData.some(({ id, isSelected }) => id !== EarningValueProperty.Surprise && isSelected),\r\n }),\r\n [annualData]\r\n )\r\n const chartData = React.useMemo(() => {\r\n const data: Record = {}\r\n annualData.forEach(({ id, values }) => {\r\n values.forEach(({ value, year, isEstimate }) => {\r\n const fiscalPeriod = `20${year.substring(4, 6)}${year.substring(0, 2)}`\r\n const reportReaction = reportReactions.find((reaction) => reaction.fiscalPeriod === fiscalPeriod)\r\n data[year] = { ...data[year], year, isEstimate, [id]: value, reportReaction }\r\n })\r\n })\r\n return Object.values(data)\r\n }, [annualData, reportReactions])\r\n\r\n const chartWidth = columnsCount * barWidth + (columnsCount - 1) * BAR_GAP + EXTRA_WIDTH + LABELS_WIDTH * 1.5\r\n const estimateAreaWidth = estimateColumnsCount * barWidth + estimateColumnsCount * BAR_GAP\r\n const barLessChartYMargin = barWidth / 2 + BAR_GAP / 2\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n }\r\n content={}\r\n />\r\n {annualData.map(({ id, isSelected, color }) => {\r\n if (!isSelected) return null\r\n\r\n if (id !== EarningValueProperty.Surprise) {\r\n return (\r\n \r\n [\r\n EarningValueProperty.EpsEstimate,\r\n EarningValueProperty.EpsReportedEstimate,\r\n EarningValueProperty.SalesEstimate,\r\n ].includes(id)\r\n ? 'gray'\r\n : (color as ChartItemColorType)\r\n }\r\n />\r\n )\r\n }\r\n\r\n return (\r\n }\r\n activeDot={}\r\n color={color as ChartItemColorType}\r\n />\r\n )\r\n })}\r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { RedGreenText } from '../../components/RedGreenText'\r\nimport { TableAlign } from '../../components/Table'\r\nimport { FinancialsSubRowDataType } from '../../components/financials-table/types'\r\nimport { shortFormatNumber } from '../../util'\r\nimport { EarningValueProperty, EarningsColumnsType, EarningsDataEnum } from './types'\r\n\r\nfunction renderSubColumnValue(data: FinancialsSubRowDataType, id: string) {\r\n const mainEarning = data.values.find((mainEarning) => mainEarning.year === id)\r\n const mainEarningValue = mainEarning?.value ?? null\r\n return (\r\n \r\n {shortFormatNumber(mainEarningValue, { defaultValue: '—' })}\r\n \r\n )\r\n}\r\n\r\nfunction renderSubColumnValuePct(data: FinancialsSubRowDataType, id: string) {\r\n const mainEarningPct = data.values.find((mainEarningPct) => mainEarningPct.year === id)\r\n const mainEarningPctValue = mainEarningPct?.value ?? null\r\n return (\r\n \r\n {mainEarningPctValue?.toFixed(2) ?? '—'}\r\n \r\n )\r\n}\r\n\r\nconst getColumns = (yearKeys: string[], isCompact: boolean) => {\r\n const commonClassName = classNames('px-4 last:pr-11', {\r\n 'w-22 last:w-29.5': !isCompact,\r\n 'w-17 last:w-24.5': isCompact,\r\n })\r\n\r\n const columns: EarningsColumnsType['columns'] = yearKeys.map((year) => ({\r\n id: year,\r\n name: year,\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n renderColumn: (data) => {\r\n const annualDividend = data.values.find((annualDividend) => annualDividend.year === year)\r\n const annualDividendValue = annualDividend?.value ?? null\r\n const annualDividendValuePercent = annualDividend?.percentageValue ?? null\r\n if (!Number.isFinite(annualDividendValue)) return \r\n if (data.id === EarningValueProperty.Surprise) {\r\n return (\r\n \r\n {shortFormatNumber(annualDividendValue, { defaultValue: '—' })}\r\n {Number.isFinite(annualDividendValuePercent) && (\r\n <>\r\n
\r\n {shortFormatNumber(annualDividendValuePercent, { fractions: 2 })}%\r\n \r\n )}\r\n
\r\n )\r\n }\r\n const value = shortFormatNumber(annualDividendValue, { fractions: 2 })\r\n return {value}\r\n },\r\n }))\r\n\r\n const subColumns: EarningsColumnsType['subColumns'] = {\r\n [EarningsDataEnum.analysts]: yearKeys.map((year) => ({\r\n id: year,\r\n name: year,\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n renderColumn: (data) => {\r\n const annualDividend = data.values.find((annualDividend) => annualDividend.year === year)\r\n const annualDividendValue = annualDividend?.value ?? null\r\n return {annualDividendValue?.toFixed(0) ?? '—'}\r\n },\r\n })),\r\n [EarningsDataEnum.mainChange]: yearKeys.map((year) => ({\r\n id: year,\r\n name: year,\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n renderColumn: renderSubColumnValue,\r\n })),\r\n [EarningsDataEnum.mainChangePct]: yearKeys.map((year) => ({\r\n id: year,\r\n name: year,\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n renderColumn: renderSubColumnValuePct,\r\n })),\r\n [EarningsDataEnum.extraChangeYoYonQoQ]: yearKeys.map((year) => ({\r\n id: year,\r\n name: year,\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n renderColumn: renderSubColumnValue,\r\n })),\r\n [EarningsDataEnum.extraChangePctYoYonQoQ]: yearKeys.map((year) => ({\r\n id: year,\r\n name: year,\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n renderColumn: renderSubColumnValuePct,\r\n })),\r\n }\r\n return { columns, subColumns }\r\n}\r\n\r\nexport function useTableColumns(yearKeys: string[], isCompact: boolean) {\r\n return React.useMemo(() => getColumns(yearKeys, isCompact), [yearKeys, isCompact])\r\n}\r\n","import React from 'react'\r\n\r\nimport { TableAlign, TableHead, TableHeader } from '../../components/Table'\r\nimport { FinancialsWidget, getIsCompact } from '../../components/financials-table'\r\nimport { ForecastSettings } from '../forecast/types'\r\nimport { WidgetHeader } from './WidgetHeader'\r\nimport { EarningsChart } from './charts/EarningsChart'\r\nimport { BAR_WIDTH, EARNINGS_WIDGET_LABELS, EarningsWidgetCategory } from './constants'\r\nimport { EarningsSettings } from './types'\r\nimport { EarningReportReaction, EarningsCommonData, EarningsDataEnum, EarningsEstimateType } from './types'\r\nimport { useTableColumns } from './useTableColumns'\r\nimport { mapData } from './utils'\r\n\r\nconst widgetToEstimateType: { [K in EarningsWidgetCategory]: EarningsEstimateType } = {\r\n [EarningsWidgetCategory.Eps]: EarningsEstimateType.eps,\r\n [EarningsWidgetCategory.EpsGaap]: EarningsEstimateType.epsGaap,\r\n [EarningsWidgetCategory.Revenue]: EarningsEstimateType.sales,\r\n}\r\n\r\ninterface Props {\r\n data: EarningsCommonData\r\n earningsWidgetCategory: EarningsWidgetCategory\r\n priceReactionData: EarningReportReaction[]\r\n settings: EarningsSettings | ForecastSettings\r\n}\r\n\r\nexport function EarningsWidget({ data, earningsWidgetCategory, priceReactionData, settings }: Props) {\r\n const [annualData, setAnnualData] = React.useState(() =>\r\n data ? mapData(data, settings.timeframe, earningsWidgetCategory) : []\r\n )\r\n\r\n const yearKeys = React.useMemo(\r\n () =>\r\n annualData\r\n .flatMap(({ values }) => values.map(({ year }) => year))\r\n .filter((year, index, arr) => arr.indexOf(year) === index),\r\n [annualData]\r\n )\r\n const label = EARNINGS_WIDGET_LABELS[earningsWidgetCategory] || ''\r\n const estimateType = widgetToEstimateType[earningsWidgetCategory]\r\n const [isCompact, setIsCompact] = React.useState(getIsCompact(yearKeys.length, 22))\r\n const { columns, subColumns } = useTableColumns(yearKeys, isCompact)\r\n\r\n React.useEffect(() => {\r\n // Remove min-height from react root element which is set on BE because of CLS\r\n document.getElementById('root')?.style.removeProperty('min-height')\r\n\r\n const onResize = () => {\r\n setIsCompact(getIsCompact(yearKeys.length, BAR_WIDTH))\r\n }\r\n\r\n onResize()\r\n\r\n window.addEventListener('resize', onResize)\r\n\r\n return () => {\r\n window.removeEventListener('resize', onResize)\r\n }\r\n }, [yearKeys])\r\n\r\n React.useEffect(() => {\r\n setAnnualData(mapData(data, settings.timeframe, earningsWidgetCategory))\r\n }, [data, settings.timeframe, earningsWidgetCategory])\r\n\r\n const filteredTableData = React.useMemo(\r\n () =>\r\n annualData.map((revenue) => ({\r\n ...revenue,\r\n subData: revenue.subData.filter(({ id }) => id === EarningsDataEnum.analysts || settings[id] === true),\r\n })),\r\n [annualData, settings]\r\n )\r\n\r\n const onVisibilityChange = React.useCallback((id: string, isSelected: boolean) => {\r\n setAnnualData((prevAnnualData) =>\r\n prevAnnualData.map((item) =>\r\n item.id === id\r\n ? {\r\n ...item,\r\n isSelected,\r\n }\r\n : item\r\n )\r\n )\r\n }, [])\r\n\r\n return (\r\n \r\n {label}}\r\n tableHead={\r\n \r\n Currency: USD\r\n\r\n {columns.map((column) => (\r\n \r\n {column.name}\r\n \r\n ))}\r\n \r\n }\r\n columns={columns}\r\n subColumns={subColumns}\r\n onVisibilityChange={onVisibilityChange}\r\n >\r\n \r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { useFinancialsTableContext } from '../../components/financials-table'\r\nimport { EarningsSettings } from './types'\r\n\r\nexport function TempRenameSettingsProperties({\r\n defaultSettings,\r\n keysReplace,\r\n}: {\r\n defaultSettings: Record\r\n keysReplace: Array<[string, string]>\r\n}) {\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n React.useEffect(() => {\r\n const oldKeys = keysReplace.map((keyPair) => keyPair[0])\r\n const hasOldKey = Object.keys(settings).some((settingKey) => oldKeys.includes(settingKey))\r\n\r\n if (hasOldKey) {\r\n setSettings(\r\n Object.keys(defaultSettings as EarningsSettings).reduce((acc, key) => {\r\n let valueKey = key\r\n const replaceKeyPair = keysReplace.find((keyPair) => keyPair[1] === key)\r\n\r\n if (replaceKeyPair) {\r\n valueKey = replaceKeyPair[0]\r\n }\r\n return {\r\n ...acc,\r\n [key]: settings[valueKey as keyof typeof settings] ?? defaultSettings[key],\r\n }\r\n }, {} as EarningsSettings)\r\n )\r\n }\r\n // We want to run it on mount only\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return null\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Heading } from '../../components/typography'\r\n\r\ninterface Props {\r\n children: React.ReactNode\r\n className?: string\r\n}\r\n\r\nexport function WidgetHeader({ children, className }: Props) {\r\n return (\r\n // m-0 & text-base are necessary to override default H* styles on old design\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { ChipSwitch, ChipSwitchButton } from '../../components/ChipSwitch'\r\nimport { useFinancialsTableContext } from '../../components/financials-table'\r\nimport { EarningsDataEnum, EarningsSettings, EarningsTimeframeEnum } from './types'\r\n\r\ninterface Props {\r\n timeframe: EarningsTimeframeEnum\r\n isSemiAnnual: boolean\r\n showTimeframe: boolean\r\n hasOldDesign?: boolean\r\n canShrinkLabels?: boolean\r\n}\r\n\r\nfunction GrowthLabel({\r\n isPercentage,\r\n isQuarterlyTimeframe,\r\n isSemiAnnual,\r\n canShrinkLabels,\r\n}: {\r\n canShrinkLabels?: boolean\r\n isSemiAnnual?: boolean\r\n isQuarterlyTimeframe?: boolean\r\n isPercentage?: boolean\r\n}) {\r\n const growthLabel = 'Growth'\r\n let timeframeLabel = 'YoY'\r\n if (isQuarterlyTimeframe) {\r\n timeframeLabel = isSemiAnnual ? 'SoS' : 'QoQ'\r\n }\r\n\r\n const longLabel = `${timeframeLabel} ${growthLabel} ${isPercentage ? '%' : ''}`\r\n\r\n if (!canShrinkLabels) {\r\n return longLabel\r\n }\r\n\r\n return (\r\n <>\r\n {longLabel}\r\n \r\n {timeframeLabel} {isPercentage ? '%' : growthLabel}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default function WidgetSettingsSection({\r\n timeframe,\r\n isSemiAnnual,\r\n showTimeframe,\r\n canShrinkLabels = false,\r\n hasOldDesign = false,\r\n}: Props) {\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n const toggleSetting = (key: keyof EarningsSettings, value: EarningsSettings[keyof EarningsSettings]) => {\r\n setSettings({\r\n ...settings,\r\n [key]: value,\r\n })\r\n }\r\n\r\n const isQuarterlyTimeframe = timeframe === EarningsTimeframeEnum.quarterly // EarningsTimeframeEnum.quarterly is used for both quarterly & semiannual\r\n\r\n return (\r\n
\r\n \r\n {isQuarterlyTimeframe ? (\r\n {\r\n toggleSetting(EarningsDataEnum.extraChangeYoYonQoQ, !settings[EarningsDataEnum.extraChangeYoYonQoQ])\r\n }}\r\n >\r\n \r\n \r\n ) : null}\r\n {isQuarterlyTimeframe ? (\r\n {\r\n toggleSetting(EarningsDataEnum.extraChangePctYoYonQoQ, !settings[EarningsDataEnum.extraChangePctYoYonQoQ])\r\n }}\r\n >\r\n \r\n \r\n ) : null}\r\n {\r\n toggleSetting(EarningsDataEnum.mainChange, !settings[EarningsDataEnum.mainChange])\r\n }}\r\n >\r\n \r\n \r\n {\r\n toggleSetting(EarningsDataEnum.mainChangePct, !settings[EarningsDataEnum.mainChangePct])\r\n }}\r\n >\r\n \r\n \r\n \r\n\r\n {showTimeframe && (\r\n \r\n {\r\n toggleSetting('timeframe', EarningsTimeframeEnum.annual)\r\n }}\r\n >\r\n Annual\r\n \r\n {\r\n toggleSetting('timeframe', EarningsTimeframeEnum.quarterly)\r\n }}\r\n >\r\n {isSemiAnnual ? 'Semiannual' : 'Quarterly'}\r\n \r\n \r\n )}\r\n
\r\n )\r\n}\r\n","import { EarningsDataEnum, EarningsEstimateType } from './types'\r\n\r\nexport enum EarningsWidgetCategory {\r\n Eps,\r\n EpsGaap,\r\n Revenue,\r\n}\r\n\r\nexport const EARNINGS_WIDGET_LABELS: Record = {\r\n [EarningsWidgetCategory.Eps]: 'EPS Performance and Forecast',\r\n [EarningsWidgetCategory.EpsGaap]: 'GAAP EPS Performance and Forecast',\r\n [EarningsWidgetCategory.Revenue]: 'Revenue Performance and Forecast',\r\n}\r\n\r\nexport const ESTIMATE_TYPE_LABEL = {\r\n [EarningsEstimateType.eps]: 'EPS',\r\n [EarningsEstimateType.epsGaap]: 'GAAP EPS',\r\n [EarningsEstimateType.sales]: 'Sales',\r\n}\r\n\r\nexport const BAR_WIDTH = 72\r\nexport const CHART_HEIGHT = 250\r\nexport const LABELS_WIDTH = 28\r\nexport const LABELS_MARGIN = 22\r\nexport const BAR_WIDTH_NARROW = 52\r\nexport const BAR_GAP = 16\r\nexport const EXTRA_WIDTH = 44\r\nexport const CHART_MARGINS = { top: 2, right: 0, bottom: 0, left: 0 }\r\n\r\nexport const DEFAULT_SETTINGS_FOR_EARNINGS_DATA = {\r\n [EarningsDataEnum.mainChange]: false,\r\n [EarningsDataEnum.mainChangePct]: false,\r\n [EarningsDataEnum.extraChangeYoYonQoQ]: false,\r\n [EarningsDataEnum.extraChangePctYoYonQoQ]: false,\r\n}\r\n","// These values match keys which come from BE so don't change them\r\nimport { FinancialsColumnDefinition, FinancialsRowDataType } from '../../components/financials-table/types'\r\n\r\nexport enum EarningValueProperty {\r\n EpsActual = 'epsActual',\r\n EpsAnalysts = 'epsAnalysts',\r\n EpsEstimate = 'epsEstimate',\r\n EpsReportedActual = 'epsReportedActual',\r\n EpsReportedAnalysts = 'epsReportedAnalysts',\r\n EpsReportedEstimate = 'epsReportedEstimate',\r\n SalesActual = 'salesActual',\r\n SalesAnalysts = 'salesAnalysts',\r\n SalesEstimate = 'salesEstimate',\r\n Surprise = 'surprise',\r\n}\r\n\r\nexport type Earning = {\r\n earningsDate: string | null\r\n epsActual: number | null\r\n epsEstimate: number | null\r\n fiscalEndDate: string\r\n fiscalPeriod: string\r\n ticker: string\r\n} & Record\r\n\r\nexport interface EarningsDataType extends Omit {\r\n id: EarningValueProperty\r\n values: Array<{ year: string; value: number | null; isEstimate: boolean }>\r\n isEstimate?: boolean\r\n}\r\n\r\nexport enum EarningsEstimateType {\r\n eps = 'E',\r\n epsGaap = 'R',\r\n sales = 'S',\r\n}\r\n\r\nexport enum EarningsDataEnum {\r\n analysts = 'analysts',\r\n mainChange = 'mainChange',\r\n mainChangePct = 'mainChangePct',\r\n extraChangeYoYonQoQ = 'extraChangeYoYonQoQ',\r\n extraChangePctYoYonQoQ = 'extraChangePctYoYonQoQ',\r\n}\r\n\r\nexport enum EarningsTimeframeEnum {\r\n annual = 'annual',\r\n quarterly = 'quarterly',\r\n}\r\n\r\ntype EarningRowDataType = Omit & {\r\n values: Array<{ year: string; value: number | null; percentageValue: number | null; isEstimate?: boolean }>\r\n}\r\n\r\nexport type EarningsColumnsType = {\r\n columns: FinancialsColumnDefinition[]\r\n subColumns: Record\r\n}\r\n\r\nexport type EarningPriceReaction = {\r\n date: string\r\n prevPrice: number\r\n price: number\r\n priceDiff: number\r\n spyPriceDiff: number\r\n}\r\n\r\nexport type EarningPriceReactions = {\r\n [K: string]: EarningPriceReaction\r\n}\r\n\r\nexport type EarningReportReaction = {\r\n ticker: string\r\n reportDate: string\r\n fiscalPeriod: string\r\n fiscalEndDate: string | null\r\n chartStartDate: string\r\n chartEndDate: string\r\n rsi: number | null\r\n reactions: EarningPriceReactions\r\n}\r\n\r\nexport enum PriceReactionWhen {\r\n MINUS_DAYS_3 = 'minus_3_days',\r\n MINUS_DAYS_2 = 'minus_2_days',\r\n MINUS_DAYS_1 = 'minus_1_day',\r\n OPEN = 'open',\r\n HIGH = 'high',\r\n LOW = 'low',\r\n CLOSE = 'close',\r\n PLUS_DAYS_1 = 'plus_1_day',\r\n PLUS_DAYS_2 = 'plus_2_days',\r\n PLUS_DAYS_3 = 'plus_3_days',\r\n PLUS_WEEK_1 = 'plus_1_week',\r\n MINUS_WEEK_1 = 'minus_1_week',\r\n}\r\n\r\nexport interface EarningsCommonData {\r\n earningsDate: string | null\r\n earningsAnnualData: Earning[]\r\n earningsData: Earning[]\r\n priceReactionData: EarningReportReaction[]\r\n}\r\n\r\nexport type EarningsDataSettings = {\r\n [EarningsDataEnum.mainChange]: boolean\r\n [EarningsDataEnum.mainChangePct]: boolean\r\n [EarningsDataEnum.extraChangeYoYonQoQ]: boolean\r\n [EarningsDataEnum.extraChangePctYoYonQoQ]: boolean\r\n}\r\n\r\nexport type EarningsSettings = EarningsDataSettings & {\r\n estimateType: EarningsEstimateType\r\n fiscalPeriod: string\r\n timeframe: EarningsTimeframeEnum\r\n}\r\n","import { ColorVariant } from '../../components'\r\nimport { getYoYData } from '../../components/financials-table'\r\nimport { shortFormatNumber } from '../../util'\r\nimport { getIsEarningEstimate, getIsSemiAnnualEarning } from '../earnings/utils'\r\nimport { EarningsWidgetCategory } from './constants'\r\nimport {\r\n Earning,\r\n EarningValueProperty,\r\n EarningsCommonData,\r\n EarningsDataEnum,\r\n EarningsDataType,\r\n EarningsTimeframeEnum,\r\n} from './types'\r\n\r\nexport function tickFormatter(value: any) {\r\n return shortFormatNumber(value, { fractions: Math.abs(value) >= 1_000 ? 0 : 2 })\r\n}\r\n\r\nfunction getEarningsDataTemplate(\r\n earningsWidgetCategory: EarningsWidgetCategory\r\n): Array> {\r\n if (earningsWidgetCategory === EarningsWidgetCategory.Revenue) {\r\n return [\r\n {\r\n label: 'Estimate',\r\n id: EarningValueProperty.SalesEstimate,\r\n color: ColorVariant.gray,\r\n isSelected: true,\r\n isEstimate: true,\r\n },\r\n { label: 'Reported', id: EarningValueProperty.SalesActual, color: ColorVariant.violet, isSelected: true },\r\n { label: 'Surprise', id: EarningValueProperty.Surprise, color: ColorVariant.darkGray, isSelected: false },\r\n ]\r\n }\r\n\r\n const isGaap = earningsWidgetCategory === EarningsWidgetCategory.EpsGaap\r\n return [\r\n {\r\n label: 'Estimate',\r\n id: isGaap ? EarningValueProperty.EpsReportedEstimate : EarningValueProperty.EpsEstimate,\r\n color: ColorVariant.gray,\r\n isSelected: true,\r\n isEstimate: true,\r\n },\r\n {\r\n label: 'Reported',\r\n id: isGaap ? EarningValueProperty.EpsReportedActual : EarningValueProperty.EpsActual,\r\n color: isGaap ? ColorVariant.orange : ColorVariant.blue,\r\n isSelected: true,\r\n },\r\n { label: 'Surprise', id: EarningValueProperty.Surprise, color: ColorVariant.darkGray, isSelected: false },\r\n ]\r\n}\r\n\r\nexport function getEffectiveTimeframe(\r\n quarterlyData: Earning[],\r\n annualData: Earning[],\r\n timeframe: EarningsTimeframeEnum\r\n) {\r\n if (quarterlyData.length > 0 && annualData.length > 0) {\r\n return timeframe\r\n }\r\n if (quarterlyData.length > 0) {\r\n return EarningsTimeframeEnum.quarterly\r\n }\r\n return EarningsTimeframeEnum.annual\r\n}\r\n\r\nexport function mapData(\r\n data: EarningsCommonData,\r\n timeframe: EarningsTimeframeEnum,\r\n earningsWidgetCategory: EarningsWidgetCategory\r\n) {\r\n const isQuarterlyTimeframe =\r\n getEffectiveTimeframe(data.earningsData, data.earningsAnnualData, timeframe) === EarningsTimeframeEnum.quarterly // EarningsTimeframeEnum.quarterly is used for both quarterly & semiannual\r\n const dataValues = isQuarterlyTimeframe ? data.earningsData : data.earningsAnnualData\r\n const isSemiAnnualEarning = isQuarterlyTimeframe && getIsSemiAnnualEarning(data.earningsData)\r\n const earningsArray = getEarningsDataTemplate(earningsWidgetCategory).map((category) => {\r\n let numOfEstimates = 0\r\n return {\r\n ...category,\r\n labelColumnClassName: 'align-top',\r\n values: dataValues\r\n .map((periodDataRaw) => {\r\n const periodData = {\r\n ...periodDataRaw,\r\n [EarningValueProperty.SalesActual]: periodDataRaw.salesActual && periodDataRaw.salesActual * 1_000_000,\r\n [EarningValueProperty.SalesEstimate]:\r\n periodDataRaw.salesEstimate && periodDataRaw.salesEstimate * 1_000_000,\r\n }\r\n const yearPeriod = isQuarterlyTimeframe\r\n ? `${periodData.fiscalPeriod.substring(4, 6)} '${periodData.fiscalPeriod.substring(2, 4)}` // eg. Q2 '23\r\n : periodData.fiscalPeriod.substring(0, 4) // eg. 2024\r\n let value = periodData[category.id]\r\n // percentageValue is used in Surprise row\r\n let percentageValue: number | null = null\r\n const {\r\n [EarningValueProperty.SalesActual]: salesActual,\r\n [EarningValueProperty.EpsReportedActual]: epsReportedActual,\r\n [EarningValueProperty.EpsActual]: epsActual,\r\n } = periodData\r\n\r\n if (category.id === EarningValueProperty.Surprise) {\r\n let actualValue: number | null = null\r\n let estimateValue: number | null = null\r\n\r\n if (earningsWidgetCategory === EarningsWidgetCategory.Revenue) {\r\n actualValue = salesActual\r\n estimateValue = periodData[EarningValueProperty.SalesEstimate]\r\n } else if (earningsWidgetCategory === EarningsWidgetCategory.EpsGaap) {\r\n actualValue = epsReportedActual\r\n estimateValue = periodData[EarningValueProperty.EpsReportedEstimate]\r\n } else if (earningsWidgetCategory === EarningsWidgetCategory.Eps) {\r\n actualValue = epsActual\r\n estimateValue = periodData[EarningValueProperty.EpsEstimate]\r\n }\r\n\r\n if (actualValue !== null && estimateValue !== null) {\r\n value = actualValue - estimateValue\r\n percentageValue = Math.abs(value / estimateValue) * 100\r\n if (value < 0) {\r\n percentageValue = -percentageValue\r\n }\r\n }\r\n }\r\n\r\n let analysts: number | null = null\r\n if (earningsWidgetCategory === EarningsWidgetCategory.Revenue) {\r\n analysts = periodData[EarningValueProperty.SalesAnalysts]\r\n } else if (earningsWidgetCategory === EarningsWidgetCategory.EpsGaap) {\r\n analysts = periodData[EarningValueProperty.EpsReportedAnalysts]\r\n } else if (earningsWidgetCategory === EarningsWidgetCategory.Eps) {\r\n analysts = periodData[EarningValueProperty.EpsAnalysts]\r\n }\r\n\r\n return {\r\n year: yearPeriod,\r\n percentageValue,\r\n value,\r\n isEstimate: getIsEarningEstimate(periodData),\r\n analysts,\r\n }\r\n })\r\n .filter(({ isEstimate }) => {\r\n if (isEstimate) {\r\n numOfEstimates += 1\r\n return numOfEstimates <= 4\r\n }\r\n return true\r\n })\r\n .slice(-12),\r\n }\r\n })\r\n\r\n return earningsArray.map((earningsCategory) => {\r\n const yoyData =\r\n earningsCategory.id === EarningValueProperty.Surprise\r\n ? null\r\n : getYoYData(earningsCategory.values, isQuarterlyTimeframe)\r\n\r\n let yoyGrowthLabel = 'YoY Growth'\r\n\r\n if (isQuarterlyTimeframe) {\r\n yoyGrowthLabel = isSemiAnnualEarning ? 'SoS Growth' : 'QoQ Growth'\r\n }\r\n\r\n return {\r\n ...earningsCategory,\r\n subData: [\r\n ...(earningsCategory.isEstimate\r\n ? [\r\n {\r\n id: EarningsDataEnum.analysts,\r\n label: '# of Analysts',\r\n values: earningsCategory.values.map((anualDividend) => ({\r\n ...anualDividend,\r\n value: anualDividend.analysts,\r\n })),\r\n },\r\n ]\r\n : []),\r\n ...(yoyData && isQuarterlyTimeframe\r\n ? [\r\n {\r\n id: EarningsDataEnum.extraChangeYoYonQoQ,\r\n label: 'YoY Growth',\r\n values: earningsCategory.values.map((anualDividend) => ({\r\n ...anualDividend,\r\n value: yoyData.yoyOnQoqChange[anualDividend.year] ?? null,\r\n })),\r\n },\r\n {\r\n id: EarningsDataEnum.extraChangePctYoYonQoQ,\r\n label: 'YoY Growth %',\r\n values: earningsCategory.values.map((anualDividend) => ({\r\n ...anualDividend,\r\n value: yoyData.yoyOnQoqChangePct[anualDividend.year] ?? null,\r\n })),\r\n },\r\n ]\r\n : []),\r\n ...(yoyData\r\n ? [\r\n {\r\n id: EarningsDataEnum.mainChange,\r\n label: yoyGrowthLabel,\r\n values: earningsCategory.values.map((anualDividend) => ({\r\n ...anualDividend,\r\n value: yoyData.change[anualDividend.year] ?? null,\r\n })),\r\n },\r\n {\r\n id: EarningsDataEnum.mainChangePct,\r\n label: `${yoyGrowthLabel} %`,\r\n values: earningsCategory.values.map((anualDividend) => ({\r\n ...anualDividend,\r\n value: yoyData.changePct[anualDividend.year] ?? null,\r\n })),\r\n },\r\n ]\r\n : []),\r\n ],\r\n }\r\n })\r\n}\r\n\r\nfunction dateOrNextMonth(date: Date, day: number): Date {\r\n if (date.getDate() === day) {\r\n return new Date(date.getFullYear(), date.getMonth(), day)\r\n }\r\n return new Date(date.getFullYear(), date.getMonth() + 1, day)\r\n}\r\n\r\nexport function getMonthlyTicks(startingTimestamp: number, endingTimestamp: number, midMonth?: boolean) {\r\n const MID_MONTH = 15\r\n const ticks: number[] = []\r\n const endingDate = new Date(endingTimestamp)\r\n let date = dateOrNextMonth(new Date(startingTimestamp), midMonth ? MID_MONTH : 1)\r\n while (date <= endingDate) {\r\n ticks.push(date.getTime())\r\n date = new Date(date.getFullYear(), date.getMonth() + 1, midMonth ? MID_MONTH : 1)\r\n }\r\n return ticks\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\nimport { PropsWithChildren } from 'react'\r\n\r\nimport colors from '../../../../../config/colors'\r\n\r\nexport enum HighlightedBoxColor {\r\n DarkRed,\r\n MediumRed,\r\n LightRed,\r\n Neutral,\r\n LightGreen,\r\n MediumGreen,\r\n DarkGreen,\r\n}\r\n\r\nconst LIGHT_BG_COLORS: string[] = [\r\n colors.red[200],\r\n colors.red[100],\r\n colors.red[50],\r\n colors.gray[50],\r\n colors.green[50],\r\n colors.green[100],\r\n colors.green[200],\r\n]\r\n\r\nconst DARK_BG_COLORS: string[] = [\r\n colors.red[500],\r\n colors.red[600],\r\n colors.red[700],\r\n colors.gray[700],\r\n colors.green[700],\r\n colors.green[600],\r\n colors.green[500],\r\n]\r\n\r\nconst LIGHT_TEXT_COLORS: string[] = [\r\n colors.red[700],\r\n colors.red[600],\r\n colors.red[500],\r\n colors.gray[600],\r\n colors.green[500],\r\n colors.green[600],\r\n colors.green[700],\r\n]\r\n\r\nconst DARK_TEXT_COLORS: string[] = [\r\n colors.white,\r\n colors.red[200],\r\n colors.red[300],\r\n colors.gray[200],\r\n colors.green[300],\r\n colors.green[200],\r\n colors.white,\r\n]\r\n\r\ninterface HighlightedBoxProps {\r\n className?: string\r\n color: HighlightedBoxColor\r\n}\r\n\r\nexport function HighlightedBox({ children, className, color }: PropsWithChildren) {\r\n const bgColorsList = FinvizSettings.hasDarkTheme ? DARK_BG_COLORS : LIGHT_BG_COLORS\r\n const textColorsList = FinvizSettings.hasDarkTheme ? DARK_TEXT_COLORS : LIGHT_TEXT_COLORS\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import { DEFAULT_SETTINGS_FOR_EARNINGS_DATA } from '../earnings-common/constants'\r\nimport { EarningsEstimateType, EarningsSettings, EarningsTimeframeEnum } from '../earnings-common/types'\r\n\r\nexport const EARNINGS_DATE_FORMAT = 'MMM dd, yyy'\r\n\r\nexport const PRICE_REVISIONS_CHART_HEIGHT = 296\r\nexport const PRICE_REVISIONS_YAXIS_WIDTH = 40\r\nexport const PRICE_REVISIONS_TICK_COUNT = 6\r\n\r\nexport const UPDOWN_REVISIONS_CHART_HEIGHT = 135\r\nexport const UPDOWN_REVISIONS_TICK_COUNT = 7\r\n\r\nexport const FISCAL_YEAR_MARK = 'FY'\r\n\r\nexport const SETTINGS_COOKIE_KEY = 'earningsSettings'\r\n\r\nexport const DEFAULT_SETTINGS: EarningsSettings = {\r\n ...DEFAULT_SETTINGS_FOR_EARNINGS_DATA,\r\n estimateType: EarningsEstimateType.eps,\r\n fiscalPeriod: '',\r\n timeframe: EarningsTimeframeEnum.quarterly,\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { TableAlign } from '../../components/Table'\r\nimport { EarningsCommonData, EarningsEstimateType, PriceReactionWhen } from '../earnings-common/types'\r\n\r\nexport type EarningRevision = {\r\n ticker: string\r\n fiscalPeriod: string\r\n estimateType: EarningsEstimateType\r\n estimateDate: string\r\n relativeFiscalPeriod: number\r\n estimates: number\r\n upRevisions: number\r\n downRevisions: number\r\n mean: number\r\n high: number\r\n low: number\r\n price: number\r\n}\r\n\r\nexport type EarningRevisionWithDate = EarningRevision & { date: Date; negDownRevisions?: number }\r\n\r\nexport interface EarningsData extends EarningsCommonData {\r\n earningsRevisionsData: EarningRevision[]\r\n}\r\n\r\nexport type EarningsRevisionsByType = {\r\n [estimateType in EarningsEstimateType]: {\r\n quarters: { [quarter: string]: EarningRevisionWithDate[] }\r\n years: { [year: string]: EarningRevisionWithDate[] }\r\n }\r\n}\r\n\r\nexport enum PriceReactionDataEnum {\r\n priceDiff = 'priceDiff',\r\n spyPriceDiff = 'spyPriceDiff',\r\n}\r\n\r\nexport type PriceReactionSubRowDataType = {\r\n id: string\r\n label: string\r\n labelElement?: React.ReactNode\r\n labelColumnClassName?: string\r\n values: Array<{ when: PriceReactionWhen; value: number | null }>\r\n}\r\n\r\nexport type PriceReactionRowDataType = PriceReactionSubRowDataType & {\r\n subData: PriceReactionSubRowDataType[]\r\n}\r\n\r\ntype PriceReactionColumnDefinitionBase = {\r\n id: string\r\n name: string\r\n align?: TableAlign\r\n className?: string\r\n getColumnClassName?: (data: RowDataType) => string | null | undefined\r\n renderColumn: (data: RowDataType) => React.ReactNode\r\n}\r\n\r\nexport type PriceReactionColumnDefinition = PriceReactionColumnDefinitionBase & {\r\n bottomBorderClassName?: string\r\n hasLeftBorder?: boolean\r\n hasLeftSeparator?: boolean\r\n hasRightBorder?: boolean\r\n hasRightSeparator?: boolean\r\n headerClassName?: string\r\n isSeparator?: boolean\r\n leftBorderClassName?: string\r\n rightBorderClassName?: string\r\n topBorderClassName?: string\r\n}\r\n\r\nexport type PriceReactionSubColumnDefinition = PriceReactionColumnDefinitionBase\r\n\r\nexport type PriceReactionColumnsType = {\r\n columns: PriceReactionColumnDefinition[]\r\n subColumns: Record\r\n}\r\n\r\ntype RevisionsChartItem = EarningRevisionWithDate & {\r\n lowHigh: [number, number]\r\n timestamp: number\r\n}\r\n\r\nexport type RevisionsChartData = RevisionsChartItem[]\r\n","import * as React from 'react'\r\nimport { PropsWithChildren } from 'react'\r\n\r\nimport { HighlightedBox, HighlightedBoxColor } from './HighlightedBox'\r\n\r\nfunction getColorForValue(value: number): HighlightedBoxColor {\r\n if (value <= 10) {\r\n return HighlightedBoxColor.DarkGreen\r\n } else if (value <= 20) {\r\n return HighlightedBoxColor.MediumGreen\r\n } else if (value <= 30) {\r\n return HighlightedBoxColor.LightGreen\r\n } else if (value < 70) {\r\n return HighlightedBoxColor.Neutral\r\n } else if (value < 80) {\r\n return HighlightedBoxColor.LightRed\r\n } else if (value < 90) {\r\n return HighlightedBoxColor.MediumRed\r\n } else {\r\n return HighlightedBoxColor.DarkRed\r\n }\r\n}\r\n\r\ninterface RsiValueProps {\r\n className?: string\r\n value?: number | null\r\n}\r\n\r\nexport function RsiValue({ children, className, value }: PropsWithChildren) {\r\n if (!Number.isFinite(value)) {\r\n return null\r\n }\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import * as dateFns from 'date-fns'\r\nimport * as React from 'react'\r\n\r\nimport { encodeQueryString } from '../../../app/queryString'\r\nimport { Button, Icon } from '../../components'\r\nimport { TIMEFRAME } from '../../constants/common'\r\nimport { getEarningsDateSuffix } from '../../util'\r\nimport {\r\n Earning,\r\n EarningReportReaction,\r\n EarningValueProperty,\r\n EarningsEstimateType,\r\n PriceReactionWhen,\r\n} from '../earnings-common/types'\r\nimport { RsiValue } from './RsiValue'\r\nimport { EARNINGS_DATE_FORMAT, FISCAL_YEAR_MARK } from './constants'\r\nimport { PriceReactionDataEnum, PriceReactionRowDataType } from './types'\r\n\r\nexport function getIsEarningEstimate(\r\n earning: Pick<\r\n Earning,\r\n EarningValueProperty.SalesActual | EarningValueProperty.EpsReportedActual | EarningValueProperty.EpsActual\r\n >\r\n) {\r\n const {\r\n [EarningValueProperty.SalesActual]: salesActual,\r\n [EarningValueProperty.EpsReportedActual]: epsReportedActual,\r\n [EarningValueProperty.EpsActual]: epsActual,\r\n } = earning\r\n\r\n return [salesActual, epsReportedActual, epsActual].every((value) => value === null)\r\n}\r\n\r\nfunction getChartLink(ticker: string, chartStartDate: Date, chartEndDate: Date) {\r\n // see: custom-date-range-utils.ts: getTimeframeFromDateRange\r\n const range = `range_${dateFns.format(chartStartDate, 'MM-dd-yyyy')}x${dateFns.format(chartEndDate, 'MM-dd-yyyy')}`\r\n const anchorDate = new Date()\r\n const startToReferenceDateNumOfDays = dateFns.differenceInCalendarDays(anchorDate, chartStartDate) + 1\r\n const timeframe = startToReferenceDateNumOfDays <= 200 ? TIMEFRAME.i30 : TIMEFRAME.d\r\n return `/charts?${encodeQueryString({\r\n t: ticker,\r\n p: timeframe,\r\n r: range,\r\n l: '1h1v',\r\n })}`\r\n}\r\n\r\nexport function mapPriceReactionData(priceReactionData: EarningReportReaction[]) {\r\n const result: PriceReactionRowDataType[] = []\r\n\r\n for (const reportReaction of priceReactionData) {\r\n const earningsDate = dateFns.parseISO(reportReaction.reportDate)\r\n const fiscalEndDate = reportReaction.fiscalEndDate ? dateFns.parseISO(reportReaction.fiscalEndDate) : null\r\n\r\n const data: PriceReactionRowDataType = {\r\n label: reportReaction.reportDate,\r\n labelElement: (\r\n
\r\n
\r\n {dateFns.format(earningsDate, EARNINGS_DATE_FORMAT)} {getEarningsDateSuffix(earningsDate)}\r\n
\r\n \r\n \r\n \r\n
\r\n ),\r\n id: reportReaction.fiscalPeriod,\r\n values: Object.keys(reportReaction.reactions).map((when) => ({\r\n year: when,\r\n when: when as PriceReactionWhen,\r\n value: reportReaction.reactions[when].price,\r\n })),\r\n subData: [\r\n {\r\n id: PriceReactionDataEnum.priceDiff,\r\n label: '',\r\n labelElement: (\r\n
\r\n
\r\n {formatQuarterName(reportReaction.fiscalPeriod)}\r\n {fiscalEndDate && ({dateFns.format(fiscalEndDate, 'MMM ‘yy')})}\r\n
\r\n
{reportReaction.ticker} %
\r\n
\r\n ),\r\n values: Object.keys(reportReaction.reactions).map((when) => ({\r\n year: when,\r\n when: when as PriceReactionWhen,\r\n value: reportReaction.reactions[when].priceDiff,\r\n })),\r\n },\r\n {\r\n id: PriceReactionDataEnum.spyPriceDiff,\r\n label: '',\r\n labelElement: (\r\n
\r\n
\r\n
RSI
\r\n \r\n {reportReaction.rsi && Math.round(reportReaction.rsi)}\r\n \r\n
\r\n
SPY %
\r\n
\r\n ),\r\n values: Object.keys(reportReaction.reactions).map((when) => ({\r\n year: when,\r\n when: when as PriceReactionWhen,\r\n value: reportReaction.reactions[when].spyPriceDiff,\r\n })),\r\n },\r\n ],\r\n }\r\n\r\n result.push(data)\r\n }\r\n\r\n return result\r\n}\r\n\r\nconst QUARTAL_DELIMITER = 'Q'\r\nconst SEMI_ANNUAL_DELIMITER = 'S'\r\n\r\nexport function getIsSemiAnnualEarning(earnings: Earning[]) {\r\n return !!earnings[0]?.fiscalPeriod.includes(SEMI_ANNUAL_DELIMITER)\r\n}\r\n\r\nexport function getYearAndPeriodInt(periodString: string | null, isSemiAnnualEarning: boolean) {\r\n const [yearStr, periodStr] =\r\n periodString?.split(isSemiAnnualEarning ? SEMI_ANNUAL_DELIMITER : QUARTAL_DELIMITER) ?? []\r\n const year = Number.parseInt(yearStr)\r\n const period = Number.parseInt(periodStr)\r\n\r\n if (isNaN(year) || isNaN(period)) {\r\n return { year: null, period: null }\r\n }\r\n\r\n return { year, period }\r\n}\r\n\r\nfunction getYearInt(periodString: string | null) {\r\n const [yearStr] = periodString?.split(FISCAL_YEAR_MARK) ?? []\r\n const year = Number.parseInt(yearStr)\r\n return isNaN(year) ? null : year\r\n}\r\n\r\nexport function getFormattedPeriodValue(\r\n periodString: string | null,\r\n isAnnualEarning: boolean,\r\n isSemiAnnualEarning: boolean\r\n) {\r\n if (isAnnualEarning) {\r\n const year = getYearInt(periodString)\r\n return `${FISCAL_YEAR_MARK} ${year}`\r\n }\r\n\r\n const { year, period } = getYearAndPeriodInt(periodString, isSemiAnnualEarning)\r\n if (year === null || period === null) {\r\n return null\r\n }\r\n\r\n return `${isSemiAnnualEarning ? SEMI_ANNUAL_DELIMITER : QUARTAL_DELIMITER}${period} ${year}`\r\n}\r\n\r\nexport function formatQuarterName(fiscalPeriod: string) {\r\n return `${fiscalPeriod.substring(4, 6)} ‘${fiscalPeriod.substring(2, 4)}`\r\n}\r\n\r\nexport function formatYearName(fiscalPeriod: string) {\r\n return `${FISCAL_YEAR_MARK} ‘${fiscalPeriod.substring(2, 4)}`\r\n}\r\n\r\nexport function formatFiscalName(fiscalPeriod: string) {\r\n return fiscalPeriod.endsWith(FISCAL_YEAR_MARK) ? formatYearName(fiscalPeriod) : formatQuarterName(fiscalPeriod)\r\n}\r\n\r\nexport function adjustEstimate(value: number, estimateType: EarningsEstimateType) {\r\n return estimateType === EarningsEstimateType.sales ? value * 1_000_000 : value\r\n}\r\n","import { decodeQueryString, encodeQueryString } from '../../../../app/queryString'\r\nimport { SubMenuTabs } from '../../../components/SubMenu/SubMenuTabs'\r\nimport { QuoteSubview } from '../types'\r\n\r\nexport const FINANCIALS_SECTION_LABELS = {\r\n [QuoteSubview.Revenue]: 'Revenue',\r\n [QuoteSubview.Dividends]: 'Dividends',\r\n [QuoteSubview.Earnings]: 'Earnings',\r\n [QuoteSubview.Forecast]: 'Forecast',\r\n}\r\n\r\nconst FINANCIAL_MENU_TABS: Array = [\r\n QuoteSubview.Dividends,\r\n QuoteSubview.Earnings,\r\n QuoteSubview.Revenue,\r\n QuoteSubview.Forecast,\r\n]\r\n\r\nfunction getFinancialMenuTabs() {\r\n const searchParams = decodeQueryString()\r\n\r\n return FINANCIAL_MENU_TABS.map((value) => ({\r\n label: FINANCIALS_SECTION_LABELS[value],\r\n href: `/quote.ashx?${encodeQueryString({ ...searchParams, ty: value })}`,\r\n isActive: searchParams.ty === value,\r\n reloadDocument: true,\r\n }))\r\n}\r\n\r\nexport function QuoteFinancialsTabMenu() {\r\n return \r\n}\r\n","import * as React from 'react'\r\n\r\nimport { SubMenu } from '../../../components/SubMenu/SubMenu'\r\n\r\ninterface Props {\r\n leftContent?: React.ReactNode\r\n rightContent?: React.ReactNode\r\n}\r\n\r\nexport function QuoteStickySubMenu({ leftContent, rightContent }: Props) {\r\n return \r\n}\r\n","var _excluded = [\"x1\", \"y1\", \"x2\", \"y2\", \"key\"],\n _excluded2 = [\"offset\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Cartesian Grid\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { warn } from '../util/LogUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nimport { getCoordinatesOfGrid, getTicksOfAxis } from '../util/ChartUtils';\nimport { getTicks } from './getTicks';\nimport { CartesianAxis } from './CartesianAxis';\nimport { useArbitraryXAxis, useChartHeight, useChartWidth, useOffset, useYAxisWithFiniteDomainOrRandom } from '../context/chartLayoutContext';\n\n/**\n * The