{"version":3,"file":"dividends.3bec1bd4.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/Label.tsx","webpack://@finviz/website/./js/main/components/chart/ManualGrid.tsx","webpack://@finviz/website/./js/main/modules/dividends/DividendsHeader.tsx","webpack://@finviz/website/./js/main/modules/dividends/constants.ts","webpack://@finviz/website/./js/main/modules/dividends/DividendsPayoutHistory.tsx","webpack://@finviz/website/./js/main/modules/dividends/types.ts","webpack://@finviz/website/./js/main/modules/dividends/WidgetSettingsSection.tsx","webpack://@finviz/website/./js/main/modules/dividends/utils.ts","webpack://@finviz/website/./js/main/modules/dividends/charts/DividendsChart.tsx","webpack://@finviz/website/./js/main/modules/dividends/useTableColumns.tsx","webpack://@finviz/website/./js/main/modules/dividends/index.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/react-error-boundary/dist/react-error-boundary.esm.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 { Label as RechartsLabel } from 'recharts'\r\n\r\nimport { CHART_ITEM_COLORS, ChartItemColorType } from './constants'\r\n\r\ninterface LabelInnerProps extends LabelProps {\r\n dx?: number\r\n dy?: number\r\n viewBox?: { x: number; y: number; width: number; height: number }\r\n color?: ChartItemColorType\r\n}\r\n\r\nfunction LabelInner({\r\n color,\r\n viewBox,\r\n dx = 0,\r\n dy = 0,\r\n angle = -90,\r\n children,\r\n ...props\r\n}: React.PropsWithChildren) {\r\n if (!viewBox) return\r\n\r\n const x = viewBox.x + viewBox.width / 2 + dx\r\n const y = viewBox.y + viewBox.height / 2 + dy\r\n\r\n return (\r\n \r\n {color && }\r\n {children}\r\n \r\n )\r\n}\r\n\r\ninterface LabelProps extends React.PropsWithoutRef> {\r\n color?: ChartItemColorType\r\n}\r\n\r\nexport function Label({ children, color, ...props }: LabelProps) {\r\n return } {...props} />\r\n}\r\n\r\nLabel.displayName = RechartsLabel.displayName\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 * as dateFns from 'date-fns'\r\nimport React from 'react'\r\n\r\nimport { chartEventUtils } from '../../../app/charts-lib'\r\nimport { Heading } from '../../components/typography'\r\nimport { FINANCIALS_SECTION_LABELS } from '../quote/components/QuoteFinancialsTabMenu'\r\nimport { QuoteSubview } from '../quote/types'\r\nimport { DividendData } from './types'\r\n\r\ntype WidgetHeaderProps = Pick<\r\n DividendData,\r\n 'dividendExDate' | 'lastClose' | 'dividendTTM' | 'dividendEstimate' | 'dividendsData'\r\n>\r\n\r\nexport default function DividendsHeader({\r\n dividendExDate,\r\n dividendTTM,\r\n dividendEstimate,\r\n lastClose,\r\n dividendsData,\r\n}: WidgetHeaderProps) {\r\n const lastDividendData = dividendsData[0]\r\n\r\n return (\r\n
\r\n \r\n {FINANCIALS_SECTION_LABELS[QuoteSubview.Dividends]}\r\n \r\n\r\n
\r\n
\r\n Ex-Date\r\n \r\n {dividendExDate ? dateFns.format(dateFns.parseISO(dividendExDate), 'MMM dd, yyy') : '-'}\r\n \r\n
\r\n
\r\n Dividend amount\r\n {chartEventUtils.getFormattedValue({ value: lastDividendData.Ordinary })}\r\n
\r\n
\r\n Special\r\n \r\n {lastDividendData.Special !== null\r\n ? chartEventUtils.getFormattedValue({ value: lastDividendData.Special })\r\n : '-'}\r\n \r\n
\r\n
\r\n Dividend TTM\r\n \r\n {typeof dividendTTM === 'number' && typeof lastClose === 'number' ? (\r\n <>\r\n {chartEventUtils.getFormattedValue({ value: dividendTTM })} (\r\n {chartEventUtils.getFormattedValue({ value: (dividendTTM / lastClose) * 100 })}%)\r\n \r\n ) : (\r\n '-'\r\n )}\r\n \r\n
\r\n
\r\n Dividend Est.\r\n \r\n {typeof dividendEstimate === 'number' && typeof lastClose === 'number' ? (\r\n <>\r\n {chartEventUtils.getFormattedValue({ value: dividendEstimate })} (\r\n {chartEventUtils.getFormattedValue({ value: (dividendEstimate / lastClose) * 100 })}%)\r\n \r\n ) : (\r\n '-'\r\n )}\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import { TableAlign } from '../../components/Table'\r\n\r\n// These values match keys which come from BE so don't change them\r\nexport enum DividendValueProperty {\r\n Amount = 'Amount',\r\n Yield = 'Yield',\r\n Payout = 'Payout',\r\n}\r\n\r\nexport const HISTORY_COLUMNS = [\r\n {\r\n id: 'Exdate' as const,\r\n name: 'Ex-date',\r\n align: TableAlign.Left,\r\n },\r\n {\r\n id: 'Ordinary' as const,\r\n name: 'Amount',\r\n align: TableAlign.Right,\r\n },\r\n {\r\n id: 'Special' as const,\r\n name: 'Special',\r\n align: TableAlign.Right,\r\n },\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: 0, right: 0, bottom: 0, left: 0 }\r\n","import classNames from 'classnames'\r\nimport * as dateFns from 'date-fns'\r\nimport React from 'react'\r\n\r\nimport { Heading } from '../../components'\r\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../../components/Table'\r\nimport { shortFormatNumber } from '../../util'\r\nimport { HISTORY_COLUMNS } from './constants'\r\nimport { Dividend } from './types'\r\n\r\ninterface Props {\r\n dividends: Dividend[]\r\n}\r\n\r\nexport function DividendsPayoutHistory({ dividends }: Props) {\r\n return (\r\n
\r\n \r\n Dividend payout history\r\n \r\n \r\n \r\n {HISTORY_COLUMNS.map((column) => (\r\n \r\n {column.name}\r\n \r\n ))}\r\n {/* Spacer header col */}\r\n \r\n \r\n \r\n {dividends.map((dividend, index, arr) => (\r\n \r\n {HISTORY_COLUMNS.map((column) => (\r\n \r\n {column.id === 'Exdate'\r\n ? dateFns.format(dateFns.parseISO(dividend[column.id]), 'MMM dd, yyy')\r\n : shortFormatNumber(dividend[column.id], { fractions: 2 })}\r\n \r\n ))}\r\n\r\n {/* Spacer col */}\r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubRowDataType,\r\n} from '../../components/financials-table/types'\r\nimport type { DividendValueProperty } from './constants'\r\n\r\nexport interface DividendAnnual {\r\n Amount: number\r\n Estimate: boolean\r\n FiscalPeriod: string\r\n Payout: number\r\n Ticker: string\r\n Yield: number\r\n}\r\n\r\nexport interface DividendsDataType extends Omit {\r\n id: DividendValueProperty\r\n values: Array<{ year: string; value: number | null; isEstimate: boolean }>\r\n}\r\n\r\nexport interface Dividend {\r\n Exdate: string\r\n Ordinary: number\r\n Special: number\r\n Ticker: string\r\n}\r\n\r\nexport interface DividendData {\r\n lastClose: number | null\r\n dividendExDate: string | null\r\n dividendEstimate: number | null\r\n dividendTTM: number | null\r\n dividendsAnnualData: DividendAnnual[]\r\n dividendsData: Dividend[]\r\n}\r\n\r\nexport enum DividendDataEnum {\r\n yoyChange = 'yoyChange',\r\n yoyChangePct = 'yoyChangePct',\r\n}\r\n\r\nexport type DividendSettings = {\r\n [DividendDataEnum.yoyChange]: boolean\r\n [DividendDataEnum.yoyChangePct]: boolean\r\n}\r\n\r\nexport type DividendsColumnsType = {\r\n columns: FinancialsColumnDefinition[]\r\n subColumns: Record[]>\r\n}\r\n","import { ChipSwitch, ChipSwitchButton } from '../../components/ChipSwitch'\r\nimport { useFinancialsTableContext } from '../../components/financials-table'\r\nimport { DividendDataEnum, DividendSettings } from './types'\r\n\r\nexport default function WidgetSettingsSection() {\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n const toggleSetting = (key: keyof DividendSettings, value: DividendSettings[keyof DividendSettings]) => {\r\n setSettings({\r\n ...settings,\r\n [key]: value,\r\n })\r\n }\r\n\r\n return (\r\n \r\n {\r\n toggleSetting(DividendDataEnum.yoyChange, !settings[DividendDataEnum.yoyChange])\r\n }}\r\n >\r\n YoY Growth\r\n \r\n {\r\n toggleSetting(DividendDataEnum.yoyChangePct, !settings[DividendDataEnum.yoyChangePct])\r\n }}\r\n >\r\n YoY Growth %\r\n \r\n \r\n )\r\n}\r\n","import { shortFormatNumber } from '../../util'\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","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 { Label } from '../../../components/chart/Label'\r\nimport { Line } from '../../../components/chart/Line'\r\nimport { LineDot } from '../../../components/chart/LineDot'\r\nimport { ManualGrid } from '../../../components/chart/ManualGrid'\r\nimport { Tooltip, TooltipRow } from '../../../components/chart/Tooltip'\r\nimport { YAxis } from '../../../components/chart/YAxis'\r\nimport { ChartItemColorType } from '../../../components/chart/constants'\r\nimport { shortFormatNumber } from '../../../util'\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 DividendValueProperty,\r\n EXTRA_WIDTH,\r\n LABELS_MARGIN,\r\n LABELS_WIDTH,\r\n} from '../constants'\r\nimport { DividendsDataType } from '../types'\r\nimport { tickFormatter } from '../utils'\r\n\r\nexport type Props = {\r\n annualData: DividendsDataType[]\r\n isCompact: boolean\r\n}\r\n\r\ntype ChartYearData = { year: string; isEstimate: boolean } & Record\r\n\r\nexport function DividendsChart({ annualData, isCompact }: Props) {\r\n const columnsCount = annualData[0].values.length\r\n const barWidth = isCompact ? BAR_WIDTH_NARROW : BAR_WIDTH\r\n const { estimateColumnsCount, hasBarChart } = React.useMemo(\r\n () => ({\r\n estimateColumnsCount: annualData[0].values.filter(({ isEstimate }) => isEstimate).length,\r\n hasBarChart: annualData.some(({ id, isSelected }) => id === DividendValueProperty.Amount && 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 data[year] = { ...data[year], year, isEstimate, [id]: value }\r\n })\r\n })\r\n return Object.values(data)\r\n }, [annualData])\r\n\r\n const visibleLeftAxes = React.useMemo(() => annualData.slice(1).filter((group) => group.isSelected), [annualData])\r\n\r\n const chartWidth =\r\n columnsCount * barWidth + (columnsCount - 1) * BAR_GAP + EXTRA_WIDTH + LABELS_WIDTH * 2 * visibleLeftAxes.length\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 {annualData.map((row, index) => {\r\n const axisId = index > 0 ? `left${index}` : 'right'\r\n const orientation = index > 0 ? 'left' : 'right'\r\n const tickMargin = index > 0 ? (hasBarChart ? 0 : barLessChartYMargin) : LABELS_MARGIN\r\n const axisWidth = index > 0 ? LABELS_WIDTH * 2 : LABELS_WIDTH\r\n\r\n // Hide unselected axes but always keep the right axis\r\n if (!row.isSelected && index > 0) return null\r\n\r\n return (\r\n \r\n {index === 0 ? null : (\r\n \r\n )}\r\n \r\n )\r\n })}\r\n }\r\n formatValue={(value: number) => shortFormatNumber(value)}\r\n >\r\n {annualData.map(({ id, label, color, isSelected }) =>\r\n isSelected ? (\r\n \r\n ) : null\r\n )}\r\n \r\n {annualData.map(({ id, isSelected, color }, rowIndex) => {\r\n if (!isSelected) return null\r\n\r\n const axisId = rowIndex > 0 ? `left${rowIndex}` : 'right'\r\n\r\n if (id === DividendValueProperty.Amount) {\r\n return (\r\n (payload.isEstimate ? 'gray' : (color as ChartItemColorType))}\r\n yAxisId={axisId}\r\n />\r\n )\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}\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 { shortFormatNumber } from '../../util'\r\nimport { DividendDataEnum, DividendsColumnsType } from './types'\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: DividendsColumnsType['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 if (typeof annualDividendValue !== 'number') return \r\n const value = shortFormatNumber(annualDividendValue, { fractions: 2 })\r\n return {value}\r\n },\r\n }))\r\n\r\n const subColumns: DividendsColumnsType['subColumns'] = {\r\n [DividendDataEnum.yoyChange]: 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 (\r\n \r\n {shortFormatNumber(annualDividendValue, { defaultValue: '—' })}\r\n \r\n )\r\n },\r\n })),\r\n [DividendDataEnum.yoyChangePct]: 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 (\r\n \r\n {annualDividendValue?.toFixed(2) ?? '—'}\r\n \r\n )\r\n },\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 throttle from 'lodash.throttle'\r\nimport React from 'react'\r\n\r\nimport { ColorVariant } from '../../components'\r\nimport { TableAlign, TableHead, TableHeader } from '../../components/Table'\r\nimport {\r\n FinancialsTableContextProvider,\r\n FinancialsWidget,\r\n getIsCompact,\r\n getYoYData,\r\n useFinancialsTableContext,\r\n} from '../../components/financials-table'\r\nimport { useCachedLoaderData } from '../../hooks/useCachedLoaderData'\r\nimport { QuoteFinancialsTabMenu } from '../quote/components/QuoteFinancialsTabMenu'\r\nimport { QuoteStickySubMenu } from '../quote/components/QuoteStickySubMenu'\r\nimport DividendsHeader from './DividendsHeader'\r\nimport { DividendsPayoutHistory } from './DividendsPayoutHistory'\r\nimport WidgetSettingsSection from './WidgetSettingsSection'\r\nimport { DividendsChart } from './charts/DividendsChart'\r\nimport { BAR_WIDTH, DividendValueProperty } from './constants'\r\nimport { DividendData, DividendDataEnum, DividendSettings, DividendsDataType } from './types'\r\nimport { useTableColumns } from './useTableColumns'\r\n\r\nconst dividendsAnnualDataTemplate: Array> = [\r\n { label: 'Dividends per share (FY)', id: DividendValueProperty.Amount, color: ColorVariant.teal, isSelected: true },\r\n { label: 'Dividend yield (FY) %', id: DividendValueProperty.Yield, color: ColorVariant.green, isSelected: true },\r\n { label: 'Payout ratio (FY) %', id: DividendValueProperty.Payout, color: ColorVariant.purple, isSelected: false },\r\n]\r\n\r\nfunction mapData(data: DividendData) {\r\n const dividendsArray = dividendsAnnualDataTemplate.map((dividendCategory) => ({\r\n ...dividendCategory,\r\n values: data.dividendsAnnualData.map((annualData) => ({\r\n year: annualData.FiscalPeriod.substring(0, 4),\r\n value: annualData[dividendCategory.id],\r\n isEstimate: annualData.Estimate,\r\n })),\r\n }))\r\n\r\n return dividendsArray.map((dividendCategory) => {\r\n const yoyData = getYoYData(dividendCategory.values)\r\n\r\n return {\r\n ...dividendCategory,\r\n subData: [\r\n {\r\n id: DividendDataEnum.yoyChange,\r\n label: 'YoY Growth',\r\n values: dividendCategory.values.map((anualDividend) => ({\r\n ...anualDividend,\r\n value: yoyData.change[anualDividend.year] ?? null,\r\n })),\r\n },\r\n {\r\n id: DividendDataEnum.yoyChangePct,\r\n label: 'YoY Growth %',\r\n values: dividendCategory.values.map((anualDividend) => ({\r\n ...anualDividend,\r\n value: yoyData.changePct[anualDividend.year] ?? null,\r\n })),\r\n },\r\n ].filter(Boolean),\r\n }\r\n })\r\n}\r\n\r\nfunction DividendsComponent() {\r\n const { data } = useCachedLoaderData()\r\n const { settings } = useFinancialsTableContext()\r\n const [annualData, setAnnualData] = React.useState(() => (data ? mapData(data) : []))\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 [isCompact, setIsCompact] = React.useState(getIsCompact(yearKeys.length, BAR_WIDTH))\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 = throttle(() => {\r\n setIsCompact(getIsCompact(yearKeys.length, BAR_WIDTH))\r\n }, 100)\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 const onVisibilityChange = (id: string, isSelected: boolean) => {\r\n setAnnualData(\r\n annualData.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 const hasData = !!data && (data?.dividendsAnnualData?.length ?? 0) > 0 && (data?.dividendsData?.length ?? 0) > 0\r\n\r\n return (\r\n <>\r\n }\r\n rightContent={hasData ? : undefined}\r\n />\r\n\r\n {hasData ? (\r\n \r\n \r\n\r\n ({\r\n ...revenue,\r\n subData: revenue.subData.filter(({ id }) => settings[id]),\r\n }))}\r\n tableHead={\r\n \r\n \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 ) : (\r\n
\r\n Dividends are not available for this stock.\r\n
\r\n )}\r\n \r\n )\r\n}\r\n\r\nconst COOKIE_KEY = 'dividendsSettings'\r\nconst DEFAULT_SETTINGS: DividendSettings = {\r\n [DividendDataEnum.yoyChange]: false,\r\n [DividendDataEnum.yoyChangePct]: false,\r\n}\r\n\r\nexport default function Dividends() {\r\n return (\r\n \r\n \r\n \r\n )\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","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n"],"names":["SubMenu","_ref","leftContent","middleContent","rightContent","props","_jsx","className","classNames","children","_jsxs","isRedesignEnabled","SubMenuTabs","items","size","map","_ref2","label","href","isActive","reloadDocument","Button","as","Link","to","theme","rounding","active","LabelInner","color","viewBox","dx","dy","angle","x","width","y","height","fontSize","fontWeight","textAnchor","dominantBaseline","style","transform","CHART_ITEM_COLORS","Label","RechartsLabel","content","displayName","ManualGridComponent","ref","numberOfLines","visibleLeftAxes","rightOffset","estimateAreaWidth","lines","Array","from","length","right","_","index","ManualGrid","React","DividendsHeader","dividendExDate","dividendTTM","dividendEstimate","lastClose","dividendsData","lastDividendData","Heading","level","FINANCIALS_SECTION_LABELS","QuoteSubview","Dividends","dateFns","chartEventUtils","value","Ordinary","Special","_Fragment","DividendValueProperty","HISTORY_COLUMNS","id","name","align","TableAlign","Left","Right","BAR_WIDTH","CHART_HEIGHT","LABELS_WIDTH","LABELS_MARGIN","BAR_WIDTH_NARROW","BAR_GAP","EXTRA_WIDTH","CHART_MARGINS","top","bottom","left","DividendsPayoutHistory","dividends","Table","TableHead","column","TableHeader","TableCell","TableBody","dividend","arr","TableRow","hasLeading","shortFormatNumber","fractions","Exdate","DividendDataEnum","WidgetSettingsSection","settings","setSettings","useFinancialsTableContext","toggleSetting","key","ChipSwitch","ChipSwitchButton","yoyChange","onClick","yoyChangePct","tickFormatter","Math","abs","DividendsChart","annualData","isCompact","columnsCount","values","barWidth","estimateColumnsCount","hasBarChart","filter","isEstimate","some","_ref3","isSelected","Amount","chartData","data","forEach","_ref4","_ref5","year","Object","slice","group","chartWidth","barLessChartYMargin","ChartContext","ComposedChart","margin","stackOffset","row","axisId","orientation","tickMargin","axisWidth","YAxis","yAxisId","interval","Tooltip","showLabel","cursor","CursorBar","numberOfDatapoints","formatValue","_ref6","TooltipRow","indicator","dataKey","_ref7","rowIndex","Bar","payload","Line","activeDot","LineDot","getColumns","yearKeys","commonClassName","columns","renderColumn","_annualDividend$value","annualDividend","find","annualDividendValue","subColumns","_annualDividend$value2","RedGreenText","defaultValue","_annualDividend$value3","_annualDividendValue$","toFixed","dividendsAnnualDataTemplate","ColorVariant","teal","Yield","green","Payout","purple","DividendsComponent","_data$dividendsAnnual","_data$dividendsAnnual2","_data$dividendsData$l","_data$dividendsData","useCachedLoaderData","setAnnualData","dividendCategory","dividendsAnnualData","FiscalPeriod","substring","Estimate","yoyData","getYoYData","subData","anualDividend","_yoyData$change$anual","change","_yoyData$changePct$an","changePct","Boolean","mapData","flatMap","indexOf","setIsCompact","getIsCompact","useTableColumns","_document$getElementB","document","getElementById","removeProperty","onResize","throttle","window","addEventListener","removeEventListener","hasData","QuoteStickySubMenu","QuoteFinancialsTabMenu","undefined","minWidth","FinancialsWidget","revenue","tableHead","onVisibilityChange","item","COOKIE_KEY","DEFAULT_SETTINGS","FinancialsTableContextProvider","defaultSettings","cookieKey","Revenue","Earnings","Forecast","FINANCIAL_MENU_TABS","getFinancialMenuTabs","searchParams","decodeQueryString","encodeQueryString","ty","ErrorBoundaryContext","createContext","initialState","didCatch","error","ErrorBoundary","Component","constructor","super","this","resetErrorBoundary","bind","state","getDerivedStateFromError","_this$props$onReset","_this$props","_len","arguments","args","_key","onReset","call","reason","setState","componentDidCatch","info","_this$props$onError","_this$props2","onError","componentDidUpdate","prevProps","prevState","resetKeys","_this$props$onReset2","_this$props3","a","b","is","hasArrayChanged","next","prev","render","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","Provider"],"sourceRoot":""}