{"version":3,"file":"futures.bc17642d.js","mappings":"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,EAAMhC,OACtCkQ,EAAWM,KAAKf,EAASzP,OAAO,GAChC,IAEJsQ,EAAWZ,aACX,MAEF,KAAKlU,EAAAA,EAAYG,WACf6T,EAASlT,EAAOkB,MAChB8S,EAAWZ,aACX,MAEF,KAAKlU,EAAAA,EAAYI,YACf,IAAI4B,EAAQlB,EAAOkB,MACnBgS,EAAShS,EACT8S,EAAWZ,aAGjB,IAEA,S,qFC9BO,IAAK9H,EAAQ,SAARA,GAAQ,OAARA,EAAQ,gBAARA,EAAQ,0BAARA,EAAQ,gBAARA,CAAQ,MAMRR,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,UAAhBA,EAAgB,aAAhBA,EAAgB,WAAhBA,EAAgB,UAAhBA,EAAgB,WAAhBA,EAAgB,YAAhBA,CAAgB,MAShBf,EAAU,SAAVA,GAAU,OAAVA,EAAU,UAAVA,EAAU,oBAAVA,EAAU,uBAAVA,CAAU,MAMVR,EAAU,SAAVA,GAAU,OAAVA,EAAU,YAAVA,EAAU,cAAVA,EAAU,yBAAVA,EAAU,YAAVA,EAAU,uBAAVA,EAAU,YAAVA,EAAU,gCAAVA,CAAU,MAUVL,EAAS,SAATA,GAAS,OAATA,EAAS,UAATA,EAAS,4BAATA,EAAS,wBAATA,CAAS,K,wJClEjBH,EAAmB,CACrBoL,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAGT5c,EAAiB,CACnBqB,EAAG,IACH2B,EAAG,IACHC,EAAG,EACHC,IAAK,EACLC,EAAG,GACHC,GAAI,GACJb,EAAG,GACHc,IAAK,IAGHwZ,EAAe,CACjBxb,EAAG,EACH2B,EAAG,IACHC,EAAG,EACHC,IAAK,EACLC,EAAG,GACHC,GAAI,GACJb,EAAG,GACHc,IAAK,IAGHyZ,EAAgB,CAClBzb,EAAG,EACH2B,EAAG,IACHC,EAAG,EACHC,IAAK,EACLC,EAAG,GACHC,GAAI,GACJb,EAAG,GACHc,IAAK,IAGHxD,EAAqB,SAAUkd,EAAiCC,GAA+C,IAA7Bta,EAAQtC,UAAAuB,OAAA,QAAA2F,IAAAlH,UAAA,GAAAA,UAAA,GAAGmR,EAC/F,IAA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","sources":["webpack://@finviz/website/./js/app/futures/components/BarChart.tsx","webpack://@finviz/website/./js/app/futures/components/CanvasSparkline.tsx","webpack://@finviz/website/./js/app/futures/constants/constants.ts","webpack://@finviz/website/./js/app/futures/dispatcher/appDispatcher.ts","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/app/futures/stores/rowsStore.ts","webpack://@finviz/website/./js/app/futures/stores/store.ts","webpack://@finviz/website/./js/app/futures/stores/tilesStore.ts","webpack://@finviz/website/./js/app/futures/types.ts","webpack://@finviz/website/./js/app/futures/utils.tsx","webpack://@finviz/website/./js/app/shared/components/ForexFuturesCryptoSettings.tsx","webpack://@finviz/website/./js/app/shared/components/FuturesForexCryptoTimeframeBar.tsx","webpack://@finviz/website/./js/app/shared/components/ResizableChartLayoutWithGlobalState.tsx","webpack://@finviz/website/./js/app/shared/components/Sparkline.tsx","webpack://@finviz/website/./js/app/shared/hover-chart.ts","webpack://@finviz/website/./js/app/shared/retinafy.ts","webpack://@finviz/website/./js/main/components/icon/svg.tsx","webpack://@finviz/website/../node_modules/flux/index.js","webpack://@finviz/website/../node_modules/flux/lib/Dispatcher.js","webpack://@finviz/website/../node_modules/flux/lib/invariant.js","webpack://@finviz/website/../node_modules/keymirror/index.js","webpack://@finviz/website/../node_modules/prop-types/factoryWithThrowingShims.js","webpack://@finviz/website/../node_modules/prop-types/index.js","webpack://@finviz/website/../node_modules/prop-types/lib/ReactPropTypesSecret.js"],"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 * as d3 from 'd3'\r\nimport { Component, createRef } from 'react'\r\n\r\nimport { isFirefoxDesktop } from '../../shared/isMobile'\r\nimport { retinafy } from '../../shared/retinafy'\r\n\r\nvar xCache: Record = {}\r\n\r\ninterface CanvasSparklineProps {\r\n className?: string\r\n data: number[]\r\n dateChanges: any\r\n width: number\r\n height: number\r\n changeDomain: number\r\n change: number\r\n changeOpacity?: boolean\r\n shadow?: boolean\r\n lineColor?: string\r\n textColor?: string\r\n}\r\n\r\nclass CanvasSparkline extends Component {\r\n static defaultProps = {\r\n changeOpacity: true,\r\n }\r\n\r\n canvas = createRef()\r\n declare canvasContext: CanvasRenderingContext2D\r\n\r\n shouldComponentUpdate(nextProps: CanvasSparklineProps) {\r\n // eslint-disable-next-line eqeqeq\r\n return nextProps.data != this.props.data || nextProps.width !== this.props.width\r\n }\r\n\r\n componentDidMount() {\r\n this.canvasContext = this.canvas.current!.getContext(\r\n '2d',\r\n isFirefoxDesktop() ? { willReadFrequently: true } : undefined\r\n )!\r\n this._renderCanvas()\r\n }\r\n\r\n componentDidUpdate() {\r\n this._renderCanvas()\r\n }\r\n\r\n render() {\r\n var { width, height } = this.props\r\n var className = 'sparkline ' + this.props.className\r\n return \r\n }\r\n\r\n _renderCanvas = () => {\r\n var { data, dateChanges, width, height, changeOpacity, shadow, lineColor, textColor } = this.props\r\n\r\n retinafy(this.canvas.current, this.canvasContext, this.props.width, this.props.height)\r\n\r\n // TODO check ci sa zobrazuje posledny den\r\n var xCacheKey = width + '|' + data.length\r\n var x = xCache[xCacheKey]\r\n if (!x) {\r\n x = d3\r\n .scaleLinear()\r\n .range([-1, width + 1])\r\n .domain([0, data.length])\r\n xCache[xCacheKey] = x\r\n }\r\n\r\n var y = d3\r\n .scaleLinear()\r\n .range([height - 8, 0])\r\n .domain(d3.extent(data, (d) => d) as [number, number])\r\n\r\n var changeDomain = this.props.changeDomain\r\n var opacityChange = Math.min(Math.abs(this.props.change), changeDomain)\r\n var textOpacity = changeOpacity ? (0.5 + (0.2 / changeDomain) * opacityChange).toFixed(3) : 1\r\n\r\n this.canvasContext.clearRect(0, 0, width, height)\r\n\r\n if (shadow) {\r\n this.canvasContext.translate(0.5, 0.5)\r\n\r\n this.canvasContext.strokeStyle = 'rgba(34, 38, 47, 0.8)'\r\n this.canvasContext.beginPath()\r\n for (let i = 0; i < data.length; i++) {\r\n this.canvasContext.lineTo(x(i), y(data[i]))\r\n }\r\n this.canvasContext.stroke()\r\n\r\n this.canvasContext.fillStyle = 'rgba(34, 38, 47, 0.8)'\r\n this.canvasContext.textAlign = 'center'\r\n this.canvasContext.font = '7px Lato'\r\n Object.keys(dateChanges).forEach((key) => {\r\n var xPos = x(key)\r\n if (xPos < 8) {\r\n return\r\n }\r\n this.canvasContext.fillText(dateChanges[key], xPos, height - 1)\r\n })\r\n\r\n this.canvasContext.translate(-0.5, -0.5)\r\n }\r\n\r\n this.canvasContext.strokeStyle = lineColor ?? `rgba(255, 255, 255, ${textOpacity})`\r\n this.canvasContext.beginPath()\r\n for (let i = 0; i < data.length; i++) {\r\n this.canvasContext.lineTo(x(i), y(data[i]))\r\n }\r\n this.canvasContext.stroke()\r\n\r\n this.canvasContext.fillStyle = textColor ?? `rgba(255, 255, 255, ${textOpacity})`\r\n this.canvasContext.textAlign = 'center'\r\n this.canvasContext.font = '7px Lato'\r\n Object.keys(dateChanges).forEach((key) => {\r\n var xPos = x(key)\r\n if (xPos < 8) {\r\n return\r\n }\r\n this.canvasContext.fillText(dateChanges[key], xPos, height - 1)\r\n })\r\n }\r\n}\r\n\r\nexport default CanvasSparkline\r\n","import keyMirror from 'keymirror'\r\n\r\nexport const ActionTypes = keyMirror({\r\n INIT: null,\r\n INIT_TILES: null,\r\n\r\n UPDATE_DATA: null,\r\n\r\n CHANGE_TIMEFRAME_STARTED: null,\r\n CHANGE_TIMEFRAME_COMPLETED: null,\r\n CHANGE_TIMEFRAME_FAILED: null,\r\n})\r\n\r\nexport const PayloadSources = keyMirror({\r\n SERVER_ACTION: null,\r\n VIEW_ACTION: null,\r\n})\r\n","import { Dispatcher } from 'flux'\r\n\r\nimport { PayloadSources } from '../constants/constants'\r\n\r\nclass AppDispatcher extends Dispatcher {\r\n handleServerAction(action: any) {\r\n var payload = {\r\n source: PayloadSources.SERVER_ACTION,\r\n action: action,\r\n }\r\n //console.log(action, payload);\r\n this.dispatch(payload)\r\n }\r\n\r\n handleViewAction(action: any) {\r\n var payload = {\r\n source: PayloadSources.VIEW_ACTION,\r\n action: action,\r\n }\r\n //console.log(action, payload);\r\n this.dispatch(payload)\r\n }\r\n}\r\n\r\nconst dispatcher = new AppDispatcher()\r\nexport default dispatcher\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 { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport { Contract, FuturesDatum, FuturesTile } from '../types'\r\nimport Store from './store'\r\n\r\nfunction getRows(tiles: Record) {\r\n return Object.values(tiles)\r\n .map(function (tile) {\r\n return {\r\n label: tile.label,\r\n value: tile.change,\r\n }\r\n })\r\n .sort(function (a, b) {\r\n return b.value - a.value\r\n })\r\n}\r\n\r\nvar _timeframe = 'i5'\r\nvar _rows: ReturnType = []\r\nclass RowsStore extends Store {\r\n getTimeframe() {\r\n return _timeframe\r\n }\r\n\r\n getRows() {\r\n return _rows\r\n }\r\n}\r\nvar rowsStore = new RowsStore()\r\n\r\n// @ts-ignore\r\nrowsStore.dispatchToken = AppDispatcher.register(function (payload) {\r\n var action = payload.action\r\n\r\n switch (action.type) {\r\n case ActionTypes.INIT:\r\n var _tiles: Record = {}\r\n action.rows.forEach((group: FuturesDatum) => {\r\n group.contracts.forEach((contract: Contract) => {\r\n _tiles[contract.ticker] = contract\r\n })\r\n })\r\n\r\n _rows = getRows(_tiles)\r\n if (action.timeframe) {\r\n _timeframe = action.timeframe\r\n }\r\n rowsStore.emitChange()\r\n break\r\n\r\n case ActionTypes.CHANGE_TIMEFRAME_STARTED:\r\n _timeframe = action.period\r\n rowsStore.emitChange()\r\n break\r\n\r\n case ActionTypes.UPDATE_DATA:\r\n _rows = getRows(action.tiles)\r\n rowsStore.emitChange()\r\n break\r\n }\r\n})\r\n\r\nexport default rowsStore\r\n","import { EventEmitter } from 'events'\r\n\r\nclass Store extends EventEmitter {\r\n static CHANGE_EVENT = 'change'\r\n\r\n emitChange() {\r\n this.emit(Store.CHANGE_EVENT)\r\n }\r\n\r\n addChangeListener(callback: (...args: any[]) => void) {\r\n this.on(Store.CHANGE_EVENT, callback)\r\n }\r\n\r\n removeChangeListener(callback: (...args: any[]) => void) {\r\n this.removeListener(Store.CHANGE_EVENT, callback)\r\n }\r\n}\r\n\r\nexport default Store\r\n","import { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport { Contract, FuturesDatum, FuturesTile } from '../types'\r\nimport Store from './store'\r\n\r\nvar _tilesGroups: Record = {}\r\nvar _tiles: Record = {}\r\nvar _tileOrder: string[] = []\r\nclass TilesStore extends Store {\r\n getTiles() {\r\n return _tiles\r\n }\r\n\r\n getTilesList() {\r\n return Object.keys(_tiles)\r\n .map(function (key) {\r\n return _tiles[key]\r\n })\r\n .sort((a, b) => _tileOrder.indexOf(a.ticker) - _tileOrder.indexOf(b.ticker))\r\n }\r\n\r\n getTile(ticker: string) {\r\n return _tiles[ticker]\r\n }\r\n\r\n getTilesGroup(ticker: string) {\r\n return _tilesGroups[ticker]\r\n }\r\n\r\n getTilesInGroup(group: string) {\r\n var g = group.toUpperCase()\r\n return this.getTilesList().filter((tile) => _tilesGroups[tile.ticker] === g)\r\n }\r\n}\r\nvar tilesStore = new TilesStore()\r\ntilesStore.setMaxListeners(50)\r\n\r\n// @ts-ignore\r\ntilesStore.dispatchToken = AppDispatcher.register(function (payload) {\r\n var action = payload.action\r\n\r\n switch (action.type) {\r\n case ActionTypes.INIT:\r\n var groups = action.rows\r\n groups.forEach((group: FuturesDatum) => {\r\n group.contracts.forEach((contract: Contract) => {\r\n _tiles[contract.ticker] = contract\r\n _tilesGroups[contract.ticker] = group.ticker\r\n _tileOrder.push(contract.ticker)\r\n })\r\n })\r\n tilesStore.emitChange()\r\n break\r\n\r\n case ActionTypes.INIT_TILES:\r\n _tiles = action.tiles\r\n tilesStore.emitChange()\r\n break\r\n\r\n case ActionTypes.UPDATE_DATA:\r\n var tiles = action.tiles\r\n _tiles = tiles\r\n tilesStore.emitChange()\r\n break\r\n }\r\n})\r\n\r\nexport default tilesStore\r\n","export interface Contract {\r\n label: string\r\n ticker: string\r\n last: number\r\n change: number\r\n prevClose: number\r\n high: number\r\n low: number\r\n sparkline: number[]\r\n sparklineDateChanges: Record\r\n}\r\n\r\nexport interface FuturesDatum {\r\n ticker: string\r\n label: string\r\n contracts: Contract[]\r\n}\r\n\r\nexport interface FuturesTile {\r\n change: number\r\n high: number\r\n label: string\r\n last: number\r\n low: number\r\n prevClose: number\r\n sparkline: number[]\r\n sparklineDateChanges: Record\r\n ticker: string\r\n}\r\n\r\nexport interface FuturesRow {\r\n ticker: string\r\n label: string\r\n group: string\r\n perf: number\r\n}\r\n\r\nexport enum PageType {\r\n Quotes = 'quotes',\r\n Performance = 'performance',\r\n Charts = 'charts',\r\n}\r\n\r\nexport enum FuturesTimeframe {\r\n None = 'NO',\r\n Minute5 = 'i5',\r\n Hourly = 'h',\r\n Daily = 'd',\r\n Weekly = 'w',\r\n Monthly = 'm',\r\n}\r\n\r\nexport enum LayoutType {\r\n Old = 'old',\r\n NewHorizontal = 'new',\r\n NewGroups = 'new_groups',\r\n}\r\n\r\nexport enum LabelStyle {\r\n None = 'none',\r\n Plain = 'plain',\r\n PlainColor = 'plain_color',\r\n Side = 'side',\r\n SideColor = 'side_color',\r\n Line = 'line',\r\n LineWithEnding = 'lineWithEnding',\r\n}\r\n\r\nexport enum TileStyle {\r\n Map = 'map',\r\n MapCondensed = 'mapCondensed',\r\n BorderTile = 'borderTile',\r\n}\r\n","import * as d3 from 'd3'\r\n\r\nvar redGreenGradient = {\r\n colors: [\r\n '#fd0001',\r\n '#fd0101',\r\n '#fc0101',\r\n '#fa0101',\r\n '#f90103',\r\n '#f70203',\r\n '#f60203',\r\n '#f40204',\r\n '#f20304',\r\n '#f10304',\r\n '#ef0404',\r\n '#ee0405',\r\n '#ec0405',\r\n '#ea0505',\r\n '#e80505',\r\n '#e70506',\r\n '#e50606',\r\n '#e30706',\r\n '#e20706',\r\n '#e00807',\r\n '#df0708',\r\n '#dd0808',\r\n '#db0808',\r\n '#d90809',\r\n '#d80909',\r\n '#d60909',\r\n '#d40a09',\r\n '#d30a0a',\r\n '#d10a0a',\r\n '#cf0a0a',\r\n '#ce0b0b',\r\n '#cc0b0b',\r\n '#cb0c0b',\r\n '#c90b0c',\r\n '#c70c0c',\r\n '#c60c0c',\r\n '#c40c0d',\r\n '#c20d0d',\r\n '#c10e0e',\r\n '#bf0e0e',\r\n '#be0e0e',\r\n '#bc0f0f',\r\n '#ba0f0f',\r\n '#b90f10',\r\n '#b71010',\r\n '#b51010',\r\n '#b41010',\r\n '#b21111',\r\n '#b11111',\r\n '#af1111',\r\n '#ad1112',\r\n '#ab1212',\r\n '#aa1212',\r\n '#a81313',\r\n '#a61313',\r\n '#a51313',\r\n '#a31413',\r\n '#a21414',\r\n '#a01514',\r\n '#9e1414',\r\n '#9d1515',\r\n '#9b1616',\r\n '#9a1616',\r\n '#981616',\r\n '#961716',\r\n '#951717',\r\n '#931717',\r\n '#911818',\r\n '#8f1818',\r\n '#8e1818',\r\n '#8d1919',\r\n '#8b1919',\r\n '#8a1a1a',\r\n '#881a19',\r\n '#861b1a',\r\n '#841b1b',\r\n '#831b1b',\r\n '#811c1b',\r\n '#801c1b',\r\n '#7e1c1c',\r\n '#7c1d1c',\r\n '#7a1d1d',\r\n '#791d1d',\r\n '#781d1e',\r\n '#761e1e',\r\n '#741f1e',\r\n '#721f1e',\r\n '#711f1f',\r\n '#6f1f1f',\r\n '#6e1f20',\r\n '#6c1f20',\r\n '#6a2020',\r\n '#682020',\r\n '#682221',\r\n '#662222',\r\n '#652222',\r\n '#622323',\r\n '#612223',\r\n '#602323',\r\n '#5e2323',\r\n '#5c2424',\r\n '#5a2425',\r\n '#582424',\r\n '#572525',\r\n '#552525',\r\n '#542626',\r\n '#522627',\r\n '#502626',\r\n '#4e2627',\r\n '#4d2727',\r\n '#4b2728',\r\n '#4a2828',\r\n '#482828',\r\n '#462929',\r\n '#452929',\r\n '#432929',\r\n '#422a29',\r\n '#40292a',\r\n '#3f2a2a',\r\n '#3d2b2b',\r\n '#3b2b2b',\r\n '#3a2b2c',\r\n '#372c2c',\r\n '#362c2c',\r\n '#352d2c',\r\n '#332d2d',\r\n '#312d2e',\r\n '#302e2e',\r\n '#2f2f2f',\r\n '#2e312f',\r\n '#2f322e',\r\n '#2e332e',\r\n '#2e342d',\r\n '#2d372d',\r\n '#2c372c',\r\n '#2d392c',\r\n '#2c3a2b',\r\n '#2b3b2c',\r\n '#2b3d2c',\r\n '#2b3e2b',\r\n '#2a3f2a',\r\n '#2a412a',\r\n '#29432a',\r\n '#294429',\r\n '#294529',\r\n '#284728',\r\n '#284828',\r\n '#284a27',\r\n '#284b27',\r\n '#274d27',\r\n '#264e27',\r\n '#265026',\r\n '#265126',\r\n '#265326',\r\n '#255425',\r\n '#245625',\r\n '#245725',\r\n '#245825',\r\n '#245a24',\r\n '#245b24',\r\n '#245d24',\r\n '#235e23',\r\n '#236023',\r\n '#226123',\r\n '#226322',\r\n '#226421',\r\n '#216621',\r\n '#216721',\r\n '#216821',\r\n '#206920',\r\n '#1f6b20',\r\n '#1f6d1f',\r\n '#1f6f1f',\r\n '#1e701f',\r\n '#1e711e',\r\n '#1d721e',\r\n '#1d741e',\r\n '#1e751e',\r\n '#1d771e',\r\n '#1d781d',\r\n '#1d7a1d',\r\n '#1c7c1c',\r\n '#1c7d1c',\r\n '#1b7e1c',\r\n '#1b801b',\r\n '#1a811b',\r\n '#1a821b',\r\n '#1a841a',\r\n '#1a851b',\r\n '#198719',\r\n '#198819',\r\n '#188919',\r\n '#188b18',\r\n '#188d18',\r\n '#178e18',\r\n '#168f17',\r\n '#169117',\r\n '#179217',\r\n '#169316',\r\n '#159416',\r\n '#159616',\r\n '#159815',\r\n '#159914',\r\n '#149b14',\r\n '#139c14',\r\n '#139e13',\r\n '#129f13',\r\n '#12a013',\r\n '#12a213',\r\n '#12a312',\r\n '#11a411',\r\n '#10a611',\r\n '#10a711',\r\n '#10a911',\r\n '#10ab11',\r\n '#0fac11',\r\n '#0fae10',\r\n '#0faf10',\r\n '#0fb00f',\r\n '#0eb20f',\r\n '#0eb30e',\r\n '#0eb40e',\r\n '#0db60e',\r\n '#0cb70d',\r\n '#0cb90d',\r\n '#0cbb0c',\r\n '#0bbc0d',\r\n '#0bbe0c',\r\n '#0bbf0c',\r\n '#0ac00b',\r\n '#0ac10b',\r\n '#0ac30a',\r\n '#0ac40a',\r\n '#09c609',\r\n '#09c709',\r\n '#09c809',\r\n '#08ca08',\r\n '#07cb08',\r\n '#07cd08',\r\n '#07cf08',\r\n '#06d008',\r\n '#06d107',\r\n '#06d306',\r\n '#05d406',\r\n '#04d505',\r\n '#04d605',\r\n '#04d805',\r\n '#04d904',\r\n '#03da04',\r\n '#03dc03',\r\n '#03dd04',\r\n '#02df03',\r\n '#02e002',\r\n '#01e202',\r\n '#01e302',\r\n '#00e402',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\n\r\nvar futuresDomains = {\r\n d: 1.5,\r\n w: 2.5,\r\n m: 5,\r\n mtd: 5,\r\n q: 10,\r\n hy: 25,\r\n y: 30,\r\n ytd: 30,\r\n}\r\n\r\nvar forexDomains = {\r\n d: 1,\r\n w: 2.5,\r\n m: 5,\r\n mtd: 5,\r\n q: 10,\r\n hy: 10,\r\n y: 10,\r\n ytd: 10,\r\n}\r\n\r\nvar cryptoDomains = {\r\n d: 5, // TODO refine\r\n w: 2.5,\r\n m: 5,\r\n mtd: 5,\r\n q: 10,\r\n hy: 10,\r\n y: 10,\r\n ytd: 10,\r\n}\r\n\r\nvar generateColorScale = function (domains: Record, domainId: string, gradient = redGreenGradient) {\r\n var domain = {\r\n min: -domains[domainId],\r\n max: +domains[domainId],\r\n }\r\n\r\n var linearScale = d3\r\n .scaleLinear()\r\n .domain([domain.min, domain.max])\r\n .range([0, gradient.colors.length - 1])\r\n\r\n return function (value: number) {\r\n if (typeof value === 'undefined' || value === null) {\r\n return gradient.nullColor\r\n }\r\n\r\n if (value > domain.max) value = domain.max\r\n if (value < domain.min) value = domain.min\r\n\r\n var i = Math.round(linearScale(value))\r\n return gradient.colors[i]\r\n }\r\n}\r\n\r\nvar getCookie = function (name: string) {\r\n var re = new RegExp('(?:(?:^|.*;\\\\s*)' + name + '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$')\r\n return document.cookie.replace(re, '$1')\r\n}\r\n\r\nexport const layout = [\r\n ['YM', 'ES', 'NQ', 'ER2', 'NKD', 'EX', 'DY', 'VX'],\r\n ['CL', 'QA', 'RB', 'HO', 'NG', 'ZK'],\r\n ['ZB', 'ZN'],\r\n ['CC', 'CT', 'JO', 'KC', 'LB', 'SB'],\r\n ['ZF', 'ZT'],\r\n ['GC', 'SI', 'PL', 'HG', 'PA'],\r\n ['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\nexport const groups = ['Indices', 'Energy', 'Bonds', 'Softs', 'Metals', 'Meats', 'Grains', 'Currencies'] as const\r\n\r\nexport { generateColorScale, futuresDomains, forexDomains, cryptoDomains, getCookie }\r\n","import { ChartSettingsButton } from 'finviz-charts/app/controllers/chart-controls/settings-button'\r\n\r\nimport { Icon } from '../../../main/components/icon'\r\nimport { withSuspense } from '../../../main/services/async-modules-utils'\r\nimport { useChartLayoutGlobalModelAsync } from '../../charts-lib'\r\n\r\ninterface Props {\r\n isPremium: boolean\r\n}\r\n\r\nfunction ForexFuturesCryptoSettingsRaw({ isPremium }: Props) {\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n\r\n if (!chartLayoutModel) return null\r\n\r\n return (\r\n }\r\n model={chartLayoutModel}\r\n />\r\n )\r\n}\r\n\r\n// charts bundle may not be fetched and therefore withSuspense is undefined but on those pages components in this file are not used at all\r\nexport const ForexFuturesCryptoSettings = withSuspense?.(ForexFuturesCryptoSettingsRaw)\r\n","import * as React from 'react'\r\nimport { useLocation, useNavigate, useSearchParams } from 'react-router-dom'\r\n\r\nimport {\r\n CUSTOM_DATE_RANGE,\r\n CustomDateRange,\r\n TimeframeBar,\r\n daterangeUtm,\r\n generatePathForTimeframeDateRange,\r\n getDateRangeGroupsWithHref,\r\n getDefaultDateRangeAnchorDate,\r\n getTimeframeFromDateRange,\r\n timeframeUtm,\r\n useCustomDateRangeDialog,\r\n useFavoriteTimeframes,\r\n} from '../../../main/components/timeframe-bar'\r\nimport { SpecificChartFunctionality, TIMEFRAME } from '../../../main/constants'\r\nimport { useTrackPageView } from '../../../main/hooks/use-track-pageview'\r\nimport { Instrument } from '../../../main/types'\r\nimport { StockDetailTimeframeBar, getTimeframeGroupsWithHref } from '../../charts-lib'\r\nimport { encodeQueryString } from '../../queryString'\r\n\r\nconst IMAGE_SELECTOR = '.charts-gal'\r\n\r\nfunction updateUrlString(urlString: string, query: Record) {\r\n const url = new URL(urlString)\r\n\r\n Object.keys(query).forEach((key: keyof typeof query) => {\r\n const value = query[key]\r\n if (value === undefined) {\r\n url.searchParams.delete(key)\r\n } else {\r\n url.searchParams.set(key, value)\r\n }\r\n })\r\n\r\n return url.toString()\r\n}\r\n\r\nfunction updateImageSrc(image: HTMLImageElement, query: Record) {\r\n image.src = updateUrlString(image.src, query)\r\n\r\n if (image.srcset) {\r\n image.srcset = image.srcset\r\n .split(', ')\r\n .map((dyna) => {\r\n const [url, rule] = dyna.trim().split(' ')\r\n return `${updateUrlString(url.trim(), query)} ${rule}`\r\n })\r\n .join(', ')\r\n }\r\n}\r\n\r\nfunction updateLinkhref(linkElement: HTMLAnchorElement | null, query: Record) {\r\n if (!linkElement) return\r\n\r\n linkElement.href = updateUrlString(linkElement.href, query)\r\n}\r\n\r\nfunction getPageTitle(isDetail?: boolean, pageType?: string, ticker?: string, timeframe?: string) {\r\n return [pageType, ticker, isDetail ? 'Chart' : 'Charts', timeframe].filter(Boolean).join(' ')\r\n}\r\n\r\nexport function FuturesForexCryptoTimeframeBar({\r\n isDetail = false,\r\n title,\r\n group,\r\n specificChartFunctionality,\r\n instrument,\r\n onTimeframeChange,\r\n onDateRangeChange,\r\n}: {\r\n isDetail?: boolean\r\n title: string\r\n group?: string\r\n instrument: Instrument\r\n specificChartFunctionality: SpecificChartFunctionality\r\n onTimeframeChange?: (value: TIMEFRAME) => void\r\n onDateRangeChange?: (value: string | undefined) => void\r\n}) {\r\n useTrackPageView({ trackAutomatically: !isDetail })\r\n const isPremium = true // Force show all timeframes for all users\r\n const navigate = useNavigate()\r\n const location = useLocation()\r\n const [searchParams] = useSearchParams()\r\n const query = React.useMemo(() => Object.fromEntries(searchParams) as { p: string; r?: string }, [searchParams])\r\n const { favoriteTimeframes, toggleFavoriteTimeframe } = useFavoriteTimeframes()\r\n const dateRange = query.r ?? undefined\r\n const { timeFrameGroups, dateRangeGroupsWithHref } = React.useMemo(() => {\r\n const timeFrameGroups = getTimeframeGroupsWithHref({\r\n isPremium,\r\n generatePath: (timeFrame) =>\r\n generatePathForTimeframeDateRange({\r\n isPremium,\r\n pathname: location.pathname,\r\n timeframe: timeFrame.value,\r\n dateRange: null,\r\n utmCampaign: timeframeUtm[specificChartFunctionality],\r\n }),\r\n })\r\n const dateRangeGroupsWithHref = getDateRangeGroupsWithHref({\r\n isPremium,\r\n customRange: dateRange,\r\n isCustomAvailable: true,\r\n instrument,\r\n generatePath: (dateRange) =>\r\n generatePathForTimeframeDateRange({\r\n isPremium,\r\n pathname: window.location.pathname,\r\n timeframe: dateRange.timeframe!,\r\n dateRange: dateRange.value,\r\n utmCampaign: daterangeUtm[specificChartFunctionality],\r\n }),\r\n })\r\n\r\n return { timeFrameGroups, dateRangeGroupsWithHref }\r\n }, [isPremium, location.pathname, dateRange, instrument, specificChartFunctionality])\r\n\r\n const { onDialogSubmit, customDateRangeDialogState, handleDateRangeSelect } = useCustomDateRangeDialog({\r\n instrument,\r\n anchorDate: getDefaultDateRangeAnchorDate(),\r\n shouldReloadOnNavigate: false,\r\n pathGenerator: ({ dateRange, timeframe }) => ({\r\n pathname: window.location.pathname,\r\n search: new URLSearchParams({ ...query, p: timeframe, r: dateRange ?? '' }).toString(),\r\n }),\r\n })\r\n\r\n const handleTimeframeDateRangeChange = ({\r\n timeframe,\r\n dateRange,\r\n }: {\r\n timeframe: TIMEFRAME\r\n dateRange: string | undefined\r\n }) => {\r\n document.querySelectorAll(IMAGE_SELECTOR).forEach((image) => {\r\n updateImageSrc(image, { tf: timeframe, r: dateRange })\r\n updateLinkhref(image.closest('a'), { p: timeframe, r: dateRange })\r\n })\r\n onTimeframeChange?.(timeframe)\r\n onDateRangeChange?.(dateRange)\r\n }\r\n\r\n if (isDetail) {\r\n return (\r\n {\r\n document.title = getPageTitle(isDetail, title, group, timeframe.labelPageTitle ?? timeframe.label)\r\n onTimeframeChange?.(timeframe.value)\r\n }}\r\n onDateRangeSelect={(option) => {\r\n if (option && option.value !== CUSTOM_DATE_RANGE) {\r\n document.title = getPageTitle(isDetail, title, group, 'custom date range')\r\n }\r\n onDateRangeChange?.(option.value)\r\n }}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n toggleFavoriteTimeframe(timeframe.value)}\r\n selectedTimeframe={query.p ?? TIMEFRAME.d}\r\n timeFrameGroups={timeFrameGroups}\r\n onTimeframeSelect={(option) => {\r\n if (option.value === 'intraday') {\r\n // intraday option is only available for free users, and it redirects them to elite page\r\n return\r\n }\r\n document.title = getPageTitle(isDetail, title, group, option.labelPageTitle ?? option.label)\r\n navigate(`${location.pathname}?${encodeQueryString({ ...query, p: option.value })}`)\r\n handleTimeframeDateRangeChange({ timeframe: option.value, dateRange: undefined })\r\n }}\r\n selectedDateRange={query['r'] ?? null}\r\n dateRangeGroups={dateRangeGroupsWithHref}\r\n onDateRangeSelect={(option) => {\r\n handleDateRangeSelect(option, ({ timeframe, value: dateRange }) => {\r\n document.title = getPageTitle(isDetail, title, group, option.label)\r\n handleTimeframeDateRangeChange({ timeframe, dateRange })\r\n })\r\n }}\r\n onCustomDateRangeClick={() => {\r\n if (isPremium) customDateRangeDialogState.show()\r\n }}\r\n />\r\n {\r\n const value = dateRange ?? ''\r\n const timeframe = getTimeframeFromDateRange({\r\n dateRange: value,\r\n instrument: Instrument.Stock,\r\n anchorDate: getDefaultDateRangeAnchorDate(),\r\n isPremium: isPremium,\r\n })\r\n handleDateRangeSelect({ value, timeframe }, ({ timeframe, value }) => {\r\n document.title = getPageTitle(isDetail, title, group, 'custom date range')\r\n handleTimeframeDateRangeChange({ timeframe, dateRange: value || undefined })\r\n onDialogSubmit({ value, timeframe })\r\n })\r\n }}\r\n />\r\n \r\n )\r\n}\r\n","import { CHART_ELEMENT_ID, SpecificChartFunctionality } from 'finviz-charts/app/constants/common'\r\nimport { ChartLayoutWithGlobalState } from 'finviz-charts/app/lib-export'\r\n\r\nimport { getChartLayoutSizeConfig, useChartLayoutWidthWatch } from '../../quote/hooks/use-chart-layout-width-watch'\r\nimport { getInitChartConfig } from '../getInitChartConfig'\r\n\r\ninterface ResizableChartLayoutWithGlobalStateProps {\r\n specificChartFunctionality: SpecificChartFunctionality\r\n}\r\n\r\nexport const ResizableChartLayoutWithGlobalState = ({\r\n specificChartFunctionality,\r\n}: ResizableChartLayoutWithGlobalStateProps) => {\r\n useChartLayoutWidthWatch()\r\n const chartEl = document.getElementById(CHART_ELEMENT_ID)\r\n const chartConfig = getInitChartConfig()\r\n\r\n if (!chartConfig.specificChartFunctionality) {\r\n chartConfig.specificChartFunctionality = specificChartFunctionality\r\n }\r\n\r\n return (\r\n chartEl && (\r\n \r\n )\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as d3 from 'd3'\r\nimport PropTypes from 'prop-types'\r\nimport { Component } from 'react'\r\n\r\ninterface SparklineProps {\r\n className?: string\r\n data: number[]\r\n width: number\r\n height: number\r\n}\r\n\r\nclass Sparkline extends Component {\r\n static propTypes = {\r\n width: PropTypes.number.isRequired,\r\n height: PropTypes.number.isRequired,\r\n data: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n }\r\n\r\n shouldComponentUpdate(nextProps: SparklineProps) {\r\n // eslint-disable-next-line eqeqeq\r\n return nextProps.data != this.props.data\r\n }\r\n\r\n render() {\r\n var data = this.props.data\r\n var x = d3.scaleLinear().range([0, this.props.width]).domain([0, data.length])\r\n\r\n var y = d3\r\n .scaleLinear()\r\n .range([this.props.height - 4, 0])\r\n .domain(d3.extent(data, (d) => d) as [number, number])\r\n\r\n var line = d3\r\n .line()\r\n .curve(d3.curveBasis)\r\n .x((d, i) => x(i))\r\n .y((d) => y(d))\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Sparkline\r\n","import { HTMLAttributeReferrerPolicy } from 'react'\r\n\r\nimport { encodeQueryString } from '../queryString'\r\n\r\nconst DEFAULT_OVERLAYS =\r\n '&o[0][ot]=sma&o[0][op]=50&o[0][oc]=FF8F33C6&o[1][ot]=sma&o[1][op]=200&o[1][oc]=DCB3326D&o[2][ot]=patterns&o[2][op]=&o[2][oc]=000'\r\n\r\nexport function getHoverChartUrl(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange = FinvizSettings.hoverCharts?.stock?.dateRange\r\n): string {\r\n const theme = FinvizSettings.hasDarkTheme ? 'd' : undefined\r\n const overlays = FinvizSettings.hasUserPremium && FinvizSettings.hoverCharts?.stock?.patterns ? DEFAULT_OVERLAYS : ''\r\n const query = encodeQueryString({\r\n cs: 'm',\r\n t: ticker,\r\n tf: timeframe ?? 'd',\r\n ct: 'candle_stick',\r\n r: dateRange,\r\n tm: theme,\r\n })\r\n\r\n let imgUrl = `${FinvizSettings.nodeChartsDomain}/chart.ashx?${query}${overlays}`\r\n\r\n if (escaped) {\r\n // \"Escaping\" [ and ] because of how boxover.js works\r\n imgUrl = imgUrl.replace(/\\[/g, '[[').replace(/]/g, ']]')\r\n }\r\n return imgUrl\r\n}\r\n\r\nexport function getHoverChartDimensions() {\r\n switch (FinvizSettings.hoverCharts?.stock?.timeframe) {\r\n case 'i3':\r\n case 'i15':\r\n return { width: 584, height: 180 }\r\n case 'i5':\r\n return { width: 376, height: 180 }\r\n case 'd':\r\n if (FinvizSettings.hoverCharts?.stock?.patterns) return { width: 464, height: 230 }\r\n return { width: 324, height: 180 }\r\n default:\r\n return { width: 324, height: 180 }\r\n }\r\n}\r\n\r\nexport function getReferrerPolicy(): HTMLAttributeReferrerPolicy {\r\n return 'no-referrer-when-downgrade'\r\n}\r\n\r\nexport function getHoverChartImg(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange?: string\r\n) {\r\n const chartSize = getHoverChartDimensions()\r\n const referrerPolicy = getReferrerPolicy()\r\n const url = getHoverChartUrl(ticker, escaped, timeframe, dateRange)\r\n const srcSet = getSrcSet(url)\r\n const srcsetString = srcSet?.length ? ` srcset='${srcSet}'` : ''\r\n\r\n return {\r\n img: ``,\r\n ...chartSize,\r\n }\r\n}\r\n\r\nexport function getSrcSet(url: string) {\r\n // You must keep a space after , for refresh to work\r\n return `${url} 1x, ${url}&sf=2 2x`\r\n}\r\n","export function getScaleRatio() {\r\n return window.devicePixelRatio ?? 1\r\n}\r\n\r\nexport function retinafy(\r\n canvas: HTMLCanvasElement | undefined | null,\r\n context: CanvasRenderingContext2D | undefined,\r\n width: number,\r\n height: number\r\n) {\r\n if (!canvas || !context) return\r\n\r\n const ratio = getScaleRatio()\r\n\r\n canvas.width = width * ratio\r\n canvas.height = height * ratio\r\n canvas.style.width = width + 'px'\r\n canvas.style.height = height + 'px'\r\n context.scale(ratio, ratio)\r\n\r\n return ratio\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","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher')\n","/*\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * @typechecks\n */\n\n\"use strict\";\n\nvar invariant = require('./invariant');\n\nvar _lastID = 1;\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n *\n * case 'city-update':\n * FlightPriceStore.price =\n * FlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\n function Dispatcher() {\n this.$Dispatcher_callbacks = {};\n this.$Dispatcher_isPending = {};\n this.$Dispatcher_isHandled = {};\n this.$Dispatcher_isDispatching = false;\n this.$Dispatcher_pendingPayload = null;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n *\n * @param {function} callback\n * @return {string}\n */\n Dispatcher.prototype.register=function(callback) {\n var id = _prefix + _lastID++;\n this.$Dispatcher_callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n *\n * @param {string} id\n */\n Dispatcher.prototype.unregister=function(id) {\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.unregister(...): `%s` does not map to a registered callback.',\n id\n );\n delete this.$Dispatcher_callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n *\n * @param {array} ids\n */\n Dispatcher.prototype.waitFor=function(ids) {\n invariant(\n this.$Dispatcher_isDispatching,\n 'Dispatcher.waitFor(...): Must be invoked while dispatching.'\n );\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this.$Dispatcher_isPending[id]) {\n invariant(\n this.$Dispatcher_isHandled[id],\n 'Dispatcher.waitFor(...): Circular dependency detected while ' +\n 'waiting for `%s`.',\n id\n );\n continue;\n }\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.',\n id\n );\n this.$Dispatcher_invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n *\n * @param {object} payload\n */\n Dispatcher.prototype.dispatch=function(payload) {\n invariant(\n !this.$Dispatcher_isDispatching,\n 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.'\n );\n this.$Dispatcher_startDispatching(payload);\n try {\n for (var id in this.$Dispatcher_callbacks) {\n if (this.$Dispatcher_isPending[id]) {\n continue;\n }\n this.$Dispatcher_invokeCallback(id);\n }\n } finally {\n this.$Dispatcher_stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n *\n * @return {boolean}\n */\n Dispatcher.prototype.isDispatching=function() {\n return this.$Dispatcher_isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @param {string} id\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_invokeCallback=function(id) {\n this.$Dispatcher_isPending[id] = true;\n this.$Dispatcher_callbacks[id](this.$Dispatcher_pendingPayload);\n this.$Dispatcher_isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @param {object} payload\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_startDispatching=function(payload) {\n for (var id in this.$Dispatcher_callbacks) {\n this.$Dispatcher_isPending[id] = false;\n this.$Dispatcher_isHandled[id] = false;\n }\n this.$Dispatcher_pendingPayload = payload;\n this.$Dispatcher_isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_stopDispatching=function() {\n this.$Dispatcher_pendingPayload = null;\n this.$Dispatcher_isDispatching = false;\n };\n\n\nmodule.exports = Dispatcher;\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (false) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n if (!(obj instanceof Object && !Array.isArray(obj))) {\n throw new Error('keyMirror(...): Argument must be an object.');\n }\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\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","xCache","CanvasSparkline","createRef","dateChanges","changeOpacity","shadow","lineColor","textColor","retinafy","canvas","current","canvasContext","xCacheKey","changeDomain","opacityChange","min","change","textOpacity","toFixed","clearRect","translate","strokeStyle","beginPath","i","lineTo","stroke","fillStyle","textAlign","font","Object","keys","forEach","key","xPos","fillText","concat","shouldComponentUpdate","nextProps","componentDidMount","getContext","isFirefoxDesktop","willReadFrequently","undefined","_renderCanvas","componentDidUpdate","ref","ActionTypes","keyMirror","INIT","INIT_TILES","UPDATE_DATA","CHANGE_TIMEFRAME_STARTED","CHANGE_TIMEFRAME_COMPLETED","CHANGE_TIMEFRAME_FAILED","PayloadSources","SERVER_ACTION","VIEW_ACTION","AppDispatcher","Dispatcher","handleServerAction","action","payload","source","dispatch","handleViewAction","cookieKey","getFuturesUrl","RowsStore","getTimeframe","_lastRequest","init","type","timeframe","migrateOldTimeframe","getCookie","update","_lastRequest2","_lastRequest2$cancel","tiles","cancel","apiRequest","resData","changeTimeframe","_lastRequest3","_lastRequest3$cancel","updateCookie","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","_onChange","container","containerRef","getBoundingClientRect","resizeObserver","ResizeObserver","throttle","entry","contentRect","observe","componentWillUnmount","_this$resizeObserver","disconnect","_FinvizSettings$hover","_FinvizSettings$hover2","showSparkline","hoverOffsetX","hoverOffsetY","last","prevClose","high","low","sparklineDateChanges","format","n","places","plusSign","Number","highlightHigh","highlightLow","backgroundColor","changeUSD","chartImage","hoverChart","hoverCharts","futures","dateRange","boxover","img","Icon","name","ceil","MapTile","textShadow","TileWithBorder","tailwindColors","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","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","getSimpleTileState","PropTypes","SimpleTile","_FinvizSettings$hover3","_FinvizSettings$hover4","firstInGroup","lastInGroup","highlightStyle","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","toString","perf","MenuComponent","getChartsState","override","queryString","values","TIMEFRAME","isGroupOpen","FuturesCharts","_TilesStore$getTile","_onTimeframeChange","prevState","getFuturesInitData","initData","parseInitData","contracts","rootEl","getElementById","ReactDOM","futuresEl","dataEl","ReactDOMClient","BrowserRouter","ready","chartEl","CHART_ELEMENT_ID","globalChartConfig","NotificationWrapper","Suspense","fallback","ResizableChartLayoutWithGlobalState","_timeframe","_rows","Store","rowsStore","dispatchToken","register","_tiles","contract","emitChange","EventEmitter","emit","CHANGE_EVENT","callback","on","removeListener","_tilesGroups","_tileOrder","getTiles","indexOf","g","tilesStore","setMaxListeners","push","colors","nullColor","forexDomains","cryptoDomains","domains","domainId","linearScale","re","RegExp","cookie","replace","withSuspense","chartLayoutModel","useChartLayoutGlobalModelAsync","ChartSettingsButton","size","leftContent","model","IMAGE_SELECTOR","updateUrlString","urlString","query","url","URL","searchParams","delete","set","getPageTitle","pageType","Boolean","join","_query$r","_query$p","_query$r2","useTrackPageView","trackAutomatically","navigate","useNavigate","useLocation","useSearchParams","fromEntries","favoriteTimeframes","toggleFavoriteTimeframe","useFavoriteTimeframes","timeFrameGroups","dateRangeGroupsWithHref","getTimeframeGroupsWithHref","generatePath","timeFrame","generatePathForTimeframeDateRange","pathname","utmCampaign","timeframeUtm","getDateRangeGroupsWithHref","customRange","isCustomAvailable","daterangeUtm","onDialogSubmit","customDateRangeDialogState","handleDateRangeSelect","useCustomDateRangeDialog","anchorDate","getDefaultDateRangeAnchorDate","shouldReloadOnNavigate","pathGenerator","URLSearchParams","handleTimeframeDateRangeChange","querySelectorAll","image","src","srcset","split","dyna","rule","trim","updateImageSrc","tf","linkElement","updateLinkhref","closest","StockDetailTimeframeBar","chartIndex","isDateRangeAvailable","isScrollIntoViewEnabled","onTimeframeSelect","_timeframe$labelPageT","labelPageTitle","onDateRangeSelect","option","CUSTOM_DATE_RANGE","_Fragment","TimeframeBar","containerElement","body","onFavoriteTimeframeToggle","selectedTimeframe","_option$labelPageTitl","selectedDateRange","dateRangeGroups","onCustomDateRangeClick","show","CustomDateRange","dialogState","_ref5","getTimeframeFromDateRange","Stock","_ref6","useChartLayoutWidthWatch","chartConfig","getInitChartConfig","ChartLayoutWithGlobalState","config","getChartLayoutSizeConfig","parentElement","line","curve","transform","isRequired","DEFAULT_OVERLAYS","getHoverChartUrl","escaped","stock","hasDarkTheme","overlays","patterns","cs","ct","tm","imgUrl","nodeChartsDomain","getHoverChartDimensions","_FinvizSettings$hover5","getReferrerPolicy","getHoverChartImg","_FinvizSettings$hover6","chartSize","srcSet","getSrcSet","srcsetString","getScaleRatio","_window$devicePixelRa","devicePixelRatio","context","ratio","scale","xmlns","module","exports","invariant","_lastID","$Dispatcher_callbacks","$Dispatcher_isPending","$Dispatcher_isHandled","$Dispatcher_isDispatching","$Dispatcher_pendingPayload","prototype","id","unregister","waitFor","ids","ii","$Dispatcher_invokeCallback","$Dispatcher_startDispatching","$Dispatcher_stopDispatching","isDispatching","condition","c","f","error","Error","args","argIndex","framesToPop","obj","ret","Array","isArray","hasOwnProperty","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","err","getShim","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes"],"sourceRoot":""}