{"version":3,"file":"traffic.005b70ee.js","mappings":"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","sources":["webpack://@finviz/website/./js/main/components/chart/LineDot.tsx","webpack://@finviz/website/./js/main/components/chart/ManualGrid.tsx","webpack://@finviz/website/./js/main/components/external-link/external-link.tsx","webpack://@finviz/website/./js/main/components/line-stacked-bar-chart/ChartTooltip.tsx","webpack://@finviz/website/./js/main/components/line-stacked-bar-chart/constants.ts","webpack://@finviz/website/./js/main/components/line-stacked-bar-chart/utils.ts","webpack://@finviz/website/./js/main/components/line-stacked-bar-chart/BarChart.tsx","webpack://@finviz/website/./js/main/components/line-stacked-bar-chart/EmptyDataOverlayWrapper.tsx","webpack://@finviz/website/../node_modules/recharts/es6/chart/LineChart.js","webpack://@finviz/website/./js/main/components/line-stacked-bar-chart/LineChart.tsx","webpack://@finviz/website/./js/main/components/line-stacked-bar-chart/XAxis.tsx","webpack://@finviz/website/./js/main/components/line-stacked-bar-chart/LineStackedBarChart.tsx","webpack://@finviz/website/./js/main/components/line-stacked-bar-chart/types.ts","webpack://@finviz/website/./js/main/hooks/use-sticky-shadow.ts","webpack://@finviz/website/./js/main/hooks/use-window-size.tsx","webpack://@finviz/website/./js/main/modules/traffic/TrafficTableBottomContent.tsx","webpack://@finviz/website/./js/main/modules/traffic/TrafficTableHead.tsx","webpack://@finviz/website/./js/main/modules/traffic/types.ts","webpack://@finviz/website/./js/main/modules/traffic/WidgetDomainSettingsSection.tsx","webpack://@finviz/website/./js/main/modules/traffic/constants.ts","webpack://@finviz/website/./js/main/modules/traffic/useMonthlyDataControls.ts","webpack://@finviz/website/./js/main/modules/traffic/useTableColumns.tsx","webpack://@finviz/website/./js/main/modules/traffic/utils.ts","webpack://@finviz/website/./js/main/modules/traffic/Domain.tsx","webpack://@finviz/website/./js/main/modules/traffic/NoDataPlaceholder.tsx","webpack://@finviz/website/./js/main/modules/traffic/WidgetAppSettingsSection.tsx","webpack://@finviz/website/./js/main/modules/traffic/Apps.tsx","webpack://@finviz/website/./js/main/modules/traffic/TrafficDomainSelect.tsx","webpack://@finviz/website/./js/main/modules/traffic/TrafficHeader.tsx","webpack://@finviz/website/./js/main/modules/traffic/TrafficDomainSection.tsx","webpack://@finviz/website/./js/main/modules/traffic/index.tsx","webpack://@finviz/website/./js/main/services/IntersectionObserverContext.tsx","webpack://@finviz/website/../node_modules/recharts/es6/chart/BarChart.js","webpack://@finviz/website/../node_modules/core-js/internals/a-set.js","webpack://@finviz/website/../node_modules/core-js/internals/get-iterator-direct.js","webpack://@finviz/website/../node_modules/core-js/internals/get-set-record.js","webpack://@finviz/website/../node_modules/core-js/internals/iterate-simple.js","webpack://@finviz/website/../node_modules/core-js/internals/set-clone.js","webpack://@finviz/website/../node_modules/core-js/internals/set-difference.js","webpack://@finviz/website/../node_modules/core-js/internals/set-helpers.js","webpack://@finviz/website/../node_modules/core-js/internals/set-intersection.js","webpack://@finviz/website/../node_modules/core-js/internals/set-is-disjoint-from.js","webpack://@finviz/website/../node_modules/core-js/internals/set-is-subset-of.js","webpack://@finviz/website/../node_modules/core-js/internals/set-is-superset-of.js","webpack://@finviz/website/../node_modules/core-js/internals/set-iterate.js","webpack://@finviz/website/../node_modules/core-js/internals/set-method-accept-set-like.js","webpack://@finviz/website/../node_modules/core-js/internals/set-size.js","webpack://@finviz/website/../node_modules/core-js/internals/set-symmetric-difference.js","webpack://@finviz/website/../node_modules/core-js/internals/set-union.js","webpack://@finviz/website/../node_modules/core-js/modules/esnext.set.difference.v2.js","webpack://@finviz/website/../node_modules/core-js/modules/esnext.set.intersection.v2.js","webpack://@finviz/website/../node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js","webpack://@finviz/website/../node_modules/core-js/modules/esnext.set.is-subset-of.v2.js","webpack://@finviz/website/../node_modules/core-js/modules/esnext.set.is-superset-of.v2.js","webpack://@finviz/website/../node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js","webpack://@finviz/website/../node_modules/core-js/modules/esnext.set.union.v2.js"],"sourcesContent":["import classNames from 'classnames'\r\nimport * as React from 'react'\r\nimport { Dot, DotProps } from 'recharts'\r\n\r\nimport { ChartWrapperContext } from './ChartWrapper'\r\nimport { CHART_ITEM_COLORS, ChartItemColorType } from './constants'\r\n\r\ninterface LineDotProps extends DotProps {\r\n dataKey?: string\r\n value?: unknown\r\n color?: ChartItemColorType\r\n isActive?: boolean\r\n}\r\n\r\nexport function LineDot({ cx, cy, r = 4, dataKey, color, className, isActive, value }: LineDotProps) {\r\n const { setActiveKey } = React.useContext(ChartWrapperContext)\r\n const lineColor = color ? CHART_ITEM_COLORS[color] : undefined\r\n\r\n if (value === null) return null\r\n\r\n return (\r\n setActiveKey(dataKey ?? null)}\r\n onMouseLeave={() => setActiveKey(null)}\r\n />\r\n )\r\n}\r\n\r\nexport function RedGreenDot({ cx, cy, value, isActive }: LineDotProps) {\r\n if (typeof value !== 'number') return null\r\n\r\n return (\r\n 0 ? 'green' : 'red'}\r\n className=\"stroke-bg-primary stroke-1\"\r\n />\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\n\r\ninterface ManualGridProps extends React.HTMLProps {\r\n numberOfLines?: number\r\n visibleLeftAxes?: number\r\n estimateAreaWidth?: number\r\n rightOffset?: number\r\n}\r\n\r\nfunction ManualGridComponent(\r\n {\r\n numberOfLines = 5,\r\n visibleLeftAxes = 0,\r\n rightOffset = 32,\r\n estimateAreaWidth,\r\n children,\r\n ...props\r\n }: React.PropsWithChildren,\r\n ref: React.ForwardedRef\r\n) {\r\n const lines = Array.from({ length: numberOfLines })\r\n\r\n return (\r\n
\r\n \r\n {lines.map((_, index) => (\r\n
\r\n ))}\r\n {!!estimateAreaWidth && (\r\n \r\n )}\r\n
\r\n\r\n {children}\r\n
\r\n )\r\n}\r\n\r\nexport const ManualGrid = React.forwardRef(ManualGridComponent)\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { Button, Icon } from '..'\r\n\r\ninterface Props {\r\n label?: string\r\n href: string | undefined\r\n isBold?: boolean\r\n className?: string\r\n}\r\n\r\nexport function ExternalLink({ label, href, isBold, className }: Props) {\r\n return (\r\n }\r\n size=\"none\"\r\n padding=\"xxsmall\"\r\n theme=\"linkText\"\r\n className={classnames('inline-flex text-2xs leading-none', className)}\r\n target=\"_blank\"\r\n rel=\"nofollow\"\r\n href={href}\r\n onMouseDown={(event: React.MouseEvent) => event.stopPropagation()}\r\n onClick={(event: React.MouseEvent) => event.stopPropagation()}\r\n >\r\n {label && {label}}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { NameType, Payload, ValueType } from 'recharts/types/component/DefaultTooltipContent'\r\n\r\nimport { shortFormatNumber } from '../../util'\r\nimport { TooltipInner, TooltipRow } from '../chart/Tooltip'\r\nimport { ChartItemColorType } from '../chart/constants'\r\nimport { LineChartTooltipSort } from './types'\r\n\r\ntype ChartTooltipProps = {\r\n activeKey?: string | null\r\n payload?: Payload[] | undefined\r\n isReversed?: boolean\r\n payloadSort?: keyof typeof LineChartTooltipSort\r\n valueFormatter?: (data: ValueType) => string\r\n}\r\nexport default function ChartTooltip({\r\n payload,\r\n payloadSort = 'default',\r\n isReversed = false,\r\n valueFormatter,\r\n}: ChartTooltipProps) {\r\n const items = React.useMemo(() => {\r\n if (!payload || payload.length === 0) return []\r\n\r\n if (LineChartTooltipSort[payloadSort] === LineChartTooltipSort.value) {\r\n return [...payload].sort((a, b) => Number(b.value ?? 0) - Number(a.value ?? 0))\r\n }\r\n return isReversed ? [...payload].reverse() : payload\r\n }, [payload, payloadSort, isReversed])\r\n\r\n const formatter = React.useCallback(\r\n (value: ValueType) => valueFormatter?.(value) ?? shortFormatNumber(value as number),\r\n [valueFormatter]\r\n )\r\n\r\n if (items.length === 0) return null\r\n\r\n return (\r\n \r\n {items.map((area) => (\r\n \r\n ))}\r\n \r\n )\r\n}\r\n","import colors from '../../../../../config/colors'\r\n\r\nexport const CHART_HEIGHT = 250\r\nexport const LABELS_WIDTH = 28\r\nexport const BAR_CHART_LABELS_MARGIN = 22\r\nexport const LINE_CHART_LABELS_MARGIN = 57\r\nexport const BAR_WIDTH = 72\r\nexport const BAR_GAP = 16\r\nexport const EXTRA_WIDTH = 44\r\nexport const BAR_CHART_MARGINS = { top: 0, right: 0, bottom: 0, left: 0 }\r\nexport const LINE_CHART_MARGINS = { top: 5, right: 35, bottom: 5, left: 55 }\r\nexport const TICK_STYLE = { fontSize: 10, fontWeight: 500, textAnchor: 'end' }\r\nexport const TOOLTIP_WRAPPER_STYLE = { outline: 'none', zIndex: 10 }\r\nexport const CURSOR_STYLE = { fill: FinvizSettings.hasDarkTheme ? colors.gray[700] : colors.gray[50], opacity: 0.65 }\r\nexport const TRANSPARENT_CURSOR = { opacity: 0 }\r\n","import { shortFormatNumber } from '../../util'\r\nimport { FinancialsRowDataType } from '../financials-table/types'\r\nimport { ChartData, View } from './types'\r\n\r\nexport function tickFormatter(value: any) {\r\n return shortFormatNumber(value, { fractions: 0 })\r\n}\r\n\r\nexport function getChartDataItemKey(item: Pick) {\r\n return item.id || item.label\r\n}\r\n\r\nexport function getChartData(data: FinancialsRowDataType[], yearKeys: string[], chartView: View) {\r\n /*\r\n * Bar chart renders segments from the bottom up, so the sorting of visible areas is correct here\r\n * assuming it's sorted by column values\r\n * */\r\n const visibleAreas = data.filter((item) => item.isSelected).map((item) => ({ ...item, color: item.color }))\r\n /*\r\n * Line chart has reverse order because we need to render lines from the end so they don't cover main lines\r\n * you can think about it as visibleAreas index === zIndex on the chart\r\n * */\r\n if (chartView === View.lines) visibleAreas.reverse()\r\n\r\n const chartData = yearKeys.map((year) => {\r\n const stackedBar = { year, topKey: '', bottomKey: '', total: 0 } as ChartData\r\n\r\n visibleAreas.forEach((item) => {\r\n const valueKey = getChartDataItemKey(item)\r\n const value = item.values.find((v) => v.year === year)?.value ?? null\r\n stackedBar[valueKey] = value\r\n stackedBar.total += value ?? 0\r\n\r\n if (item.isSelected && value !== 0) {\r\n // top key is the key of latest area which is visible and have some positive value\r\n // bottom key is the key of latest area which is visible and have some negative value\r\n stackedBar[value && value > 0 ? 'topKey' : 'bottomKey'] = valueKey\r\n }\r\n })\r\n\r\n return stackedBar\r\n })\r\n\r\n return { chartData, visibleAreas }\r\n}\r\n","import * as React from 'react'\r\nimport { Cell, BarChart as RechartsBarChart, ResponsiveContainer } from 'recharts'\r\n\r\nimport { Bar } from '../chart/Bar'\r\nimport { ChartContext } from '../chart/ChartWrapper'\r\nimport { CursorBar } from '../chart/Cursor'\r\nimport { Tooltip } from '../chart/Tooltip'\r\nimport { YAxis } from '../chart/YAxis'\r\nimport { ChartItemColorType } from '../chart/constants'\r\nimport ChartTooltip from './ChartTooltip'\r\nimport {\r\n BAR_CHART_LABELS_MARGIN,\r\n BAR_CHART_MARGINS,\r\n BAR_GAP,\r\n BAR_WIDTH,\r\n CHART_HEIGHT,\r\n EXTRA_WIDTH,\r\n LABELS_WIDTH,\r\n} from './constants'\r\nimport { ChartProps } from './types'\r\nimport { getChartDataItemKey, tickFormatter } from './utils'\r\n\r\nexport default function BarChart({ chartData, visibleAreas, columnsCount, isFullWidth }: ChartProps) {\r\n const chartWidth = columnsCount * BAR_WIDTH + (columnsCount - 1) * BAR_GAP + EXTRA_WIDTH\r\n const ChartWrapper = isFullWidth ? ResponsiveContainer : React.Fragment\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n } content={} />\r\n {/* Don't change the order of mapped items here, see getChartData */}\r\n {visibleAreas.map((area) => {\r\n const itemKey = getChartDataItemKey(area)\r\n return (\r\n \r\n {chartData.map((row, index) => (\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 { Heading } from '../typography'\r\nimport { LineStackedBarChartProps } from './types'\r\n\r\ninterface Props extends Pick {\r\n className: string\r\n children: React.ReactNode\r\n}\r\n\r\nexport function EmptyDataOverlayWrapper({ className, children, emptyMessage, isEmpty = false }: Props) {\r\n return (\r\n
\r\n
{children}
\r\n\r\n {isEmpty && (\r\n
\r\n {!!emptyMessage && (\r\n
\r\n \r\n {emptyMessage}\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n )\r\n}\r\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});","import classNames from 'classnames'\r\nimport React from 'react'\r\nimport { LineChart as RechartsLineChart, ResponsiveContainer } from 'recharts'\r\n\r\nimport { ChartContext } from '../chart/ChartWrapper'\r\nimport { Line } from '../chart/Line'\r\nimport { LineDot } from '../chart/LineDot'\r\nimport { Tooltip } from '../chart/Tooltip'\r\nimport { YAxis } from '../chart/YAxis'\r\nimport { ChartItemColorType } from '../chart/constants'\r\nimport ChartTooltip from './ChartTooltip'\r\nimport {\r\n BAR_GAP,\r\n BAR_WIDTH,\r\n CHART_HEIGHT,\r\n EXTRA_WIDTH,\r\n LABELS_WIDTH,\r\n LINE_CHART_LABELS_MARGIN,\r\n LINE_CHART_MARGINS,\r\n} from './constants'\r\nimport { ChartProps, LineChartTooltipSort } from './types'\r\nimport { getChartDataItemKey, tickFormatter } from './utils'\r\n\r\ninterface Props extends ChartProps {\r\n tooltipSort?: keyof typeof LineChartTooltipSort\r\n}\r\n\r\nexport default function LineChart({\r\n chartData,\r\n visibleAreas,\r\n columnsCount,\r\n barWidth = BAR_WIDTH,\r\n tooltipSort,\r\n showTotal,\r\n isFullWidth,\r\n}: Props) {\r\n const chartWidth = columnsCount * barWidth + (columnsCount - 1) * BAR_GAP + EXTRA_WIDTH\r\n const ChartWrapper = isFullWidth ? ResponsiveContainer : React.Fragment\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n } />\r\n {showTotal && (\r\n }\r\n activeDot={}\r\n dataKey=\"total\"\r\n color=\"lightGray\"\r\n />\r\n )}\r\n {visibleAreas.map((area) => {\r\n const itemKey = getChartDataItemKey(area)\r\n return (\r\n }\r\n activeDot={\r\n \r\n }\r\n />\r\n )\r\n })}\r\n \r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { MONTHS } from '../../constants/common'\r\nimport { LABELS_WIDTH, LINE_CHART_MARGINS } from './constants'\r\nimport { LineStackedBarChartProps, View } from './types'\r\n\r\ninterface Props extends Pick {\r\n barWidth: number\r\n}\r\n\r\nexport function XAxis({ barWidth, yearKeys, chartView }: Props) {\r\n const rightOffset = chartView === View.lines ? LINE_CHART_MARGINS.right - barWidth / 2 : 0\r\n return (\r\n \r\n {yearKeys.map((value) => {\r\n const year = value.substring(0, 4)\r\n const month = Number.parseInt(value.substring(4, 6))\r\n\r\n return (\r\n \r\n {month === 1 ? year.substring(2, 4) : MONTHS[month - 1]}\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 { ManualGrid } from '../chart/ManualGrid'\r\nimport BarChart from './BarChart'\r\nimport { EmptyDataOverlayWrapper } from './EmptyDataOverlayWrapper'\r\nimport LineChart from './LineChart'\r\nimport { XAxis } from './XAxis'\r\nimport { CHART_HEIGHT, LABELS_WIDTH } from './constants'\r\nimport { LineStackedBarChartProps, View } from './types'\r\nimport { getChartData } from './utils'\r\n\r\nexport function LineStackedBarChart({\r\n data,\r\n yearKeys,\r\n chartView,\r\n lineChartTooltipSort,\r\n emptyMessage,\r\n isEmpty,\r\n isFullWidth = false,\r\n hasXAxis = false,\r\n isShowAll = false,\r\n isInView = true,\r\n hasBeenInView = true,\r\n}: LineStackedBarChartProps) {\r\n const wrapperRef = React.useRef(null)\r\n const [barWidth, setBarWidth] = React.useState(0)\r\n const { chartData, visibleAreas } = React.useMemo(\r\n () => (hasBeenInView ? getChartData(data, yearKeys, chartView) : { chartData: [], visibleAreas: [] }),\r\n [data, yearKeys, hasBeenInView, chartView]\r\n )\r\n\r\n const columnsCount = yearKeys.length\r\n\r\n React.useEffect(() => {\r\n const wrapperWidth = wrapperRef.current?.clientWidth ?? 0\r\n setBarWidth((wrapperWidth - LABELS_WIDTH) / columnsCount)\r\n }, [columnsCount])\r\n\r\n return (\r\n \r\n \r\n {isInView && chartView === View.bars && (\r\n \r\n )}\r\n {isInView && chartView === View.lines && (\r\n \r\n )}\r\n\r\n {hasXAxis && }\r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { ColorVariant } from '../checkbox'\r\nimport { FinancialsRowDataType } from '../financials-table/types'\r\n\r\nexport enum View {\r\n bars,\r\n lines,\r\n}\r\n\r\nexport interface ChartProps {\r\n chartData: ChartData[]\r\n showTotal?: boolean\r\n visibleAreas: Array<\r\n Pick & {\r\n color: ColorVariant\r\n }\r\n >\r\n columnsCount: number\r\n barWidth?: number\r\n isFullWidth?: boolean\r\n}\r\n\r\nexport type ChartData = {\r\n year: string\r\n topKey: string\r\n bottomKey: string\r\n total: number\r\n} & Record\r\n\r\nexport enum LineChartTooltipSort {\r\n default = 'default',\r\n value = 'value',\r\n}\r\n\r\nexport type LineStackedBarChartProps = {\r\n data: FinancialsRowDataType[]\r\n yearKeys: string[]\r\n chartView: View\r\n isShowAll?: boolean\r\n isFullWidth?: boolean\r\n hasXAxis?: boolean\r\n isInView?: boolean\r\n hasBeenInView?: boolean\r\n lineChartTooltipSort?: keyof typeof LineChartTooltipSort\r\n emptyMessage?: React.ReactNode\r\n isEmpty?: boolean\r\n}\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nexport function useStickyShadow() {\r\n const stickyRef = React.useRef(null)\r\n const [isSticky, setIsSticky] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n if (!stickyRef.current) 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 elementStickyTopOffset = parseFloat(getComputedStyle(stickyElement).top)\r\n const elementCurrentTopOffset = stickyElement.getBoundingClientRect().top\r\n\r\n setIsSticky(elementCurrentTopOffset === elementStickyTopOffset)\r\n }, 100)\r\n\r\n onScroll()\r\n document.addEventListener('scroll', onScroll)\r\n\r\n return () => {\r\n document.removeEventListener('scroll', onScroll)\r\n }\r\n }, [])\r\n\r\n return React.useMemo(\r\n () => ({\r\n stickyRef,\r\n isSticky,\r\n }),\r\n [isSticky]\r\n )\r\n}\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\ninterface Props {\r\n throttleWaitInMs?: number\r\n isWatching?: boolean\r\n}\r\n\r\nexport function useWindowSize({ throttleWaitInMs = 300, isWatching = true }: Props = {}) {\r\n const [size, setSize] = React.useState({\r\n clientWidth: document.documentElement.clientWidth,\r\n innerWidth: window.innerWidth,\r\n innerHeight: window.innerHeight,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (!isWatching) return\r\n\r\n const handleResize = throttle(() => {\r\n setSize({\r\n clientWidth: document.documentElement.clientWidth,\r\n innerWidth: window.innerWidth,\r\n innerHeight: window.innerHeight,\r\n })\r\n }, throttleWaitInMs)\r\n\r\n window.addEventListener('resize', handleResize)\r\n\r\n return () => {\r\n handleResize.cancel()\r\n window.removeEventListener('resize', handleResize)\r\n }\r\n }, [throttleWaitInMs, isWatching])\r\n\r\n return size\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button, Icon } from '../../components'\r\nimport { usePrevious } from '../../hooks/use-previous'\r\n\r\ninterface Props {\r\n showMoreLabel: string\r\n showLessLabel: string\r\n isShowMore: boolean\r\n hasHiddenRows: boolean\r\n onShowMoreToggle: (isShowMore: boolean) => void\r\n}\r\n\r\n// Rating relevancy is going to be done in some follow up\r\nconst TEMP_HIDDEN_RATE_RELEVANCY = true\r\n\r\nexport function TrafficTableBottomContent({\r\n showMoreLabel,\r\n showLessLabel,\r\n isShowMore,\r\n hasHiddenRows,\r\n onShowMoreToggle,\r\n}: Props) {\r\n const wrapperRef = React.useRef(null)\r\n const previousExpandWrapperTopRef = React.useRef(0)\r\n const isShowMorePrevious = usePrevious(isShowMore)\r\n\r\n React.useEffect(() => {\r\n if (isShowMorePrevious && !isShowMore) {\r\n setTimeout(() => {\r\n const currentExpandWrapperTop = wrapperRef.current?.getBoundingClientRect().top ?? 0\r\n window.scrollTo({ top: window.scrollY - (previousExpandWrapperTopRef.current - currentExpandWrapperTop) })\r\n })\r\n }\r\n }, [isShowMorePrevious, isShowMore])\r\n\r\n return (\r\n
\r\n {hasHiddenRows ? (\r\n {\r\n previousExpandWrapperTopRef.current = wrapperRef.current?.getBoundingClientRect().top ?? 0\r\n onShowMoreToggle(!isShowMore)\r\n }}\r\n leftContent={}\r\n className=\"font-normal\"\r\n >\r\n {isShowMore ? showLessLabel : showMoreLabel}\r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n
\r\n Data source: similarweb.com\r\n {!TEMP_HIDDEN_RATE_RELEVANCY && (\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 { TableAlign, TableHead, TableHeader, TableHeaderSortable } from '../../components/Table'\r\nimport { FinancialsColumnDefinition } from '../../components/financials-table/types'\r\nimport { SortByShape } from '../../hooks/use-sort-data'\r\nimport { SortDirection } from '../../types'\r\nimport { TrafficSubRowDataType } from './types'\r\n\r\ntype Props = {\r\n columns: FinancialsColumnDefinition[]\r\n sort: SortByShape | null>\r\n stickyLabelWidthClassName?: string\r\n onSortChange: (column: FinancialsColumnDefinition) => void\r\n}\r\n\r\nexport function TrafficTableHead({ columns, sort, stickyLabelWidthClassName, 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\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 { ColorVariant } from '../../components'\r\nimport { FinancialsSubRowDataType } from '../../components/financials-table/types'\r\nimport { View } from '../../components/line-stacked-bar-chart'\r\n\r\nexport enum TrafficDataViewEnum {\r\n visits = 'visits',\r\n momChangePct = 'momChangePct',\r\n}\r\n\r\nexport enum AppRegion {\r\n us = 'us',\r\n ww = 'ww',\r\n}\r\n\r\nexport enum AppPlatform {\r\n ios = 'ios',\r\n android = 'android',\r\n}\r\n\r\nexport type TrafficSettings = {\r\n trafficDataView: TrafficDataViewEnum\r\n chartView: View\r\n appRegions: AppRegion[]\r\n appPlatforms: AppPlatform[]\r\n}\r\n\r\nexport interface InitialTrafficData {\r\n trafficTickers: string[]\r\n companyName: string\r\n mainDomain?: string | null\r\n trafficsWithPeers: TrafficItem[]\r\n appsWithPeers: AppItem[]\r\n}\r\n\r\nexport interface ParsedTrafficData extends Omit {\r\n trafficsWithPeers: ParsedTrafficItem[]\r\n appsWithPeers: ParsedAppItem[]\r\n}\r\n\r\nexport interface TrafficItem {\r\n domain?: string | null\r\n industry?: string | null\r\n industryGroup?: string | null\r\n heatmapSector?: string | null\r\n heatmapSubSector?: string | null\r\n peers?: string | null\r\n sector?: string | null\r\n ticker: string | null\r\n trafficJson?: string | null\r\n}\r\n\r\nexport type ParsedTrafficItem = Omit & {\r\n traffic: {\r\n d: number[]\r\n v: number[]\r\n } | null\r\n}\r\n\r\nexport interface AppItem {\r\n domain?: string\r\n appId?: string | null\r\n appName?: string | null\r\n os?: string | null\r\n geo?: string | null\r\n mauJson?: string | null\r\n}\r\n\r\nexport type ParsedAppItem = Omit & {\r\n id: string\r\n os: AppPlatform | null\r\n geo: AppRegion | null\r\n mau: {\r\n d: number[]\r\n v: number[]\r\n } | null\r\n}\r\n\r\nexport type TrafficSubRowDataType = Omit & {\r\n values: Array<{ year: string; value: number | null; momValue?: number | null }>\r\n keyValueMap: Record\r\n momKeyValueMap: Record\r\n}\r\n\r\nexport type TrafficRowDataType = TrafficSubRowDataType & {\r\n isSelected: boolean\r\n isHighlighted: boolean\r\n color: ColorVariant\r\n}\r\n","import React from 'react'\r\n\r\nimport { Heading } from '../../components'\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 { TrafficDataViewEnum, TrafficSettings } from './types'\r\n\r\nexport function WidgetDomainSettingsSection() {\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n const toggleSetting = (key: keyof TrafficSettings, value: TrafficSettings[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 Domains: Monthly Visits\r\n \r\n
\r\n \r\n {\r\n toggleSetting('trafficDataView', TrafficDataViewEnum.visits)\r\n }}\r\n >\r\n Visits\r\n \r\n {\r\n toggleSetting('trafficDataView', TrafficDataViewEnum.momChangePct)\r\n }}\r\n >\r\n MoM Growth %\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}\r\n","import { ColorVariant } from '../../components'\r\nimport { AppPlatform, AppRegion, TrafficDataViewEnum, TrafficSettings } from './types'\r\n\r\nexport const COOKIE_KEY = 'trafficSettings'\r\n\r\nexport const DEFAULT_SHOW_NUM_OF_APPS = 12\r\n\r\nexport const DEFAULT_SETTINGS: TrafficSettings = {\r\n trafficDataView: TrafficDataViewEnum.visits,\r\n chartView: 1,\r\n appPlatforms: [AppPlatform.android, AppPlatform.ios],\r\n appRegions: [AppRegion.us, AppRegion.ww],\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\r\nexport const AppPlatformLabels = {\r\n [AppPlatform.ios]: 'iOS',\r\n [AppPlatform.android]: 'Android',\r\n}\r\n\r\nexport const AppRegionLabels = {\r\n [AppRegion.us]: 'USA',\r\n [AppRegion.ww]: 'Worldwide',\r\n}\r\n\r\nexport const COMMON_COLUMN_CLASS_NAME = 'px-3.5 last:pr-11 w-17 min-w-17 max-w-17 last:w-24.5 relative'\r\n","import * as React from 'react'\r\n\r\nexport type MonthlyDataRowSelectionOverridesType = Record\r\n\r\ninterface Props {\r\n clearInactiveIdsBlacklist?: string[]\r\n}\r\n\r\nexport function useMonthlyDataControls({ clearInactiveIdsBlacklist }: Props) {\r\n const [isShowMore, setIsShowMore] = React.useState(false)\r\n const [monthlyDataRowSelectionOverrides, setMonthlyDataRowSelectionOverrides] =\r\n React.useState({})\r\n\r\n const toggleMonthlyDataRowSelection = React.useCallback((id: string, isSelected: boolean) => {\r\n setMonthlyDataRowSelectionOverrides((prevState) => ({\r\n ...prevState,\r\n [id]: isSelected,\r\n }))\r\n }, [])\r\n\r\n const clearInactiveMonthlyData = React.useCallback(() => {\r\n setMonthlyDataRowSelectionOverrides((prevState) =>\r\n Object.keys(prevState).reduce(\r\n (acc, id) =>\r\n clearInactiveIdsBlacklist?.includes(id)\r\n ? acc\r\n : {\r\n ...acc,\r\n [id]: prevState[id] ? true : undefined,\r\n },\r\n prevState\r\n )\r\n )\r\n }, [clearInactiveIdsBlacklist])\r\n\r\n const toggleIsShowMore = React.useCallback(\r\n (isShowMore: boolean) => {\r\n if (isShowMore) {\r\n clearInactiveMonthlyData()\r\n }\r\n setIsShowMore(isShowMore)\r\n },\r\n [clearInactiveMonthlyData]\r\n )\r\n\r\n return React.useMemo(\r\n () => ({\r\n monthlyDataRowSelectionOverrides,\r\n toggleMonthlyDataRowSelection,\r\n toggleIsShowMore,\r\n isShowMore,\r\n }),\r\n [monthlyDataRowSelectionOverrides, toggleMonthlyDataRowSelection, toggleIsShowMore, isShowMore]\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport { format } from 'date-fns'\r\nimport * as React from 'react'\r\n\r\nimport { TableAlign } from '../../components/Table'\r\nimport { getHeatmapClassNames } from '../../components/financials-table'\r\nimport { FinancialsColumnDefinition } from '../../components/financials-table/types'\r\nimport { shortFormatNumber } from '../../util'\r\nimport { COMMON_COLUMN_CLASS_NAME } from './constants'\r\nimport { TrafficDataViewEnum, TrafficSubRowDataType } from './types'\r\n\r\nconst getColumnsAndValueGetter = (yearKeys: string[], trafficDataView: TrafficDataViewEnum) => {\r\n const isMomChangePct = trafficDataView === TrafficDataViewEnum.momChangePct\r\n const columns: FinancialsColumnDefinition[] = yearKeys.map((yearMonth) => {\r\n const year = yearMonth.slice(0, 4)\r\n const month = yearMonth.slice(4, 6)\r\n const monthIndex = Number.parseInt(month) - 1\r\n const date = new Date(Number.parseInt(year), monthIndex, 1)\r\n return {\r\n id: yearMonth,\r\n name: format(date, monthIndex === 0 ? 'yyyy' : 'MMM'),\r\n align: TableAlign.Right,\r\n className: classnames(COMMON_COLUMN_CLASS_NAME, {\r\n 'is-heatmap': isMomChangePct,\r\n }),\r\n getColumnClassName: (data) => (isMomChangePct ? getHeatmapClassNames(data.momKeyValueMap[yearMonth]) : null),\r\n renderColumn: (data) => {\r\n const value = data[isMomChangePct ? 'momKeyValueMap' : 'keyValueMap'][yearMonth] ?? null\r\n const hasValue = typeof value === 'number'\r\n const shouldShowDecimal = (value ?? 0) >= 1000 || isMomChangePct\r\n return (\r\n \r\n {shortFormatNumber(value, { fractions: shouldShowDecimal ? 1 : 0, defaultValue: '—' })}\r\n {isMomChangePct && hasValue ? '%' : ''}\r\n \r\n )\r\n },\r\n }\r\n })\r\n\r\n return {\r\n columns,\r\n valueGetter: (column: FinancialsColumnDefinition) => (data: TrafficSubRowDataType) =>\r\n data[isMomChangePct ? 'momKeyValueMap' : 'keyValueMap'][column.id] ?? null,\r\n }\r\n}\r\n\r\nconst EMPTY_ARRAY: FinancialsColumnDefinition[] = []\r\n\r\nexport function useTableColumns(yearKeys: string[], trafficDataView: TrafficDataViewEnum, hasBeenInView: boolean) {\r\n return React.useMemo(\r\n () =>\r\n hasBeenInView\r\n ? getColumnsAndValueGetter(yearKeys, trafficDataView)\r\n : { columns: EMPTY_ARRAY, valueGetter: () => () => null },\r\n [yearKeys, trafficDataView, hasBeenInView]\r\n )\r\n}\r\n","import {\r\n AppPlatform,\r\n AppRegion,\r\n InitialTrafficData,\r\n ParsedAppItem,\r\n ParsedTrafficData,\r\n ParsedTrafficItem,\r\n} from './types'\r\n\r\nexport function getParsedDataFromInitial(data: InitialTrafficData): ParsedTrafficData {\r\n const { mainDomain, trafficsWithPeers, appsWithPeers, companyName, trafficTickers } = data\r\n\r\n return {\r\n trafficTickers,\r\n companyName,\r\n mainDomain: trafficsWithPeers.find(({ domain }) => domain && mainDomain?.includes(domain))?.domain ?? null,\r\n trafficsWithPeers: trafficsWithPeers.map(({ trafficJson, ...item }) => ({\r\n ...item,\r\n traffic: trafficJson ? JSON.parse(trafficJson) : null,\r\n })),\r\n appsWithPeers: appsWithPeers.map(({ mauJson, ...item }) => {\r\n let geo: AppRegion | null = null\r\n let os: AppPlatform | null = null\r\n if (item.geo?.toLowerCase() === AppRegion.ww) {\r\n geo = AppRegion.ww\r\n } else if (item.geo?.toLowerCase() === AppRegion.us) {\r\n geo = AppRegion.us\r\n }\r\n if (item.os?.toLowerCase() === AppPlatform.ios) {\r\n os = AppPlatform.ios\r\n } else if (item.os?.toLowerCase() === AppPlatform.android) {\r\n os = AppPlatform.android\r\n }\r\n\r\n return {\r\n ...item,\r\n appName: item.appName ?? 'N/A',\r\n id: `${item.domain}-${item.appName}-${item.appId}-${item.os}-${item.geo}`,\r\n os,\r\n geo,\r\n mau: mauJson ? JSON.parse(mauJson) : null,\r\n }\r\n }),\r\n }\r\n}\r\n\r\nexport function getSortedTickerTrafficsWithPeers(parsedData: ParsedTrafficData) {\r\n const tickerTrafficsWithPeers = parsedData.trafficsWithPeers.filter(\r\n (trafficWithPeers) =>\r\n trafficWithPeers.domain &&\r\n parsedData.trafficTickers.some((ticker) => ticker.toLowerCase() === trafficWithPeers.ticker?.toLowerCase())\r\n )\r\n tickerTrafficsWithPeers.sort((a, b) => {\r\n if (a.domain === parsedData?.mainDomain) return -1\r\n if (b.domain === parsedData?.mainDomain) return 1\r\n const aLastValue = a.traffic?.v[a.traffic.v.length - 1] ?? 0\r\n const bLastValue = b.traffic?.v[b.traffic.v.length - 1] ?? 0\r\n if (aLastValue === bLastValue) return 0\r\n\r\n return aLastValue > bLastValue ? -1 : 1\r\n })\r\n return tickerTrafficsWithPeers\r\n}\r\n\r\nexport function getAppStoreLink(app: ParsedAppItem) {\r\n if (!app.appId) return undefined\r\n\r\n if (app.os === AppPlatform.android) {\r\n return `https://play.google.com/store/apps/details?id=${app.appId}`\r\n }\r\n\r\n return `https://apps.apple.com/app/${app.appId}`\r\n}\r\n\r\nexport function getDomainHref(item: ParsedTrafficItem) {\r\n if (item.domain) {\r\n return `https://${item.domain}`\r\n }\r\n return undefined\r\n}\r\n\r\ninterface GetSelectedAppsArrayProps {\r\n domainApps: ParsedAppItem[]\r\n peerApps: ParsedAppItem[]\r\n industryApps: ParsedAppItem[]\r\n appRegions: AppRegion[]\r\n appPlatforms: AppPlatform[]\r\n}\r\n\r\nexport function getSelectedAppsArray({\r\n domainApps,\r\n peerApps,\r\n industryApps,\r\n appPlatforms,\r\n appRegions,\r\n}: GetSelectedAppsArrayProps) {\r\n if (domainApps.length === 0) {\r\n return []\r\n }\r\n\r\n return [domainApps, peerApps, industryApps]\r\n .flat()\r\n .filter((app) => appPlatforms.includes(app.os!) && appRegions.includes(app.geo!))\r\n}\r\n\r\nexport function sortByMauLastValueDesc(apps: ParsedAppItem[]) {\r\n return [...apps].sort((a, b) => {\r\n const aLastValue = a.mau?.v[a.mau.v.length - 1] ?? 0\r\n const bLastValue = b.mau?.v[b.mau.v.length - 1] ?? 0\r\n if (aLastValue === bLastValue) return 0\r\n\r\n return aLastValue > bLastValue ? -1 : 1\r\n })\r\n}\r\n","import React from 'react'\r\n\r\nimport { useTableSort } from '../../components/Table'\r\nimport { ExternalLink } from '../../components/external-link'\r\nimport { FinancialsWidget, getMoMPercentageData, useFinancialsTableContext } from '../../components/financials-table'\r\nimport { LineStackedBarChart } from '../../components/line-stacked-bar-chart'\r\nimport { TrafficTableBottomContent } from './TrafficTableBottomContent'\r\nimport { TrafficTableHead } from './TrafficTableHead'\r\nimport { WidgetDomainSettingsSection } from './WidgetDomainSettingsSection'\r\nimport { SEGMENT_COLORS } from './constants'\r\nimport { TrafficRowDataType, TrafficSettings, TrafficSubRowDataType } from './types'\r\nimport { ParsedTrafficItem } from './types'\r\nimport { useMonthlyDataControls } from './useMonthlyDataControls'\r\nimport { useTableColumns } from './useTableColumns'\r\nimport { getDomainHref } from './utils'\r\n\r\ninterface MapDataProps {\r\n mainTraffic: ParsedTrafficItem\r\n peerTraffics: ParsedTrafficItem[]\r\n industryTraffics: ParsedTrafficItem[]\r\n isPlaceholder: boolean\r\n}\r\n\r\ninterface Props extends Omit {\r\n hasBeenInView: boolean\r\n isInView: boolean\r\n}\r\n\r\nfunction mapData({\r\n mainTraffic,\r\n peerTraffics,\r\n industryTraffics,\r\n yearKeys,\r\n isPlaceholder,\r\n}: MapDataProps & { yearKeys: number[] }): TrafficRowDataType[] {\r\n const allTraffics = [mainTraffic, ...peerTraffics, ...industryTraffics]\r\n const domainsArray = allTraffics.map((traffic, index) => {\r\n const values = !isPlaceholder\r\n ? yearKeys.map((date) => {\r\n const index = traffic.traffic?.d.findIndex((d) => d === date) ?? -1\r\n return {\r\n year: date.toString(),\r\n value: traffic.traffic?.v[index] ?? null,\r\n }\r\n })\r\n : []\r\n\r\n const valuesWithMomData: TrafficSubRowDataType['values'] = []\r\n const keyValueMap: TrafficSubRowDataType['keyValueMap'] = {}\r\n const momKeyValueMap: TrafficSubRowDataType['momKeyValueMap'] = {}\r\n\r\n if (!isPlaceholder) {\r\n const momData = getMoMPercentageData(values)\r\n values.forEach(({ year, value }) => {\r\n const momValue = momData[year] ?? null\r\n keyValueMap[year] = value\r\n momKeyValueMap[year] = momValue\r\n\r\n valuesWithMomData.push({\r\n year,\r\n value,\r\n momValue,\r\n })\r\n })\r\n }\r\n\r\n const isHighlighted = traffic.domain === mainTraffic.domain\r\n\r\n return {\r\n label: traffic.domain!,\r\n id: traffic.domain!,\r\n labelElement: ,\r\n labelColumnClassName: 'whitespace-nowrap',\r\n isLabelColumnSticky: true,\r\n color: SEGMENT_COLORS[index % SEGMENT_COLORS.length],\r\n isHighlighted,\r\n isSelected: traffic.domain === mainTraffic.domain || !!mainTraffic?.peers?.includes(traffic.domain!),\r\n values: valuesWithMomData,\r\n keyValueMap,\r\n momKeyValueMap,\r\n }\r\n })\r\n\r\n return domainsArray\r\n}\r\n\r\nexport function Domain({\r\n mainTraffic,\r\n peerTraffics,\r\n industryTraffics: industryTrafficsRaw,\r\n hasBeenInView,\r\n isInView,\r\n}: Props) {\r\n const { settings } = useFinancialsTableContext()\r\n const clearInactiveIdsBlacklist = React.useMemo(\r\n () => (mainTraffic ? [mainTraffic, ...peerTraffics].map(({ domain }) => domain ?? '') : ([] as string[])),\r\n [mainTraffic, peerTraffics]\r\n )\r\n const { monthlyDataRowSelectionOverrides, toggleMonthlyDataRowSelection, isShowMore, toggleIsShowMore } =\r\n useMonthlyDataControls({\r\n clearInactiveIdsBlacklist,\r\n })\r\n const industryTraffics = React.useMemo(() => {\r\n if (isShowMore) {\r\n return industryTrafficsRaw\r\n }\r\n return industryTrafficsRaw.filter(({ domain }) => domain && monthlyDataRowSelectionOverrides[domain] !== undefined)\r\n }, [industryTrafficsRaw, monthlyDataRowSelectionOverrides, isShowMore])\r\n\r\n const yearKeys = React.useMemo(() => {\r\n const allTraffics = [mainTraffic, ...peerTraffics, ...industryTraffics]\r\n return allTraffics\r\n .flatMap(({ traffic }) => traffic?.d)\r\n .filter((year, index, arr) => year !== undefined && arr.indexOf(year) === index)\r\n .sort((a, b) => a! - b!) as number[]\r\n }, [mainTraffic, peerTraffics, industryTraffics])\r\n const stringYearKeys = React.useMemo(() => yearKeys.map((y) => y.toString()), [yearKeys])\r\n const [monthlyData, setMonthlyData] = React.useState(() =>\r\n mapData({ peerTraffics, mainTraffic, industryTraffics, yearKeys, isPlaceholder: true })\r\n )\r\n const { columns, valueGetter } = useTableColumns(stringYearKeys, settings.trafficDataView, hasBeenInView)\r\n\r\n const {\r\n data: sortedData,\r\n sort,\r\n changeSort,\r\n } = useTableSort({\r\n data: monthlyData,\r\n columns,\r\n defaultSort: { column: columns[columns.length - 1], direction: -1 },\r\n key: hasBeenInView ? 1 : 0,\r\n valueGetter,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (!hasBeenInView) {\r\n return\r\n }\r\n\r\n const newMonthlyData = mapData({\r\n peerTraffics,\r\n mainTraffic,\r\n industryTraffics,\r\n yearKeys,\r\n isPlaceholder: false,\r\n })\r\n setMonthlyData(\r\n newMonthlyData.map((data, index) => ({\r\n ...data,\r\n isSelected: monthlyDataRowSelectionOverrides[data.id] ?? index < [mainTraffic, ...peerTraffics].length,\r\n }))\r\n )\r\n }, [\r\n peerTraffics,\r\n mainTraffic,\r\n industryTraffics,\r\n yearKeys,\r\n monthlyDataRowSelectionOverrides,\r\n hasBeenInView,\r\n settings.trafficDataView,\r\n ])\r\n\r\n return (\r\n
\r\n }\r\n tableHead={}\r\n columns={columns}\r\n hasStickyColumnWrapper={hasBeenInView}\r\n isTableFixed={false}\r\n onVisibilityChange={toggleMonthlyDataRowSelection}\r\n >\r\n \r\n \r\n 0}\r\n isShowMore={isShowMore}\r\n onShowMoreToggle={toggleIsShowMore}\r\n />\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Heading, Paragraph } from '../../components/typography'\r\nimport { Domain } from './Domain'\r\n\r\nconst mainTraffic = {\r\n ticker: 'AAPL',\r\n domain: 'apple.com',\r\n sector: 'Information Technology',\r\n industryGroup: 'Technology Hardware & Equipment',\r\n industry: 'Electronic Equipment, Instruments & Components',\r\n heatmapSector: 'Retail & Ecommerce',\r\n heatmapSubSector: 'Electronics Retail',\r\n peers: 'bestbuy.com bhphotovideo.com dell.com newegg.com gopro.com',\r\n traffic: {\r\n d: [202309, 202310, 202311, 202312, 202401, 202402, 202403, 202404, 202405, 202406, 202407, 202408],\r\n v: [\r\n 540748750, 505229547, 487297621, 488173477, 491135108, 455089483, 469888439, 438799320, 466652151, 447602427,\r\n 460280112, 466004425,\r\n ],\r\n },\r\n}\r\n\r\nconst peerTraffics = [\r\n {\r\n ticker: null,\r\n domain: 'bhphotovideo.com',\r\n heatmapSector: 'Retail & Ecommerce',\r\n heatmapSubSector: 'Electronics Retail',\r\n peers: 'adorama.com bestbuy.com newegg.com crutchfield.com apple.com',\r\n traffic: {\r\n d: [202309, 202310, 202311, 202312, 202401, 202402, 202403, 202404, 202405, 202406, 202407, 202408],\r\n v: [\r\n 16882382, 15587001, 19360737, 17491439, 15626709, 14937833, 15778420, 14048463, 14447505, 13713870, 14458610,\r\n 13244665,\r\n ],\r\n },\r\n },\r\n {\r\n ticker: 'NEGG',\r\n domain: 'newegg.com',\r\n sector: 'Consumer Discretionary',\r\n industryGroup: 'Automobiles & Components',\r\n industry: 'Automobiles',\r\n heatmapSector: 'Retail & Ecommerce',\r\n heatmapSubSector: 'Electronics Retail',\r\n peers: 'bestbuy.com bhphotovideo.com microcenter.com monoprice.com adorama.com',\r\n traffic: {\r\n d: [202309, 202310, 202311, 202312, 202401, 202402, 202403, 202404, 202405, 202406, 202407, 202408],\r\n v: [\r\n 14655543, 14675084, 21299681, 17083935, 14989483, 12606841, 12744555, 11189424, 11204263, 10793083, 12361144,\r\n 10800396,\r\n ],\r\n },\r\n },\r\n {\r\n ticker: 'BBY',\r\n domain: 'bestbuy.com',\r\n sector: 'Consumer Discretionary',\r\n industryGroup: 'Retailing',\r\n industry: 'Specialty Retail',\r\n heatmapSector: 'Retail & Ecommerce',\r\n heatmapSubSector: 'Electronics Retail',\r\n peers: 'bhphotovideo.com newegg.com microcenter.com adorama.com crutchfield.com',\r\n traffic: {\r\n d: [202309, 202310, 202311, 202312, 202401, 202402, 202403, 202404, 202405, 202406, 202407, 202408],\r\n v: [\r\n 103083547, 109511672, 183001509, 145494317, 106208296, 91989808, 89471329, 82107190, 93211500, 95630411,\r\n 107767846, 108331167,\r\n ],\r\n },\r\n },\r\n {\r\n ticker: 'GPRO',\r\n domain: 'gopro.com',\r\n sector: 'Information Technology',\r\n industryGroup: 'Technology Hardware & Equipment',\r\n industry: 'Electronic Equipment, Instruments & Components',\r\n heatmapSector: 'Retail & Ecommerce',\r\n heatmapSubSector: 'Electronics Retail',\r\n peers: 'adorama.com bhphotovideo.com crutchfield.com bestbuy.com newegg.com',\r\n traffic: {\r\n d: [202309, 202310, 202311, 202312, 202401, 202402, 202403, 202404, 202405, 202406, 202407, 202408],\r\n v: [6691953, 5650591, 5848752, 5772722, 5387842, 4922998, 5067003, 4727655, 4848193, 5098999, 5130140, 4867626],\r\n },\r\n },\r\n {\r\n ticker: 'DELL',\r\n domain: 'dell.com',\r\n sector: 'Information Technology',\r\n industryGroup: 'Technology Hardware & Equipment',\r\n industry: 'Technology Hardware, Storage & Peripherals',\r\n heatmapSector: 'Retail & Ecommerce',\r\n heatmapSubSector: 'Electronics Retail',\r\n peers: 'bestbuy.com newegg.com bhphotovideo.com microcenter.com kabum.com.br',\r\n traffic: {\r\n d: [202309, 202310, 202311, 202312, 202401, 202402, 202403, 202404, 202405, 202406, 202407, 202408],\r\n v: [\r\n 45350663, 46275790, 54923594, 43819278, 47816519, 41098872, 45505450, 40775151, 40332786, 39203811, 45198644,\r\n 41075116,\r\n ],\r\n },\r\n },\r\n]\r\n\r\ninterface Props {\r\n companyName: string\r\n}\r\n\r\nexport function NoDataPlaceholder({ companyName }: Props) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Data Unavailable for {companyName}\r\n \r\n Currently, we do not have sufficient data to display the{' '}\r\n associated domains and smartphone apps for this company. As soon as the relevant\r\n information becomes available, this view will be updated to provide you with valuable insights.\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Heading } from '../../components'\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 { AppPlatformLabels, AppRegionLabels } from './constants'\r\nimport { AppPlatform, AppRegion, TrafficDataViewEnum, TrafficSettings } from './types'\r\n\r\nexport function WidgetAppSettingsSection() {\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n const toggleSetting = (key: keyof TrafficSettings, value: TrafficSettings[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 Apps: Monthly Active Users\r\n \r\n
\r\n \r\n {[AppPlatform.ios, AppPlatform.android].map((key) => (\r\n {\r\n const has = settings.appPlatforms.includes(key)\r\n toggleSetting('appPlatforms', [\r\n ...settings.appPlatforms.filter((platform) => platform !== key),\r\n ...(has ? [] : [key]),\r\n ])\r\n }}\r\n >\r\n {AppPlatformLabels[key]}\r\n \r\n ))}\r\n \r\n\r\n \r\n {[AppRegion.ww, AppRegion.us].map((key) => (\r\n {\r\n const has = settings.appRegions.includes(key)\r\n toggleSetting('appRegions', [\r\n ...settings.appRegions.filter((platform) => platform !== key),\r\n ...(has ? [] : [key]),\r\n ])\r\n }}\r\n >\r\n {AppRegionLabels[key]}\r\n \r\n ))}\r\n \r\n\r\n \r\n {\r\n toggleSetting('trafficDataView', TrafficDataViewEnum.visits)\r\n }}\r\n >\r\n MAU\r\n \r\n {\r\n toggleSetting('trafficDataView', TrafficDataViewEnum.momChangePct)\r\n }}\r\n >\r\n MoM Growth %\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}\r\n","import React from 'react'\r\n\r\nimport { Tag } from '../../components'\r\nimport { useTableSort } from '../../components/Table'\r\nimport { ExternalLink } from '../../components/external-link'\r\nimport { FinancialsWidget, getMoMPercentageData, useFinancialsTableContext } from '../../components/financials-table'\r\nimport { LineStackedBarChart } from '../../components/line-stacked-bar-chart'\r\nimport { TrafficTableBottomContent } from './TrafficTableBottomContent'\r\nimport { TrafficTableHead } from './TrafficTableHead'\r\nimport { WidgetAppSettingsSection } from './WidgetAppSettingsSection'\r\nimport { AppPlatformLabels, AppRegionLabels, DEFAULT_SHOW_NUM_OF_APPS, SEGMENT_COLORS } from './constants'\r\nimport { ParsedAppItem, TrafficRowDataType, TrafficSettings, TrafficSubRowDataType } from './types'\r\nimport { MonthlyDataRowSelectionOverridesType, useMonthlyDataControls } from './useMonthlyDataControls'\r\nimport { useTableColumns } from './useTableColumns'\r\nimport { getAppStoreLink, getSelectedAppsArray } from './utils'\r\n\r\ninterface MapDataProps {\r\n domain: string | null\r\n selectedAppsArray: ParsedAppItem[]\r\n selectionOverrides?: MonthlyDataRowSelectionOverridesType\r\n yearKeys: number[]\r\n isPlaceholder: boolean\r\n}\r\n\r\nfunction mapData({\r\n domain,\r\n selectedAppsArray,\r\n selectionOverrides,\r\n yearKeys,\r\n isPlaceholder,\r\n}: MapDataProps): TrafficRowDataType[] {\r\n return selectedAppsArray.map((app, index) => {\r\n const appName = app.appName ?? 'N/A'\r\n const platformLabel = app.os ? AppPlatformLabels[app.os] : 'N/A'\r\n const geoLabel = app.geo ? AppRegionLabels[app.geo] : 'N/A'\r\n const values = !isPlaceholder\r\n ? yearKeys.map((date) => {\r\n const index = app.mau?.d.findIndex((d) => d === date) ?? -1\r\n return {\r\n year: date.toString(),\r\n value: app.mau?.v[index] ?? null,\r\n }\r\n })\r\n : []\r\n\r\n const valuesWithMomData: TrafficSubRowDataType['values'] = []\r\n const keyValueMap: TrafficSubRowDataType['keyValueMap'] = {}\r\n const momKeyValueMap: TrafficSubRowDataType['momKeyValueMap'] = {}\r\n\r\n if (!isPlaceholder) {\r\n const momData = getMoMPercentageData(values)\r\n values.forEach(({ year, value }) => {\r\n const momValue = momData[year] ?? null\r\n keyValueMap[year] = value\r\n momKeyValueMap[year] = momValue\r\n\r\n valuesWithMomData.push({\r\n year,\r\n value,\r\n momValue,\r\n })\r\n })\r\n }\r\n\r\n const isHighlighted = app.domain === domain\r\n\r\n return {\r\n id: app.id,\r\n label: [appName, platformLabel, geoLabel].join(' - '),\r\n labelColumnClassName: 'whitespace-nowrap',\r\n isLabelColumnSticky: true,\r\n labelElement: (\r\n
\r\n \r\n {platformLabel} {geoLabel}\r\n
\r\n ),\r\n isHighlighted,\r\n geo: app.geo,\r\n os: app.os,\r\n color: SEGMENT_COLORS[index % SEGMENT_COLORS.length],\r\n isSelected: selectionOverrides?.[app.id] ?? index < DEFAULT_SHOW_NUM_OF_APPS,\r\n values: valuesWithMomData,\r\n keyValueMap,\r\n momKeyValueMap,\r\n }\r\n })\r\n}\r\n\r\ninterface Props {\r\n domainApps: ParsedAppItem[]\r\n peerApps: ParsedAppItem[]\r\n industryApps: ParsedAppItem[]\r\n hasBeenInView: boolean\r\n isInView: boolean\r\n}\r\n\r\nexport function Apps({ domainApps, peerApps, industryApps, hasBeenInView, isInView }: Props) {\r\n const { settings } = useFinancialsTableContext()\r\n const { domain, yearKeys, stringYearKeys } = React.useMemo(() => {\r\n const domain = domainApps?.[0].domain ?? null\r\n const domainAppsYears = domainApps?.flatMap(({ mau }) => mau?.d) ?? []\r\n const peerAppsYears = peerApps?.flatMap(({ mau }) => mau?.d) ?? []\r\n const industryAppsYears = industryApps?.flatMap(({ mau }) => mau?.d) ?? []\r\n\r\n const yearKeys = (\r\n [...new Set([...domainAppsYears, ...peerAppsYears, ...industryAppsYears])].filter(Boolean) as number[]\r\n ).sort((a, b) => a - b)\r\n\r\n return {\r\n yearKeys,\r\n stringYearKeys: yearKeys.map((y) => y.toString()),\r\n domain,\r\n }\r\n }, [domainApps, peerApps, industryApps])\r\n\r\n const selectedAppsArray = React.useMemo(\r\n () =>\r\n getSelectedAppsArray({\r\n domainApps,\r\n peerApps,\r\n industryApps,\r\n appPlatforms: settings.appPlatforms,\r\n appRegions: settings.appRegions,\r\n }),\r\n [domainApps, peerApps, industryApps, settings.appRegions, settings.appPlatforms]\r\n )\r\n const clearInactiveIdsBlacklist = React.useMemo(\r\n () => selectedAppsArray.slice(0, DEFAULT_SHOW_NUM_OF_APPS).map(({ id }) => id),\r\n [selectedAppsArray]\r\n )\r\n const { monthlyDataRowSelectionOverrides, toggleMonthlyDataRowSelection, isShowMore, toggleIsShowMore } =\r\n useMonthlyDataControls({ clearInactiveIdsBlacklist })\r\n const [monthlyData, setMonthlyData] = React.useState(() =>\r\n mapData({\r\n domain,\r\n selectedAppsArray: selectedAppsArray.slice(0, DEFAULT_SHOW_NUM_OF_APPS),\r\n yearKeys,\r\n isPlaceholder: true,\r\n })\r\n )\r\n const { columns, valueGetter } = useTableColumns(stringYearKeys, settings.trafficDataView, hasBeenInView)\r\n\r\n const {\r\n data: sortedData,\r\n sort,\r\n changeSort,\r\n } = useTableSort({\r\n data: monthlyData,\r\n columns,\r\n defaultSort: { column: columns[columns.length - 1], direction: -1 },\r\n key: hasBeenInView ? 1 : 0,\r\n valueGetter,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (!hasBeenInView) {\r\n return\r\n }\r\n\r\n const newMonthlyData = mapData({\r\n domain,\r\n selectedAppsArray: selectedAppsArray.filter(\r\n ({ id }, index) =>\r\n isShowMore || index < DEFAULT_SHOW_NUM_OF_APPS || monthlyDataRowSelectionOverrides[id] !== undefined\r\n ),\r\n yearKeys,\r\n selectionOverrides: monthlyDataRowSelectionOverrides,\r\n isPlaceholder: false,\r\n })\r\n\r\n setMonthlyData(newMonthlyData)\r\n }, [domain, selectedAppsArray, monthlyDataRowSelectionOverrides, yearKeys, isShowMore, hasBeenInView])\r\n\r\n const isEmpty = monthlyData.length === 0\r\n\r\n return (\r\n
\r\n }\r\n tableHead={\r\n isEmpty ? undefined : (\r\n \r\n )\r\n }\r\n columns={columns}\r\n hasStickyColumnWrapper={hasBeenInView}\r\n onVisibilityChange={toggleMonthlyDataRowSelection}\r\n >\r\n \r\n No matching Apps found.\r\n
\r\n Adjust your filters for more results.\r\n \r\n }\r\n isEmpty={isEmpty}\r\n isInView={isInView}\r\n hasBeenInView={hasBeenInView}\r\n isFullWidth\r\n hasXAxis\r\n />\r\n \r\n {!isEmpty && (\r\n DEFAULT_SHOW_NUM_OF_APPS}\r\n isShowMore={isShowMore}\r\n onShowMoreToggle={toggleIsShowMore}\r\n />\r\n )}\r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { Icon, Select, SelectItem } from '../../components'\r\n\r\ninterface Props {\r\n domain?: string | null\r\n domainItems: SelectItem[]\r\n isInteractive: boolean\r\n}\r\n\r\nconst TICKER_HEADER_CONTAINER_CLASS_NAME = 'js-ticker-header-container'\r\n\r\nexport default function TrafficDomainSelect({ domain, domainItems, isInteractive }: Props) {\r\n const handleDomainSelect = React.useCallback(({ value }: { value: string }) => {\r\n const tickerHeaderContainer = document.getElementsByClassName(TICKER_HEADER_CONTAINER_CLASS_NAME)?.[0]\r\n const fvHeaderHeightInPx =\r\n Number.parseFloat(window.getComputedStyle(document.body).getPropertyValue('--fv-header-height')) || 0\r\n const element = document.getElementById(value)\r\n const elementTopPosition = element?.getBoundingClientRect().top ?? 0\r\n window.scrollTo({\r\n left: 0,\r\n top: window.scrollY + elementTopPosition - tickerHeaderContainer.clientHeight - fvHeaderHeightInPx - 1, // -1 because if it's not there sticky shadow is applied on domain header\r\n behavior: 'smooth',\r\n })\r\n }, [])\r\n\r\n return (\r\n
\r\n }\r\n items={domainItems}\r\n isInteractive={isInteractive}\r\n onChange={handleDomainSelect}\r\n />\r\n
\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { Heading } from '../../components/typography'\r\nimport { useStickyShadow } from '../../hooks/use-sticky-shadow'\r\nimport { shortFormatNumber } from '../../util'\r\n\r\ninterface Props {\r\n domainElement: React.ReactElement | string\r\n sector?: string | null\r\n subSector?: string | null\r\n monthlyVisits: Array\r\n}\r\n\r\nexport default function TrafficHeader({ domainElement, sector, subSector, monthlyVisits }: Props) {\r\n const { stickyRef, isSticky } = useStickyShadow()\r\n\r\n const headerColumns = React.useMemo(() => {\r\n const lastMonthVisits = monthlyVisits[monthlyVisits.length - 1]\r\n const prevMonthVisits = monthlyVisits[monthlyVisits.length - 2]\r\n const visitsChangePercentage =\r\n typeof lastMonthVisits === 'number' && typeof prevMonthVisits === 'number'\r\n ? ((lastMonthVisits - prevMonthVisits) / Math.abs(prevMonthVisits)) * 100\r\n : null\r\n\r\n return [\r\n { label: 'Domain', value: domainElement },\r\n {\r\n label: 'Last Month Visits',\r\n value: `${shortFormatNumber(lastMonthVisits, { fractions: 2 })} ${visitsChangePercentage !== null ? `(${shortFormatNumber(visitsChangePercentage, { fractions: 2, showPlusSign: true })}%)` : ''}`,\r\n },\r\n // Used || intentionally in case sector/subSection is '' (empty string)\r\n { label: 'Sector', value: sector || '—' },\r\n { label: 'Sub Sector', value: subSector || '—' },\r\n ].map(({ label, value }, index) => (\r\n
\r\n {index === 0 && React.isValidElement(value) ? (\r\n value\r\n ) : (\r\n \r\n {value}\r\n \r\n )}\r\n {label}\r\n
\r\n ))\r\n }, [domainElement, monthlyVisits, sector, subSector])\r\n\r\n return (\r\n
\r\n \r\n
\r\n
{headerColumns}
\r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { useIntersectionObserverContext } from '../../services/IntersectionObserverContext'\r\nimport { Apps } from './Apps'\r\nimport { Domain } from './Domain'\r\nimport TrafficDomainSelect from './TrafficDomainSelect'\r\nimport TrafficHeader from './TrafficHeader'\r\nimport { ParsedTrafficData } from './types'\r\nimport { ParsedTrafficItem } from './types'\r\nimport { sortByMauLastValueDesc } from './utils'\r\n\r\ninterface Props {\r\n parsedTrafficData: ParsedTrafficData\r\n domain: string\r\n index: number\r\n}\r\n\r\nexport function TrafficDomainSection({ parsedTrafficData, domain, index }: Props) {\r\n const registerIntersectionObservedElement = useIntersectionObserverContext()\r\n const domainApps = React.useMemo(\r\n () => sortByMauLastValueDesc(parsedTrafficData.appsWithPeers.filter((app) => app.domain === domain)),\r\n [parsedTrafficData, domain]\r\n )\r\n const [isInView, setIsInView] = React.useState(false)\r\n const [hasBeenInView, setHasBeenInView] = React.useState(false)\r\n const { mainTraffic, peerTraffics, industryTraffics, peerApps, industryApps } = React.useMemo(() => {\r\n const peerTraffics: ParsedTrafficItem[] = []\r\n const industryTraffics: ParsedTrafficItem[] = []\r\n\r\n const mainTraffic = parsedTrafficData.trafficsWithPeers.find((traffic) => traffic.domain === domain)!\r\n\r\n parsedTrafficData?.trafficsWithPeers.forEach((traffic) => {\r\n if (traffic.domain === domain) {\r\n return\r\n } else if (mainTraffic.peers?.includes(traffic.domain!)) {\r\n peerTraffics.push(traffic)\r\n } else if (\r\n mainTraffic.heatmapSector &&\r\n mainTraffic.heatmapSubSector &&\r\n mainTraffic.heatmapSector === traffic.heatmapSector &&\r\n mainTraffic.heatmapSubSector === traffic.heatmapSubSector\r\n ) {\r\n industryTraffics.push(traffic)\r\n }\r\n })\r\n\r\n const peerApps = sortByMauLastValueDesc(\r\n parsedTrafficData.appsWithPeers.filter((app) => peerTraffics.some((traffic) => app.domain === traffic.domain))\r\n )\r\n const industryApps = sortByMauLastValueDesc(\r\n parsedTrafficData.appsWithPeers.filter((app) => industryTraffics.some((traffic) => app.domain === traffic.domain))\r\n )\r\n\r\n return {\r\n mainTraffic,\r\n peerTraffics,\r\n industryTraffics,\r\n peerApps,\r\n industryApps,\r\n }\r\n }, [parsedTrafficData, domain])\r\n\r\n const domainItems = React.useMemo(\r\n () =>\r\n parsedTrafficData.trafficsWithPeers\r\n .filter(({ ticker, domain }) => domain && ticker === mainTraffic.ticker)\r\n .map(({ domain }) => ({ value: domain!, label: domain! })),\r\n [parsedTrafficData.trafficsWithPeers, mainTraffic.ticker]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (isInView && !hasBeenInView) {\r\n setHasBeenInView(true)\r\n }\r\n }, [hasBeenInView, isInView])\r\n\r\n React.useEffect(() => {\r\n const unregister = registerIntersectionObservedElement(domain, setIsInView)\r\n\r\n return () => {\r\n unregister?.()\r\n }\r\n }, [domain, registerIntersectionObservedElement])\r\n\r\n return (\r\n
\r\n {index > 0 &&
}\r\n 1 ? (\r\n \r\n ) : (\r\n domain\r\n )\r\n }\r\n sector={mainTraffic.heatmapSector}\r\n subSector={mainTraffic.heatmapSubSector}\r\n monthlyVisits={mainTraffic.traffic?.v ?? []}\r\n />\r\n\r\n \r\n\r\n {domainApps.length > 0 && (\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 { useWindowSize } from '../../hooks/use-window-size'\r\nimport { useCachedLoaderData } from '../../hooks/useCachedLoaderData'\r\nimport { IntersectionObserverContextProvider } from '../../services/IntersectionObserverContext'\r\nimport { NoDataPlaceholder } from './NoDataPlaceholder'\r\nimport { TrafficDomainSection } from './TrafficDomainSection'\r\nimport { COOKIE_KEY, DEFAULT_SETTINGS } from './constants'\r\nimport { InitialTrafficData, ParsedTrafficData } from './types'\r\nimport { getParsedDataFromInitial, getSortedTickerTrafficsWithPeers } from './utils'\r\n\r\nfunction TrafficComponent() {\r\n const { clientWidth } = useWindowSize()\r\n const { data } = useCachedLoaderData()\r\n\r\n const parsedData = React.useMemo(() => {\r\n if (!data) return null\r\n\r\n return getParsedDataFromInitial(data)\r\n }, [data])\r\n\r\n const tickerTrafficsWithPeers = React.useMemo(() => {\r\n if (!parsedData) return []\r\n\r\n return getSortedTickerTrafficsWithPeers(parsedData)\r\n }, [parsedData])\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 if (!data || data.appsWithPeers.length === 0) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n
\r\n {tickerTrafficsWithPeers.map((trafficWithPeers, index) => (\r\n \r\n ))}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default function Traffic() {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { ObjectHash } from '../components/types'\r\n\r\ntype IntersectionObservedEntry = ObjectHash<(isIntersecting: boolean) => void>\r\n\r\n/*\r\n * Context.\r\n */\r\n\r\nexport type IntersectionObserverContextProps = (\r\n elementId: string,\r\n callback: (isObserving: boolean) => void\r\n) => (() => void) | null\r\n\r\nexport const IntersectionObserverContext = React.createContext(() => null)\r\n\r\n/*\r\n * Hook.\r\n */\r\n\r\nexport function useIntersectionObserverContext(): IntersectionObserverContextProps {\r\n return React.useContext(IntersectionObserverContext)\r\n}\r\n\r\n/*\r\n * Component.\r\n */\r\n\r\ninterface IntersectionObserverContextProviderProps {\r\n children: React.ReactNode\r\n}\r\nexport const IntersectionObserverContextProvider = ({ children }: IntersectionObserverContextProviderProps) => {\r\n const intersectionObservedElementsRef = React.useRef({})\r\n const intersectionObserverRef = React.useRef(\r\n new IntersectionObserver((entries) => {\r\n entries.forEach((entry) => {\r\n const callback = intersectionObservedElementsRef.current[entry.target.id]\r\n callback?.(entry.isIntersecting)\r\n })\r\n })\r\n )\r\n\r\n React.useEffect(\r\n () => () => {\r\n intersectionObserverRef.current.disconnect()\r\n },\r\n []\r\n )\r\n\r\n const registerIntersectionObservedElement = React.useRef(\r\n (elementId: string, callback: (isObserving: boolean) => void) => {\r\n const element = document.getElementById(elementId)\r\n if (!element) {\r\n return null\r\n }\r\n intersectionObserverRef.current.observe(element)\r\n intersectionObservedElementsRef.current[elementId] = callback\r\n\r\n return () => {\r\n intersectionObserverRef.current.unobserve(element)\r\n delete intersectionObservedElementsRef.current[elementId]\r\n }\r\n }\r\n )\r\n\r\n return (\r\n \r\n {children}\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});","'use strict';\nvar has = require('../internals/set-helpers').has;\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n has(it);\n return it;\n};\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar call = require('../internals/function-call');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, intSize) {\n this.set = set;\n this.size = max(intSize, 0);\n this.has = aCallable(set.has);\n this.keys = aCallable(set.keys);\n};\n\nSetRecord.prototype = {\n getIterator: function () {\n return getIteratorDirect(anObject(call(this.keys, this.set)));\n },\n includes: function (it) {\n return call(this.has, this.set, it);\n }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n anObject(obj);\n var numSize = +obj.size;\n // NOTE: If size is undefined, then numSize will be NaN\n // eslint-disable-next-line no-self-compare -- NaN check\n if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n var intSize = toIntegerOrInfinity(numSize);\n if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n return new SetRecord(obj, intSize);\n};\n","'use strict';\nvar call = require('../internals/function-call');\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== undefined) return result;\n }\n};\n","'use strict';\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n var result = new Set();\n iterate(set, function (it) {\n add(result, it);\n });\n return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = clone(O);\n if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n if (otherRec.includes(e)) remove(result, e);\n });\n else iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) remove(result, e);\n });\n return result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set: Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype['delete']),\n proto: SetPrototype\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = new Set();\n\n if (size(O) > otherRec.size) {\n iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) add(result, e);\n });\n } else {\n iterateSet(O, function (e) {\n if (otherRec.includes(e)) add(result, e);\n });\n }\n\n return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n if (otherRec.includes(e)) return false;\n }, true) !== false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar size = require('../internals/set-size');\nvar iterate = require('../internals/set-iterate');\nvar getSetRecord = require('../internals/get-set-record');\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) > otherRec.size) return false;\n return iterate(O, function (e) {\n if (!otherRec.includes(e)) return false;\n }, true) !== false;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) < otherRec.size) return false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar SetHelpers = require('../internals/set-helpers');\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nvar createSetLike = function (size) {\n return {\n size: size,\n has: function () {\n return false;\n },\n keys: function () {\n return {\n next: function () {\n return { done: true };\n }\n };\n }\n };\n};\n\nmodule.exports = function (name) {\n var Set = getBuiltIn('Set');\n try {\n new Set()[name](createSetLike(0));\n try {\n // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it\n // https://github.com/tc39/proposal-set-methods/pull/88\n new Set()[name](createSetLike(-1));\n return false;\n } catch (error2) {\n return true;\n }\n } catch (error) {\n return false;\n }\n};\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar SetHelpers = require('../internals/set-helpers');\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n return set.size;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (e) {\n if (has(O, e)) remove(result, e);\n else add(result, e);\n });\n return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (it) {\n add(result, it);\n });\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar difference = require('../internals/set-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('difference') }, {\n difference: difference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar intersection = require('../internals/set-intersection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection') || fails(function () {\n // eslint-disable-next-line es/no-array-from, es/no-set -- testing\n return Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2]))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n intersection: intersection\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isDisjointFrom = require('../internals/set-is-disjoint-from');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isDisjointFrom` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isDisjointFrom') }, {\n isDisjointFrom: isDisjointFrom\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSubsetOf = require('../internals/set-is-subset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSubsetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSubsetOf') }, {\n isSubsetOf: isSubsetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSupersetOf = require('../internals/set-is-superset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSupersetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSupersetOf') }, {\n isSupersetOf: isSupersetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar symmetricDifference = require('../internals/set-symmetric-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n symmetricDifference: symmetricDifference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar union = require('../internals/set-union');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n union: union\n});\n"],"names":["LineDot","_ref","cx","cy","r","dataKey","color","className","isActive","value","setActiveKey","React","ChartWrapperContext","lineColor","CHART_ITEM_COLORS","undefined","_jsx","Dot","classNames","onMouseEnter","onMouseLeave","RedGreenDot","_ref2","ManualGridComponent","ref","numberOfLines","visibleLeftAxes","rightOffset","estimateAreaWidth","children","props","lines","Array","from","length","_jsxs","style","right","map","_","index","width","ManualGrid","ExternalLink","label","href","isBold","Button","as","rightContent","Icon","name","size","padding","theme","classnames","target","rel","onMouseDown","event","stopPropagation","onClick","ChartTooltip","payload","payloadSort","isReversed","valueFormatter","items","LineChartTooltipSort","sort","a","b","_b$value","_a$value","Number","reverse","formatter","_valueFormatter","shortFormatNumber","TooltipInner","formatValue","area","TooltipRow","indicator","labelClass","valueClass","CHART_HEIGHT","LABELS_WIDTH","BAR_CHART_LABELS_MARGIN","LINE_CHART_LABELS_MARGIN","BAR_WIDTH","BAR_GAP","EXTRA_WIDTH","BAR_CHART_MARGINS","top","bottom","left","LINE_CHART_MARGINS","FinvizSettings","hasDarkTheme","colors","tickFormatter","fractions","getChartDataItemKey","item","id","BarChart","chartData","visibleAreas","columnsCount","isFullWidth","chartWidth","ChartWrapper","ResponsiveContainer","ChartContext","height","RechartsBarChart","data","margin","barCategoryGap","stackOffset","YAxis","orientation","textAnchor","tickMargin","interval","Tooltip","cursor","CursorBar","numberOfDatapoints","content","itemKey","Bar","stackId","shape","fill","row","Cell","radius","topKey","bottomKey","includes","EmptyDataOverlayWrapper","emptyMessage","isEmpty","relative","Heading","level","LineChart","generateCategoricalChart","chartName","GraphicalChild","Line","axisComponents","axisType","AxisComp","XAxis","formatAxisMap","barWidth","tooltipSort","showTotal","RechartsLineChart","dot","activeDot","stroke","strokeWidth","isHighlighted","yearKeys","chartView","View","paddingLeft","paddingRight","year","substring","month","parseInt","MONTHS","LineStackedBarChart","lineChartTooltipSort","hasXAxis","isShowAll","isInView","hasBeenInView","wrapperRef","setBarWidth","filter","isSelected","stackedBar","total","forEach","_item$values$find$val","_item$values$find","valueKey","values","find","v","getChartData","_wrapperRef$current$c","_wrapperRef$current","wrapperWidth","current","clientWidth","bars","useStickyShadow","stickyRef","isSticky","setIsSticky","onScroll","throttle","stickyElement","elementStickyTopOffset","parseFloat","getComputedStyle","elementCurrentTopOffset","getBoundingClientRect","document","addEventListener","removeEventListener","useWindowSize","throttleWaitInMs","isWatching","arguments","setSize","documentElement","innerWidth","window","innerHeight","handleResize","cancel","TEMP_HIDDEN_RATE_RELEVANCY","TrafficTableBottomContent","showMoreLabel","showLessLabel","isShowMore","hasHiddenRows","onShowMoreToggle","previousExpandWrapperTopRef","isShowMorePrevious","usePrevious","setTimeout","_wrapperRef$current$g","currentExpandWrapperTop","scrollTo","scrollY","type","_wrapperRef$current$g2","_wrapperRef$current2","leftContent","_Fragment","TrafficTableHead","columns","stickyLabelWidthClassName","onSortChange","TableHead","TableHeader","align","TableAlign","Left","column","_sort$column","TableHeaderSortable","direction","shouldRemoveOrder","SortDirection","Descending","handleChangeSort","TrafficDataViewEnum","AppRegion","AppPlatform","WidgetDomainSettingsSection","settings","setSettings","useFinancialsTableContext","toggleSetting","key","ChipSwitch","ChipSwitchButton","active","trafficDataView","visits","momChangePct","COOKIE_KEY","DEFAULT_SHOW_NUM_OF_APPS","DEFAULT_SETTINGS","appPlatforms","android","ios","appRegions","us","ww","SEGMENT_COLORS","Object","keys","ColorVariant","c","gray","default","AppPlatformLabels","AppRegionLabels","useMonthlyDataControls","clearInactiveIdsBlacklist","setIsShowMore","monthlyDataRowSelectionOverrides","setMonthlyDataRowSelectionOverrides","toggleMonthlyDataRowSelection","prevState","clearInactiveMonthlyData","reduce","acc","toggleIsShowMore","getColumnsAndValueGetter","isMomChangePct","yearMonth","slice","monthIndex","date","Date","format","Right","getColumnClassName","getHeatmapClassNames","momKeyValueMap","renderColumn","_data$yearMonth","hasValue","shouldShowDecimal","defaultValue","valueGetter","_data$column$id","EMPTY_ARRAY","useTableColumns","getAppStoreLink","app","appId","os","getDomainHref","domain","sortByMauLastValueDesc","apps","_a$mau$v","_a$mau","_b$mau$v","_b$mau","aLastValue","mau","bLastValue","mapData","mainTraffic","peerTraffics","industryTraffics","isPlaceholder","traffic","_mainTraffic$peers","_traffic$traffic$d$fi","_traffic$traffic","_traffic$traffic$v$in","_traffic$traffic2","d","findIndex","toString","valuesWithMomData","keyValueMap","momData","getMoMPercentageData","_momData$year","momValue","push","labelElement","labelColumnClassName","isLabelColumnSticky","peers","Domain","_ref3","industryTrafficsRaw","_ref4","_ref5","flatMap","_ref6","arr","indexOf","stringYearKeys","y","monthlyData","setMonthlyData","sortedData","changeSort","useTableSort","defaultSort","newMonthlyData","_monthlyDataRowSelect","FinancialsWidget","header","tableHead","hasStickyColumnWrapper","isTableFixed","onVisibilityChange","ticker","sector","industryGroup","industry","heatmapSector","heatmapSubSector","NoDataPlaceholder","companyName","Paragraph","WidgetAppSettingsSection","has","platform","selectedAppsArray","selectionOverrides","_app$appName","_selectionOverrides$a","appName","platformLabel","geoLabel","geo","_app$mau$d$findIndex","_app$mau","_app$mau$v$index","_app$mau2","join","Tag","Apps","domainApps","peerApps","industryApps","_domainApps$0$domain","_domainApps$flatMap","_peerApps$flatMap","_industryApps$flatMap","domainAppsYears","peerAppsYears","industryAppsYears","Set","Boolean","flat","getSelectedAppsArray","_ref7","_ref8","TICKER_HEADER_CONTAINER_CLASS_NAME","TrafficDomainSelect","domainItems","isInteractive","handleDomainSelect","_document$getElements","_element$getBoundingC","tickerHeaderContainer","getElementsByClassName","fvHeaderHeightInPx","body","getPropertyValue","element","getElementById","elementTopPosition","clientHeight","behavior","Select","contentClass","focusRing","onChange","TrafficHeader","domainElement","subSector","monthlyVisits","headerColumns","lastMonthVisits","prevMonthVisits","visitsChangePercentage","Math","abs","showPlusSign","TrafficDomainSection","_mainTraffic$traffic$","_mainTraffic$traffic","parsedTrafficData","registerIntersectionObservedElement","useIntersectionObserverContext","appsWithPeers","setIsInView","setHasBeenInView","trafficsWithPeers","some","unregister","TrafficComponent","useCachedLoaderData","parsedData","_trafficsWithPeers$fi","_trafficsWithPeers$fi2","mainDomain","trafficTickers","trafficJson","JSON","parse","_item$geo","_item$geo2","_item$os","_item$os2","_item$appName","mauJson","toLowerCase","getParsedDataFromInitial","tickerTrafficsWithPeers","trafficWithPeers","_trafficWithPeers$tic","_a$traffic$v","_a$traffic","_b$traffic$v","_b$traffic","getSortedTickerTrafficsWithPeers","_parsedData$companyNa","_document$getElementB","removeProperty","IntersectionObserverContextProvider","maxWidth","max","Traffic","FinancialsTableContextProvider","defaultSettings","cookieKey","IntersectionObserverContext","intersectionObservedElementsRef","intersectionObserverRef","IntersectionObserver","entries","entry","callback","isIntersecting","disconnect","elementId","observe","unobserve","Provider","defaultTooltipEventType","validateTooltipEventTypes","module","exports","it","obj","iterator","next","done","aCallable","anObject","call","toIntegerOrInfinity","getIteratorDirect","INVALID_SIZE","$RangeError","RangeError","$TypeError","TypeError","SetRecord","set","intSize","this","prototype","getIterator","numSize","record","fn","ITERATOR_INSTEAD_OF_RECORD","step","result","SetHelpers","iterate","add","aSet","clone","getSetRecord","iterateSet","iterateSimple","remove","other","O","otherRec","e","uncurryThis","SetPrototype","proto","iteratorClose","interruptible","getBuiltIn","createSetLike","error2","error","uncurryThisAccessor","keysIter","$","difference","real","forced","setMethodAcceptSetLike","fails","intersection","isDisjointFrom","isSubsetOf","isSupersetOf","symmetricDifference","union"],"sourceRoot":""}