{"version":3,"file":"dividends.b3b3f545.js","mappings":"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","sources":["webpack://@finviz/website/./js/main/components/ChipSwitch.tsx","webpack://@finviz/website/./js/main/components/SubMenu/SubMenuTabs.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableContext.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableRow.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTable.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableStickyColumnWrapper.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsWidget.tsx","webpack://@finviz/website/./js/main/components/financials-table/utils.ts","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/ChartTooltip.tsx","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/components/SubMenu/SubMenu.tsx","webpack://@finviz/website/./js/main/modules/quote/components/QuoteStickySubMenu.tsx","webpack://@finviz/website/../node_modules/date-fns/esm/parseISO/index.js","webpack://@finviz/website/../node_modules/react-error-boundary/dist/react-error-boundary.esm.js"],"sourcesContent":["import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button, ButtonComponentProps, ButtonProps } from './button'\r\nimport { Paragraph } from './typography'\r\n\r\ninterface Props {\r\n children: (React.ReactElement | null)[]\r\n label: string\r\n size?: ButtonProps['size']\r\n rounding?: ButtonProps['rounding']\r\n}\r\n\r\nexport function ChipSwitch({ children, label, size, rounding }: Props) {\r\n return (\r\n
\r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n\r\n {React.Children.map(children, (child: React.ReactElement | null) => {\r\n if (React.isValidElement(child) && child.type === Button) {\r\n return React.cloneElement(child, {\r\n size,\r\n rounding,\r\n theme: child.props.theme ?? 'chipTransparent',\r\n className: classnames(child.props.className, {\r\n // @todo - these style should be applied globally onto all chipTransparent buttons\r\n '!text-gray-600 dark:!text-gray-400': !child.props.active,\r\n '!text-gray-800 dark:!text-white': child.props.active,\r\n }),\r\n })\r\n }\r\n\r\n return child\r\n })}\r\n
\r\n )\r\n}\r\n\r\nexport const ChipSwitchButton = Button\r\n","import { Link } from 'react-router-dom'\r\n\r\nimport { Button } from '../button'\r\n\r\ninterface Props {\r\n items: Array<{ label: string; href: string; isActive: boolean; reloadDocument?: boolean }>\r\n}\r\n\r\nexport function SubMenuTabs({ items }: 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 * as React from 'react'\r\n\r\nimport { getCookie } from '../../../app/shared/cookie'\r\nimport { setCookieRequest } from '../../services/api'\r\n\r\n/*\r\n * Context.\r\n */\r\nexport type FinancialsTableSettingsType = Record\r\n\r\nexport type FinancialsTableScrollInfo = {\r\n yPosition: number\r\n}\r\n\r\nexport interface FinancialsTableContextProps {\r\n settings: T\r\n setSettings: (settings: T) => void\r\n scrollInfo?: FinancialsTableScrollInfo\r\n}\r\n\r\nexport const FinancialsTableContext = React.createContext>({\r\n settings: {},\r\n setSettings: () => null,\r\n scrollInfo: undefined,\r\n})\r\n\r\n/*\r\n * Hook.\r\n */\r\n\r\nexport function useFinancialsTableContext() {\r\n return React.useContext(FinancialsTableContext) as FinancialsTableContextProps\r\n}\r\n\r\n/*\r\n * Component.\r\n */\r\n\r\ninterface Props {\r\n children: React.ReactNode\r\n defaultSettings: FinancialsTableSettingsType\r\n cookieKey: string\r\n}\r\n\r\nexport const FinancialsTableContextProvider = ({ children, cookieKey, defaultSettings }: Props) => {\r\n const [scrollInfo, setScrollInfo] = React.useState()\r\n const [settings, setSettings] = React.useState(() => {\r\n const cookieValue = decodeURIComponent(getCookie(cookieKey))\r\n if (cookieValue.length === 0) return defaultSettings\r\n\r\n try {\r\n return { ...defaultSettings, ...JSON.parse(cookieValue) } as FinancialsTableSettingsType\r\n } catch {\r\n return defaultSettings\r\n }\r\n })\r\n\r\n const handleSetSettingsChange = (settings: FinancialsTableSettingsType) => {\r\n setScrollInfo({ yPosition: window.scrollY })\r\n setSettings(settings)\r\n setCookieRequest(cookieKey, JSON.stringify(settings))\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import classNames from 'classnames'\r\n\r\nimport { TableAlign, TableBody, TableCell, TableRow } from '../Table'\r\nimport { Checkbox } from '../checkbox'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsTableRowProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n data: RowDataType\r\n columns: ColumnDefinition[]\r\n subColumns?: Record[]>\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n isFirst: boolean\r\n isLast: boolean\r\n}\r\n\r\nexport default function FinancialsTableRow<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n data,\r\n columns,\r\n subColumns,\r\n onVisibilityChange,\r\n isFirst,\r\n isLast,\r\n}: FinancialsTableRowProps) {\r\n const { id, label, labelElement, labelColumnClassName, isSelected, color, subData } = data\r\n\r\n return (\r\n {\r\n onVisibilityChange(id, !isSelected)\r\n }}\r\n >\r\n \r\n \r\n {label}}\r\n className=\"cursor-pointer\"\r\n color={color}\r\n size=\"none\"\r\n />\r\n \r\n\r\n {columns.map((column) => (\r\n \r\n {column.renderColumn(data)}\r\n \r\n ))}\r\n \r\n {subData?.map((item, index, array) => (\r\n \r\n \r\n {item.label}\r\n \r\n {subColumns?.[item.id].map((column) => (\r\n \r\n {column.renderColumn(item as SubColumnDefinition)}\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\n\r\nimport { Table } from '../Table'\r\nimport FinancialsTableRow from './FinancialsTableRow'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsTableProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n tableHead?: React.ReactNode\r\n tableFooter?: React.ReactNode\r\n data: RowDataType[]\r\n columns: ColumnDefinition[]\r\n subColumns?: Record[]>\r\n isTableFixed?: boolean\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n}\r\n\r\nexport default function FinancialsTable<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n tableHead,\r\n tableFooter,\r\n columns,\r\n subColumns,\r\n data,\r\n isTableFixed = true,\r\n onVisibilityChange,\r\n}: FinancialsTableProps) {\r\n return (\r\n \r\n {tableHead}\r\n {data.map((row, index) => (\r\n \r\n ))}\r\n {tableFooter}\r\n
\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\ninterface Props {\r\n children: React.ReactElement\r\n numOfTableRows: number\r\n className?: string\r\n}\r\n\r\nenum ShadowPosition {\r\n none,\r\n left,\r\n right,\r\n leftAndRight,\r\n}\r\n\r\ninterface TableScrollShadowProps {\r\n side: ShadowPosition.left | ShadowPosition.right\r\n position: { top?: number; left?: number; right?: number }\r\n height: number\r\n className?: string\r\n isVisible: boolean\r\n}\r\n\r\nfunction TableScrollShadow({ className, side, position, height, isVisible }: TableScrollShadowProps) {\r\n return (\r\n \r\n )\r\n}\r\n\r\nconst TABLE_SHADOW_MARGIN = 1 // margins to prevent covering borders with the shadow\r\n\r\nexport function FinancialsTableStickyColumnWrapper({ children, className, numOfTableRows }: Props) {\r\n const stickyRef = React.useRef(null)\r\n const [shadowPosition, setShadowPosition] = React.useState(ShadowPosition.none)\r\n const [shadowDimensions, setShadowDimensions] = React.useState({ left: 0, top: 0, height: 0 })\r\n\r\n React.useEffect(() => {\r\n const stickyElement = stickyRef.current\r\n if (!stickyElement) return\r\n\r\n const onScroll = throttle(function () {\r\n const stickyElement = stickyRef.current\r\n if (!stickyElement) return\r\n\r\n const stickyElementScrollLeft = Math.ceil(stickyElement.scrollLeft)\r\n\r\n let newShadowPosition = ShadowPosition.none\r\n const hasScrollSpaceToLeft = stickyElementScrollLeft > 0\r\n const hasScrollSpaceToRight =\r\n Math.ceil(stickyElement.offsetWidth) + stickyElementScrollLeft < stickyElement.scrollWidth\r\n if (hasScrollSpaceToLeft && hasScrollSpaceToRight) {\r\n newShadowPosition = ShadowPosition.leftAndRight\r\n } else if (hasScrollSpaceToLeft) {\r\n newShadowPosition = ShadowPosition.left\r\n } else if (hasScrollSpaceToRight) {\r\n newShadowPosition = ShadowPosition.right\r\n }\r\n\r\n setShadowPosition(newShadowPosition)\r\n }, 100)\r\n\r\n onScroll()\r\n\r\n stickyElement.scrollTo({\r\n left: stickyElement.scrollWidth,\r\n })\r\n\r\n stickyElement.addEventListener('scroll', onScroll)\r\n window.addEventListener('resize', onScroll)\r\n\r\n return () => {\r\n stickyElement.removeEventListener('scroll', onScroll)\r\n window.removeEventListener('resize', onScroll)\r\n }\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n const financialsTable = stickyRef.current?.querySelector('table.financials-table')\r\n const headHeight = financialsTable?.querySelector('thead')?.clientHeight ?? 0\r\n const firstColumnWidth = financialsTable?.querySelector('tr > td')?.clientWidth ?? 0\r\n\r\n setShadowDimensions({\r\n left: Math.ceil(firstColumnWidth),\r\n top: headHeight + TABLE_SHADOW_MARGIN,\r\n height: (financialsTable?.clientHeight ?? 0) - headHeight - 2 * TABLE_SHADOW_MARGIN,\r\n })\r\n }, [numOfTableRows])\r\n\r\n const { radiusCropFillerStyle, shadowLeftStyle, shadowRightStyle } = React.useMemo(\r\n () => ({\r\n radiusCropFillerStyle: {\r\n top: shadowDimensions.top - TABLE_SHADOW_MARGIN,\r\n height: shadowDimensions.height + 2 * TABLE_SHADOW_MARGIN,\r\n },\r\n shadowLeftStyle: {\r\n top: shadowDimensions.top,\r\n left: shadowDimensions.left,\r\n },\r\n shadowRightStyle: {\r\n top: shadowDimensions.top,\r\n right: 0,\r\n },\r\n }),\r\n [shadowDimensions]\r\n )\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {children}\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport FinancialsTable from './FinancialsTable'\r\nimport { FinancialsTableStickyColumnWrapper } from './FinancialsTableStickyColumnWrapper'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsWidgetProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n children: React.ReactNode\r\n header?: React.ReactNode\r\n tableHead?: React.ReactNode\r\n tableFooter?: React.ReactNode\r\n data: RowDataType[]\r\n columns: ColumnDefinition[]\r\n hasStickyColumnWrapper?: boolean\r\n stickyColumnWrapperClassName?: string\r\n subColumns?: Record[]>\r\n isTableFixed?: boolean\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n}\r\n\r\nexport function FinancialsWidget<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n children,\r\n tableHead,\r\n tableFooter,\r\n columns,\r\n stickyColumnWrapperClassName,\r\n subColumns,\r\n header,\r\n data,\r\n isTableFixed,\r\n hasStickyColumnWrapper,\r\n onVisibilityChange,\r\n}: FinancialsWidgetProps) {\r\n const financialsTable = (\r\n \r\n )\r\n return (\r\n
\r\n
\r\n {header}\r\n {children}\r\n
\r\n {hasStickyColumnWrapper ? (\r\n \r\n {financialsTable}\r\n \r\n ) : (\r\n financialsTable\r\n )}\r\n
\r\n )\r\n}\r\n","import { FinancialsRowValue } from './types'\r\n\r\nexport function getYoYData(data: T[]) {\r\n const sortedData = [...data].sort((a, b) => Number.parseInt(a.year) - Number.parseInt(b.year))\r\n return sortedData.reduce<{\r\n change: Record\r\n changePct: Record\r\n }>(\r\n (acc, { year, value }, i) => {\r\n const prev = sortedData[i - 1]?.value ?? null\r\n let change: number | null = null\r\n let changePct: number | null = null\r\n\r\n if (value !== null && prev !== null && value !== 0 && prev !== 0) {\r\n change = value - prev\r\n changePct = ((value - prev) / Math.abs(prev)) * 100\r\n }\r\n\r\n return {\r\n change: {\r\n ...acc.change,\r\n [year]: change,\r\n },\r\n changePct: {\r\n ...acc.changePct,\r\n [year]: changePct,\r\n },\r\n }\r\n },\r\n { change: {}, changePct: {} }\r\n )\r\n}\r\n\r\nexport function getMoMPercentageData(data: T[]) {\r\n const sortedData = [...data].sort((a, b) => Number.parseInt(a.year) - Number.parseInt(b.year))\r\n return sortedData.reduce>((acc, { year, value }, i) => {\r\n const prev = sortedData[i - 1]?.value ?? null\r\n let changePct: number | null = null\r\n\r\n if (value !== null && prev !== null && value !== 0 && prev !== 0) {\r\n changePct = ((value - prev) / Math.abs(prev)) * 100\r\n }\r\n\r\n return {\r\n ...acc,\r\n [year]: changePct,\r\n }\r\n }, {})\r\n}\r\n\r\nexport function getIsCompact(numOfCols: number, barWidth: number) {\r\n // ~1400 is max container width\r\n const maxContainerWidth = Math.min(window.innerWidth, 1400)\r\n\r\n const barsWindowWidthRatio = (barWidth * numOfCols) / maxContainerWidth\r\n return barsWindowWidthRatio > 0.65\r\n}\r\n\r\nexport function getHeatmapClassNames(value: number | null = null) {\r\n if (value === null || value === 0) return 'bg-neutral text-neutral'\r\n\r\n // Negative\r\n if (value < -80) return 'bg-danger-5 text-danger-5'\r\n if (value < -60) return 'bg-danger-4 text-danger-4'\r\n if (value < -40) return 'bg-danger-3 text-danger-3'\r\n if (value < -20) return 'bg-danger-2 text-danger-2'\r\n if (value < 0) return 'bg-danger-1 text-danger-1'\r\n\r\n // Positive\r\n if (value > 80) return 'bg-success-5 text-success-5'\r\n if (value > 60) return 'bg-success-4 text-success-4'\r\n if (value > 40) return 'bg-success-3 text-success-3'\r\n if (value > 20) return 'bg-success-2 text-success-2'\r\n if (value > 0) return 'bg-success-1 text-success-1'\r\n}\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, QuoteRoutes } from '../../constants'\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[QuoteRoutes.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 colors from '../../../../../config/colors'\r\nimport { 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\nexport const TICK_STYLE = { fontSize: 10, fontWeight: 500, textAnchor: 'end', fill: colors.gray[500] }\r\nexport const TOOLTIP_WRAPPER_STYLE = { outline: 'none', zIndex: 10 }\r\nexport const CURSOR_STYLE = {\r\n border: 0,\r\n stroke: 0,\r\n fill: FinvizSettings.hasDarkTheme ? colors.gray[700] : colors.gray[50],\r\n opacity: 0.65,\r\n}\r\nexport const TRANSPARENT_CURSOR = { opacity: 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 colors from '../../../../../config/colors'\r\nimport { ColorVariant } from '../../components'\r\nimport { shortFormatNumber } from '../../util'\r\n\r\nexport function getColor(color: ColorVariant) {\r\n switch (color) {\r\n case ColorVariant.teal:\r\n return colors.teal[500]\r\n case ColorVariant.purple:\r\n return colors.purple[400]\r\n case ColorVariant.green:\r\n return colors.green[400]\r\n case ColorVariant.gray:\r\n return FinvizSettings.hasDarkTheme ? colors.gray[700] : colors.gray[200]\r\n default:\r\n return 'red'\r\n }\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 classNames from 'classnames'\r\nimport React from 'react'\r\nimport { NameType, Payload, ValueType } from 'recharts/types/component/DefaultTooltipContent'\r\n\r\nimport { shortFormatNumber } from '../../../util'\r\n\r\ntype ChartTooltipProps = {\r\n isActive?: boolean\r\n activeKey?: string\r\n payload: Payload[] | undefined\r\n}\r\nexport default function ChartTooltip({ isActive, activeKey, payload }: ChartTooltipProps) {\r\n if (!isActive || !payload || payload.length === 0 || !payload.some(({ value }) => value)) return null\r\n\r\n return (\r\n
\r\n {payload.map((data) =>\r\n !data.value ? null : (\r\n \r\n \r\n \r\n {data.name}\r\n \r\n {shortFormatNumber(+data.value)}\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, Cell, ComposedChart, Line, Rectangle, RectangleProps, Tooltip, YAxis } from 'recharts'\r\n\r\nimport { ColorVariant } from '../../../components'\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 CURSOR_STYLE,\r\n DividendValueProperty,\r\n EXTRA_WIDTH,\r\n LABELS_MARGIN,\r\n LABELS_WIDTH,\r\n TICK_STYLE,\r\n TOOLTIP_WRAPPER_STYLE,\r\n TRANSPARENT_CURSOR,\r\n} from '../constants'\r\nimport { DividendsDataType } from '../types'\r\nimport { getColor, tickFormatter } from '../utils'\r\nimport ChartTooltip from './ChartTooltip'\r\n\r\ninterface CustomCursorProps extends Partial> {\r\n barWithGapWidth: number\r\n isActive: boolean\r\n points?: [{ x: number }]\r\n}\r\nfunction CustomCursor({ barWithGapWidth, points, ...props }: CustomCursorProps) {\r\n const x = points![0].x - barWithGapWidth / 2\r\n return (\r\n \r\n )\r\n}\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\nconst CHART_GRID_COMMON_PROPS = 'absolute right-8 border-t border-dashed border-secondary'\r\n\r\nexport function DividendsChart({ annualData, isCompact }: Props) {\r\n const [isActive, setIsActive] = React.useState(false)\r\n const [activeBarKey, setActiveBarKey] = React.useState('')\r\n const [reverseTooltipDirection, setReverseTooltipDirection] = React.useState(true)\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 const chartGridCommonLeftProps = {\r\n 'left-0': visibleLeftAxes.length === 0,\r\n 'left-14': visibleLeftAxes.length === 1,\r\n 'left-28': visibleLeftAxes.length === 2,\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 setIsActive(true)\r\n }}\r\n onMouseLeave={() => {\r\n setIsActive(false)\r\n }}\r\n >\r\n {\r\n setReverseTooltipDirection(mouseEvent.clientX > window.innerWidth / 2)\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 )\r\n })}\r\n }\r\n content={({ payload }) => }\r\n />\r\n {annualData.map(({ id, label, 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 {\r\n setActiveBarKey(label)\r\n }}\r\n onMouseLeave={() => {\r\n setActiveBarKey('')\r\n }}\r\n >\r\n {chartData.map((row, index) => (\r\n \r\n ))}\r\n \r\n )\r\n }\r\n\r\n return (\r\n {\r\n setActiveBarKey(label)\r\n },\r\n onMouseLeave: () => {\r\n setActiveBarKey('')\r\n },\r\n }}\r\n stroke={getColor(color)}\r\n fill={getColor(color)}\r\n isAnimationActive={false}\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 { FINANCIALS_SECTION_LABELS, QuoteRoutes } from '../../../constants'\r\n\r\nconst FINANCIAL_MENU_TABS: Array = [\r\n QuoteRoutes.Dividends,\r\n QuoteRoutes.Earnings,\r\n QuoteRoutes.Revenue,\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 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 rightContent?: React.ReactNode\r\n}\r\n\r\nexport function SubMenu({ leftContent, rightContent, ...props }: Props) {\r\n return (\r\n
\r\n
\r\n \r\n {leftContent}\r\n
\r\n
{rightContent}
\r\n
\r\n
\r\n )\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","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\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":["ChipSwitch","_ref","children","label","size","rounding","_jsxs","className","_jsx","Paragraph","React","map","child","_child$props$theme","type","Button","theme","props","classnames","active","ChipSwitchButton","SubMenuTabs","items","_ref2","href","isActive","reloadDocument","as","Link","to","FinancialsTableContext","settings","setSettings","scrollInfo","undefined","useFinancialsTableContext","FinancialsTableContextProvider","cookieKey","defaultSettings","setScrollInfo","cookieValue","decodeURIComponent","getCookie","length","JSON","parse","Provider","value","yPosition","window","scrollY","setCookieRequest","stringify","FinancialsTableRow","data","columns","subColumns","onVisibilityChange","isFirst","isLast","id","labelElement","labelColumnClassName","isSelected","color","subData","TableBody","onMouseDown","TableRow","classNames","TableCell","hasLeading","align","TableAlign","Left","Checkbox","readOnly","checked","column","_column$getColumnClas","getColumnClassName","call","renderColumn","item","index","array","FinancialsTable","tableHead","tableFooter","isTableFixed","Table","row","_row$id","ShadowPosition","TableScrollShadow","side","position","height","isVisible","left","right","style","TABLE_SHADOW_MARGIN","FinancialsTableStickyColumnWrapper","numOfTableRows","stickyRef","shadowPosition","setShadowPosition","none","shadowDimensions","setShadowDimensions","top","stickyElement","current","onScroll","throttle","stickyElementScrollLeft","Math","ceil","scrollLeft","newShadowPosition","hasScrollSpaceToLeft","hasScrollSpaceToRight","offsetWidth","scrollWidth","leftAndRight","scrollTo","addEventListener","removeEventListener","_stickyRef$current","_financialsTable$quer","_financialsTable$quer2","_financialsTable$quer3","_financialsTable$quer4","_financialsTable$clie","financialsTable","querySelector","headHeight","clientHeight","firstColumnWidth","clientWidth","radiusCropFillerStyle","shadowLeftStyle","shadowRightStyle","includes","ref","FinancialsWidget","_data$0$values$length","_data$","stickyColumnWrapperClassName","header","hasStickyColumnWrapper","values","getYoYData","sortedData","sort","a","b","Number","parseInt","year","reduce","acc","i","_sortedData$value","_sortedData","prev","change","changePct","abs","getMoMPercentageData","_sortedData$value2","_sortedData2","getIsCompact","numOfCols","barWidth","min","innerWidth","getHeatmapClassNames","arguments","DividendsHeader","dividendExDate","dividendTTM","dividendEstimate","lastClose","dividendsData","lastDividendData","Heading","level","FINANCIALS_SECTION_LABELS","QuoteRoutes","Dividends","dateFns","chartEventUtils","Ordinary","Special","_Fragment","DividendValueProperty","HISTORY_COLUMNS","name","Right","BAR_WIDTH","CHART_HEIGHT","LABELS_WIDTH","LABELS_MARGIN","BAR_WIDTH_NARROW","BAR_GAP","EXTRA_WIDTH","CHART_MARGINS","bottom","TICK_STYLE","fontSize","fontWeight","textAnchor","fill","colors","TOOLTIP_WRAPPER_STYLE","outline","zIndex","CURSOR_STYLE","border","stroke","FinvizSettings","hasDarkTheme","opacity","TRANSPARENT_CURSOR","DividendsPayoutHistory","dividends","TableHead","TableHeader","dividend","arr","shortFormatNumber","fractions","Exdate","DividendDataEnum","WidgetSettingsSection","toggleSetting","key","yoyChange","onClick","yoyChangePct","getColor","ColorVariant","teal","purple","green","gray","tickFormatter","ChartTooltip","activeKey","payload","some","backgroundColor","CustomCursor","barWithGapWidth","points","x","Rectangle","width","CHART_GRID_COMMON_PROPS","DividendsChart","annualData","isCompact","setIsActive","activeBarKey","setActiveBarKey","reverseTooltipDirection","setReverseTooltipDirection","columnsCount","estimateColumnsCount","hasBarChart","filter","_ref3","isEstimate","_ref4","Amount","chartData","forEach","_ref5","_ref6","Object","visibleLeftAxes","slice","group","chartWidth","estimateAreaWidth","barLessChartYMargin","chartGridCommonLeftProps","onMouseEnter","onMouseLeave","ComposedChart","margin","stackOffset","onMouseMove","_","mouseEvent","clientX","axisId","orientation","tickMargin","axisWidth","YAxis","yAxisId","tick","tickLine","axisLine","interval","angle","dx","Tooltip","wrapperStyle","y","allowEscapeViewBox","reverseDirection","offset","isAnimationActive","cursor","content","_ref7","_ref8","rowIndex","Bar","dataKey","Cell","radius","Line","dot","strokeWidth","activeDot","getColumns","yearKeys","commonClassName","_annualDividend$value","annualDividend","find","annualDividendValue","_annualDividend$value2","RedGreenText","rightContent","defaultValue","_annualDividend$value3","_annualDividendValue$","toFixed","dividendsAnnualDataTemplate","Yield","Payout","DividendsComponent","_data$dividendsAnnual","_data$dividendsAnnual2","_data$dividendsData$l","_data$dividendsData","useCachedLoaderData","setAnnualData","dividendCategory","dividendsAnnualData","FiscalPeriod","substring","Estimate","yoyData","anualDividend","_yoyData$change$anual","_yoyData$changePct$an","Boolean","mapData","flatMap","indexOf","setIsCompact","useTableColumns","_document$getElementB","document","getElementById","removeProperty","onResize","hasData","QuoteStickySubMenu","leftContent","QuoteFinancialsTabMenu","minWidth","revenue","COOKIE_KEY","DEFAULT_SETTINGS","FINANCIAL_MENU_TABS","Earnings","Revenue","getFinancialMenuTabs","searchParams","decodeQueryString","encodeQueryString","ty","SubMenu","isRedesignEnabled","parseISO","argument","options","_options$additionalDi","additionalDigits","RangeError","prototype","toString","Date","NaN","date","dateStrings","dateString","timeString","split","patterns","dateTimeDelimiter","test","timeZoneDelimiter","substr","token","timezone","exec","time","replace","splitDateString","parseYearResult","regex","RegExp","captures","match","restDateString","century","parseYear","dateRegex","isWeekDate","dayOfYear","parseDateUnit","month","day","week","dayOfWeek","_year","validateWeekDate","isoWeekYear","setUTCFullYear","fourthOfJanuaryDay","getUTCDay","diff","setUTCDate","getUTCDate","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","max","parseDate","isNaN","getTime","timestamp","timeRegex","hours","parseTimeUnit","minutes","seconds","validateTime","parseTime","dirtyDate","result","setFullYear","getUTCFullYear","getUTCMonth","setHours","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","timezoneString","timezoneRegex","sign","_hours","validateTimezone","parseTimezone","parseFloat","ErrorBoundaryContext","createContext","initialState","didCatch","error","ErrorBoundary","Component","constructor","super","this","resetErrorBoundary","bind","state","getDerivedStateFromError","_this$props$onReset","_this$props","_len","args","Array","_key","onReset","reason","setState","componentDidCatch","info","_this$props$onError","_this$props2","onError","componentDidUpdate","prevProps","prevState","resetKeys","_this$props$onReset2","_this$props3","is","hasArrayChanged","next","render","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement"],"sourceRoot":""}