{"version":3,"file":"futures.37bd99e3.js","mappings":"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","sources":["webpack://@finviz/website/./js/app/futures/components/BarChart.tsx","webpack://@finviz/website/./js/app/futures/actions/futuresActionCreators.ts","webpack://@finviz/website/./js/app/futures/components/ChartMenu.tsx","webpack://@finviz/website/./js/app/futures/components/Divider.tsx","webpack://@finviz/website/./js/app/futures/components/Labels.tsx","webpack://@finviz/website/./js/app/futures/components/Tile.tsx","webpack://@finviz/website/./js/app/futures/components/redesign/MapTile.tsx","webpack://@finviz/website/./js/app/futures/components/redesign/TileWithBorder.tsx","webpack://@finviz/website/./js/app/futures/components/Layout.tsx","webpack://@finviz/website/./js/app/futures/components/Menu.tsx","webpack://@finviz/website/./js/app/futures/components/MenuNew.tsx","webpack://@finviz/website/./js/app/futures/futures.tsx","webpack://@finviz/website/./js/app/futures/index.tsx","webpack://@finviz/website/./js/main/components/icon/svg.tsx"],"sourcesContent":["import classnames from 'classnames'\r\nimport * as d3 from 'd3'\r\nimport { CSSProperties, Component, MouseEvent } from 'react'\r\n\r\nimport { GradientDefinition } from '../../shared/gradients'\r\nimport { futuresDomains } from '../utils'\r\nimport { generateColorScale as gcs } from '../utils'\r\n\r\nvar generateColorScale = gcs.bind(null, futuresDomains)\r\n\r\ninterface Bar {\r\n label: string\r\n value: number\r\n isInactive?: boolean\r\n}\r\n\r\ninterface BarChartProps {\r\n width: number\r\n barHeight?: number\r\n period: string\r\n //height: number,\r\n //title: string,\r\n //date: string, // TODO\r\n data: Bar[]\r\n onClick?: (bar: Bar) => void\r\n gap: number\r\n gradient?: GradientDefinition\r\n alignHeaderToBars?: boolean\r\n isHorizontal?: boolean\r\n isWrapper?: boolean\r\n}\r\n\r\nclass BarChart extends Component {\r\n state = { hoveredGroup: null }\r\n\r\n static defaultProps = {\r\n gap: 0.5,\r\n }\r\n\r\n render() {\r\n var rows = this.props.data\r\n var labels = rows.map(function (d) {\r\n return d.label\r\n })\r\n\r\n var width = this.props.width,\r\n barHeight = this.props.barHeight || 12,\r\n height = (barHeight + this.props.gap * 2) * rows.length,\r\n leftWidth = 100\r\n\r\n var x = d3\r\n .scaleLinear()\r\n .domain([0, d3.max(rows, (d: Bar) => Math.abs(d.value))!])\r\n .range([0, width - leftWidth - 40])\r\n .nice(6)\r\n\r\n var xAxisTicks = x.ticks(6)\r\n\r\n var y = d3\r\n .scaleBand()\r\n .domain(labels)\r\n .range([0, (barHeight + 2 * this.props.gap) * labels.length])\r\n\r\n var colorScale = generateColorScale(this.props.period, this.props.gradient)\r\n\r\n // so React won't reorder our elements\r\n rows = rows.slice().sort(function (a, b) {\r\n if (a.label < b.label) {\r\n return -1\r\n }\r\n if (a.label > b.label) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n\r\n var header =\r\n // @ts-ignore\r\n {\r\n d: '1 Day',\r\n w: '1 Week',\r\n m: '1 Month',\r\n mtd: 'Month to date',\r\n q: '3 Month',\r\n hy: 'Half year',\r\n y: '1 Year',\r\n ytd: 'Year to Date',\r\n }[this.props.period] + ' Performance'\r\n\r\n return (\r\n \r\n \r\n {header}\r\n \r\n
\r\n {xAxisTicks.map((tick: any) => (\r\n \r\n
{tick}%
\r\n
\r\n ))}\r\n \r\n \r\n {rows.map((row) => {\r\n var large = x(Math.abs(row.value)) > 40\r\n var width = Math.round(x(Math.abs(row.value)))\r\n var style: CSSProperties = {\r\n position: 'absolute',\r\n top: y(row.label)! + this.props.gap,\r\n left: leftWidth,\r\n width: width,\r\n height: barHeight,\r\n ...(!row.isInactive && { background: colorScale(row.value) }),\r\n }\r\n return (\r\n \r\n \r\n {row.value > 0 ? '+' : ''}\r\n {row.value}\r\n \r\n
{row.label}
\r\n \r\n )\r\n })}\r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n\r\n _onClick = (row: Bar, e: MouseEvent) => {\r\n e.preventDefault()\r\n this.props.onClick?.(row)\r\n }\r\n}\r\n\r\nexport default BarChart\r\n","import { CancelablePromise, apiRequest, setCookieRequest } from '../../../main/services/api'\r\nimport { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport RowsStore from '../stores/rowsStore'\r\nimport { FuturesDatum } from '../types'\r\nimport { getCookie } from '../utils'\r\n\r\nvar cookieKey = 'finvizFuturesQuotesTimeframe'\r\n\r\nvar getFuturesUrl = function () {\r\n var timeframe = RowsStore.getTimeframe()\r\n return '/api/futures_all.ashx?timeframe=' + timeframe\r\n}\r\n\r\nfunction migrateOldTimeframe(timeframe: string) {\r\n switch (timeframe) {\r\n case 'm5':\r\n return 'i5'\r\n case 'h1':\r\n return 'h'\r\n case 'd1':\r\n return 'd'\r\n case 'w1':\r\n return 'w'\r\n case 'm1':\r\n return 'm'\r\n }\r\n\r\n return timeframe\r\n}\r\n\r\nlet _lastRequest: CancelablePromise | null = null\r\n\r\nconst actions = {\r\n init(rows: FuturesDatum[], type?: any) {\r\n var timeframe\r\n if (type === 'quotes') {\r\n timeframe = migrateOldTimeframe(getCookie(cookieKey)) || 'NO'\r\n }\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.INIT,\r\n rows,\r\n timeframe,\r\n })\r\n },\r\n\r\n async update(data: FuturesDatum[]) {\r\n if (data) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.UPDATE_DATA,\r\n tiles: data,\r\n })\r\n return\r\n }\r\n\r\n _lastRequest?.cancel?.()\r\n _lastRequest = apiRequest(getFuturesUrl())\r\n const resData = await _lastRequest\r\n if (resData) {\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.UPDATE_DATA,\r\n tiles: resData,\r\n })\r\n }\r\n },\r\n\r\n async changeTimeframe(timeframe: string, updateCookie = true) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.CHANGE_TIMEFRAME_STARTED,\r\n period: timeframe,\r\n })\r\n\r\n _lastRequest?.cancel?.()\r\n _lastRequest = apiRequest(getFuturesUrl())\r\n const data = await _lastRequest\r\n if (data) {\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.UPDATE_DATA,\r\n tiles: data,\r\n })\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.CHANGE_TIMEFRAME_COMPLETED,\r\n })\r\n }\r\n if (updateCookie) setCookieRequest(cookieKey, timeframe).catch(() => {})\r\n },\r\n}\r\n\r\nexport default actions\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { encodeQueryString } from '../../queryString'\r\nimport { ForexFuturesCryptoSettings } from '../../shared/components/ForexFuturesCryptoSettings'\r\nimport Sparkline from '../../shared/components/Sparkline'\r\nimport TilesStore from '../stores/tilesStore'\r\n\r\ninterface ChartMenuProps {\r\n activeGroup: string\r\n activeTile: string\r\n activeTimeframe: string\r\n activeRange?: string\r\n type: string\r\n showChartControls?: boolean\r\n isRedesignEnabled?: boolean\r\n}\r\n\r\nexport function ChartMenu({\r\n activeGroup,\r\n activeTile,\r\n activeTimeframe,\r\n activeRange,\r\n type,\r\n showChartControls = true,\r\n isRedesignEnabled,\r\n}: ChartMenuProps) {\r\n const isInteractiveActive = type === '1'\r\n const [tiles, setTiles] = React.useState(TilesStore.getTilesInGroup(activeGroup))\r\n\r\n React.useEffect(() => {\r\n const onStoreChange = () => setTiles(TilesStore.getTilesInGroup(activeGroup))\r\n\r\n TilesStore.addChangeListener(onStoreChange)\r\n\r\n return () => TilesStore.removeChangeListener(onStoreChange)\r\n }, [activeGroup])\r\n\r\n const interactiveUrl = FinvizSettings.hasUserPremium\r\n ? `/futures_charts.ashx?${encodeQueryString({\r\n t: activeTile,\r\n p: activeTimeframe,\r\n ty: 1,\r\n })}`\r\n : `/elite.ashx?${encodeQueryString({\r\n utm_source: 'finviz',\r\n utm_medium: 'banner',\r\n utm_campaign: 'futures-interactive-chart',\r\n })}`\r\n\r\n const getTileHref = (ticker: string) =>\r\n `/futures_charts.ashx?${encodeQueryString({\r\n t: ticker,\r\n p: activeTimeframe,\r\n ty: isRedesignEnabled && isInteractiveActive ? undefined : type,\r\n r: activeRange,\r\n })}`\r\n\r\n return (\r\n
\r\n {showChartControls && (\r\n \r\n )}\r\n
\r\n {tiles.map((tile) => (\r\n \r\n {tile.label}\r\n \r\n \r\n ))}\r\n
\r\n
\r\n )\r\n}\r\n","import { SVG, SVGProps } from '../../../main/components/icon/svg'\r\n\r\nexport function Divider({ width = 5, height = 6, ...props }: SVGProps) {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\n\r\ninterface LabelProps {\r\n groupLabel: string\r\n groupName: string\r\n rightAligned: boolean\r\n color: boolean\r\n}\r\n\r\nconst COLOR_MAP: Record = {\r\n indices: { text: 'text-gray-400', border: 'border-gray-400', background: 'bg-gray-400' },\r\n energy: { text: 'text-violet-400', border: 'border-violet-400', background: 'bg-violet-400' },\r\n bonds: { text: 'text-blue-400', border: 'border-blue-400', background: 'bg-blue-400' },\r\n softs: { text: 'text-teal-300', border: 'border-teal-300', background: 'bg-teal-300' },\r\n metals: { text: 'text-yellow-200', border: 'border-yellow-200', background: 'bg-yellow-200' },\r\n meats: { text: 'text-pink-400', border: 'border-pink-400', background: 'bg-pink-400' },\r\n grains: { text: 'text-orange-300', border: 'border-orange-300', background: 'bg-orange-300' },\r\n currencies: { text: 'text-purple-300', border: 'border-purple-300', background: 'bg-purple-300' },\r\n}\r\n\r\nexport function PlainLabel({ groupName, groupLabel, color }: LabelProps) {\r\n return (\r\n \r\n {groupLabel}\r\n \r\n )\r\n}\r\n\r\nexport function SideLabel({ groupName, groupLabel, rightAligned, color }: LabelProps) {\r\n return (\r\n \r\n {groupLabel}\r\n \r\n )\r\n}\r\n\r\nexport function LineLabel({ groupName, groupLabel }: LabelProps) {\r\n return (\r\n
\r\n {groupLabel}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport function LineWithEndingLabel({ groupName, groupLabel }: LabelProps) {\r\n return (\r\n
\r\n {groupLabel}\r\n
\r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nimport { Icon } from '../../../main/components/icon'\r\nimport * as hoverChart from '../../shared/hover-chart'\r\nimport TilesStore from '../stores/tilesStore'\r\nimport Sparkline from './CanvasSparkline'\r\n\r\ninterface MapCondensedTileProps {\r\n ticker: string\r\n showSparkline: boolean\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n colorScale: (d: number) => string\r\n}\r\n\r\nfunction getTileState(ticker: string, prevWidth = 0) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n width: prevWidth,\r\n }\r\n}\r\n\r\nexport class MapCondensedTile extends React.Component> {\r\n state = getTileState(this.props.ticker)\r\n\r\n resizeObserver?: ResizeObserver\r\n containerRef = React.createRef()\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n\r\n // Resize sparkline on window resize\r\n const container = this.containerRef.current\r\n if (container && this.state.sparkline) {\r\n this.setState({ width: container.getBoundingClientRect().width }, () => {\r\n this.resizeObserver = new ResizeObserver(\r\n throttle(([entry]: ResizeObserverEntry[]) => {\r\n this.setState({ width: entry.contentRect.width })\r\n }, 100)\r\n )\r\n this.resizeObserver.observe(container)\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n this.resizeObserver?.disconnect()\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getTileState(this.props.ticker, this.state.width))\r\n }\r\n\r\n render() {\r\n const { colorScale, children, showSparkline, hoverOffsetX, hoverOffsetY } = this.props\r\n var { ticker, width, label, last, prevClose, change, high, low, sparkline, sparklineDateChanges } = this.state\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2)\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n const backgroundColor = colorScale(change)\r\n const changeUSD = last - prevClose\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n if (showSparkline) {\r\n return (\r\n \r\n {children}\r\n
\r\n
\r\n
{label}
\r\n
\r\n {round(changeUSD, '+')}\r\n \r\n
\r\n
\r\n
\r\n
{round(last)}
\r\n
\r\n {format(change)} %\r\n
\r\n
\r\n
\r\n
\r\n {showSparkline && (\r\n \r\n )}\r\n
\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n
{label}
\r\n
{round(last)}
\r\n
\r\n
\r\n \r\n \r\n H\r\n \r\n {round(high)}\r\n
\r\n
\r\n {round(changeUSD, '+')}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n L\r\n \r\n {round(low)}\r\n
\r\n
\r\n {format(change)} %\r\n
\r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n","import classnames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nimport * as hoverChart from '../../../shared/hover-chart'\r\nimport TilesStore from '../../stores/tilesStore'\r\nimport Sparkline from '../CanvasSparkline'\r\n\r\ninterface MapTileProps {\r\n ticker: string\r\n showSparkline: boolean\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n colorScale: (d: number) => string\r\n}\r\n\r\nfunction getTileState(ticker: string, prevWidth = 0) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n width: prevWidth,\r\n }\r\n}\r\n\r\nexport class MapTile extends React.Component> {\r\n state = getTileState(this.props.ticker)\r\n\r\n resizeObserver?: ResizeObserver\r\n containerRef = React.createRef()\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n\r\n // Resize sparkline on window resize\r\n const container = this.containerRef.current\r\n if (container && this.state.sparkline) {\r\n this.setState({ width: container.getBoundingClientRect().width }, () => {\r\n this.resizeObserver = new ResizeObserver(\r\n throttle(([entry]: ResizeObserverEntry[]) => {\r\n this.setState({ width: entry.contentRect.width })\r\n }, 100)\r\n )\r\n this.resizeObserver.observe(container)\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n this.resizeObserver?.disconnect()\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getTileState(this.props.ticker, this.state.width))\r\n }\r\n\r\n render() {\r\n const { colorScale, children, showSparkline, hoverOffsetX, hoverOffsetY } = this.props\r\n var { ticker, width, label, last, prevClose, change, high, low, sparkline, sparklineDateChanges } = this.state\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n const backgroundColor = colorScale(change)\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n if (showSparkline) {\r\n return (\r\n \r\n {children}\r\n
\r\n
\r\n
{label}
\r\n
{round(last - prevClose, '+')}
\r\n
\r\n
\r\n
{round(last)}
\r\n
({format(change)})
\r\n
\r\n
\r\n
\r\n {showSparkline && (\r\n \r\n )}\r\n
\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n
{label}
\r\n
{round(last)}
\r\n \r\n {round(last - prevClose, '+')} ({format(change)})\r\n \r\n
\r\n \r\n \r\n H\r\n \r\n {round(high)}\r\n
\r\n \r\n \r\n L\r\n \r\n {round(low)}\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import classnames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nimport tailwindColors from '../../../../../../config/colors'\r\nimport * as hoverChart from '../../../shared/hover-chart'\r\nimport TilesStore from '../../stores/tilesStore'\r\nimport Sparkline from '../CanvasSparkline'\r\n\r\ninterface TileWithBorderProps {\r\n ticker: string\r\n showSparkline: boolean\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n colorScale: (d: number) => string\r\n}\r\n\r\nfunction getTileState(ticker: string, prevWidth = 0) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n width: prevWidth,\r\n }\r\n}\r\n\r\nexport class TileWithBorder extends React.Component> {\r\n state = getTileState(this.props.ticker)\r\n\r\n resizeObserver?: ResizeObserver\r\n containerRef = React.createRef()\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n\r\n // Resize sparkline on window resize\r\n const container = this.containerRef.current\r\n if (container && this.state.sparkline) {\r\n this.setState({ width: container.getBoundingClientRect().width }, () => {\r\n this.resizeObserver = new ResizeObserver(\r\n throttle(([entry]: ResizeObserverEntry[]) => {\r\n this.setState({ width: entry.contentRect.width })\r\n }, 100)\r\n )\r\n this.resizeObserver.observe(container)\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n this.resizeObserver?.disconnect()\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getTileState(this.props.ticker, this.state.width))\r\n }\r\n\r\n render() {\r\n const { colorScale, children, showSparkline, hoverOffsetX, hoverOffsetY } = this.props\r\n var { ticker, width, label, last, prevClose, change, high, low, sparkline, sparklineDateChanges } = this.state\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n const backgroundColor = colorScale(change)\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n if (showSparkline) {\r\n return (\r\n \r\n {children}\r\n
\r\n \r\n
\r\n
\r\n
{label}
\r\n = 0,\r\n 'text-red-500': last - prevClose < 0,\r\n })}\r\n >\r\n {round(last - prevClose, '+')}\r\n
\r\n
\r\n
\r\n
{round(last)}
\r\n = 0,\r\n 'text-red-500': change < 0,\r\n })}\r\n >\r\n ({format(change)})\r\n
\r\n
\r\n \r\n
\r\n {showSparkline && (\r\n \r\n )}\r\n
\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n
\r\n
\r\n
{label}
\r\n
{round(last)}
\r\n
\r\n
\r\n \r\n \r\n H\r\n \r\n \r\n {round(high)}\r\n \r\n
\r\n = 0,\r\n 'text-red-500': last - prevClose < 0,\r\n })}\r\n >\r\n {round(last - prevClose, '+')}\r\n
\r\n
\r\n
\r\n \r\n \r\n L\r\n \r\n \r\n {round(low)}\r\n \r\n
\r\n = 0,\r\n 'text-red-500': change < 0,\r\n })}\r\n >\r\n {format(change)}\r\n
\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { redGreenGradient } from '../../shared/gradients'\r\nimport TilesStore from '../stores/tilesStore'\r\nimport { FuturesTimeframe, LabelStyle, LayoutType, TileStyle } from '../types'\r\nimport { futuresDomains, generateColorScale, layout } from '../utils'\r\nimport { Divider } from './Divider'\r\nimport { LineLabel, LineWithEndingLabel, PlainLabel, SideLabel } from './Labels'\r\nimport { MapCondensedTile } from './Tile'\r\nimport { MapTile } from './redesign/MapTile'\r\nimport { TileWithBorder } from './redesign/TileWithBorder'\r\n\r\nconst COLS = 8\r\nconst colorScale = generateColorScale(futuresDomains, 'd', redGreenGradient)\r\n\r\ninterface NewLayoutWrapperProps {\r\n type: LayoutType\r\n tileStyle: TileStyle\r\n labelStyle: LabelStyle\r\n showSparkline: boolean\r\n activeTimeframe: string\r\n}\r\n\r\nfunction getTileComponent(tileStyle: TileStyle) {\r\n switch (tileStyle) {\r\n case TileStyle.Map:\r\n return MapTile\r\n case TileStyle.MapCondensed:\r\n return MapCondensedTile\r\n default:\r\n return TileWithBorder\r\n }\r\n}\r\n\r\nfunction getLabelComponent(labelStyle: LabelStyle) {\r\n switch (labelStyle) {\r\n case LabelStyle.Plain:\r\n case LabelStyle.PlainColor:\r\n return PlainLabel\r\n case LabelStyle.Side:\r\n case LabelStyle.SideColor:\r\n return SideLabel\r\n case LabelStyle.Line:\r\n return LineLabel\r\n case LabelStyle.LineWithEnding:\r\n return LineWithEndingLabel\r\n default:\r\n return () => null\r\n }\r\n}\r\n\r\nexport function Layout(props: NewLayoutWrapperProps) {\r\n switch (props.type) {\r\n case LayoutType.NewHorizontal:\r\n return \r\n case LayoutType.NewGroups:\r\n return \r\n default:\r\n return null\r\n }\r\n}\r\n\r\nfunction LayoutHorizontal(props: NewLayoutWrapperProps) {\r\n const TileComponent = getTileComponent(props.tileStyle)\r\n const LabelComponent = getLabelComponent(props.labelStyle)\r\n\r\n return (\r\n
\r\n {layout.map((row, ri) => {\r\n const groupName = TilesStore.getTilesGroup(row[0]).toLowerCase()\r\n const groupLabel = `${groupName[0].toUpperCase()}${groupName.substring(1, groupName.length)}`\r\n\r\n return (\r\n \r\n \r\n \r\n {row.map((ticker, ci) => {\r\n const isSmallGroup = row.length < COLS\r\n const showEndCaret = isSmallGroup && ci === row.length - 1\r\n\r\n return (\r\n COLS / 2 && ci < COLS / 2 ? 0 : -320}\r\n hoverOffsetY={ri < layout.length / 2 ? 105 : -275}\r\n >\r\n \r\n {showEndCaret && (\r\n \r\n )}\r\n \r\n )\r\n })}\r\n
\r\n \r\n )\r\n })}\r\n \r\n )\r\n}\r\n\r\nfunction LayoutGroups(props: NewLayoutWrapperProps) {\r\n const TileComponent = getTileComponent(props.tileStyle)\r\n const LabelComponent = getLabelComponent(props.labelStyle)\r\n\r\n return (\r\n \r\n {layout.map((row, ri) => {\r\n const groupName = TilesStore.getTilesGroup(row[0]).toLowerCase()\r\n const groupLabel = `${groupName[0].toUpperCase()}${groupName.substring(1, groupName.length)}`\r\n\r\n return (\r\n \r\n \r\n \r\n {row.map((ticker, ci) => (\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 { TIMEFRAME } from '../../../main/constants'\r\nimport { encodeQueryString } from '../../queryString'\r\nimport { PageType } from '../types'\r\nimport { groups } from '../utils'\r\n\r\ninterface MenuProps {\r\n company?: string\r\n activePage: PageType\r\n activeGroup?: string\r\n activeRange?: string\r\n showGroups?: boolean\r\n type?: string\r\n onGroupMouseEnter?: (group: string) => void\r\n onGroupMouseLeave?: () => void\r\n timeframes: {\r\n active: string\r\n link?: (timeframe: string) => string\r\n onClick: (timeframe: string, e: React.MouseEvent) => void\r\n timeframes: Array<{ key: string; title?: string; value: React.ReactNode }>\r\n }\r\n groupTimeframe?: string\r\n isDetailOpen?: boolean\r\n onTimeframeChange?: (timeframe: TIMEFRAME) => void\r\n onDateRangeChange?: (dateRange: string | undefined) => void\r\n}\r\n\r\nclass Menu extends React.Component {\r\n static defaultProps = {\r\n showGroups: true,\r\n onGroupMouseEnter: () => {},\r\n onGroupMouseLeave: () => {},\r\n }\r\n\r\n render() {\r\n var { activePage, activeGroup, showGroups, type, activeRange } = this.props\r\n var timeframesMenu = this.props.timeframes\r\n var groupTimeframe = this.props.groupTimeframe || 'd'\r\n\r\n return (\r\n
\r\n \r\n\r\n {showGroups && (\r\n
    \r\n
  • \r\n \r\n All\r\n \r\n
  • \r\n {groups.map((group) => (\r\n \r\n \r\n \r\n {group}\r\n \r\n \r\n ))}\r\n
\r\n )}\r\n\r\n
    \r\n {timeframesMenu.timeframes.map((timeframe) => (\r\n
  • \r\n \r\n {timeframe.value}\r\n \r\n
  • \r\n ))}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default Menu\r\n","import * as React from 'react'\r\n\r\nimport { Button } from '../../../main/components/button'\r\nimport { SpecificChartFunctionality, TIMEFRAME } from '../../../main/constants'\r\nimport { Instrument } from '../../../main/types'\r\nimport { encodeQueryString } from '../../queryString'\r\nimport { FuturesForexCryptoTimeframeBar } from '../../shared/components/FuturesForexCryptoTimeframeBar'\r\nimport { PageType } from '../types'\r\nimport { groups } from '../utils'\r\n\r\ninterface MenuProps {\r\n company?: string\r\n activePage: PageType\r\n activeGroup?: string\r\n activeRange?: string\r\n showGroups?: boolean\r\n type?: string\r\n onGroupMouseEnter?: (group: string) => void\r\n onGroupMouseLeave?: () => void\r\n timeframes: {\r\n active: string\r\n link?: (timeframe: string) => string\r\n onClick: (timeframe: string, e: React.MouseEvent) => void\r\n timeframes: Array<{ key: string; title?: string; value: React.ReactNode }>\r\n }\r\n groupTimeframe?: string\r\n isDetailOpen?: boolean\r\n onTimeframeChange?: (timeframe: TIMEFRAME) => void\r\n onDateRangeChange?: (dateRange: string | undefined) => void\r\n}\r\n\r\nexport function MenuNew({\r\n company = '',\r\n activePage,\r\n activeGroup = 'all',\r\n activeRange,\r\n showGroups = true,\r\n type,\r\n timeframes,\r\n groupTimeframe = 'd',\r\n isDetailOpen,\r\n onTimeframeChange,\r\n onDateRangeChange,\r\n ...props\r\n}: MenuProps) {\r\n const groupName = company ?? activeGroup.charAt(0).toUpperCase() + activeGroup.slice(1)\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n Performance\r\n \r\n \r\n
\r\n {showGroups && (\r\n
\r\n \r\n All\r\n \r\n {groups.map((group) => (\r\n props.onGroupMouseEnter?.(group.toUpperCase())}\r\n onMouseLeave={props.onGroupMouseLeave}\r\n >\r\n {group}\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n {activePage === PageType.Charts ? (\r\n \r\n ) : (\r\n timeframes.timeframes.map((timeframe) => (\r\n ) => timeframes.onClick?.(timeframe.key, ev)}\r\n title={timeframe.title}\r\n >\r\n {timeframe.value}\r\n \r\n ))\r\n )}\r\n
\r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport PropTypes from 'prop-types'\r\nimport { Component } from 'react'\r\nimport ReactDOM from 'react-dom/client'\r\n\r\nimport { TIMEFRAME } from '../../main/constants'\r\nimport { apiRequest } from '../../main/services/api'\r\nimport { decodeQueryString, encodeQueryString } from '../queryString'\r\nimport { redGreenGradient } from '../shared/gradients'\r\nimport * as hoverChart from '../shared/hover-chart'\r\nimport FuturesActionCreators from './actions/futuresActionCreators'\r\nimport BarChart from './components/BarChart'\r\nimport CanvasSparkline from './components/CanvasSparkline'\r\nimport { ChartMenu } from './components/ChartMenu'\r\nimport { Layout as NewLayout } from './components/Layout'\r\nimport Menu from './components/Menu'\r\nimport { MenuNew } from './components/MenuNew'\r\nimport RowsStore from './stores/rowsStore'\r\nimport TilesStore from './stores/tilesStore'\r\nimport { FuturesTimeframe, LabelStyle, LayoutType, PageType, TileStyle } from './types'\r\nimport { FuturesDatum, FuturesRow } from './types'\r\nimport { futuresDomains } from './utils'\r\nimport { generateColorScale } from './utils'\r\n\r\nvar colorScale = generateColorScale(futuresDomains, 'd')\r\n\r\nconst SMALL_BREAKPOINT_WIDTH = 1280\r\n\r\nvar bigLayout = [\r\n ['YM', 'ES', 'NQ', 'ER2', 'NKD', 'EX', 'DY', 'VX'],\r\n ['CL', 'QA', 'RB', 'HO', 'NG', 'ZK', 'ZB', 'ZN'],\r\n ['CC', 'CT', 'JO', 'KC', 'LB', 'SB', 'ZF', 'ZT'],\r\n ['GC', 'SI', 'PL', 'HG', 'PA', 'LC', 'FC', 'LH'],\r\n ['ZS', 'ZM', 'ZL', 'ZC', 'ZW', 'ZR', 'ZO', 'RS'],\r\n ['DX', '6E', '6J', '6B', '6C', '6S', '6A', '6N'],\r\n]\r\n\r\nvar bigLayoutFirstInGroup = [\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 1, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 1, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n]\r\n\r\nvar smallLayout = [\r\n ['YM', 'ES', 'NQ', 'ER2', 'ZB', 'ZN'],\r\n ['NKD', 'EX', 'DY', 'VX', 'ZF', 'ZT'],\r\n ['CL', 'QA', 'RB', 'HO', 'NG', 'ZK'],\r\n ['CC', 'CT', 'JO', 'KC', 'LB', 'SB'],\r\n ['ZS', 'ZM', 'ZL', 'ZC', 'GC', 'SI'],\r\n ['ZW', 'ZR', 'ZO', 'RS', 'PL', 'HG'],\r\n ['DX', '6E', '6J', '6B', 'PA', 'LH'],\r\n ['6C', '6S', '6A', '6N', 'LC', 'FC'],\r\n]\r\n\r\nfunction getAdvancedTileState(ticker: string) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n }\r\n}\r\n\r\ninterface AdvancedTileProps {\r\n width: number\r\n ticker: string\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n}\r\n\r\nclass AdvancedTile extends Component {\r\n static propTypes = {\r\n ticker: PropTypes.string,\r\n }\r\n\r\n state = getAdvancedTileState(this.props.ticker)\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getAdvancedTileState(this.props.ticker))\r\n }\r\n\r\n render() {\r\n var { ticker, label, last, prevClose, change, sparkline, sparklineDateChanges, group } = this.state\r\n var { hoverOffsetX, hoverOffsetY } = this.props\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n return (\r\n \r\n
\r\n {label}\r\n {round(last - prevClose, '+')}\r\n
\r\n
\r\n {round(last)}\r\n {format(change)}\r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction getSimpleTileState(ticker: string) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n }\r\n}\r\n\r\ninterface SimpleTileProps {\r\n width: number\r\n ticker: string\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n firstInGroup: unknown\r\n lastInGroup: unknown\r\n}\r\n\r\nclass SimpleTile extends Component {\r\n static propTypes = {\r\n ticker: PropTypes.string,\r\n }\r\n\r\n state = getSimpleTileState(this.props.ticker)\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getSimpleTileState(this.props.ticker))\r\n }\r\n\r\n render() {\r\n var { ticker, label, last, prevClose, change, high, low, group } = this.state\r\n var { hoverOffsetX, hoverOffsetY, firstInGroup, lastInGroup } = this.props\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n var highlightStyle = {\r\n color: '#fbdb19',\r\n }\r\n\r\n var opacityChange = Math.min(Math.abs(change), 1.3)\r\n var textOpacity = 0.5 + (0.2 / 1.3) * opacityChange\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n return (\r\n \r\n \r\n {firstInGroup ? group.toUpperCase() : ''}\r\n \r\n
\r\n
{label}
\r\n
{round(last)}
\r\n\r\n
\r\n
\r\n H {round(high)}\r\n
\r\n
\r\n L {round(low)}\r\n
\r\n
\r\n\r\n
\r\n {round(last - prevClose, '+')}\r\n
({format(change)})\r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nclass AdvancedLayout extends Component {\r\n render() {\r\n var w = Math.min(document.documentElement.clientWidth, window.innerWidth || 0)\r\n\r\n var layout = w >= SMALL_BREAKPOINT_WIDTH ? bigLayout : smallLayout\r\n\r\n var tileWidth = 156\r\n if (w < 1304 && w >= SMALL_BREAKPOINT_WIDTH) {\r\n tileWidth = 150\r\n }\r\n\r\n var cols = layout[0].length\r\n var rows = layout.length\r\n return (\r\n
\r\n {layout.map((row, ri) => (\r\n
\r\n {row.map((ticker, ci) => (\r\n \r\n ))}\r\n
\r\n
\r\n ))}\r\n
\r\n )\r\n }\r\n}\r\n\r\nclass SimpleLayout extends Component {\r\n render() {\r\n var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)\r\n\r\n var layout = bigLayout\r\n var firstInGroup = bigLayoutFirstInGroup\r\n\r\n var tileWidth = w >= SMALL_BREAKPOINT_WIDTH ? 136 : 120\r\n\r\n var cols = layout[0].length\r\n var rows = layout.length\r\n return (\r\n
\r\n {layout.map((row, ri) => (\r\n
\r\n {row.map((ticker, ci) => (\r\n \r\n ))}\r\n
\r\n
\r\n ))}\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction getFuturesState() {\r\n return {\r\n activeTimeframe: RowsStore.getTimeframe(),\r\n rows: RowsStore.getRows(),\r\n }\r\n}\r\n\r\nclass Futures extends Component {\r\n state = getFuturesState()\r\n\r\n componentDidMount() {\r\n RowsStore.addChangeListener(this._onChange)\r\n }\r\n\r\n componentWillUnmount() {\r\n RowsStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getFuturesState())\r\n }\r\n\r\n render() {\r\n const { activeTimeframe, rows } = this.state\r\n\r\n var timeframes = {\r\n onClick: (timeframe: string, e: React.MouseEvent) => {\r\n e.preventDefault()\r\n FuturesActionCreators.changeTimeframe(timeframe)\r\n },\r\n active: activeTimeframe,\r\n timeframes: [\r\n { key: FuturesTimeframe.None, value: Ø },\r\n { key: FuturesTimeframe.Minute5, value: '5M' },\r\n { key: FuturesTimeframe.Hourly, value: 'H' },\r\n { key: FuturesTimeframe.Daily, value: 'D' },\r\n { key: FuturesTimeframe.Weekly, value: 'W' },\r\n { key: FuturesTimeframe.Monthly, value: 'M' },\r\n ],\r\n }\r\n\r\n if (FinvizSettings.hasRedesignEnabled) {\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n return (\r\n
\r\n \r\n\r\n {activeTimeframe === 'NO' ? : }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n _onBarClick = (bar: { label: string }) => {\r\n var ticker = TilesStore.getTilesList().filter(function (tile) {\r\n return tile.label === bar.label\r\n })[0].ticker\r\n window.open(`/futures_charts.ashx?t=${ticker}&p=d`)\r\n }\r\n}\r\n\r\ninterface FuturesPerformanceProps {\r\n rows: FuturesRow[]\r\n}\r\n\r\nclass FuturesPerformance extends Component {\r\n declare refreshInterval: number\r\n\r\n state = {\r\n rows: this.props.rows,\r\n hoveredGroup: null,\r\n }\r\n\r\n componentDidMount() {\r\n this.refreshInterval = window.setInterval(async () => {\r\n const data = await apiRequest(`/api/futures_perf.ashx${window.location.search}`)\r\n if (data) {\r\n this.setState({ rows: data })\r\n }\r\n }, 30 * 1000)\r\n }\r\n\r\n componentWillUnmount() {\r\n clearInterval(this.refreshInterval)\r\n }\r\n\r\n render() {\r\n var view = (decodeQueryString()['v'] || '11').substring(1, 2)\r\n\r\n var kv = { d: 1, w: 2, m: 3, mtd: 8, q: 4, hy: 5, y: 6, ytd: 7 }\r\n var vk: Record = {}\r\n Object.keys(kv).forEach((key: any) => {\r\n vk[kv[key as keyof typeof kv].toString()] = key\r\n })\r\n var timeframes = {\r\n link: (key: string) => '/futures_performance.ashx?v=1' + kv[key as keyof typeof kv],\r\n onClick: () => {},\r\n active: view && vk[view],\r\n timeframes: [\r\n { key: 'd', value: 'D', title: 'Day' },\r\n { key: 'w', value: 'W', title: 'Week' },\r\n { key: 'm', value: 'M', title: 'Month' },\r\n { key: 'mtd', value: 'MTD', title: 'Month to Date' },\r\n { key: 'q', value: 'Q', title: 'Quarter' },\r\n { key: 'hy', value: 'HY', title: 'Half Year' },\r\n { key: 'y', value: 'Y', title: 'Year' },\r\n { key: 'ytd', value: 'YTD', title: 'Year To Date' },\r\n ],\r\n }\r\n\r\n var hoveredGroup = this.state.hoveredGroup\r\n var rows = this.state.rows\r\n .map(function (row) {\r\n return {\r\n label: row.label,\r\n value: row.perf,\r\n isInactive: hoveredGroup !== null && hoveredGroup !== row.group,\r\n }\r\n })\r\n .sort(function (a, b) {\r\n return b.value - a.value\r\n })\r\n\r\n const MenuComponent = FinvizSettings.hasRedesignEnabled ? MenuNew : Menu\r\n\r\n return (\r\n
\r\n {\r\n this.setState({ hoveredGroup: group })\r\n }}\r\n onGroupMouseLeave={() => {\r\n this.setState({ hoveredGroup: null })\r\n }}\r\n />\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n _onBarClick = (bar: { label: string }) => {\r\n var ticker = this.state.rows.filter(function (tile) {\r\n return tile.label === bar.label\r\n })[0].ticker\r\n window.open(`/futures_charts.ashx?t=${ticker}&p=d`)\r\n }\r\n}\r\n\r\ninterface ChartsState {\r\n timeframe: TIMEFRAME\r\n dateRange: string\r\n ticker: string\r\n type: string\r\n isGroupOpen: boolean\r\n activeGroup: string\r\n}\r\n\r\nfunction getChartsState(override: Partial = {}) {\r\n var queryString = decodeQueryString()\r\n var timeframe = queryString['p'] as TIMEFRAME\r\n if (!Object.values(TIMEFRAME).includes(timeframe)) {\r\n timeframe = TIMEFRAME.d\r\n }\r\n var ticker = (queryString['t'] || 'ALL').toUpperCase()\r\n var type = queryString['ty']\r\n\r\n var isGroupOpen = ticker === 'ALL' || ticker.length > 3\r\n if (!isGroupOpen && !TilesStore.getTilesGroup(ticker)) {\r\n ticker = 'ALL'\r\n isGroupOpen = true\r\n }\r\n var activeGroup = (isGroupOpen ? ticker : TilesStore.getTilesGroup(ticker)).toLowerCase()\r\n\r\n return {\r\n timeframe,\r\n dateRange: queryString['r'] || undefined,\r\n ticker,\r\n type,\r\n isGroupOpen,\r\n activeGroup,\r\n ...override,\r\n }\r\n}\r\n\r\nexport class FuturesCharts extends Component> {\r\n state = getChartsState()\r\n\r\n _onTimeframeChange = async (timeframe: TIMEFRAME) => {\r\n FuturesActionCreators.changeTimeframe(timeframe, false)\r\n this.setState(getChartsState({ timeframe }))\r\n }\r\n\r\n render() {\r\n const { timeframe, ticker, type, isGroupOpen, activeGroup, dateRange } = this.state\r\n\r\n var timeframes = {\r\n link: (key: string) => `/futures_charts.ashx?${encodeQueryString({ t: ticker, p: key, ty: type, r: dateRange })}`,\r\n onClick: () => {},\r\n active: timeframe,\r\n timeframes: [\r\n { key: FuturesTimeframe.Minute5, value: '5M' },\r\n { key: FuturesTimeframe.Hourly, value: 'H' },\r\n { key: FuturesTimeframe.Daily, value: 'D' },\r\n { key: FuturesTimeframe.Weekly, value: 'W' },\r\n { key: FuturesTimeframe.Monthly, value: 'M' },\r\n ],\r\n }\r\n\r\n const isRedesignEnabled = FinvizSettings.hasRedesignEnabled\r\n const MenuComponent = isRedesignEnabled ? MenuNew : Menu\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n this.setState((prevState) => getChartsState({ dateRange, timeframe: prevState.timeframe }))\r\n }\r\n />\r\n
\r\n \r\n {!isGroupOpen && (\r\n \r\n )}\r\n \r\n )\r\n }\r\n}\r\nwindow['FinvizInitFutures'] = function (groups: FuturesDatum[]) {\r\n FuturesActionCreators.init(groups, 'quotes')\r\n const rootEl = document.getElementById('futures')\r\n const root = ReactDOM.createRoot(rootEl!)\r\n root.render()\r\n\r\n setInterval(FuturesActionCreators.update, 30 * 1000)\r\n}\r\n\r\nwindow['FinvizInitFuturesPerformance'] = function (rows: FuturesRow[]) {\r\n const rootEl = document.getElementById('futures')\r\n const root = ReactDOM.createRoot(rootEl!)\r\n root.render()\r\n}\r\n\r\n// @ts-ignore\r\nwindow.RowsStore = RowsStore\r\n// @ts-ignore\r\nwindow.TilesStore = TilesStore\r\n","import { CHART_ELEMENT_ID } from 'finviz-charts/app/constants/common'\r\nimport { Suspense } from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport ReactDOMClient from 'react-dom/client'\r\nimport { BrowserRouter } from 'react-router-dom'\r\n\r\nimport { NotificationWrapper } from '../../main/components/notification'\r\nimport { SpecificChartFunctionality } from '../../main/constants'\r\nimport { ResizableChartLayoutWithGlobalState } from '../shared/components/ResizableChartLayoutWithGlobalState'\r\nimport { ready } from '../shared/ready'\r\nimport { parseInitData } from '../shared/utils'\r\nimport FuturesActionCreators from './actions/futuresActionCreators'\r\nimport { FuturesCharts } from './futures'\r\nimport { FuturesDatum, FuturesTile } from './types'\r\n\r\ninterface InitDataType {\r\n groups: FuturesDatum[]\r\n tiles: Record\r\n}\r\n\r\nfunction getFuturesInitData() {\r\n const initData = parseInitData('futures-init-data')!\r\n\r\n initData.groups.forEach(function (group: any) {\r\n for (var i = 0; i < group.contracts.length; i++) {\r\n group.contracts[i] = initData.tiles[group.contracts[i].ticker]\r\n }\r\n })\r\n\r\n return initData.groups\r\n}\r\n\r\nwindow['FinvizInitFuturesCharts'] = function () {\r\n const futuresEl = document.getElementById('futures')\r\n const dataEl = document.getElementById('futures-init-data')\r\n if (!futuresEl || !dataEl) return\r\n\r\n try {\r\n const initData = getFuturesInitData()\r\n FuturesActionCreators.init(initData)\r\n } catch {\r\n return\r\n }\r\n\r\n const root = ReactDOMClient.createRoot(futuresEl)\r\n root.render(\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nready(function () {\r\n const futuresEl = document.getElementById('futures')\r\n const chartEl = document.getElementById(CHART_ELEMENT_ID)\r\n const dataEl = document.getElementById('futures-init-data')\r\n\r\n if (!futuresEl || !chartEl || !dataEl || !window.globalChartConfig) return\r\n\r\n try {\r\n const initData = getFuturesInitData()\r\n FuturesActionCreators.init(initData)\r\n } catch {\r\n return\r\n }\r\n\r\n const root = ReactDOMClient.createRoot(chartEl)\r\n root.render(\r\n \r\n \r\n {ReactDOM.createPortal(, futuresEl)}\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\nexport type SVGProps = React.SVGProps\r\n\r\nexport function SVG({ className, width = 16, height = width, ...props }: SVGProps) {\r\n return (\r\n \r\n )\r\n}\r\n"],"names":["generateColorScale","gcs","bind","futuresDomains","BarChart","Component","constructor","arguments","_defineProperty","hoveredGroup","row","e","_this$props$onClick","_this$props","preventDefault","this","props","onClick","call","render","rows","data","labels","map","d","label","width","barHeight","height","gap","length","leftWidth","x","d3","domain","Math","abs","value","range","nice","xAxisTicks","ticks","y","colorScale","period","gradient","slice","sort","a","b","header","w","m","mtd","q","hy","ytd","_jsxs","className","classnames","FinvizSettings","hasRedesignEnabled","isHorizontal","isWrapper","style","children","_jsx","alignHeaderToBars","marginLeft","position","tick","top","left","round","large","isInactive","background","_onClick","color","cookieKey","getFuturesUrl","RowsStore","getTimeframe","_lastRequest","init","type","timeframe","migrateOldTimeframe","getCookie","AppDispatcher","handleViewAction","ActionTypes","INIT","update","_lastRequest2","_lastRequest2$cancel","UPDATE_DATA","tiles","cancel","apiRequest","resData","handleServerAction","changeTimeframe","_lastRequest3","_lastRequest3$cancel","updateCookie","undefined","CHANGE_TIMEFRAME_STARTED","CHANGE_TIMEFRAME_COMPLETED","setCookieRequest","catch","ChartMenu","_ref","activeGroup","activeTile","activeTimeframe","activeRange","showChartControls","isRedesignEnabled","isInteractiveActive","setTiles","React","TilesStore","getTilesInGroup","onStoreChange","addChangeListener","removeChangeListener","interactiveUrl","hasUserPremium","encodeQueryString","t","p","ty","utm_source","utm_medium","utm_campaign","href","r","ForexFuturesCryptoSettings","isPremium","tile","ticker","Sparkline","sparkline","Divider","SVG","viewBox","COLOR_MAP","indices","text","border","energy","bonds","softs","metals","meats","grains","currencies","PlainLabel","groupName","groupLabel","SideLabel","_ref2","rightAligned","includes","writingMode","LineLabel","_ref3","LineWithEndingLabel","_ref4","getTileState","prevWidth","getTile","group","getTilesGroup","toLowerCase","MapCondensedTile","setState","state","componentDidMount","_onChange","container","containerRef","current","getBoundingClientRect","resizeObserver","ResizeObserver","throttle","entry","contentRect","observe","componentWillUnmount","_this$resizeObserver","disconnect","_FinvizSettings$hover","_FinvizSettings$hover2","showSparkline","hoverOffsetX","hoverOffsetY","last","prevClose","change","high","low","sparklineDateChanges","format","n","toFixed","places","plusSign","Number","highlightHigh","highlightLow","backgroundColor","changeUSD","boxover","hoverChart","hoverCharts","futures","dateRange","img","ref","Icon","name","ceil","dateChanges","changeDomain","changeOpacity","shadow","MapTile","textShadow","TileWithBorder","lineColor","tailwindColors","textColor","COLS","redGreenGradient","getTileComponent","tileStyle","TileStyle","Map","MapCondensed","getLabelComponent","labelStyle","LabelStyle","Plain","PlainColor","Side","SideColor","Line","LineWithEnding","Layout","LayoutType","NewHorizontal","LayoutHorizontal","NewGroups","LayoutGroups","TileComponent","LabelComponent","layout","ri","toUpperCase","substring","gridColumn","gridTemplateColumns","ci","showEndCaret","FuturesTimeframe","None","Menu","activePage","showGroups","timeframesMenu","timeframes","groupTimeframe","PageType","Quotes","Performance","Charts","groups","_this$props$onGroupMo","onMouseEnter","onGroupMouseEnter","onMouseLeave","onGroupMouseLeave","_timeframesMenu$link","active","key","link","title","MenuNew","company","isDetailOpen","onTimeframeChange","onDateRangeChange","charAt","Button","as","theme","_props$onGroupMouseEn","FuturesForexCryptoTimeframeBar","isDetail","specificChartFunctionality","SpecificChartFunctionality","futuresPage","instrument","Instrument","Futures","_timeframes$link","padding","ev","_timeframes$onClick","SMALL_BREAKPOINT_WIDTH","bigLayout","bigLayoutFirstInGroup","smallLayout","getAdvancedTileState","AdvancedTile","CanvasSparkline","getSimpleTileState","PropTypes","SimpleTile","_FinvizSettings$hover3","_FinvizSettings$hover4","firstInGroup","lastInGroup","highlightStyle","textOpacity","min","AdvancedLayout","document","documentElement","clientWidth","window","innerWidth","tileWidth","cols","margin","SimpleLayout","max","getFuturesState","getRows","bar","getTilesList","filter","open","FuturesActionCreators","Minute5","Hourly","Daily","Weekly","Monthly","NewLayout","_onBarClick","FuturesPerformance","refreshInterval","setInterval","async","location","search","clearInterval","view","decodeQueryString","kv","vk","Object","keys","forEach","toString","perf","MenuComponent","getChartsState","override","queryString","values","TIMEFRAME","isGroupOpen","FuturesCharts","_TilesStore$getTile","_onTimeframeChange","prevState","getFuturesInitData","initData","parseInitData","i","contracts","rootEl","getElementById","ReactDOM","futuresEl","dataEl","ReactDOMClient","BrowserRouter","ready","chartEl","CHART_ELEMENT_ID","globalChartConfig","NotificationWrapper","Suspense","fallback","ResizableChartLayoutWithGlobalState","config","xmlns"],"sourceRoot":""}