{"version":3,"file":"earnings.558b4451.js","mappings":"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","sources":["webpack://@finviz/website/./js/main/modules/earnings/EarningsHeader.tsx","webpack://@finviz/website/./js/main/modules/earnings/EstimateBeat.tsx","webpack://@finviz/website/./js/main/modules/earnings/EstimateBeats.tsx","webpack://@finviz/website/./js/main/modules/earnings/EstimateTypeChipSwitch.tsx","webpack://@finviz/website/./js/main/modules/earnings/FiscalPeriodSelector.tsx","webpack://@finviz/website/./js/main/modules/earnings/charts/PriceRevisionTooltip.tsx","webpack://@finviz/website/./js/main/modules/earnings/charts/PriceRevisionsChart.tsx","webpack://@finviz/website/./js/main/modules/earnings/charts/UpDownRevisionsChart.tsx","webpack://@finviz/website/./js/main/modules/earnings/EstimateRevisions.tsx","webpack://@finviz/website/./js/main/modules/earnings/LatestRevision.tsx","webpack://@finviz/website/./js/main/modules/earnings/LatestRevisions.tsx","webpack://@finviz/website/./js/main/modules/earnings/PriceReactionTableRow.tsx","webpack://@finviz/website/./js/main/modules/earnings/PriceReactionTable.tsx","webpack://@finviz/website/./js/main/modules/earnings/OhlcPriceChange.tsx","webpack://@finviz/website/./js/main/modules/earnings/usePriceReactionColumns.tsx","webpack://@finviz/website/./js/main/modules/earnings/PriceReaction.tsx","webpack://@finviz/website/./js/main/modules/earnings/WidgetSettingsSection.tsx","webpack://@finviz/website/./js/main/modules/earnings/index.tsx","webpack://@finviz/website/../node_modules/recharts/es6/component/ResponsiveContainer.js"],"sourcesContent":["import * as dateFns from 'date-fns'\r\nimport { addMonths, parseISO } from 'date-fns'\r\nimport React from 'react'\r\n\r\nimport { getDate } from '../../../app/header/utils'\r\nimport { KeyStat } from '../../components/keystats/KeyStat'\r\nimport { KeyStats } from '../../components/keystats/KeyStats'\r\nimport { getEarningsDateSuffix, shortFormatDollar } from '../../util'\r\nimport { EARNINGS_DATE_FORMAT } from './constants'\r\nimport { EarningsData } from './types'\r\nimport { getFormattedPeriodValue, getIsEarningEstimate, getIsSemiAnnualEarning } from './utils'\r\n\r\nfunction getMonths(isAnnualEarning: boolean, isSemiAnnualEarning: boolean) {\r\n if (isAnnualEarning) return 12\r\n if (isSemiAnnualEarning) return 6\r\n return 3\r\n}\r\n\r\ntype WidgetHeaderProps = Pick\r\n\r\nexport default function EarningsHeader({ earningsDate, earningsData, earningsAnnualData }: WidgetHeaderProps) {\r\n const isAnnualEarning = !earningsData.length\r\n const isSemiAnnualEarning = getIsSemiAnnualEarning(earningsData)\r\n const nextReportInfo = React.useMemo(() => {\r\n const data = isAnnualEarning ? earningsAnnualData : earningsData\r\n const parsedEarningsDate = earningsDate ? parseISO(earningsDate) : null\r\n const firstEstimateEarningIndex = data.findIndex(getIsEarningEstimate)\r\n const firstEstimateEarning = data[firstEstimateEarningIndex] ?? null\r\n const lastEarning = data[firstEstimateEarningIndex - 1] ?? null\r\n\r\n if (lastEarning === null || firstEstimateEarning === null) {\r\n return {\r\n date: null,\r\n nextPeriod: null,\r\n dateSuffix: '',\r\n eps: null,\r\n gaapEps: null,\r\n revenue: null,\r\n }\r\n }\r\n\r\n const lastEarningDate = lastEarning.earningsDate\r\n const shouldShowEstimatedNextEarningsDate = !(\r\n parsedEarningsDate && getDate(parsedEarningsDate).getTime() >= Date.now()\r\n )\r\n const estimatedEarningsDate = lastEarningDate\r\n ? addMonths(parseISO(lastEarningDate), getMonths(isAnnualEarning, isSemiAnnualEarning))\r\n : null\r\n\r\n return {\r\n date: shouldShowEstimatedNextEarningsDate ? estimatedEarningsDate : parsedEarningsDate,\r\n nextPeriod: getFormattedPeriodValue(firstEstimateEarning.fiscalPeriod, isAnnualEarning, isSemiAnnualEarning),\r\n dateSuffix:\r\n shouldShowEstimatedNextEarningsDate && estimatedEarningsDate\r\n ? '(Est)'\r\n : getEarningsDateSuffix(parsedEarningsDate),\r\n eps: firstEstimateEarning?.epsEstimate,\r\n gaapEps: firstEstimateEarning.epsReportedEstimate,\r\n revenue: firstEstimateEarning?.salesEstimate,\r\n }\r\n }, [earningsDate, earningsData, earningsAnnualData, isAnnualEarning, isSemiAnnualEarning])\r\n\r\n return (\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\n\r\ninterface Props {\r\n beats: number\r\n color: string\r\n label: string\r\n total: number\r\n}\r\n\r\nexport default function EstimateBeat({ beats, color, label, total }: Props) {\r\n const percent = ((beats / total) * 100).toFixed(0)\r\n return (\r\n
\r\n
\r\n {percent}%\r\n
\r\n
\r\n
\r\n {label} beats the estimate\r\n
\r\n
\r\n \r\n {beats}/{total}\r\n {' '}\r\n last quarters\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useMemo } from 'react'\r\n\r\nimport colors from '../../../../../config/colors'\r\nimport { Earning } from '../earnings-common/types'\r\nimport EstimateBeat from './EstimateBeat'\r\n\r\nconst QUARTERS_TO_COMPARE = 8\r\n\r\ninterface Props {\r\n earningsData: Earning[]\r\n}\r\n\r\nexport default function EstimateBeats({ earningsData }: Props) {\r\n const data = useMemo(() => {\r\n let quarters = 0\r\n let epsBeats = 0\r\n let gaapEpsBeats = 0\r\n let revenueBeats = 0\r\n for (let idx = earningsData.length - 1; idx > 0; idx--) {\r\n if (quarters >= QUARTERS_TO_COMPARE) {\r\n break\r\n }\r\n const earning = earningsData[idx]\r\n if (earning.epsActual !== null || earning.epsReportedActual !== null || earning.salesActual !== null) {\r\n quarters += 1\r\n if (earning.epsActual !== null && earning.epsEstimate !== null && earning.epsActual > earning.epsEstimate) {\r\n epsBeats++\r\n }\r\n if (\r\n earning.epsReportedActual !== null &&\r\n earning.epsReportedEstimate !== null &&\r\n earning.epsReportedActual > earning.epsReportedEstimate\r\n ) {\r\n gaapEpsBeats++\r\n }\r\n if (\r\n earning.salesActual !== null &&\r\n earning.salesEstimate !== null &&\r\n earning.salesActual > earning.salesEstimate\r\n ) {\r\n revenueBeats++\r\n }\r\n }\r\n }\r\n return {\r\n epsBeats,\r\n gaapEpsBeats,\r\n revenueBeats,\r\n quarters,\r\n }\r\n }, [earningsData])\r\n\r\n return (\r\n
\r\n \r\n \r\n \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 { EarningsEstimateType } from '../earnings-common/types'\r\nimport { EarningsSettings } from './types'\r\n\r\ntype Props = {\r\n label?: string\r\n}\r\n\r\nexport function EstimateTypeChipSwitch({ label }: 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 estimateType = settings.estimateType\r\n\r\n return (\r\n \r\n toggleSetting('estimateType', EarningsEstimateType.eps)}\r\n >\r\n EPS\r\n \r\n toggleSetting('estimateType', EarningsEstimateType.epsGaap)}\r\n >\r\n GAAP EPS\r\n \r\n toggleSetting('estimateType', EarningsEstimateType.sales)}\r\n >\r\n Sales\r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { Select } from '../../components'\r\nimport { formatFiscalName } from './utils'\r\n\r\ninterface Props {\r\n selected: string\r\n fiscalPeriods: string[]\r\n onSelect: (fiscalPeriod: string) => void\r\n}\r\n\r\nexport function FiscalPeriodSelector(props: Props) {\r\n const [selected, setSelected] = React.useState(props.selected)\r\n\r\n React.useEffect(() => {\r\n setSelected(props.selected)\r\n }, [props.selected])\r\n\r\n const fiscalPeriods = React.useMemo(\r\n () =>\r\n props.fiscalPeriods.map((fiscalPeriod) => ({\r\n value: fiscalPeriod,\r\n label: formatFiscalName(fiscalPeriod),\r\n })),\r\n [props.fiscalPeriods]\r\n )\r\n\r\n return (\r\n {\r\n setSelected(item.value)\r\n props.onSelect(item.value)\r\n }}\r\n isLoading={false}\r\n />\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport * as dateFns from 'date-fns'\r\nimport React, { PropsWithChildren } from 'react'\r\n\r\nimport { Icon } from '../../../components'\r\nimport { formatDollar, shortFormatDollar } from '../../../util'\r\nimport { EarningsEstimateType } from '../../earnings-common/types'\r\nimport { EARNINGS_DATE_FORMAT, EarningsColor, EarningsEstimateTypeLabels } from '../constants'\r\nimport { EarningRevisionWithDate } from '../types'\r\nimport { formatFiscalName, getEarningsColor } from '../utils'\r\n\r\nfunction formatEstimateLabel(estimateType: EarningsEstimateType, fiscalPeriod: string) {\r\n return `${formatFiscalName(fiscalPeriod)} ${EarningsEstimateTypeLabels[estimateType]} Estimate`\r\n}\r\n\r\nenum TooltipIcon {\r\n dot = 'dot',\r\n downArrow = 'downArrow',\r\n upArrow = 'upArrow',\r\n}\r\n\r\ntype TooltipRowProps = {\r\n color: string\r\n icon: TooltipIcon\r\n name: string\r\n}\r\n\r\nfunction TooltipRow({ color, icon, name, children }: PropsWithChildren) {\r\n return (\r\n
\r\n
\r\n \r\n {icon === TooltipIcon.upArrow && (\r\n \r\n )}\r\n {icon === TooltipIcon.downArrow && (\r\n \r\n )}\r\n {icon === TooltipIcon.dot && (\r\n \r\n )}\r\n {name}\r\n \r\n {children}\r\n
\r\n
\r\n )\r\n}\r\n\r\ntype Props = {\r\n estimateType: EarningsEstimateType\r\n isActive: boolean\r\n revision: EarningRevisionWithDate | undefined\r\n}\r\n\r\nexport function PriceRevisionTooltip({ estimateType, isActive, revision }: Props) {\r\n if (!estimateType || !isActive || !revision) return null\r\n\r\n return (\r\n
\r\n
\r\n {revision.date && dateFns.format(revision.date, EARNINGS_DATE_FORMAT)}\r\n
\r\n \r\n {shortFormatDollar(revision.mean)} ({shortFormatDollar(revision.low)}–{shortFormatDollar(revision.high)})\r\n \r\n \r\n {formatDollar(revision.price)}\r\n \r\n \r\n {revision.upRevisions}/{revision.estimates}\r\n \r\n \r\n {revision.downRevisions}/{revision.estimates}\r\n \r\n
\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport React from 'react'\r\nimport { Area, ComposedChart, Line, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts'\r\n\r\nimport { formatMonth, shortFormatNumber } from '../../../util'\r\nimport { EarningsEstimateType } from '../../earnings-common/types'\r\nimport { getMonthlyTicks } from '../../earnings-common/utils'\r\nimport {\r\n EarningsColor,\r\n PRICE_REVISIONS_CHART_HEIGHT,\r\n PRICE_REVISIONS_CHART_WIDTH,\r\n PRICE_REVISIONS_TICK_COUNT,\r\n PRICE_REVISIONS_YAXIS_WIDTH,\r\n REVISIONS_LEFT_TICK_STYLE,\r\n REVISIONS_RIGHT_TICK_STYLE,\r\n X_TICK_STYLE,\r\n} from '../constants'\r\nimport { RevisionsChartData } from '../types'\r\nimport { getEarningsColor } from '../utils'\r\nimport { PriceRevisionTooltip } from './PriceRevisionTooltip'\r\n\r\nconst CHART_GRID_COMMON_PROPS = 'absolute border-t border-secondary left-11 right-10'\r\n\r\ntype Props = {\r\n activeIndex: number\r\n chartData: RevisionsChartData\r\n endingTimestamp: number\r\n estimateType: EarningsEstimateType\r\n isActive: boolean\r\n onSetActiveIndex: (value: number) => void\r\n onSetIsActive: (value: boolean) => void\r\n startingTimestamp: number\r\n}\r\n\r\nexport function PriceRevisionsChart({\r\n activeIndex,\r\n chartData,\r\n endingTimestamp,\r\n estimateType,\r\n isActive,\r\n onSetActiveIndex,\r\n onSetIsActive,\r\n startingTimestamp,\r\n}: Props) {\r\n const monthlyTicks = React.useMemo(\r\n () => getMonthlyTicks(startingTimestamp, endingTimestamp),\r\n [startingTimestamp, endingTimestamp]\r\n )\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/*
*/}\r\n {\r\n onSetIsActive(true)\r\n }}\r\n onMouseLeave={() => {\r\n onSetIsActive(false)\r\n }}\r\n >\r\n \r\n {\r\n if (typeof props.activeTooltipIndex === 'number' && props.activeTooltipIndex !== activeIndex) {\r\n onSetActiveIndex(props.activeTooltipIndex)\r\n }\r\n }}\r\n onMouseLeave={() => {\r\n onSetActiveIndex(-1)\r\n }}\r\n >\r\n formatMonth(value)}\r\n tickLine={false}\r\n ticks={monthlyTicks}\r\n type=\"number\"\r\n />\r\n shortFormatNumber(value)}\r\n tickLine={false}\r\n type=\"number\"\r\n width={PRICE_REVISIONS_YAXIS_WIDTH}\r\n yAxisId=\"estimate\"\r\n />\r\n \r\n \r\n \r\n \r\n (\r\n \r\n )}\r\n cursor={isActive ? { stroke: getEarningsColor(EarningsColor.cursor) } : false}\r\n isAnimationActive={false}\r\n />\r\n \r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport React from 'react'\r\nimport { Bar, ComposedChart, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts'\r\n\r\nimport {\r\n EarningsColor,\r\n PRICE_REVISIONS_CHART_WIDTH,\r\n PRICE_REVISIONS_YAXIS_WIDTH,\r\n REVISIONS_LEFT_TICK_STYLE,\r\n REVISIONS_RIGHT_TICK_STYLE,\r\n UPDOWN_REVISIONS_CHART_HEIGHT,\r\n UPDOWN_REVISIONS_TICK_COUNT,\r\n} from '../constants'\r\nimport { RevisionsChartData } from '../types'\r\nimport { getEarningsColor } from '../utils'\r\n\r\nconst CHART_GRID_COMMON_PROPS = 'absolute border-t border-secondary left-11 right-10'\r\n\r\nfunction absIntFormat(value: number): string {\r\n return Math.abs(value).toFixed()\r\n}\r\n\r\ntype Props = {\r\n activeIndex: number\r\n chartData: RevisionsChartData\r\n endingTimestamp: number\r\n isActive: boolean\r\n onSetActiveIndex: (value: number) => void\r\n onSetIsActive: (value: boolean) => void\r\n startingTimestamp: number\r\n}\r\n\r\nexport function UpDownRevisionsChart({\r\n activeIndex,\r\n chartData,\r\n endingTimestamp,\r\n isActive,\r\n onSetActiveIndex,\r\n onSetIsActive,\r\n startingTimestamp,\r\n}: Props) {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n onSetIsActive(true)\r\n }}\r\n onMouseLeave={() => {\r\n onSetIsActive(false)\r\n }}\r\n >\r\n \r\n {\r\n if (typeof props.activeTooltipIndex === 'number' && props.activeTooltipIndex !== activeIndex) {\r\n onSetActiveIndex(props.activeTooltipIndex)\r\n }\r\n }}\r\n onMouseLeave={() => {\r\n onSetActiveIndex(-1)\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n null}\r\n cursor={isActive ? { stroke: getEarningsColor(EarningsColor.cursor) } : false}\r\n isAnimationActive={false}\r\n />\r\n \r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useMemo } from 'react'\r\n\r\nimport { Heading, Paragraph } from '../../components'\r\nimport { useFinancialsTableContext } from '../../components/financials-table'\r\nimport { EarningsEstimateType } from '../earnings-common/types'\r\nimport { EstimateTypeChipSwitch } from './EstimateTypeChipSwitch'\r\nimport { FiscalPeriodSelector } from './FiscalPeriodSelector'\r\nimport { PriceRevisionsChart } from './charts/PriceRevisionsChart'\r\nimport { UpDownRevisionsChart } from './charts/UpDownRevisionsChart'\r\nimport { FISCAL_YEAR_MARK, PRICE_REVISIONS_CHART_WIDTH } from './constants'\r\nimport { EarningsRevisionsByType, EarningsSettings, RevisionsChartData } from './types'\r\nimport { adjustEstimate } from './utils'\r\n\r\nfunction getDefaultFiscalPeriod(revisionData: EarningsRevisionsByType, estimateType: EarningsEstimateType) {\r\n const years = Object.keys(revisionData[estimateType].years)\r\n return years[years.length - 1]\r\n}\r\n\r\ninterface Props {\r\n revisionData: EarningsRevisionsByType\r\n}\r\n\r\nexport default function EstimateRevisions({ revisionData }: Props) {\r\n const [priceRevisionIsActive, setPriceRevisionIsActive] = React.useState(false)\r\n const [upDownRevisionIsActive, setUpDownRevisionIsActive] = React.useState(false)\r\n const [activeIndex, setActiveIndex] = React.useState(-1)\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n const estimateType = settings.estimateType\r\n const prepFiscalPeriod = settings.fiscalPeriod\r\n ? settings.fiscalPeriod\r\n : getDefaultFiscalPeriod(revisionData, estimateType)\r\n\r\n const data = useMemo(() => {\r\n const chartData: RevisionsChartData = []\r\n const years = Object.keys(revisionData[estimateType].years)\r\n const quarters = Object.keys(revisionData[estimateType].quarters)\r\n const fiscalPeriods = [...years, ...quarters]\r\n let fiscalPeriod = prepFiscalPeriod\r\n if (!fiscalPeriods.includes(fiscalPeriod)) {\r\n fiscalPeriod = prepFiscalPeriod.endsWith(FISCAL_YEAR_MARK)\r\n ? years[years.length - 1]\r\n : quarters[quarters.length - 1]\r\n }\r\n if (!fiscalPeriod) {\r\n fiscalPeriod = years.length > 0 ? years[years.length - 1] : quarters[quarters.length - 1]\r\n }\r\n\r\n const revisions = fiscalPeriod.endsWith(FISCAL_YEAR_MARK)\r\n ? revisionData[estimateType].years[fiscalPeriod]\r\n : revisionData[estimateType].quarters[fiscalPeriod]\r\n for (const revision of revisions) {\r\n chartData.push({\r\n ...revision,\r\n high: adjustEstimate(revision.high, estimateType),\r\n low: adjustEstimate(revision.low, estimateType),\r\n lowHigh: [adjustEstimate(revision.low, estimateType), adjustEstimate(revision.high, estimateType)],\r\n mean: adjustEstimate(revision.mean, estimateType),\r\n negDownRevisions: -revision.downRevisions,\r\n timestamp: revision.date.getTime(),\r\n })\r\n }\r\n\r\n const startingTimestamp = chartData[0].timestamp\r\n const endingTimestamp = chartData[chartData.length - 1].timestamp\r\n\r\n return {\r\n chartData,\r\n endingTimestamp,\r\n fiscalPeriod,\r\n fiscalPeriods,\r\n startingTimestamp,\r\n }\r\n }, [estimateType, prepFiscalPeriod, revisionData])\r\n\r\n const isActive = priceRevisionIsActive || upDownRevisionIsActive\r\n\r\n return (\r\n
\r\n
\r\n \r\n Estimate Revisions\r\n \r\n
\r\n \r\n \r\n Period\r\n \r\n
\r\n setSettings({ ...settings, fiscalPeriod: selected })}\r\n />\r\n
\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\n","import * as dateFns from 'date-fns'\r\nimport React from 'react'\r\n\r\nimport { shortFormatNumber } from '../../util'\r\nimport { EARNINGS_DATE_FORMAT } from './constants'\r\n\r\ninterface Props {\r\n downRevisions: number\r\n estimate: number\r\n label: string\r\n revisionDate: Date\r\n revisions: number\r\n upRevisions: number\r\n}\r\n\r\nexport default function LatestRevision({\r\n downRevisions,\r\n estimate,\r\n label,\r\n revisionDate,\r\n revisions,\r\n upRevisions,\r\n}: Props) {\r\n return (\r\n
\r\n
{label}
\r\n
Estimate
\r\n
{shortFormatNumber(estimate)}
\r\n
Up Revisions
\r\n
\r\n {upRevisions}/{revisions}\r\n
\r\n
Down Revisions
\r\n
\r\n {downRevisions}/{revisions}\r\n
\r\n
Revision Date
\r\n
{dateFns.format(revisionDate, EARNINGS_DATE_FORMAT)}
\r\n
\r\n )\r\n}\r\n","import React, { useMemo } from 'react'\r\n\r\nimport { Heading } from '../../components'\r\nimport { useFinancialsTableContext } from '../../components/financials-table'\r\nimport { EstimateTypeChipSwitch } from './EstimateTypeChipSwitch'\r\nimport LatestRevision from './LatestRevision'\r\nimport { EarningRevisionWithDate, EarningsRevisionsByType, EarningsSettings } from './types'\r\nimport { adjustEstimate, formatQuarterName, formatYearName } from './utils'\r\n\r\nfunction getLatestRevision(revisions: EarningRevisionWithDate[]): EarningRevisionWithDate | null {\r\n return revisions && revisions.length > 0 ? revisions[revisions.length - 1] : null\r\n}\r\n\r\ninterface Props {\r\n revisionData: EarningsRevisionsByType\r\n}\r\n\r\nexport default function LatestRevisions({ revisionData }: Props) {\r\n const { settings } = useFinancialsTableContext()\r\n\r\n const estimateType = settings.estimateType\r\n\r\n const data = useMemo(() => {\r\n const quarters = Object.keys(revisionData[estimateType].quarters)\r\n const years = Object.keys(revisionData[estimateType].years)\r\n const lastQuarterKey = quarters[quarters.length - 1]\r\n const semilastQuarterKey = quarters[quarters.length - 2]\r\n const lastYearKey = years[years.length - 1]\r\n const semilastYearKey = years[years.length - 2]\r\n return {\r\n lastQuarter: getLatestRevision(revisionData[estimateType].quarters[lastQuarterKey]),\r\n semilastQuarter: getLatestRevision(revisionData[estimateType].quarters[semilastQuarterKey]),\r\n lastYear: getLatestRevision(revisionData[estimateType].years[lastYearKey]),\r\n semilastYear: getLatestRevision(revisionData[estimateType].years[semilastYearKey]),\r\n }\r\n }, [estimateType, revisionData])\r\n\r\n return (\r\n
\r\n
\r\n \r\n Latest Revisions\r\n \r\n \r\n
\r\n
\r\n {data.semilastQuarter && (\r\n \r\n )}\r\n {data.lastQuarter && (\r\n \r\n )}\r\n {data.semilastYear && (\r\n \r\n )}\r\n {data.lastYear && (\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 { TableAlign, TableBody, TableCell, TableRow } from '../../components/Table'\r\nimport { PriceReactionColumnDefinition, PriceReactionRowDataType, PriceReactionSubColumnDefinition } from './types'\r\n\r\ntype PriceReactionTableRowProps = {\r\n data: PriceReactionRowDataType\r\n columns: PriceReactionColumnDefinition[]\r\n subColumns?: Record\r\n isFirst: boolean\r\n isLast: boolean\r\n}\r\n\r\nexport default function PriceReactionTableRow({\r\n data,\r\n columns,\r\n subColumns,\r\n isFirst,\r\n isLast,\r\n}: PriceReactionTableRowProps) {\r\n const { label, labelElement, labelColumnClassName, subData } = data\r\n const isBottomBorder = subData.length === 0 && isLast\r\n\r\n return (\r\n \r\n \r\n \r\n {labelElement ?? {label}}\r\n \r\n\r\n {columns.map((column, index, array) => {\r\n const isLastCell = index === array.length - 1\r\n return (\r\n \r\n {column.renderColumn(data)}\r\n \r\n )\r\n })}\r\n \r\n\r\n {subData.map((item, index, array) => {\r\n const isSubBottomBorder = index === array.length - 1 && isLast\r\n return (\r\n \r\n \r\n {item.labelElement ?? {item.label}}\r\n \r\n {subColumns?.[item.id].map((subcolumn, colIdx, colArray) => {\r\n const column = columns[colIdx]\r\n const isLastCell = colIdx === colArray.length - 1\r\n return (\r\n \r\n {subcolumn.renderColumn(item)}\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\n\r\nimport { Table, TableAlign, TableCell, TableFooter, TableHead, TableHeader } from '../../components/Table'\r\nimport PriceReactionTableRow from './PriceReactionTableRow'\r\nimport { PriceReactionColumnDefinition, PriceReactionRowDataType, PriceReactionSubColumnDefinition } from './types'\r\n\r\ntype PriceReactionTableProps<\r\n RowDataType extends PriceReactionRowDataType,\r\n ColumnDefinition extends PriceReactionColumnDefinition,\r\n> = {\r\n data: RowDataType[]\r\n columns: ColumnDefinition[]\r\n subColumns?: Record\r\n}\r\n\r\nexport default function PriceReactionTable<\r\n RowDataType extends PriceReactionRowDataType,\r\n ColumnDefinition extends PriceReactionColumnDefinition,\r\n>({ columns, subColumns, data }: PriceReactionTableProps) {\r\n return (\r\n \r\n \r\n \r\n Report Date\r\n \r\n {columns.map((column) => (\r\n \r\n {column.name}\r\n \r\n ))}\r\n \r\n {data.map((row, index) => (\r\n \r\n ))}\r\n \r\n \r\n Daily change and RSI 14 are based on the report date for BMO releases and the following day for AMC releases.\r\n \r\n \r\n
\r\n )\r\n}\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) {\r\n return HighlightedBoxColor.Neutral\r\n } else if (value <= -10) {\r\n return HighlightedBoxColor.DarkRed\r\n } else if (value <= -5) {\r\n return HighlightedBoxColor.MediumRed\r\n } else if (value < 0) {\r\n return HighlightedBoxColor.LightRed\r\n } else if (value >= 10) {\r\n return HighlightedBoxColor.DarkGreen\r\n } else if (value >= 5) {\r\n return HighlightedBoxColor.MediumGreen\r\n } else {\r\n return HighlightedBoxColor.LightGreen\r\n }\r\n}\r\n\r\ninterface OhlcPriceChangeProps {\r\n className?: string\r\n value?: number | null\r\n}\r\n\r\nexport function OhlcPriceChange({ 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 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 { formatNumber } from '../../util'\r\nimport { PriceReactionWhen } from '../earnings-common/types'\r\nimport { OhlcPriceChange } from './OhlcPriceChange'\r\nimport { PriceReactionColumnsType, PriceReactionDataEnum, PriceReactionRowDataType } from './types'\r\n\r\nconst WHEN_LABELS: { [K in PriceReactionWhen]: string } = {\r\n [PriceReactionWhen.MINUS_DAYS_3]: '-3 Days',\r\n [PriceReactionWhen.MINUS_DAYS_2]: '-2 Days',\r\n [PriceReactionWhen.MINUS_DAYS_1]: '-1 Day',\r\n [PriceReactionWhen.OPEN]: 'Open',\r\n [PriceReactionWhen.HIGH]: 'High',\r\n [PriceReactionWhen.LOW]: 'Low',\r\n [PriceReactionWhen.CLOSE]: 'Close',\r\n [PriceReactionWhen.PLUS_DAYS_1]: '+1 Day',\r\n [PriceReactionWhen.PLUS_DAYS_2]: '+2 Days',\r\n [PriceReactionWhen.PLUS_DAYS_3]: '+3 Days',\r\n [PriceReactionWhen.PLUS_WEEK_1]: '+1 Week',\r\n [PriceReactionWhen.MINUS_WEEK_1]: '-1 Week',\r\n}\r\n\r\nconst PREV_DAYS_WHENS: PriceReactionWhen[] = [\r\n PriceReactionWhen.MINUS_DAYS_3,\r\n PriceReactionWhen.MINUS_DAYS_2,\r\n PriceReactionWhen.MINUS_DAYS_1,\r\n]\r\nconst OHLC_WHENS: PriceReactionWhen[] = [\r\n PriceReactionWhen.OPEN,\r\n PriceReactionWhen.HIGH,\r\n PriceReactionWhen.LOW,\r\n PriceReactionWhen.CLOSE,\r\n]\r\nconst NEXT_DAYS_WHENS: PriceReactionWhen[] = [\r\n PriceReactionWhen.PLUS_DAYS_1,\r\n PriceReactionWhen.PLUS_DAYS_2,\r\n PriceReactionWhen.PLUS_DAYS_3,\r\n]\r\nconst WEEK_WHENS: PriceReactionWhen[] = [PriceReactionWhen.PLUS_WEEK_1, PriceReactionWhen.MINUS_WEEK_1]\r\nconst ALL_WHENS = [...PREV_DAYS_WHENS, ...OHLC_WHENS, ...NEXT_DAYS_WHENS, ...WEEK_WHENS]\r\n\r\nconst SEPARATOR_HEADER = 'px-0 w-1'\r\nconst OHLC_HEADER = 'text-violet-500 dark:text-violet-300 font-semibold'\r\nconst OHLC_BOTTOM_BORDER = 'border-b-violet-500 dark:border-b-violet-300'\r\nconst OHLC_LEFT_BORDER = 'border-l-violet-500 dark:border-l-violet-300'\r\nconst OHLC_RIGHT_BORDER = 'border-r-violet-500 dark:border-r-violet-300'\r\nconst OHLC_TOP_BORDER = 'border-t-violet-500 dark:border-t-violet-300'\r\n\r\nconst WHEN_INDEXES = ALL_WHENS.reduce(\r\n (acc, val, idx) => {\r\n acc[val] = idx\r\n return acc\r\n },\r\n {} as { [K in PriceReactionWhen]: number }\r\n)\r\n\r\nconst getColumns = (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 renderPrice = (data: PriceReactionRowDataType, colIdx: number) => {\r\n const value = data.values && data.values[colIdx] && data.values[colIdx].value\r\n return {typeof value === 'number' ? formatNumber(value) : '—'}\r\n }\r\n\r\n const columns: PriceReactionColumnsType['columns'] = [\r\n ...PREV_DAYS_WHENS.map((when) => ({\r\n align: TableAlign.Right,\r\n className: classNames(commonClassName, { 'border-r': when === PriceReactionWhen.MINUS_DAYS_1 }),\r\n hasLeftBorder: when === PriceReactionWhen.MINUS_DAYS_3,\r\n hasRightBorder: when === PriceReactionWhen.MINUS_DAYS_1,\r\n hasRightSeparator: when === PriceReactionWhen.MINUS_DAYS_1,\r\n headerClassName: commonClassName,\r\n id: when,\r\n name: WHEN_LABELS[when],\r\n renderColumn: (data: PriceReactionRowDataType) => renderPrice(data, WHEN_INDEXES[when]),\r\n })),\r\n {\r\n className: commonClassName,\r\n headerClassName: SEPARATOR_HEADER,\r\n id: 'separator1',\r\n isSeparator: true,\r\n name: '',\r\n renderColumn: () => null,\r\n },\r\n {\r\n align: TableAlign.Right,\r\n bottomBorderClassName: OHLC_BOTTOM_BORDER,\r\n className: classNames(commonClassName, 'border-l', OHLC_LEFT_BORDER),\r\n hasLeftBorder: true,\r\n hasLeftSeparator: true,\r\n headerClassName: classNames(commonClassName, OHLC_HEADER),\r\n id: PriceReactionWhen.OPEN,\r\n leftBorderClassName: OHLC_LEFT_BORDER,\r\n name: WHEN_LABELS[PriceReactionWhen.OPEN],\r\n renderColumn: (data: PriceReactionRowDataType) => renderPrice(data, WHEN_INDEXES[PriceReactionWhen.OPEN]),\r\n topBorderClassName: OHLC_TOP_BORDER,\r\n },\r\n {\r\n align: TableAlign.Right,\r\n bottomBorderClassName: OHLC_BOTTOM_BORDER,\r\n className: commonClassName,\r\n headerClassName: classNames(commonClassName, OHLC_HEADER),\r\n id: PriceReactionWhen.HIGH,\r\n name: WHEN_LABELS[PriceReactionWhen.HIGH],\r\n renderColumn: (data: PriceReactionRowDataType) => renderPrice(data, WHEN_INDEXES[PriceReactionWhen.HIGH]),\r\n topBorderClassName: OHLC_TOP_BORDER,\r\n },\r\n {\r\n align: TableAlign.Right,\r\n bottomBorderClassName: OHLC_BOTTOM_BORDER,\r\n className: commonClassName,\r\n headerClassName: classNames(commonClassName, OHLC_HEADER),\r\n id: PriceReactionWhen.LOW,\r\n name: WHEN_LABELS[PriceReactionWhen.LOW],\r\n renderColumn: (data: PriceReactionRowDataType) => renderPrice(data, WHEN_INDEXES[PriceReactionWhen.LOW]),\r\n topBorderClassName: OHLC_TOP_BORDER,\r\n },\r\n {\r\n align: TableAlign.Right,\r\n bottomBorderClassName: OHLC_BOTTOM_BORDER,\r\n className: classNames(commonClassName, 'border-r', OHLC_RIGHT_BORDER),\r\n hasRightBorder: true,\r\n hasRightSeparator: true,\r\n headerClassName: classNames(commonClassName, OHLC_HEADER),\r\n id: PriceReactionWhen.CLOSE,\r\n name: WHEN_LABELS[PriceReactionWhen.CLOSE],\r\n renderColumn: (data: PriceReactionRowDataType) => renderPrice(data, WHEN_INDEXES[PriceReactionWhen.CLOSE]),\r\n rightBorderClassName: OHLC_RIGHT_BORDER,\r\n topBorderClassName: OHLC_TOP_BORDER,\r\n },\r\n {\r\n className: commonClassName,\r\n headerClassName: SEPARATOR_HEADER,\r\n id: 'separator2',\r\n isSeparator: true,\r\n name: '',\r\n renderColumn: () => null,\r\n },\r\n ...NEXT_DAYS_WHENS.map((when) => ({\r\n align: TableAlign.Right,\r\n className: classNames(commonClassName, { 'border-l': when === PriceReactionWhen.PLUS_DAYS_1 }),\r\n hasLeftBorder: when === PriceReactionWhen.PLUS_DAYS_1,\r\n hasLeftSeparator: when === PriceReactionWhen.PLUS_DAYS_1,\r\n headerClassName: commonClassName,\r\n id: when,\r\n name: WHEN_LABELS[when],\r\n renderColumn: (data: PriceReactionRowDataType) => renderPrice(data, WHEN_INDEXES[when]),\r\n })),\r\n ...WEEK_WHENS.map((when) => ({\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n hasLeftBorder: when === PriceReactionWhen.PLUS_WEEK_1,\r\n headerClassName: commonClassName,\r\n id: when,\r\n name: WHEN_LABELS[when],\r\n renderColumn: (data: PriceReactionRowDataType) => renderPrice(data, WHEN_INDEXES[when]),\r\n })),\r\n ]\r\n\r\n const subColumns: PriceReactionColumnsType['subColumns'] = {\r\n [PriceReactionDataEnum.priceDiff]: columns.map((column) => ({\r\n id: column.id,\r\n name: column.name,\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n renderColumn: (data) => {\r\n if (column.isSeparator) {\r\n return null\r\n }\r\n const colIdx = WHEN_INDEXES[column.id as PriceReactionWhen]\r\n const value = data.values && data.values[colIdx] && data.values[colIdx].value\r\n if (typeof value !== 'number') {\r\n return \r\n }\r\n if (OHLC_WHENS.includes(column.id as PriceReactionWhen)) {\r\n return {formatNumber(value, { showPlusSign: true })}%\r\n }\r\n return (\r\n \r\n {formatNumber(value, { showPlusSign: true })}%\r\n \r\n )\r\n },\r\n })),\r\n [PriceReactionDataEnum.spyPriceDiff]: columns.map((column) => ({\r\n id: column.id,\r\n name: column.name,\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n renderColumn: (data) => {\r\n if (column.isSeparator) {\r\n return null\r\n }\r\n const colIdx = WHEN_INDEXES[column.id as PriceReactionWhen]\r\n const value = data.values && data.values[colIdx] && data.values[colIdx].value\r\n if (typeof value !== 'number') {\r\n return \r\n }\r\n return (\r\n \r\n {formatNumber(value, { showPlusSign: true })}%\r\n \r\n )\r\n },\r\n })),\r\n }\r\n\r\n return { columns, subColumns }\r\n}\r\n\r\nexport function usePriceReactionColumns(isCompact: boolean) {\r\n return React.useMemo(() => getColumns(isCompact), [isCompact])\r\n}\r\n","import React, { useMemo } from 'react'\r\n\r\nimport WidgetHeader from '../earnings-common/WidgetHeader'\r\nimport { EarningReportReaction } from '../earnings-common/types'\r\nimport PriceReactionTable from './PriceReactionTable'\r\nimport { usePriceReactionColumns } from './usePriceReactionColumns'\r\nimport { mapPriceReactionData } from './utils'\r\n\r\ninterface Props {\r\n priceReactionData: EarningReportReaction[]\r\n}\r\n\r\nexport default function PriceReaction({ priceReactionData }: Props) {\r\n const { columns, subColumns } = usePriceReactionColumns(true)\r\n\r\n const data = useMemo(() => mapPriceReactionData(priceReactionData), [priceReactionData])\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \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, EarningsTimeframeEnum } from '../earnings-common/types'\r\nimport { EarningsSettings } from './types'\r\n\r\ninterface Props {\r\n earningsTimeframe: EarningsTimeframeEnum\r\n isSemiAnnualEarning: boolean\r\n showTimeframe: boolean\r\n}\r\n\r\nexport default function WidgetSettingsSection({ earningsTimeframe, isSemiAnnualEarning, showTimeframe }: 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 yoyGrowthLabel = React.useMemo(() => {\r\n const isQuarterlyTimeframe = earningsTimeframe === EarningsTimeframeEnum.quarterly // EarningsTimeframeEnum.quarterly is used for both quarterly & semiannual\r\n\r\n if (isQuarterlyTimeframe) {\r\n return isSemiAnnualEarning ? 'SoS Growth' : 'QoQ Growth'\r\n }\r\n\r\n return 'YoY Growth'\r\n }, [isSemiAnnualEarning, earningsTimeframe])\r\n\r\n return (\r\n
\r\n \r\n {\r\n toggleSetting(EarningsDataEnum.yoyChange, !settings[EarningsDataEnum.yoyChange])\r\n }}\r\n >\r\n {yoyGrowthLabel}\r\n \r\n {\r\n toggleSetting(EarningsDataEnum.yoyChangePct, !settings[EarningsDataEnum.yoyChangePct])\r\n }}\r\n >\r\n {`${yoyGrowthLabel} %`}\r\n \r\n \r\n\r\n {showTimeframe && (\r\n \r\n {\r\n toggleSetting('earningsTimeframe', EarningsTimeframeEnum.annual)\r\n }}\r\n >\r\n Annual\r\n \r\n {\r\n toggleSetting('earningsTimeframe', EarningsTimeframeEnum.quarterly)\r\n }}\r\n >\r\n {isSemiAnnualEarning ? 'Semiannual' : 'Quarterly'}\r\n \r\n \r\n )}\r\n
\r\n )\r\n}\r\n","import * as dateFns from 'date-fns'\r\nimport React from 'react'\r\n\r\nimport { FinancialsTableContextProvider, useFinancialsTableContext } from '../../components/financials-table'\r\nimport { useFinancialsTablePersistScrollPosition } from '../../components/financials-table/useFinancialsTablePersistScrollPosition'\r\nimport { useCachedLoaderData } from '../../hooks/useCachedLoaderData'\r\nimport { EarningsWidget } from '../earnings-common/EarningsWidget'\r\nimport { EarningsWidgetCategory } from '../earnings-common/constants'\r\nimport { Earning, EarningsDataEnum, EarningsEstimateType, EarningsTimeframeEnum } from '../earnings-common/types'\r\nimport { getEffectiveTimeframe } from '../earnings-common/utils'\r\nimport { QuoteFinancialsTabMenu } from '../quote/components/QuoteFinancialsTabMenu'\r\nimport { QuoteStickySubMenu } from '../quote/components/QuoteStickySubMenu'\r\nimport EarningsHeader from './EarningsHeader'\r\nimport EstimateBeats from './EstimateBeats'\r\nimport EstimateRevisions from './EstimateRevisions'\r\nimport LatestRevisions from './LatestRevisions'\r\nimport PriceReaction from './PriceReaction'\r\nimport WidgetSettingsSection from './WidgetSettingsSection'\r\nimport { DEFAULT_SETTINGS, FISCAL_YEAR_MARK, SETTINGS_COOKIE_KEY } from './constants'\r\nimport { EarningsData, EarningsRevisionsByType, EarningsSettings } from './types'\r\nimport { getIsSemiAnnualEarning, getYearAndPeriodInt } from './utils'\r\n\r\nfunction EarningsComponent() {\r\n const { data: dataRaw } = useCachedLoaderData()\r\n const { settings } = useFinancialsTableContext()\r\n const isSemiAnnualEarning = getIsSemiAnnualEarning(dataRaw?.earningsData ?? [])\r\n const data = React.useMemo(() => {\r\n if (dataRaw === null) return null\r\n\r\n const sorter = (a: Earning, b: Earning) => {\r\n const { year: yearA, period: periodA } = getYearAndPeriodInt(a.fiscalPeriod, isSemiAnnualEarning)\r\n const { year: yearB, period: periodB } = getYearAndPeriodInt(b.fiscalPeriod, isSemiAnnualEarning)\r\n\r\n if ([yearA, yearB, periodA, periodB].includes(null)) {\r\n return 0\r\n }\r\n\r\n if (yearA === yearB) {\r\n return periodA! - periodB!\r\n }\r\n\r\n return yearA! - yearB!\r\n }\r\n\r\n const earningsData = [...(dataRaw?.earningsData ?? [])].sort(sorter)\r\n const earningsAnnualData = [...(dataRaw?.earningsAnnualData ?? [])].sort(sorter)\r\n\r\n const revisionsByType = (dataRaw?.earningsRevisionsData ?? []).reduce(\r\n (acc, revision) => {\r\n const fiscalKey = revision.fiscalPeriod.endsWith(FISCAL_YEAR_MARK) ? 'years' : 'quarters'\r\n const fiscalPeriods = acc[revision.estimateType][fiscalKey]\r\n let fiscalData = fiscalPeriods[revision.fiscalPeriod]\r\n if (!fiscalData) {\r\n fiscalData = []\r\n fiscalPeriods[revision.fiscalPeriod] = fiscalData\r\n }\r\n fiscalData.push({ ...revision, date: dateFns.parseISO(revision.estimateDate) })\r\n return acc\r\n },\r\n {\r\n [EarningsEstimateType.eps]: { quarters: {}, years: {} },\r\n [EarningsEstimateType.epsGaap]: { quarters: {}, years: {} },\r\n [EarningsEstimateType.sales]: { quarters: {}, years: {} },\r\n } as EarningsRevisionsByType\r\n )\r\n\r\n return {\r\n ...dataRaw,\r\n earningsData,\r\n earningsAnnualData,\r\n revisionData: !!dataRaw?.earningsRevisionsData?.length ? revisionsByType : null,\r\n }\r\n }, [dataRaw, isSemiAnnualEarning])\r\n\r\n useFinancialsTablePersistScrollPosition({\r\n categoryAreasCounts: [2, 2, 2],\r\n dataKeys: [EarningsDataEnum.yoyChange, EarningsDataEnum.yoyChangePct],\r\n })\r\n\r\n const hasQuarterlyData = !!data?.earningsData?.length\r\n const hasAnnualData = !!data?.earningsAnnualData?.length\r\n const hasData = !!data && (hasAnnualData || hasQuarterlyData)\r\n const timeframe = hasData\r\n ? getEffectiveTimeframe(data?.earningsData, data?.earningsAnnualData, settings.earningsTimeframe)\r\n : EarningsTimeframeEnum.quarterly\r\n\r\n return (\r\n <>\r\n }\r\n rightContent={\r\n hasData ? (\r\n \r\n ) : undefined\r\n }\r\n />\r\n\r\n {hasData ? (\r\n
\r\n \r\n\r\n
\r\n {[EarningsWidgetCategory.Eps, EarningsWidgetCategory.EpsGaap, EarningsWidgetCategory.Revenue].map(\r\n (earningsWidgetCategory) => (\r\n \r\n )\r\n )}\r\n\r\n {hasQuarterlyData && (\r\n <>\r\n {data?.priceReactionData.length > 0 && }\r\n \r\n \r\n )}\r\n {data?.revisionData && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : (\r\n
\r\n Earnings are not available for this stock.\r\n
\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default function Earnings() {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","function _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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport clsx from 'clsx';\nimport React, { forwardRef, cloneElement, useState, useImperativeHandle, useRef, useEffect, useMemo, useCallback } from 'react';\nimport throttle from 'lodash/throttle';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { getDisplayName } from '../util/ReactUtils';\nexport var ResponsiveContainer = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var aspect = _ref.aspect,\n _ref$initialDimension = _ref.initialDimension,\n initialDimension = _ref$initialDimension === void 0 ? {\n width: -1,\n height: -1\n } : _ref$initialDimension,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? '100%' : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? '100%' : _ref$height,\n _ref$minWidth = _ref.minWidth,\n minWidth = _ref$minWidth === void 0 ? 0 : _ref$minWidth,\n minHeight = _ref.minHeight,\n maxHeight = _ref.maxHeight,\n children = _ref.children,\n _ref$debounce = _ref.debounce,\n debounce = _ref$debounce === void 0 ? 0 : _ref$debounce,\n id = _ref.id,\n className = _ref.className,\n onResize = _ref.onResize,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style;\n var containerRef = useRef(null);\n var onResizeRef = useRef();\n onResizeRef.current = onResize;\n useImperativeHandle(ref, function () {\n return Object.defineProperty(containerRef.current, 'current', {\n get: function get() {\n // eslint-disable-next-line no-console\n console.warn('The usage of ref.current.current is deprecated and will no longer be supported.');\n return containerRef.current;\n },\n configurable: true\n });\n });\n var _useState = useState({\n containerWidth: initialDimension.width,\n containerHeight: initialDimension.height\n }),\n _useState2 = _slicedToArray(_useState, 2),\n sizes = _useState2[0],\n setSizes = _useState2[1];\n var setContainerSize = useCallback(function (newWidth, newHeight) {\n setSizes(function (prevState) {\n var roundedWidth = Math.round(newWidth);\n var roundedHeight = Math.round(newHeight);\n if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n return prevState;\n }\n return {\n containerWidth: roundedWidth,\n containerHeight: roundedHeight\n };\n });\n }, []);\n useEffect(function () {\n var callback = function callback(entries) {\n var _onResizeRef$current;\n var _entries$0$contentRec = entries[0].contentRect,\n containerWidth = _entries$0$contentRec.width,\n containerHeight = _entries$0$contentRec.height;\n setContainerSize(containerWidth, containerHeight);\n (_onResizeRef$current = onResizeRef.current) === null || _onResizeRef$current === void 0 || _onResizeRef$current.call(onResizeRef, containerWidth, containerHeight);\n };\n if (debounce > 0) {\n callback = throttle(callback, debounce, {\n trailing: true,\n leading: false\n });\n }\n var observer = new ResizeObserver(callback);\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n containerWidth = _containerRef$current.width,\n containerHeight = _containerRef$current.height;\n setContainerSize(containerWidth, containerHeight);\n observer.observe(containerRef.current);\n return function () {\n observer.disconnect();\n };\n }, [setContainerSize, debounce]);\n var chartContent = useMemo(function () {\n var containerWidth = sizes.containerWidth,\n containerHeight = sizes.containerHeight;\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n var calculatedWidth = isPercent(width) ? containerWidth : width;\n var calculatedHeight = isPercent(height) ? containerHeight : height;\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n }\n\n // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n var isCharts = !Array.isArray(children) && getDisplayName(children.type).endsWith('Chart');\n return React.Children.map(children, function (child) {\n if ( /*#__PURE__*/React.isValidElement(child)) {\n return /*#__PURE__*/cloneElement(child, _objectSpread({\n width: calculatedWidth,\n height: calculatedHeight\n }, isCharts ? {\n style: _objectSpread({\n height: '100%',\n width: '100%',\n maxHeight: calculatedHeight,\n maxWidth: calculatedWidth\n }, child.props.style)\n } : {}));\n }\n return child;\n });\n }, [aspect, children, height, maxHeight, minHeight, minWidth, sizes, width]);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id ? \"\".concat(id) : undefined,\n className: clsx('recharts-responsive-container', className),\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: width,\n height: height,\n minWidth: minWidth,\n minHeight: minHeight,\n maxHeight: maxHeight\n }),\n ref: containerRef\n }, chartContent);\n});"],"names":["EarningsHeader","_ref","_nextReportInfo$nextP","earningsDate","earningsData","earningsAnnualData","isAnnualEarning","length","isSemiAnnualEarning","getIsSemiAnnualEarning","nextReportInfo","React","_data$firstEstimateEa","_data","data","parsedEarningsDate","parseISO","firstEstimateEarningIndex","findIndex","getIsEarningEstimate","firstEstimateEarning","lastEarning","date","nextPeriod","dateSuffix","eps","gaapEps","revenue","lastEarningDate","shouldShowEstimatedNextEarningsDate","getDate","getTime","Date","now","estimatedEarningsDate","addMonths","getMonths","getFormattedPeriodValue","fiscalPeriod","getEarningsDateSuffix","epsEstimate","epsReportedEstimate","salesEstimate","_jsxs","KeyStats","className","children","_jsx","KeyStat","datapoint","dateFns","EARNINGS_DATE_FORMAT","label","shortFormatDollar","defaultValue","multiply","EstimateBeat","beats","color","total","percent","toFixed","style","QUARTERS_TO_COMPARE","EstimateBeats","useMemo","quarters","epsBeats","gaapEpsBeats","revenueBeats","idx","earning","epsActual","epsReportedActual","salesActual","colors","EstimateTypeChipSwitch","settings","setSettings","useFinancialsTableContext","toggleSetting","key","value","estimateType","ChipSwitch","size","ChipSwitchButton","active","EarningsEstimateType","onClick","epsGaap","sales","FiscalPeriodSelector","props","selected","setSelected","fiscalPeriods","map","formatFiscalName","Select","items","onChange","item","onSelect","isLoading","formatEstimateLabel","EarningsEstimateTypeLabels","TooltipIcon","TooltipRow","icon","name","classNames","upArrow","Icon","width","downArrow","dot","backgroundColor","PriceRevisionTooltip","_ref2","isActive","revision","getEarningsColor","EarningsColor","estimate","mean","low","high","price","formatDollar","upRevisions","estimates","downRevisions","CHART_GRID_COMMON_PROPS","PriceRevisionsChart","activeIndex","chartData","endingTimestamp","onSetActiveIndex","onSetIsActive","startingTimestamp","monthlyTicks","getMonthlyTicks","PRICE_REVISIONS_CHART_WIDTH","top","onMouseEnter","onMouseLeave","ResponsiveContainer","height","PRICE_REVISIONS_CHART_HEIGHT","ComposedChart","syncId","margin","left","right","bottom","onMouseMove","activeTooltipIndex","XAxis","axisLine","stroke","axis","dataKey","domain","dy","scale","tick","X_TICK_STYLE","tickFormatter","formatMonth","tickLine","ticks","type","YAxis","interval","orientation","REVISIONS_LEFT_TICK_STYLE","tickCount","PRICE_REVISIONS_TICK_COUNT","shortFormatNumber","PRICE_REVISIONS_YAXIS_WIDTH","yAxisId","REVISIONS_RIGHT_TICK_STYLE","Area","activeDot","connectNulls","fill","lowHigh","fillOpacity","isAnimationActive","Line","Tooltip","content","cursor","absIntFormat","Math","abs","UpDownRevisionsChart","UPDOWN_REVISIONS_CHART_HEIGHT","stackOffset","hide","UPDOWN_REVISIONS_TICK_COUNT","Bar","upBar","maxBarSize","stackId","downBar","EstimateRevisions","revisionData","priceRevisionIsActive","setPriceRevisionIsActive","upDownRevisionIsActive","setUpDownRevisionIsActive","setActiveIndex","prepFiscalPeriod","years","Object","keys","getDefaultFiscalPeriod","includes","endsWith","FISCAL_YEAR_MARK","revisions","push","adjustEstimate","negDownRevisions","timestamp","Heading","level","Paragraph","LatestRevision","revisionDate","getLatestRevision","LatestRevisions","lastQuarterKey","semilastQuarterKey","lastYearKey","semilastYearKey","lastQuarter","semilastQuarter","lastYear","semilastYear","formatQuarterName","formatYearName","PriceReactionTableRow","columns","subColumns","isFirst","isLast","labelElement","labelColumnClassName","subData","isBottomBorder","TableBody","TableRow","isHoverable","TableCell","hasLeading","align","TableAlign","Left","column","index","array","_column$getColumnClas","isLastCell","isSeparator","hasLeftBorder","hasRightBorder","hasLeftSeparator","hasRightSeparator","topBorderClassName","undefined","bottomBorderClassName","getColumnClassName","call","renderColumn","id","_item$labelElement","isSubBottomBorder","subcolumn","colIdx","colArray","leftBorderClassName","rightBorderClassName","PriceReactionTable","Table","TableHead","TableHeader","headerClassName","hasPadding","row","_row$id","TableFooter","colSpan","getColorForValue","HighlightedBoxColor","DarkRed","MediumRed","LightRed","DarkGreen","MediumGreen","LightGreen","Neutral","OhlcPriceChange","Number","isFinite","HighlightedBox","WHEN_LABELS","PriceReactionWhen","MINUS_DAYS_3","MINUS_DAYS_2","MINUS_DAYS_1","OPEN","HIGH","LOW","CLOSE","PLUS_DAYS_1","PLUS_DAYS_2","PLUS_DAYS_3","PLUS_WEEK_1","MINUS_WEEK_1","PREV_DAYS_WHENS","OHLC_WHENS","NEXT_DAYS_WHENS","WEEK_WHENS","ALL_WHENS","SEPARATOR_HEADER","OHLC_HEADER","OHLC_BOTTOM_BORDER","OHLC_LEFT_BORDER","OHLC_RIGHT_BORDER","OHLC_TOP_BORDER","WHEN_INDEXES","reduce","acc","val","getColumns","isCompact","commonClassName","renderPrice","values","formatNumber","when","Right","PriceReactionDataEnum","priceDiff","showPlusSign","RedGreenText","rightContent","spyPriceDiff","PriceReaction","priceReactionData","mapPriceReactionData","WidgetHeader","WidgetSettingsSection","earningsTimeframe","showTimeframe","yoyGrowthLabel","EarningsTimeframeEnum","quarterly","EarningsDataEnum","yoyChange","yoyChangePct","annual","EarningsComponent","_dataRaw$earningsData","_data$earningsData","_data$earningsAnnualD","dataRaw","useCachedLoaderData","_dataRaw$earningsData2","_dataRaw$earningsAnnu","_dataRaw$earningsRevi","_dataRaw$earningsRevi2","sorter","a","b","year","yearA","period","periodA","getYearAndPeriodInt","yearB","periodB","sort","revisionsByType","earningsRevisionsData","fiscalKey","fiscalData","estimateDate","useFinancialsTablePersistScrollPosition","categoryAreasCounts","dataKeys","hasQuarterlyData","hasAnnualData","hasData","timeframe","getEffectiveTimeframe","_Fragment","QuoteStickySubMenu","leftContent","QuoteFinancialsTabMenu","EarningsWidgetCategory","Eps","EpsGaap","Revenue","earningsWidgetCategory","EarningsWidget","Earnings","FinancialsTableContextProvider","defaultSettings","DEFAULT_SETTINGS","cookieKey","SETTINGS_COOKIE_KEY","_typeof","o","Symbol","iterator","constructor","prototype","ownKeys","e","r","t","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","i","toPrimitive","TypeError","String","_toPrimitive","configurable","writable","_slicedToArray","arr","Array","isArray","_arrayWithHoles","l","n","u","f","next","done","_iterableToArrayLimit","minLen","_arrayLikeToArray","toString","slice","from","test","_unsupportedIterableToArray","_nonIterableRest","len","arr2","forwardRef","ref","aspect","_ref$initialDimension","initialDimension","_ref$width","_ref$height","_ref$minWidth","minWidth","minHeight","maxHeight","_ref$debounce","debounce","onResize","_ref$style","containerRef","useRef","onResizeRef","current","useImperativeHandle","get","console","warn","_useState2","useState","containerWidth","containerHeight","sizes","setSizes","setContainerSize","useCallback","newWidth","newHeight","prevState","roundedWidth","round","roundedHeight","useEffect","callback","entries","_onResizeRef$current","_entries$0$contentRec","contentRect","trailing","leading","observer","ResizeObserver","_containerRef$current","getBoundingClientRect","observe","disconnect","chartContent","calculatedWidth","calculatedHeight","isCharts","child","cloneElement","maxWidth","concat"],"sourceRoot":""}