{"version":3,"file":"revenue.766cda43.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/financials-table/constants.ts","webpack://@finviz/website/./js/main/components/financials-table/useFinancialsTablePersistScrollPosition.ts","webpack://@finviz/website/./js/main/modules/quote/components/QuoteFinancialsTabMenu.tsx","webpack://@finviz/website/./js/main/modules/quote/components/QuoteStickySubMenu.tsx","webpack://@finviz/website/./js/main/modules/revenue/utils.ts","webpack://@finviz/website/./js/main/modules/revenue/RevenueTableFooter.tsx","webpack://@finviz/website/./js/main/modules/revenue/RevenueTableHead.tsx","webpack://@finviz/website/./js/main/modules/revenue/WidgetHeader.tsx","webpack://@finviz/website/./js/main/modules/revenue/types.ts","webpack://@finviz/website/./js/main/modules/revenue/constants.ts","webpack://@finviz/website/./js/main/modules/revenue/useTableColumns.tsx","webpack://@finviz/website/./js/main/modules/revenue/CategoryWidget.tsx","webpack://@finviz/website/./js/main/modules/revenue/WidgetSettingsSection.tsx","webpack://@finviz/website/./js/main/modules/revenue/index.tsx","webpack://@finviz/website/../node_modules/recharts/es6/chart/BarChart.js","webpack://@finviz/website/../node_modules/recharts/es6/chart/LineChart.js","webpack://@finviz/website/../node_modules/recharts/es6/component/ResponsiveContainer.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","export const TABLE_ROW_HIGHT = 24\r\n","import React from 'react'\r\n\r\nimport { usePrevious } from '../../hooks/use-previous'\r\nimport { useFinancialsTableContext } from './FinancialsTableContext'\r\nimport { TABLE_ROW_HIGHT } from './constants'\r\n\r\ninterface Props {\r\n categoryAreasCounts: number[]\r\n dataKeys: string[]\r\n}\r\n\r\nexport function useFinancialsTablePersistScrollPosition({ categoryAreasCounts, dataKeys }: Props) {\r\n const { settings, scrollInfo } = useFinancialsTableContext()\r\n const previousSettings = usePrevious(settings)\r\n\r\n React.useLayoutEffect(() => {\r\n const widgetSettingsSectionElement = document.getElementById('js-widget-settings-section')\r\n if (!previousSettings || !scrollInfo || !widgetSettingsSectionElement) return\r\n\r\n const financialsTables = document.getElementsByClassName('js-financials-widget')\r\n const widgetSettingsSectionElementTopPosition = widgetSettingsSectionElement.getBoundingClientRect().top\r\n let index = 0\r\n let lastAbsDiffInPx: number | null = null\r\n\r\n Array.from(financialsTables).forEach((financialTableElement, i) => {\r\n const { top } = financialTableElement.getBoundingClientRect()\r\n const absDiffInPx = Math.abs(top - widgetSettingsSectionElementTopPosition)\r\n if (lastAbsDiffInPx === null || absDiffInPx < lastAbsDiffInPx) {\r\n lastAbsDiffInPx = absDiffInPx\r\n index = i\r\n }\r\n })\r\n\r\n let areas = 0\r\n for (let i = 0; i < index; i++) {\r\n areas += categoryAreasCounts[i]\r\n }\r\n\r\n let sign = 0\r\n dataKeys.forEach((dataKey) => {\r\n if (settings[dataKey] !== previousSettings[dataKey]) {\r\n sign = settings[dataKey] ? 1 : -1\r\n }\r\n })\r\n\r\n const shift = areas * TABLE_ROW_HIGHT * sign\r\n window.scrollTo(window.scrollX, scrollInfo.yPosition + shift)\r\n\r\n // effect should run only when scroll info is changed = user toggled data settings\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [scrollInfo])\r\n}\r\n","import { 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","import { FinancialsRowDataType } from '../../components/financials-table/types'\r\n\r\nexport { getColor, tickFormatter } from '../../components/line-stacked-bar-chart'\r\n\r\nexport function getSumData>(data: T[], absolute = false) {\r\n return data.reduce>((sumObj, revenue) => {\r\n revenue.values.forEach(({ year, value }) => {\r\n if (!sumObj[year]) {\r\n sumObj[year] = 0\r\n }\r\n\r\n sumObj[year] += absolute ? Math.abs(value ?? 0) : (value ?? 0)\r\n })\r\n\r\n return sumObj\r\n }, {})\r\n}\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { TableCell, TableFooter } from '../../components/Table'\r\nimport { Checkbox, ColorVariant } from '../../components/checkbox'\r\nimport { useFinancialsTableContext } from '../../components/financials-table'\r\nimport { FinancialsRowDataType } from '../../components/financials-table/types'\r\nimport { View } from '../../components/line-stacked-bar-chart'\r\nimport { shortFormatNumber } from '../../util'\r\nimport { RevenueColumnsType, RevenueSettings } from './types'\r\nimport { getSumData } from './utils'\r\n\r\ntype Props = {\r\n columns: RevenueColumnsType['columns']\r\n data: FinancialsRowDataType[]\r\n}\r\n\r\nexport function RevenueTableFooter({ columns, data }: Props) {\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n return (\r\n \r\n {settings.chartView === View.bars ? (\r\n \r\n Total\r\n \r\n ) : (\r\n \r\n \r\n setSettings({\r\n ...settings,\r\n isShowAll: !settings.isShowAll,\r\n })\r\n }\r\n />\r\n \r\n )}\r\n {columns.map((column) => (\r\n \r\n {shortFormatNumber(getSumData(data)[column.id])}\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, TableHead, TableHeader, TableHeaderSortable } from '../../components/Table'\r\nimport { FinancialsColumnDefinition, FinancialsRowDataType } from '../../components/financials-table/types'\r\nimport { SortByShape } from '../../hooks/use-sort-data'\r\nimport { SortDirection } from '../../types'\r\nimport { RevenueColumnsType } from './types'\r\n\r\ntype Props = {\r\n columns: RevenueColumnsType['columns']\r\n unit: string\r\n sort: SortByShape>\r\n onSortChange: (column: FinancialsColumnDefinition) => void\r\n}\r\n\r\nexport function RevenueTableHead({ columns, unit, sort, onSortChange }: Props) {\r\n const handleChangeSort = (column: FinancialsColumnDefinition) => {\r\n const shouldRemoveOrder = sort.direction === SortDirection.Descending && column === sort.column\r\n if (shouldRemoveOrder) {\r\n onSortChange('order' as unknown as FinancialsColumnDefinition)\r\n } else {\r\n onSortChange(column)\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n Currency: {unit}\r\n \r\n {columns.map((column) => (\r\n handleChangeSort(column)}\r\n >\r\n {column.name}\r\n \r\n ))}\r\n \r\n )\r\n}\r\n","import { Heading } from '../../components/typography'\r\n\r\nfunction getCategoryLabel(category: string) {\r\n switch (category) {\r\n case 'products_and_services':\r\n return 'Products and Services'\r\n\r\n default:\r\n return category[0].toUpperCase() + category.substring(1)\r\n }\r\n}\r\n\r\ntype WidgetHeaderProps = {\r\n category: string\r\n}\r\n\r\nexport default function WidgetHeader({ category }: WidgetHeaderProps) {\r\n return (\r\n \r\n Revenue by {getCategoryLabel(category)}\r\n \r\n )\r\n}\r\n","import { FinancialsColumnDefinition, FinancialsRowDataType } from '../../components/financials-table/types'\r\nimport { View } from '../../components/line-stacked-bar-chart'\r\n\r\nexport enum Category {\r\n products_and_services = 'products_and_services',\r\n regions = 'regions',\r\n segment = 'segment',\r\n subsegment = 'subsegment',\r\n additional = 'additional',\r\n}\r\n\r\nexport type CategoryData = {\r\n revenues: Record>\r\n unit: string\r\n}\r\n\r\nexport type RevenueData = Record, CategoryData>\r\n\r\nexport type RevenueColumnsType = {\r\n columns: FinancialsColumnDefinition[]\r\n subColumns: Record[]>\r\n}\r\n\r\n// I kept the values with bool prefix because users may already have cookis with this keys\r\nexport enum RevenueDataEnum {\r\n yoyChange = 'isYoyChange',\r\n yoyChangePct = 'isYoyChangePct',\r\n sharePct = 'isSharePct',\r\n}\r\n\r\nexport type RevenueSettings = {\r\n isShowAll: boolean\r\n chartView: View\r\n} & Record\r\n","import { ColorVariant } from '../../components'\r\nimport { FinancialsTableSettingsType } from '../../components/financials-table'\r\nimport { View } from '../../components/line-stacked-bar-chart'\r\nimport { RevenueDataEnum } from './types'\r\n\r\nexport const COOKIE_KEY = 'revenueSettings'\r\n\r\nexport const DEFAULT_SETTINGS: FinancialsTableSettingsType = {\r\n [RevenueDataEnum.yoyChange]: false,\r\n [RevenueDataEnum.yoyChangePct]: false,\r\n [RevenueDataEnum.sharePct]: false,\r\n isShowAll: false,\r\n chartView: View.bars,\r\n}\r\n\r\nexport const SEGMENT_COLORS = Object.keys(ColorVariant).filter(\r\n (c) => c !== ColorVariant.gray && c !== ColorVariant.default\r\n) as ColorVariant[]\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 { RevenueColumnsType, RevenueDataEnum } from './types'\r\n\r\nconst getColumns = (yearKeys: string[]) => {\r\n const commonClassName = 'w-22 last:w-29.5 px-4 last:pr-11'\r\n\r\n const columns: RevenueColumnsType['columns'] = yearKeys.map((year) => ({\r\n id: year,\r\n name: year,\r\n align: TableAlign.Right,\r\n className: commonClassName,\r\n getValueForSort: (data) => data.values.find((value) => value.year === year)?.value ?? null,\r\n renderColumn: (data) => {\r\n const revenueColValue = data.values.find((value) => value.year === year)\r\n if (!revenueColValue?.value) return \r\n return shortFormatNumber(revenueColValue.value)\r\n },\r\n }))\r\n\r\n const subColumns: RevenueColumnsType['subColumns'] = {\r\n [RevenueDataEnum.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 revenueColSubValue = data.values.find((value) => value.year === year)\r\n return (\r\n \r\n {shortFormatNumber(revenueColSubValue?.value, { defaultValue: '—' })}\r\n \r\n )\r\n },\r\n })),\r\n [RevenueDataEnum.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 revenueColSubValue = data.values.find((value) => value.year === year)\r\n return (\r\n \r\n {revenueColSubValue?.value?.toFixed(2) ?? '—'}\r\n \r\n )\r\n },\r\n })),\r\n [RevenueDataEnum.sharePct]: yearKeys.map((year) => ({\r\n id: year,\r\n name: year,\r\n align: TableAlign.Right,\r\n className: classNames(commonClassName, 'text-muted-2'),\r\n renderColumn: (data) => {\r\n const revenueColSubValue = data.values.find((value) => value.year === year)\r\n if (typeof revenueColSubValue?.value !== 'number') return '-'\r\n\r\n return `${revenueColSubValue.value.toFixed(2)}%`\r\n },\r\n })),\r\n }\r\n return { columns, subColumns }\r\n}\r\n\r\nexport function useTableColumns(yearKeys: string[]) {\r\n return React.useMemo(() => getColumns(yearKeys), [yearKeys])\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { useTableSort } from '../../components/Table'\r\nimport { FinancialsWidget, getYoYData, useFinancialsTableContext } from '../../components/financials-table'\r\nimport {\r\n FinancialsRowDataType,\r\n FinancialsRowValue,\r\n FinancialsSubRowDataType,\r\n} from '../../components/financials-table/types'\r\nimport { LineStackedBarChart } from '../../components/line-stacked-bar-chart'\r\nimport { RevenueTableFooter } from './RevenueTableFooter'\r\nimport { RevenueTableHead } from './RevenueTableHead'\r\nimport WidgetHeader from './WidgetHeader'\r\nimport { SEGMENT_COLORS } from './constants'\r\nimport { CategoryData, RevenueDataEnum, RevenueSettings } from './types'\r\nimport { useTableColumns } from './useTableColumns'\r\nimport { getSumData } from './utils'\r\n\r\nfunction getSharePctData(data: T[], absSumRow: Record) {\r\n return data.reduce>((acc, { year, value }) => {\r\n const sharePct = absSumRow[year] > 0 ? (100 / absSumRow[year]) * Math.abs(value ?? 0) : null\r\n return {\r\n ...acc,\r\n [year]: sharePct === null || isNaN(sharePct) ? null : sharePct,\r\n }\r\n }, {})\r\n}\r\n\r\nfunction mapData(data: CategoryData) {\r\n const revenuesArray: FinancialsRowDataType[] = Object.entries(data.revenues)\r\n .map(([key, revenues]) => ({\r\n id: key,\r\n label: key,\r\n isSelected: true,\r\n color: SEGMENT_COLORS[0],\r\n values: revenues\r\n .map((annualData) => ({\r\n year: annualData.fiscal_year,\r\n value: annualData.value,\r\n }))\r\n .sort((a, b) => Number.parseInt(a.year) - Number.parseInt(b.year)),\r\n subData: [],\r\n }))\r\n .sort((a, b) => b.values[b.values.length - 1].value - a.values[a.values.length - 1].value)\r\n\r\n return revenuesArray.map((revenue, index) => {\r\n const yoyData = getYoYData(revenue.values)\r\n const absSumRow = getSumData(revenuesArray, true)\r\n const sharePctData = getSharePctData(revenue.values, absSumRow)\r\n\r\n return {\r\n ...revenue,\r\n color: SEGMENT_COLORS[index % SEGMENT_COLORS.length],\r\n subData: [\r\n {\r\n id: RevenueDataEnum.yoyChange,\r\n label: 'YoY Growth',\r\n values: revenue.values.map(({ year }) => ({ year, value: yoyData.change[year] })),\r\n },\r\n {\r\n id: RevenueDataEnum.yoyChangePct,\r\n label: 'YoY Growth %',\r\n values: revenue.values.map(({ year }) => ({ year, value: yoyData.changePct[year] })),\r\n },\r\n {\r\n id: RevenueDataEnum.sharePct,\r\n label: 'Share %',\r\n values: revenue.values.map(({ year }) => ({ year, value: sharePctData[year] })),\r\n },\r\n ].filter(Boolean) as FinancialsSubRowDataType[],\r\n }\r\n })\r\n}\r\n\r\ntype CategoryWidgetProps = {\r\n category: string\r\n data: CategoryData\r\n}\r\n\r\nexport default function CategoryWidget({ category, data }: CategoryWidgetProps) {\r\n const { settings } = useFinancialsTableContext()\r\n const [revenueData, setRevenueData] = React.useState(() => mapData(data))\r\n const yearKeys = React.useMemo(\r\n () => revenueData[0].values.map(({ year }) => year).sort((a, b) => Number.parseInt(a) - Number.parseInt(b)),\r\n [revenueData]\r\n )\r\n const { columns, subColumns } = useTableColumns(yearKeys)\r\n\r\n const {\r\n data: sortedData,\r\n sort,\r\n changeSort,\r\n } = useTableSort({\r\n data: revenueData.map((revenue) => ({\r\n ...revenue,\r\n subData: revenue.subData.filter(({ id }) => settings[id as RevenueDataEnum]),\r\n })),\r\n columns,\r\n defaultSort: { column: columns[columns.length - 1], direction: -1 },\r\n })\r\n\r\n const onVisibilityChange = (id: string, isSelected: boolean) => {\r\n setRevenueData(\r\n revenueData.map((item) =>\r\n item.id === id\r\n ? {\r\n ...item,\r\n isSelected,\r\n }\r\n : item\r\n )\r\n )\r\n }\r\n\r\n return (\r\n }\r\n columns={columns}\r\n subColumns={subColumns}\r\n onVisibilityChange={onVisibilityChange}\r\n tableHead={}\r\n tableFooter={}\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 { View } from '../../components/line-stacked-bar-chart'\r\nimport { RevenueDataEnum, RevenueSettings } from './types'\r\n\r\nexport default function WidgetSettingsSection() {\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n const toggleSetting = (key: keyof RevenueSettings, value: RevenueSettings[typeof key]) => {\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 {\r\n toggleSetting(RevenueDataEnum.yoyChange, !settings.isYoyChange)\r\n }}\r\n >\r\n YoY Growth\r\n \r\n {\r\n toggleSetting(RevenueDataEnum.yoyChangePct, !settings.isYoyChangePct)\r\n }}\r\n >\r\n YoY Growth %\r\n \r\n {\r\n toggleSetting(RevenueDataEnum.sharePct, !settings.isSharePct)\r\n }}\r\n >\r\n Share %\r\n \r\n \r\n\r\n \r\n {\r\n toggleSetting('chartView', View.bars)\r\n }}\r\n />\r\n {\r\n toggleSetting('chartView', View.lines)\r\n }}\r\n />\r\n \r\n
\r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { FinancialsTableContextProvider } from '../../components/financials-table'\r\nimport { useFinancialsTablePersistScrollPosition } from '../../components/financials-table/useFinancialsTablePersistScrollPosition'\r\nimport { useCachedLoaderData } from '../../hooks/useCachedLoaderData'\r\nimport { QuoteFinancialsTabMenu } from '../quote/components/QuoteFinancialsTabMenu'\r\nimport { QuoteStickySubMenu } from '../quote/components/QuoteStickySubMenu'\r\nimport CategoryWidget from './CategoryWidget'\r\nimport WidgetSettingsSection from './WidgetSettingsSection'\r\nimport { COOKIE_KEY, DEFAULT_SETTINGS } from './constants'\r\nimport { RevenueData, RevenueDataEnum } from './types'\r\n\r\nfunction getAreasCounts(data: RevenueData | null) {\r\n if (!data) return []\r\n\r\n return Object.keys(data).map((key) => {\r\n const category = data[key as keyof RevenueData]\r\n return Object.keys(category.revenues).length\r\n })\r\n}\r\n\r\nfunction RevenueComponent() {\r\n const { data } = useCachedLoaderData()\r\n const categoryAreasCounts = React.useMemo(() => getAreasCounts(data), [data])\r\n\r\n useFinancialsTablePersistScrollPosition({\r\n categoryAreasCounts,\r\n dataKeys: [RevenueDataEnum.yoyChange, RevenueDataEnum.yoyChangePct, RevenueDataEnum.sharePct],\r\n })\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\r\n const hasData = !!data && Object.keys(data).length > 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 {Object.entries(data).map(([key, val]) => (\r\n \r\n ))}\r\n
\r\n ) : (\r\n
\r\n Revenue is not available for this stock.\r\n
\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default function Revenue() {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var BarChart = generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","/**\n * @fileOverview Line Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Line } from '../cartesian/Line';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var LineChart = generateCategoricalChart({\n chartName: 'LineChart',\n GraphicalChild: Line,\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\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":["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","TABLE_ROW_HIGHT","useFinancialsTablePersistScrollPosition","categoryAreasCounts","dataKeys","settings","scrollInfo","useFinancialsTableContext","previousSettings","usePrevious","React","widgetSettingsSectionElement","document","getElementById","financialsTables","getElementsByClassName","widgetSettingsSectionElementTopPosition","getBoundingClientRect","top","index","lastAbsDiffInPx","Array","from","forEach","financialTableElement","i","absDiffInPx","Math","abs","areas","sign","dataKey","shift","window","scrollTo","scrollX","yPosition","FINANCIALS_SECTION_LABELS","QuoteSubview","Revenue","Dividends","Earnings","Forecast","FINANCIAL_MENU_TABS","getFinancialMenuTabs","searchParams","decodeQueryString","value","encodeQueryString","ty","QuoteFinancialsTabMenu","QuoteStickySubMenu","getSumData","data","absolute","arguments","length","undefined","reduce","sumObj","revenue","values","year","RevenueTableFooter","columns","setSettings","TableFooter","chartView","View","bars","TableCell","hasLeading","Checkbox","checked","isShowAll","color","ColorVariant","gray","onChange","column","align","shortFormatNumber","id","RevenueTableHead","unit","sort","onSortChange","TableHead","TableHeader","TableAlign","Left","_sort$column","TableHeaderSortable","direction","onClick","shouldRemoveOrder","SortDirection","Descending","handleChangeSort","name","getCategoryLabel","category","toUpperCase","substring","WidgetHeader","Heading","level","RevenueDataEnum","COOKIE_KEY","DEFAULT_SETTINGS","yoyChange","yoyChangePct","sharePct","SEGMENT_COLORS","Object","keys","filter","c","default","getColumns","yearKeys","commonClassName","Right","getValueForSort","_data$values$find$val","_data$values$find","find","renderColumn","revenueColValue","subColumns","revenueColSubValue","RedGreenText","defaultValue","_revenueColSubValue$v","_revenueColSubValue$v2","toFixed","mapData","revenuesArray","entries","revenues","key","isSelected","annualData","fiscal_year","a","b","Number","parseInt","subData","yoyData","getYoYData","absSumRow","sharePctData","acc","isNaN","getSharePctData","_ref3","change","_ref4","changePct","_ref5","Boolean","CategoryWidget","_ref6","revenueData","setRevenueData","_ref7","useTableColumns","sortedData","changeSort","useTableSort","_ref8","defaultSort","FinancialsWidget","header","onVisibilityChange","item","tableHead","tableFooter","LineStackedBarChart","WidgetSettingsSection","toggleSetting","ChipSwitch","ChipSwitchButton","isYoyChange","isYoyChangePct","isSharePct","lines","RevenueComponent","useCachedLoaderData","getAreasCounts","_document$getElementB","style","removeProperty","hasData","_Fragment","val","FinancialsTableContextProvider","defaultSettings","cookieKey","BarChart","chartName","GraphicalChild","defaultTooltipEventType","validateTooltipEventTypes","axisComponents","axisType","AxisComp","formatAxisMap","LineChart","_typeof","o","Symbol","iterator","constructor","prototype","ownKeys","e","r","t","getOwnPropertySymbols","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","toPrimitive","call","TypeError","String","_toPrimitive","configurable","writable","_slicedToArray","arr","isArray","_arrayWithHoles","l","n","u","f","next","done","_iterableToArrayLimit","minLen","_arrayLikeToArray","toString","slice","test","_unsupportedIterableToArray","_nonIterableRest","len","arr2","ResponsiveContainer","forwardRef","ref","aspect","_ref$initialDimension","initialDimension","width","height","_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","_onResizeRef$current","_entries$0$contentRec","contentRect","trailing","leading","observer","ResizeObserver","_containerRef$current","observe","disconnect","chartContent","useMemo","calculatedWidth","calculatedHeight","isCharts","type","endsWith","child","cloneElement","maxWidth","concat"],"sourceRoot":""}