{"version":3,"file":"home.660c9fea.js","mappings":"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","sources":["webpack://@finviz/website/./js/app/home/market_sentiment.tsx","webpack://@finviz/website/./js/app/home/refresh.ts","webpack://@finviz/website/./js/app/home/indices-data.ts","webpack://@finviz/website/./js/app/home/signals-switch/types.ts","webpack://@finviz/website/./js/app/home/signals-switch/EliteSwitch.tsx","webpack://@finviz/website/./js/app/home/signals-switch/FreeSwitch.tsx","webpack://@finviz/website/./js/app/home/signals-switch/index.tsx","webpack://@finviz/website/./js/app/home/index.tsx","webpack://@finviz/website/./js/app/maps/constants/constants.ts","webpack://@finviz/website/./js/app/maps/constants/generator.ts","webpack://@finviz/website/./js/app/maps/constants/settings.ts","webpack://@finviz/website/./js/app/maps/layout-generator.tsx","webpack://@finviz/website/./js/app/maps/services/api.ts","webpack://@finviz/website/./js/app/maps/store/action-creators.ts","webpack://@finviz/website/./js/app/maps/store/appDispatcher.ts","webpack://@finviz/website/./js/app/maps/store/constants.ts","webpack://@finviz/website/./js/app/maps/store/store.ts","webpack://@finviz/website/./js/app/maps/store/mapStore.ts","webpack://@finviz/website/./js/app/maps/types.ts","webpack://@finviz/website/./js/app/maps/utils.ts","webpack://@finviz/website/./js/app/screener/utils.ts","webpack://@finviz/website/./js/app/shared/chartLayoutConfig.ts","webpack://@finviz/website/./js/app/shared/documentVisibility.ts","webpack://@finviz/website/./js/app/shared/isStockFastRefreshAvailable.ts","webpack://@finviz/website/./js/app/shared/parseJSONFromScript.ts","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/notification/hooks.ts","webpack://@finviz/website/./js/main/components/notification/notification-wrapper.tsx","webpack://@finviz/website/./js/main/components/notification/with-notification-context.tsx","webpack://@finviz/website/./js/main/components/notification/notification.tsx","webpack://@finviz/website/./js/main/components/popover/popover.tsx","webpack://@finviz/website/./js/main/components/popover/hooks.ts","webpack://@finviz/website/./js/main/components/popover/popover-trigger.tsx","webpack://@finviz/website/./js/main/components/select/hooks.ts","webpack://@finviz/website/./js/main/components/select/select-button.tsx","webpack://@finviz/website/./js/main/components/select/select.tsx","webpack://@finviz/website/./js/main/components/select/select-with-tooltip.tsx","webpack://@finviz/website/./js/main/components/select/native-select.tsx","webpack://@finviz/website/./js/main/components/select/select-list.tsx","webpack://@finviz/website/./js/main/hooks/use-popover-maxHeight.ts","webpack://@finviz/website/./js/main/hooks/use-window-size.tsx","webpack://@finviz/website/../node_modules/copy-to-clipboard/index.js","webpack://@finviz/website/../node_modules/date-fns/esm/add/index.js","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/lodash.flowright/index.js","webpack://@finviz/website/../node_modules/re-resizable/lib/resizer.js","webpack://@finviz/website/../node_modules/re-resizable/lib/index.js","webpack://@finviz/website/../node_modules/react-fast-compare/index.js","webpack://@finviz/website/../node_modules/react-popper/lib/esm/utils.js","webpack://@finviz/website/../node_modules/react-popper/lib/esm/usePopper.js","webpack://@finviz/website/../node_modules/toggle-selection/index.js","webpack://@finviz/website/../node_modules/bezier-js/src/utils.js","webpack://@finviz/website/../node_modules/bezier-js/src/poly-bezier.js","webpack://@finviz/website/../node_modules/bezier-js/src/bezier.js"],"sourcesContent":["import { Component, MouseEvent } from 'react'\r\nimport ReactDOM from 'react-dom'\r\n\r\nimport { CancelablePromise, apiRequest } from '../../main/services/api'\r\nimport { Instrument } from '../../main/types'\r\nimport {\r\n ChartElementType,\r\n ChartLayout,\r\n LayoutType,\r\n Quote,\r\n RootChartConfigObject,\r\n ScaleType,\r\n TIMEFRAME,\r\n Theme,\r\n} from '../charts-lib'\r\n\r\nconst ticker = 'market_sentiment'\r\n\r\ninterface MarketSentimentProps {}\r\n\r\nconst MARKET_SENTIMENT_WIDTH_PX = 160\r\nconst MARKET_SENTIMENT_HEIGHT_PX = 40\r\nconst marketSentimentChartConfig: RootChartConfigObject = {\r\n layout: LayoutType['1h1v'],\r\n theme: FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light,\r\n width: MARKET_SENTIMENT_WIDTH_PX,\r\n height: MARKET_SENTIMENT_HEIGHT_PX,\r\n scrollable: false,\r\n editable: false,\r\n cross: false,\r\n charts: [\r\n {\r\n width: MARKET_SENTIMENT_WIDTH_PX,\r\n height: MARKET_SENTIMENT_HEIGHT_PX,\r\n timeframe: TIMEFRAME.i3,\r\n scale: ScaleType.Linear,\r\n ticker: ticker,\r\n instrument: Instrument.MarketSentiment,\r\n refreshData: false,\r\n premarket: false,\r\n aftermarket: false,\r\n dateRange: null,\r\n stretch: true,\r\n panes: [\r\n {\r\n height: MARKET_SENTIMENT_HEIGHT_PX,\r\n elements: [\r\n {\r\n type: ChartElementType.MarketSentiment,\r\n overlays: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n}\r\n\r\ninterface MarketSentimentState {\r\n loading: boolean\r\n enabled: boolean\r\n chartConfig: RootChartConfigObject | null\r\n}\r\n\r\nclass MarketSentiment extends Component {\r\n state: MarketSentimentState = {\r\n loading: true,\r\n enabled: false,\r\n chartConfig: null,\r\n }\r\n\r\n _timer: number | null = null\r\n _lastRequest: CancelablePromise | null = null\r\n\r\n componentDidMount() {\r\n this._fetchData('', () => {\r\n this.setState({ chartConfig: marketSentimentChartConfig })\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._timer !== null) {\r\n this._lastRequest?.cancel?.()\r\n clearTimeout(this._timer)\r\n }\r\n }\r\n\r\n render() {\r\n const { loading, enabled, chartConfig } = this.state\r\n\r\n return (\r\n \r\n \r\n \r\n Click BULL for positive market sentiment
Click BEAR for negative market sentiment] offsetx=[-200] offsety=[20] delay=[100]\">\r\n {chartConfig && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n this._vote(e, 'bull')}\r\n >\r\n Bull\r\n \r\n \r\n this._vote(e, 'bear')}\r\n >\r\n Bear\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n _vote(e: MouseEvent, sentiment: string) {\r\n e.preventDefault()\r\n this.setState({ enabled: false })\r\n this._fetchData('?b=' + sentiment, undefined, false)\r\n }\r\n\r\n _fetchData = async (urlQuery = '', callback?: Function, setTimer = true) => {\r\n if (setTimer && this._timer !== null) clearTimeout(this._timer)\r\n\r\n if (document.hidden) {\r\n // console.log(`${+new Date()} Document is hidden, canceling refresh`)\r\n if (setTimer) this._timer = window.setTimeout(() => this._fetchData(urlQuery, callback), 1000)\r\n return\r\n }\r\n\r\n // console.log(`${+new Date()} Document is visible, refreshing`)\r\n\r\n this._lastRequest = apiRequest(`/api/market_sentiment.ashx${urlQuery}`)\r\n const json = await this._lastRequest\r\n if (json) {\r\n const quoteData = getData(json)\r\n const quote = Quote.findByAttribute('ticker', ticker)\r\n if (quote) {\r\n Quote.findByAttribute('ticker', ticker)!.updateAttributes(getData(json))\r\n } else {\r\n Quote.create(quoteData).save()\r\n }\r\n callback?.()\r\n\r\n this.setState({\r\n loading: false,\r\n enabled: json.enabled,\r\n })\r\n }\r\n\r\n if (setTimer) {\r\n this._timer = window.setTimeout(() => this._fetchData(urlQuery, callback), (json?.refresh ?? 30) * 1000)\r\n }\r\n }\r\n}\r\n\r\ninterface QuoteData {\r\n refresh: number\r\n enabled: boolean\r\n sum: number[]\r\n weight: number[]\r\n time: string\r\n visibleMinutes: number\r\n}\r\n\r\nfunction getData(data: QuoteData) {\r\n return {\r\n close: data.sum,\r\n volume: data.weight,\r\n date: Array.from('1'.repeat(data.sum.length)).map((x) => parseInt(x, 10)),\r\n ticker: ticker,\r\n timeframe: 'i3',\r\n instrument: 'market_sentiment',\r\n premarket: false,\r\n aftermarket: false,\r\n afterChange: null,\r\n afterClose: null,\r\n drawMinutesPerDay: data.visibleMinutes,\r\n marketStartMinutes: 570,\r\n premarketLengthMinutes: 0,\r\n aftermarketLengthMinutes: 0,\r\n }\r\n}\r\n\r\nfunction mount() {\r\n const el = document.getElementById('js-market-sentiment')\r\n if (el) {\r\n ReactDOM.render(, el)\r\n }\r\n}\r\n\r\nfunction unmount() {\r\n const el = document.getElementById('js-market-sentiment')\r\n if (el) {\r\n ReactDOM.unmountComponentAtNode(el)\r\n }\r\n}\r\n\r\nmount()\r\n\r\nexport { mount, unmount }\r\n","import { ContentType, apiRequest } from '../../main/services/api'\r\nimport { mapPerf } from '../maps/services/api'\r\nimport mapActionCreators from '../maps/store/action-creators'\r\nimport { MapSubtypeId, MapTypeId } from '../maps/types'\r\nimport { getMapsRefreshInterval } from '../maps/utils'\r\nimport { intervalCallbackOnWindowVisible } from '../shared/documentVisibility'\r\nimport { isStockFastRefreshAvailable } from '../shared/isStockFastRefreshAvailable'\r\nimport { parseJSONFromScript } from '../shared/parseJSONFromScript'\r\nimport { Indices, updateIndices } from './indices-data'\r\n\r\ninterface RefreshInfo {\r\n userId: string\r\n version: number\r\n interval: number\r\n hasGeoMaps: boolean\r\n}\r\n\r\nconst refreshInfo = parseJSONFromScript('refresh-init')\r\n\r\nfunction refreshPage(newDocument: Document) {\r\n // Replace market stats\r\n const oldMarketStats = document.getElementsByClassName('market-stats')\r\n const newMarketStats = newDocument.getElementsByClassName('market-stats')\r\n if (oldMarketStats.length === newMarketStats.length) {\r\n Array.from(oldMarketStats).forEach((_, index) => {\r\n const oldElement = oldMarketStats.item(index)\r\n const newElement = newMarketStats.item(index)\r\n if (oldElement && newElement) {\r\n oldElement.innerHTML = newElement.innerHTML\r\n }\r\n })\r\n }\r\n\r\n replaceSignalTables(newDocument)\r\n\r\n // Replace bottom\r\n const oldHomepageBottom = document.getElementById('js-homepage_bottom')\r\n const newHomepageBottom = newDocument.getElementById('js-homepage_bottom')\r\n if (oldHomepageBottom && newHomepageBottom) {\r\n oldHomepageBottom.innerHTML = newHomepageBottom.innerHTML\r\n }\r\n\r\n if (FinvizSettings.hasUserPremium || FinvizSettings.hasRedesignEnabled) {\r\n import(/* webpackChunkName: \"recent_quotes\" */ '../shared/recent_quotes').then(({ RenderRecentQuotes }) => {\r\n RenderRecentQuotes()\r\n })\r\n }\r\n\r\n // Send refresh event to google analytics\r\n window.gtag?.('event', 'refresh', { event_category: 'page' })\r\n // Refresh any ads that might be on the page\r\n if (window.finvizBannersLoaded === true) {\r\n window.initFinvizBanners?.()\r\n } else if (typeof window.refreshAds === 'function') {\r\n window.refreshAds('#js-homepage_bottom [id*=IC_D_]')\r\n }\r\n}\r\n\r\nexport function replaceSignalTables(newDocument: Document) {\r\n // Replace left signals table\r\n const oldSignalsLeft = document.getElementById('js-signals_1')\r\n const newSignalsLeft = newDocument.getElementById('js-signals_1')\r\n if (oldSignalsLeft && newSignalsLeft) {\r\n oldSignalsLeft.innerHTML = newSignalsLeft.innerHTML\r\n }\r\n\r\n // Replace right signals table\r\n const oldSignalsRight = document.getElementById('js-signals_2')\r\n const newSignalsRight = newDocument.getElementById('js-signals_2')\r\n if (oldSignalsRight && newSignalsRight) {\r\n oldSignalsRight.innerHTML = newSignalsRight.innerHTML\r\n }\r\n}\r\n\r\nexport async function getRefreshData() {\r\n const data = await apiRequest(window.location.pathname, {\r\n headers: { 'Content-Type': ContentType.Html, 'X-Is-Ajax-Request': 'true' },\r\n })\r\n\r\n if (!data) return undefined\r\n\r\n const newDocument = new DOMParser().parseFromString(data, 'text/html')\r\n const newRefreshInfo = parseJSONFromScript('refresh-init', newDocument)\r\n\r\n if (!refreshInfo || !newRefreshInfo || refreshInfo.userId !== newRefreshInfo.userId) return undefined\r\n\r\n if (refreshInfo.version !== newRefreshInfo.version) {\r\n window.location.reload()\r\n }\r\n\r\n return newDocument\r\n}\r\n\r\nfunction initRefresh(interval: number) {\r\n intervalCallbackOnWindowVisible(interval, async function handleRefresh() {\r\n const newDocument = await getRefreshData()\r\n\r\n if (newDocument) {\r\n refreshPage(newDocument)\r\n }\r\n })\r\n}\r\n\r\nenum IndicesPollingIntervalInMs {\r\n Default = 3000,\r\n Reduced = 60000,\r\n}\r\n\r\nif (refreshInfo?.interval) {\r\n initRefresh(refreshInfo.interval * 1000)\r\n\r\n function getIndicesRefreshInterval() {\r\n if (!isStockFastRefreshAvailable(false, false)) {\r\n return IndicesPollingIntervalInMs.Reduced\r\n }\r\n\r\n return IndicesPollingIntervalInMs.Default\r\n }\r\n\r\n intervalCallbackOnWindowVisible(getIndicesRefreshInterval, async function handleRefresh() {\r\n const newIndicesData = await apiRequest('/api/indices_data.ashx')\r\n\r\n if (newIndicesData) {\r\n updateIndices(newIndicesData)\r\n }\r\n })\r\n\r\n intervalCallbackOnWindowVisible(getMapsRefreshInterval, async function handleRefresh() {\r\n const perfDataSecReq = mapPerf(MapTypeId.Sector, MapSubtypeId.DayPerf)\r\n const perfDataGeoReq = refreshInfo.hasGeoMaps ? mapPerf(MapTypeId.World, MapSubtypeId.DayPerf) : null\r\n\r\n const [perfDataSec, perfDataGeo] = await Promise.all([perfDataSecReq, perfDataGeoReq])\r\n\r\n try {\r\n if (perfDataSec) {\r\n if (window.FinvizIndexSecMap.version !== perfDataSec.version) {\r\n window.location.reload()\r\n }\r\n mapActionCreators.updatePerfData(window.FinvizIndexSecMap, perfDataSec)\r\n }\r\n\r\n if (perfDataGeo) {\r\n if (window.FinvizIndexGeoMap.version !== perfDataGeo.version) {\r\n window.location.reload()\r\n }\r\n mapActionCreators.updatePerfData(window.FinvizIndexGeoMap, perfDataGeo)\r\n }\r\n } catch {}\r\n })\r\n}\r\n","import { Quote } from '../charts-lib'\r\nimport './market_sentiment'\r\nimport './refresh'\r\n\r\ninterface Index {\r\n ticker: string\r\n timeframe: string\r\n volume: number[]\r\n date: number[]\r\n open: number[]\r\n high: number[]\r\n low: number[]\r\n close: number[]\r\n lastOpen: null\r\n lastHigh: null\r\n lastLow: null\r\n lastClose: number\r\n lastVolume: null\r\n lastDate: number\r\n prevClose: number\r\n afterClose: null\r\n afterChange: null\r\n relativeVolume: number\r\n}\r\n\r\nexport type Indices = Record\r\n\r\nexport function getData(index: string, ticker: string, indices: Indices) {\r\n return {\r\n ...indices[index],\r\n ticker: ticker, // use text?\r\n timeframe: 'i10',\r\n instrument: 'stock',\r\n premarket: false,\r\n aftermarket: false,\r\n hasChartEvents: false,\r\n afterChange: null,\r\n afterClose: null,\r\n drawMinutesPerDay: 390,\r\n marketStartMinutes: 570,\r\n premarketLengthMinutes: 0,\r\n aftermarketLengthMinutes: 0,\r\n }\r\n}\r\n\r\nexport function updateIndices(indices: Indices) {\r\n const dowQ = Quote.findByAttribute('ticker', 'DOW')\r\n if (dowQ) dowQ.updateAttributes(getData('^DJI', 'DOW', indices))\r\n\r\n const nasdaqQ = Quote.findByAttribute('ticker', 'NASDAQ')\r\n if (nasdaqQ) nasdaqQ.updateAttributes(getData('^IXIC', 'NASDAQ', indices))\r\n\r\n const sap500Q = Quote.findByAttribute('ticker', 'S&P 500')\r\n if (sap500Q) sap500Q.updateAttributes(getData('^GSPC', 'S&P 500', indices))\r\n\r\n const rutQ = Quote.findByAttribute('ticker', 'RUSSELL 2000')\r\n if (rutQ) rutQ.updateAttributes(getData('^RUT', 'RUSSELL 2000', indices))\r\n\r\n if (!dowQ || !nasdaqQ || !sap500Q || !rutQ) {\r\n // Temporary code below\r\n // additional info gaining for https://finvizcom.sentry.io/issues/3963831382/?project=33153&referrer=issue-stream&statsPeriod=14d&stream_index=0\r\n window.Sentry?.captureMessage('indices-data.ts updateIndices', {\r\n extra: {\r\n allAvailableTickers: Quote.all()\r\n .reduce((acc: string[], cur: { ticker: string }) => {\r\n acc.push(cur.ticker)\r\n return acc\r\n }, [])\r\n .join(','),\r\n },\r\n })\r\n }\r\n}\r\n","export enum HPSignalInterval {\r\n intraday = 'intraday',\r\n daily = 'daily',\r\n}\r\n\r\nexport const HP_SIGNAL_LABELS: Record = {\r\n [HPSignalInterval.intraday]: 'Intraday',\r\n [HPSignalInterval.daily]: 'Daily',\r\n}\r\nexport const HP_SIGNAL_COOKIE = 'signalsInterval'\r\nexport const HP_SIGNAL_SWITCH_RENDER_SELECTOR = 'js-switches-root'\r\n","import classNames from 'classnames'\r\nimport React from 'react'\r\nimport { PopoverInitialState } from 'reakit'\r\n\r\nimport { Icon, Select, SelectOption } from '../../../main/components'\r\nimport { HPSignalInterval, HP_SIGNAL_LABELS } from './types'\r\n\r\nconst IS_REDESIGN = FinvizSettings.hasRedesignEnabled\r\nconst OPTIONS = Object.entries(HP_SIGNAL_LABELS).map(([value, label]) => ({ value: value as HPSignalInterval, label }))\r\nconst POPOVER_SETTINGS: PopoverInitialState = {\r\n placement: 'bottom-end',\r\n unstable_offset: IS_REDESIGN ? [0, 0] : [4, 1],\r\n}\r\nconst ROUNDING = IS_REDESIGN ? 'regular' : 'none'\r\n\r\ntype EliteSwitchProps = {\r\n isLoading: boolean\r\n signal: HPSignalInterval\r\n onSignalChange: (signals: HPSignalInterval) => void\r\n}\r\n\r\nexport default function EliteSwitch({ isLoading, signal, onSignalChange }: EliteSwitchProps) {\r\n return (\r\n <>\r\n }\r\n onChange={({ value }) => {\r\n onSignalChange(value)\r\n }}\r\n listProps={{ direction: 'row', className: 'p-px', rounding: ROUNDING }}\r\n // override height defined by button to not stretch old hp signal tables\r\n style={IS_REDESIGN ? undefined : { height: 'auto' }}\r\n hasPopoverButtonWidthLimit={false}\r\n popoverStateSettings={POPOVER_SETTINGS}\r\n isLoading={isLoading}\r\n disabled={isLoading}\r\n >\r\n {OPTIONS.map((item) => (\r\n \r\n {item.label}\r\n \r\n ))}\r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Button, Icon, Paragraph } from '../../../main/components'\r\nimport { Popover, PopoverTrigger, usePopoverState } from '../../../main/components/popover'\r\nimport { HPSignalInterval, HP_SIGNAL_LABELS } from './types'\r\n\r\nconst IS_REDESIGN = FinvizSettings.hasRedesignEnabled\r\n\r\nexport default function FreeSwitch() {\r\n const state = usePopoverState({\r\n placement: 'bottom-end',\r\n unstable_offset: IS_REDESIGN ? [0, 0] : [1, 1],\r\n })\r\n\r\n return (\r\n <>\r\n {IS_REDESIGN ? (\r\n \r\n {HP_SIGNAL_LABELS[HPSignalInterval.daily]}\r\n \r\n ) : (\r\n \r\n {HP_SIGNAL_LABELS[HPSignalInterval.daily]}\r\n \r\n \r\n )}\r\n \r\n
\r\n \r\n Get access to intraday data with Finviz*Elite.\r\n \r\n \r\n Subscribe\r\n \r\n
\r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport * as ReactDOM from 'react-dom'\r\n\r\nimport { getCookie } from '../../shared/cookie'\r\nimport { getRefreshData, replaceSignalTables } from '../refresh'\r\nimport EliteSwitch from './EliteSwitch'\r\nimport FreeSwitch from './FreeSwitch'\r\nimport { HPSignalInterval, HP_SIGNAL_COOKIE } from './types'\r\n\r\nconst HEADER_SWITCH_SELECTOR = '.js-signal-switch'\r\nconst SWITCH_BUTTON_SELECTOR = '.js-signal-switch-button'\r\nconst signalSwitchesElements = Array.from(document.querySelectorAll(HEADER_SWITCH_SELECTOR))\r\n\r\nfunction getSignalsCookie() {\r\n const value = getCookie(HP_SIGNAL_COOKIE)\r\n let signal = HPSignalInterval.daily\r\n const castedValue = value as HPSignalInterval\r\n\r\n if (FinvizSettings.hasUserPremium && !!castedValue) signal = castedValue\r\n return signal\r\n}\r\n\r\nasync function handleSignalIntervalChange() {\r\n const newDocument = await getRefreshData()\r\n if (newDocument) {\r\n replaceSignalTables(newDocument)\r\n } else {\r\n document.location.reload()\r\n }\r\n}\r\n\r\nexport default function HomepageSignals() {\r\n const [signal, setSignal] = React.useState(getSignalsCookie())\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n // remove inlined buttons from html template\r\n document.querySelectorAll(SWITCH_BUTTON_SELECTOR).forEach((element) => {\r\n element.remove()\r\n })\r\n }, [])\r\n\r\n const handleSignalChange = async (changedSignal: HPSignalInterval) => {\r\n if (changedSignal !== signal) {\r\n setSignal(changedSignal)\r\n setIsLoading(true)\r\n fetch('/api/set_cookie.ashx?cookie=' + HP_SIGNAL_COOKIE + '&value=' + changedSignal)\r\n .catch(() => {})\r\n .then(async (res) => {\r\n setIsLoading(false)\r\n if (res?.ok) await handleSignalIntervalChange()\r\n else setSignal(signal)\r\n })\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {signalSwitchesElements.map((element) =>\r\n ReactDOM.createPortal(\r\n FinvizSettings.hasUserPremium ? (\r\n \r\n ) : (\r\n \r\n ),\r\n element\r\n )\r\n )}\r\n \r\n )\r\n}\r\n","import ReactDOM from 'react-dom'\r\n\r\nimport { SpecificChartFunctionality } from '../../main/constants'\r\nimport {\r\n ChartElementType,\r\n ChartLayout,\r\n Instrument,\r\n LayoutType,\r\n Quote,\r\n ScaleType,\r\n TIMEFRAME,\r\n Theme,\r\n} from '../charts-lib'\r\nimport { getCustomColorsFromCookies } from '../shared/chartLayoutConfig'\r\nimport { parseJSONFromScript } from '../shared/parseJSONFromScript'\r\nimport { ready } from '../shared/ready'\r\nimport type { Indices } from './indices-data'\r\nimport { getData } from './indices-data'\r\nimport './market_sentiment'\r\nimport './refresh'\r\nimport SignalIntervalSwitch from './signals-switch'\r\nimport { HP_SIGNAL_SWITCH_RENDER_SELECTOR } from './signals-switch/types'\r\n\r\nif (FinvizSettings.hasUserPremium || FinvizSettings.hasRedesignEnabled) {\r\n import(/* webpackChunkName: \"recent_quotes\" */ '../shared/recent_quotes').then(({ RenderRecentQuotes }) => {\r\n RenderRecentQuotes()\r\n })\r\n}\r\n\r\nfunction getChartConfig(ticker: string) {\r\n return {\r\n layout: LayoutType['1h1v'],\r\n width: 320,\r\n height: 190,\r\n barWidth: 3,\r\n barMargin: 1,\r\n scrollable: false,\r\n editable: false,\r\n cross: false,\r\n colors: getCustomColorsFromCookies(),\r\n specificChartFunctionality: SpecificChartFunctionality.smallIndex,\r\n theme: FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light,\r\n charts: [\r\n {\r\n width: 0,\r\n premarket: false,\r\n aftermarket: false,\r\n dateRange: null,\r\n height: 190,\r\n timeframe: TIMEFRAME.i10,\r\n scale: ScaleType.Linear,\r\n ticker: ticker,\r\n // leftOffset: 0,\r\n instrument: Instrument.Stock,\r\n refreshData: false,\r\n // stretch: true,\r\n panes: [\r\n {\r\n height: 190,\r\n elements: [\r\n {\r\n type: ChartElementType.CandleStick,\r\n overlays: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n}\r\n\r\nfunction renderChart({ ticker, element }: { ticker: string; element: HTMLElement | null }) {\r\n if (element) {\r\n ReactDOM.render(\r\n
\r\n \r\n
,\r\n element\r\n )\r\n }\r\n}\r\n\r\nfunction renderSignalIntervalSwitch() {\r\n const signalSwitches = document.getElementById(HP_SIGNAL_SWITCH_RENDER_SELECTOR)\r\n\r\n if (signalSwitches) {\r\n ReactDOM.render(, signalSwitches)\r\n }\r\n}\r\n\r\nready(function () {\r\n const indices = parseJSONFromScript('js-indices')!\r\n\r\n Quote.create(getData('^DJI', 'DOW', indices)).save()\r\n Quote.create(getData('^IXIC', 'NASDAQ', indices)).save()\r\n Quote.create(getData('^GSPC', 'S&P 500', indices)).save()\r\n Quote.create(getData('^RUT', 'RUSSELL 2000', indices)).save()\r\n\r\n renderChart({ ticker: 'DOW', element: document.getElementById('dow') })\r\n renderChart({ ticker: 'NASDAQ', element: document.getElementById('nasdaq') })\r\n renderChart({ ticker: 'S&P 500', element: document.getElementById('sp500') })\r\n renderChart({ ticker: 'RUSSELL 2000', element: document.getElementById('rut') })\r\n\r\n renderSignalIntervalSwitch()\r\n})\r\n","import { MapSubtype, MapSubtypeId, MapType, MapTypeId, PerfData, ScaleId } from '../types'\r\n\r\nexport const EXPANDED_MAP_BODY_CLASSS = 'is-map-expanded'\r\nexport const FALLBACK_PERF_RESPONSE: PerfData = { nodes: {}, additional: {}, subtype: MapSubtypeId.DayPerf, hash: '' }\r\n\r\nexport const MAP_SUBTYPES_COMPANIES_BY_ID: Record = {\r\n [MapSubtypeId.DayPerf]: {\r\n id: MapSubtypeId.DayPerf,\r\n name: '1 Day Performance',\r\n scaleId: ScaleId.DayPerf,\r\n tooltip:\r\n \"Color indicates today's stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.WeekPerf]: {\r\n id: MapSubtypeId.WeekPerf,\r\n name: '1 Week Performance',\r\n scaleId: ScaleId.WeekPerf,\r\n tooltip:\r\n 'Color indicates weekly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.MonthPerf]: {\r\n id: MapSubtypeId.MonthPerf,\r\n name: '1 Month Performance',\r\n scaleId: ScaleId.MonthPerf,\r\n tooltip:\r\n 'Color indicates monthly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.ThreeMonthPerf]: {\r\n id: MapSubtypeId.ThreeMonthPerf,\r\n name: '3 Months Performance',\r\n scaleId: ScaleId.ThreeMonthPerf,\r\n tooltip:\r\n 'Color indicates quarterly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.SixMonthPerf]: {\r\n id: MapSubtypeId.SixMonthPerf,\r\n name: '6 Months Performance',\r\n scaleId: ScaleId.SixMonthPerf,\r\n tooltip:\r\n 'Color indicates half-yearly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.YearPerf]: {\r\n id: MapSubtypeId.YearPerf,\r\n name: '1 Year Performance',\r\n scaleId: ScaleId.YearPerf,\r\n tooltip:\r\n 'Color indicates yearly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.YearToDatePerf]: {\r\n id: MapSubtypeId.YearToDatePerf,\r\n name: 'Year To Date Performance',\r\n scaleId: ScaleId.YearPerf,\r\n tooltip:\r\n 'Color indicates year to date stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.RelativeVolume]: {\r\n id: MapSubtypeId.RelativeVolume,\r\n name: 'Relative Volume',\r\n scaleId: ScaleId.RelativeVolume,\r\n tooltip:\r\n \"Color indicates the stock's relative volume, ratio between today's and average volume. Values above 1.5 show strong volume, values below 0.5 indicate weak volume.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.PriceToEarnings]: {\r\n id: MapSubtypeId.PriceToEarnings,\r\n name: 'P/E',\r\n scaleId: ScaleId.PriceToEarnings,\r\n tooltip: \"Color indicates the stock's price-to-earnings ratio.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.ForwardPriceToEearnings]: {\r\n id: MapSubtypeId.ForwardPriceToEearnings,\r\n name: 'Forward P/E',\r\n scaleId: ScaleId.ForwardPriceToEearnings,\r\n tooltip: \"Color indicates the stock's forward price-to-earnings ratio.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.PriceEarningsToGrowth]: {\r\n id: MapSubtypeId.PriceEarningsToGrowth,\r\n name: 'PEG',\r\n scaleId: ScaleId.PriceEarningsToGrowth,\r\n tooltip: \"Color indicates the stock's price-to-earnings-to-growth ratio.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.PriceToSellsRatio]: {\r\n id: MapSubtypeId.PriceToSellsRatio,\r\n name: 'P/S',\r\n scaleId: ScaleId.PriceToSellsRatio,\r\n tooltip: \"Color indicates the stock's price-to-sales ratio.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.PriceToBookRatio]: {\r\n id: MapSubtypeId.PriceToBookRatio,\r\n name: 'P/B',\r\n scaleId: ScaleId.PriceToBookRatio,\r\n tooltip: \"Color indicates the stock's price-to-book ratio.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.DividendYield]: {\r\n id: MapSubtypeId.DividendYield,\r\n name: 'Dividend Yield',\r\n scaleId: ScaleId.DividendYield,\r\n tooltip: \"Color indicates the stock's dividend yield.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.EPSGrowth5y]: {\r\n id: MapSubtypeId.EPSGrowth5y,\r\n name: 'EPS Growth Past 5 Years',\r\n scaleId: ScaleId.EPSGrowth5y,\r\n tooltip: \"Color indicates the stock's annual earnings (EPS) growth over past 5 years.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.FloatShort]: {\r\n id: MapSubtypeId.FloatShort,\r\n name: 'Float Short',\r\n scaleId: ScaleId.FloatShort,\r\n tooltip: \"Color indicates percent of the stock's float sold short.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.AnalystRecommendation]: {\r\n id: MapSubtypeId.AnalystRecommendation,\r\n name: 'Analysts Recom.',\r\n scaleId: ScaleId.AnalystRecommendation,\r\n tooltip:\r\n \"Color indicates the analyst's recommendations for given stocks. The rating is based on a 1-5 scale, ranging from a strong-buy, to a strong-sell.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.EarningsPerf]: {\r\n id: MapSubtypeId.EarningsPerf,\r\n name: 'Earnings Day Performance',\r\n scaleId: ScaleId.MonthPerf,\r\n tooltip:\r\n \"Color indicates stock's performance on earnings day. Next day performance for earnings reported after market close.\",\r\n countIndustryPerf: false,\r\n countSectorPerf: false,\r\n },\r\n [MapSubtypeId.EarningsDate]: {\r\n id: MapSubtypeId.EarningsDate,\r\n name: 'Earnings Date',\r\n scaleId: ScaleId.EarningsDate,\r\n tooltip: \"Color indicates stock's earnings date.\",\r\n countIndustryPerf: false,\r\n countSectorPerf: false,\r\n },\r\n}\r\n\r\nexport const MAP_SUBTYPES_ETF_BY_ID = {\r\n [MapSubtypeId.DayPerf]: {\r\n id: MapSubtypeId.DayPerf,\r\n name: '1 Day Performance',\r\n scaleId: ScaleId.DayPerf,\r\n tooltip:\r\n \"Color indicates today's stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.WeekPerf]: {\r\n id: MapSubtypeId.WeekPerf,\r\n name: '1 Week Performance',\r\n scaleId: ScaleId.WeekPerf,\r\n tooltip:\r\n 'Color indicates weekly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.MonthPerf]: {\r\n id: MapSubtypeId.MonthPerf,\r\n name: '1 Month Performance',\r\n scaleId: ScaleId.MonthPerf,\r\n tooltip:\r\n 'Color indicates monthly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.ThreeMonthPerf]: {\r\n id: MapSubtypeId.ThreeMonthPerf,\r\n name: '3 Months Performance',\r\n scaleId: ScaleId.ThreeMonthPerf,\r\n tooltip:\r\n 'Color indicates quarterly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.SixMonthPerf]: {\r\n id: MapSubtypeId.SixMonthPerf,\r\n name: '6 Months Performance',\r\n scaleId: ScaleId.SixMonthPerf,\r\n tooltip:\r\n 'Color indicates half-yearly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.YearPerf]: {\r\n id: MapSubtypeId.YearPerf,\r\n name: '1 Year Performance',\r\n scaleId: ScaleId.YearPerf,\r\n tooltip:\r\n 'Color indicates yearly stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.YearToDatePerf]: {\r\n id: MapSubtypeId.YearToDatePerf,\r\n name: 'Year To Date Performance',\r\n scaleId: ScaleId.YearPerf,\r\n tooltip:\r\n 'Color indicates year to date stock performance in percent. Based on the color you can identify losers (red), neutral (black), and gainers (green).',\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n [MapSubtypeId.RelativeVolume]: {\r\n id: MapSubtypeId.RelativeVolume,\r\n name: 'Relative Volume',\r\n scaleId: ScaleId.RelativeVolume,\r\n tooltip:\r\n \"Color indicates the stock's relative volume, ratio between today's and average volume. Values above 1.5 show strong volume, values below 0.5 indicate weak volume.\",\r\n countIndustryPerf: true,\r\n countSectorPerf: true,\r\n },\r\n}\r\n\r\nexport const MAP_SUBTYPES_COMPANIES: MapSubtype[] = Object.values(MAP_SUBTYPES_COMPANIES_BY_ID)\r\n\r\nexport const MAP_SUBTYPES_ETF: MapSubtype[] = Object.values(MAP_SUBTYPES_ETF_BY_ID)\r\n\r\nexport const MAP_TYPES: MapType[] = [\r\n {\r\n name: 'S&P 500',\r\n pageTitle: 'S&P 500 Map',\r\n description:\r\n \"Standard and Poor's 500 index stocks categorized by sectors and industries. Size represents market cap.\",\r\n type: MapTypeId.Sector,\r\n subtypes: MAP_SUBTYPES_COMPANIES,\r\n },\r\n {\r\n name: 'World',\r\n pageTitle: 'World Map',\r\n description:\r\n 'Foreign ADR stocks listed on NYSE, NASDAQ, AMEX categorized by geo location. Size represents market cap.',\r\n type: MapTypeId.World,\r\n subtypes: MAP_SUBTYPES_COMPANIES,\r\n },\r\n {\r\n name: 'Full',\r\n pageTitle: 'Stock Market Map',\r\n description:\r\n 'All stocks listed on US stock exchanges, categorized by sectors and industries. Size represents market cap.',\r\n type: MapTypeId.SectorFull,\r\n subtypes: MAP_SUBTYPES_COMPANIES,\r\n },\r\n {\r\n name: 'Exchange Traded Funds',\r\n pageTitle: 'ETF Map - Exchange Traded Funds Map',\r\n nameShort: 'ETF',\r\n description: 'ETFs categorized by sectors and styles. Size represents 3-month average dollar volume, $1M minimum.',\r\n type: MapTypeId.ETF,\r\n subtypes: MAP_SUBTYPES_ETF,\r\n },\r\n]\r\n\r\nexport const MAP_TYPE_SCREENER = {\r\n name: 'Screener',\r\n pageTitle: 'Screener Map',\r\n description:\r\n 'All stocks listed on US stock exchanges, categorized by sectors and industries. Size represents market cap.',\r\n type: MapTypeId.Screener,\r\n subtypes: MAP_SUBTYPES_COMPANIES,\r\n}\r\n\r\nexport const MAP_TYPE_ETF_HOLDINGS_WIDGET = {\r\n name: 'ETF Holdings',\r\n pageTitle: '',\r\n description: '',\r\n type: MapTypeId.ETFHoldings,\r\n subtypes: MAP_SUBTYPES_COMPANIES,\r\n}\r\n","export type MapOrder = Record\r\n\r\nexport const MAP_MIN_WIDTH = 700\r\nexport const MAP_MIN_HEIGHT = 388\r\nexport const SECTOR_MIN_HEIGHT = 5\r\nexport const LEGEND_HEIGHT = 79\r\n\r\nexport const LARGE_MAP_HEIGHT_RATIO = 1.8\r\nexport const SMALL_MAP_GEO_HEIGHT_RATIO = 1.7\r\nexport const SMALL_MAP_HEIGHT_RATIO = 1.085 // old design ratio - 1.33\r\n\r\n// Minimal size of node to display header\r\nexport const LARGE_NODE_SIZE = {\r\n dx: 40,\r\n dy: 12,\r\n}\r\n\r\n// Don't display header if node height - header is smaller than this\r\nexport const LARGE_NODE_MIN_HEIGHT = 5\r\n\r\nexport const ORDER_SP500: MapOrder = {\r\n Technology: 10,\r\n Financial: 11,\r\n 'Communication Services': 9,\r\n Healthcare: 4,\r\n 'Consumer Cyclical': 6,\r\n 'Consumer Defensive': 5,\r\n Industrials: 4,\r\n 'Real Estate': 3,\r\n Energy: 2,\r\n Utilities: 1,\r\n 'Basic Materials': 0,\r\n}\r\n\r\nexport const ORDER_SEC_ALL: MapOrder = {\r\n Financial: 10,\r\n Technology: 9,\r\n 'Communication Services': 8,\r\n 'Consumer Cyclical': 7,\r\n 'Consumer Defensive': 6,\r\n Healthcare: 5,\r\n Industrials: 4,\r\n 'Real Estate': 3,\r\n Energy: 2,\r\n Utilities: 1,\r\n 'Basic Materials': 0,\r\n}\r\n\r\nexport const ORDER_ETF: MapOrder = {\r\n US: 11,\r\n 'US Sector': 10,\r\n 'US Large Cap': 9,\r\n 'US Mid Cap': 8,\r\n 'US Small Cap': 7,\r\n 'US Volatility': 6,\r\n Global: 5,\r\n International: 3,\r\n 'Fixed Income': 2,\r\n Commodity: 4,\r\n Strategy: 1,\r\n Forex: 0,\r\n}\r\n\r\nexport const ORDER_SCREENER: MapOrder = {\r\n Technology: 10,\r\n Financial: 9,\r\n 'Communication Services': 8,\r\n Healthcare: 7,\r\n 'Consumer Cyclical': 6,\r\n 'Consumer Defensive': 5,\r\n Industrials: 4,\r\n 'Real Estate': 3,\r\n Energy: 2,\r\n Utilities: 1,\r\n 'Basic Materials': 0,\r\n}\r\n\r\nexport const ORDER_SCREENER_ETF: MapOrder = {\r\n ...ORDER_SCREENER,\r\n Financial: 1000,\r\n}\r\n\r\nexport const ORDER_WORLD: MapOrder = {\r\n Ireland: 20,\r\n 'United Kingdom': 19,\r\n Spain: 18,\r\n France: 17,\r\n Belgium: 16,\r\n Netherlands: 15,\r\n Switzerland: 14,\r\n\r\n China: 21,\r\n Japan: 20,\r\n India: 19,\r\n 'Hong Kong': 18,\r\n 'South Korea': 15,\r\n Taiwan: 14,\r\n\r\n Colombia: 30,\r\n Chile: 29,\r\n Argentina: 28,\r\n}\r\n\r\nexport const WORLD_INDUSTRIES = [\r\n {\r\n x: 4,\r\n y: 0,\r\n dx: 240,\r\n dy: 226,\r\n name: 'Canada',\r\n countries: ['Canada'],\r\n },\r\n {\r\n x: 4,\r\n y: 230,\r\n dx: 240,\r\n dy: 135,\r\n name: 'Mexico',\r\n countries: ['Cayman Islands', 'Bermuda', 'Mexico'],\r\n },\r\n {\r\n x: 4,\r\n y: 375,\r\n dx: 240,\r\n dy: 170,\r\n name: 'South America',\r\n countries: ['Netherlands Antilles', 'Panama', 'Peru', 'Argentina', 'Colombia', 'Chile', 'Brazil'],\r\n },\r\n {\r\n x: 730,\r\n y: 380,\r\n dx: 108,\r\n dy: 80,\r\n name: 'South Africa',\r\n countries: ['South Africa'],\r\n },\r\n {\r\n x: 725,\r\n y: 180,\r\n dx: 108,\r\n dy: 81,\r\n name: 'Israel',\r\n countries: ['Israel'],\r\n },\r\n {\r\n x: 1055,\r\n y: 420,\r\n dx: 144,\r\n dy: 80,\r\n name: 'Australia',\r\n countries: ['Australia'],\r\n },\r\n {\r\n x: 871,\r\n y: 0,\r\n dx: 336,\r\n dy: 396,\r\n name: 'Asia',\r\n countries: [\r\n 'Malaysia',\r\n 'Russia',\r\n 'Philippines',\r\n 'Indonesia',\r\n 'Singapore',\r\n 'South Korea',\r\n 'Taiwan',\r\n 'India',\r\n 'Hong Kong',\r\n 'Japan',\r\n 'China',\r\n ],\r\n },\r\n {\r\n x: 324,\r\n y: 0,\r\n dx: 374,\r\n dy: 428,\r\n name: 'Europe',\r\n countries: [\r\n 'Cyprus',\r\n 'Channel Islands',\r\n 'Greece',\r\n 'Luxembourg',\r\n 'Germany',\r\n 'Belgium',\r\n 'Spain',\r\n 'France',\r\n 'Ireland',\r\n 'Switzerland',\r\n 'Netherlands',\r\n 'United Kingdom',\r\n ],\r\n },\r\n {\r\n x: 697,\r\n y: 75,\r\n dx: 144,\r\n dy: 51,\r\n name: 'Frozen',\r\n countries: ['Finland', 'Sweden', 'Norway', 'Denmark'],\r\n },\r\n {\r\n x: 542,\r\n y: 414,\r\n dx: 102,\r\n dy: 68,\r\n name: 'Italy',\r\n countries: ['Italy'],\r\n },\r\n]\r\n","import tailwindColors from '../../../../../config/colors'\r\nimport { ScaleId } from '../types'\r\n\r\nexport interface ISettings {\r\n padding: { top: number; right: number; bottom: number; left: number }\r\n background: string\r\n industry: ISettingsSection\r\n sector: ISettingsSection\r\n scaleFontSizes: Record\r\n fontSizePadding: Record\r\n fontSizePairs: Record\r\n}\r\n\r\nexport interface ISettingsSection {\r\n padding: { top: number; right: number; bottom: number; left: number }\r\n background: string | null\r\n border: string | null\r\n header: ISettingsSectionHeader\r\n hover?: ISettingsSectionHeader\r\n}\r\n\r\nexport interface ISettingsSectionHeader extends ISettingsSectionFont {\r\n background: string | null\r\n border: string | null\r\n height: number\r\n margin: { top: number; right: number; bottom: number; left: number }\r\n}\r\n\r\nexport interface ISettingsSectionFont {\r\n color: string\r\n fontSize: number\r\n fontWeight: 'bold' | 'normal'\r\n padding: { top: number; right: number; left: number }\r\n}\r\n\r\nexport const scaleMinMax: Record = {\r\n [ScaleId.DayPerf]: [-3, 3],\r\n _5: [-6, 6],\r\n _10: [-10, 10],\r\n _15: [-18, 18],\r\n _20: [-24, 24],\r\n _25: [-30, 30],\r\n _relvol: [0, 3],\r\n _pe: [0, 30],\r\n _fpe: [0, 30],\r\n _peg: [0, 3],\r\n _ps: [0, 5],\r\n _pb: [0, 5],\r\n _div: [0, 5],\r\n _eps5y: [-50, 50],\r\n _short: [0, 15],\r\n _rec: [5, 1],\r\n _earndate: [30, -30],\r\n // Portfolio — values are just placeholders, the real value is computed from data\r\n _portfolioPct: [-1, 1],\r\n _portfolioUsd: [-1, 1],\r\n}\r\n\r\nexport const scaleStepFormat: Record = {\r\n [ScaleId.DayPerf]: '%N%',\r\n _5: '%N%',\r\n _10: '%N%',\r\n _15: '%N%',\r\n _20: '%N%',\r\n _25: '%N%',\r\n _relvol: '%N',\r\n _pe: '%N',\r\n _fpe: '%N',\r\n _peg: '%N',\r\n _ps: '%N',\r\n _pb: '%N',\r\n _div: '%N%',\r\n _eps5y: '%N%',\r\n _short: '%N%',\r\n _rec: { 1: '%N Strong Buy', 2: '%N Buy', 3: '%N Hold', 4: '%N Sell', 5: '%N Strong Sell' },\r\n _earndate: {\r\n '-30': '%N Days',\r\n '-15': '%N Days',\r\n '-1': 'After Earnings',\r\n 1: 'Before Earnings',\r\n 15: '%N Days',\r\n 30: '%N Days',\r\n },\r\n _portfolioPct: '%N%',\r\n _portfolioUsd: '$%N',\r\n}\r\n\r\nexport const Settings: ISettings = {\r\n padding: { top: 0, right: 0, bottom: 1, left: 1 },\r\n background: tailwindColors.finviz['blue-gray'],\r\n sector: {\r\n padding: { top: 0, right: 1, bottom: 1, left: 1 },\r\n background: null,\r\n border: null,\r\n header: {\r\n color: '#fff',\r\n background: null,\r\n border: null,\r\n height: 14.5,\r\n fontSize: 13,\r\n fontWeight: 'bold',\r\n margin: { top: 0, right: 0, bottom: 0, left: 0 },\r\n padding: { top: -1, right: 4, left: 4 },\r\n },\r\n },\r\n industry: {\r\n padding: { top: 0, right: 1, bottom: 1, left: 1 },\r\n background: null,\r\n border: null,\r\n header: {\r\n color: '#fff',\r\n background: null,\r\n border: tailwindColors.finviz['blue-gray'],\r\n height: 12,\r\n fontSize: 10,\r\n fontWeight: 'normal',\r\n margin: { top: 0, right: 0.5, bottom: 0, left: -0.5 },\r\n padding: { top: -0.5, right: 4, left: 4 },\r\n },\r\n hover: {\r\n color: '#6b5811',\r\n background: '#ffd614',\r\n border: '#ffd614',\r\n height: 12,\r\n fontSize: 10,\r\n fontWeight: 'normal',\r\n margin: { top: 0, right: 0, bottom: 0, left: 0 },\r\n padding: { top: -0.5, right: 3, left: 4 },\r\n },\r\n },\r\n scaleFontSizes: {\r\n 1: [36, 30, 24, 20, 18, 14, 13, 12, 11, 10, 9, 8],\r\n 1.5: [36, 30, 24, 20, 18, 14, 13, 12, 11, 10, 9, 8, 6, 4],\r\n 2.25: [36, 30, 24, 20, 18, 14, 13, 12, 11, 10, 9, 8, 6, 4],\r\n 3: [36, 30, 24, 20, 18, 14, 13, 12, 11, 10, 9, 8, 6, 4],\r\n },\r\n fontSizePadding: {\r\n 36: 30,\r\n 30: 25,\r\n 24: 20,\r\n 20: 14,\r\n 18: 12,\r\n 14: 9,\r\n 13: 7,\r\n 12: 7,\r\n 11: 4,\r\n 10: 3,\r\n 9: 3,\r\n 8: 2.5,\r\n 6: 0,\r\n 4: 1,\r\n },\r\n fontSizePairs: {\r\n 36: [18, 14, 13, 12],\r\n 30: [14, 13, 12, 11, 10],\r\n 24: [14, 13, 12, 11, 10],\r\n 20: [12, 11, 10, 9, 8, 6],\r\n 18: [11, 10, 9, 8, 6],\r\n 14: [9, 8, 6, 4],\r\n 13: [9, 8, 6, 4],\r\n 12: [9, 8, 6, 4],\r\n 11: [8, 6, 4],\r\n 10: [10, 9, 8, 6, 4],\r\n 9: [9, 8, 6, 4],\r\n 8: [8, 6, 4],\r\n 6: [6, 4],\r\n 4: [4],\r\n },\r\n}\r\n\r\nexport const SettingsSmall: ISettings = {\r\n ...Settings,\r\n padding: { top: 0, right: 0, bottom: 0, left: 0 },\r\n background: '#343842',\r\n sector: {\r\n ...Settings.industry,\r\n padding: { top: 0.5, right: 0, bottom: 0, left: 2 },\r\n border: '#e0e0e0',\r\n header: {\r\n ...Settings.industry.header,\r\n margin: { top: 0, right: 0.5, bottom: 0, left: -1.5 },\r\n padding: { top: 0.5, right: 1, left: 1 },\r\n border: '#343842',\r\n fontSize: 9,\r\n },\r\n },\r\n industry: {\r\n ...Settings.industry,\r\n padding: { top: 0, right: 1, bottom: 1, left: 0 },\r\n header: {\r\n ...Settings.industry.header,\r\n height: 0,\r\n },\r\n },\r\n scaleFontSizes: { ...Settings.scaleFontSizes, 1: [14, 12, 11, 8, 6] },\r\n fontSizePadding: { 14: 5, 12: 2, 11: 2, 8: 2, 6: 0, 4: 0 },\r\n fontSizePairs: {\r\n 14: [9, 8, 6],\r\n 13: [9, 8, 6],\r\n 12: [6],\r\n 11: [6],\r\n 10: [6],\r\n 9: [6],\r\n 8: [6],\r\n 6: [6],\r\n },\r\n}\r\n\r\nexport const SettingsSmallDark: ISettings = {\r\n ...SettingsSmall,\r\n sector: {\r\n ...SettingsSmall.sector,\r\n background: tailwindColors.gray[800],\r\n border: tailwindColors.gray[800],\r\n header: {\r\n ...SettingsSmall.sector.header,\r\n padding: { top: 0.5, right: 2, left: 2 },\r\n margin: { top: 0, right: 1.5, bottom: 0, left: -0.5 },\r\n border: tailwindColors.gray[800],\r\n },\r\n },\r\n industry: {\r\n ...SettingsSmall.industry,\r\n header: {\r\n ...SettingsSmall.industry.header,\r\n border: tailwindColors.gray[800],\r\n },\r\n },\r\n}\r\n\r\nexport const SettingsSmallGeo: ISettings = {\r\n ...Settings,\r\n padding: { top: 0, right: 0, bottom: 0, left: 1 },\r\n background: '#a7c4d3',\r\n industry: {\r\n ...Settings.industry,\r\n background: '#e0e0e0',\r\n header: {\r\n ...Settings.industry.header,\r\n height: 9,\r\n fontSize: 8,\r\n border: '#e0e0e0',\r\n margin: { top: -0.5, right: 0.5, bottom: 0, left: -0.5 },\r\n padding: { top: -1, right: 0, left: 1 },\r\n },\r\n },\r\n scaleFontSizes: { ...Settings.scaleFontSizes, 1: [14, 12, 11, 8, 6] },\r\n fontSizePadding: { 14: 5, 12: 2, 11: 2, 8: 1, 6: 0, 4: 0 },\r\n fontSizePairs: {\r\n 14: [9, 8, 6],\r\n 13: [9, 8, 6],\r\n 12: [6],\r\n 11: [6],\r\n 10: [6],\r\n 9: [6],\r\n 8: [6],\r\n 6: [6],\r\n },\r\n}\r\n\r\nexport const SettingsSmallGeoDark: ISettings = {\r\n ...SettingsSmallGeo,\r\n background: tailwindColors.gray[800],\r\n sector: {\r\n ...SettingsSmallGeo.sector,\r\n background: tailwindColors.gray[800],\r\n border: tailwindColors.gray[800],\r\n },\r\n industry: {\r\n ...SettingsSmallGeo.industry,\r\n border: tailwindColors.gray[800],\r\n background: tailwindColors.gray[800],\r\n header: {\r\n ...SettingsSmallGeo.industry.header,\r\n border: tailwindColors.gray[800],\r\n },\r\n },\r\n}\r\n\r\nexport const SettingsScreener: ISettings = {\r\n ...Settings,\r\n padding: { top: 0, right: 0, bottom: 0, left: 0 },\r\n sector: {\r\n ...Settings.sector,\r\n padding: { top: 0, right: 0, bottom: 0, left: 1 },\r\n background: '#363a46',\r\n border: '#d3d3d3',\r\n header: {\r\n ...Settings.sector.header,\r\n height: 20,\r\n padding: { top: 2.5, right: 4, left: 4 },\r\n },\r\n },\r\n industry: {\r\n ...Settings.industry,\r\n header: {\r\n ...Settings.industry.header,\r\n border: '#363a46',\r\n },\r\n },\r\n}\r\n\r\nexport const SettingsScreenerDark: ISettings = {\r\n ...SettingsScreener,\r\n sector: {\r\n ...SettingsScreener.sector,\r\n background: tailwindColors.gray[800],\r\n border: tailwindColors.gray[800],\r\n },\r\n industry: {\r\n ...SettingsScreener.industry,\r\n header: {\r\n ...SettingsScreener.industry.header,\r\n border: tailwindColors.gray[800],\r\n },\r\n },\r\n}\r\n","import * as d3 from 'd3'\r\n\r\nimport * as constants from './constants/generator'\r\nimport { ISettings } from './constants/settings'\r\nimport { MapDataIndustry, MapDataNode, MapDataRoot, MapDataRow, MapDataSector, MapTypeId, NodeDepth } from './types'\r\n\r\nexport default class LayoutGenerator {\r\n width: number\r\n height: number\r\n settings: ISettings\r\n layout?: Array>\r\n sectors: MapDataSector[] = []\r\n industries: MapDataIndustry[] = []\r\n nodes: MapDataNode[] = []\r\n isSmall: boolean\r\n type: MapTypeId\r\n minSectorHeight: number\r\n\r\n static smallIndustryPadding = {\r\n top: 4,\r\n right: 1,\r\n bottom: 1,\r\n left: 1,\r\n }\r\n\r\n static smallIndustryGeoPadding = {\r\n top: 4,\r\n right: 1,\r\n bottom: 1,\r\n left: 1,\r\n }\r\n\r\n static getSizeRatio = (type: MapTypeId, isSmall: boolean) => {\r\n if (isSmall) {\r\n if (type === MapTypeId.World) {\r\n return constants.SMALL_MAP_GEO_HEIGHT_RATIO\r\n }\r\n return constants.SMALL_MAP_HEIGHT_RATIO\r\n }\r\n\r\n return constants.LARGE_MAP_HEIGHT_RATIO\r\n }\r\n\r\n static calculateHeight = (\r\n width: number,\r\n type: MapTypeId,\r\n isSmall: boolean,\r\n ratio = LayoutGenerator.getSizeRatio(type, isSmall)\r\n ) => ~~(width / ratio)\r\n\r\n static calculateWidth = (height: number, type: MapTypeId, isSmall: boolean) => {\r\n const ratio = LayoutGenerator.getSizeRatio(type, isSmall)\r\n\r\n return Math.round(height * ratio)\r\n }\r\n\r\n static isNodeHeaderVisible(node: any, settings: ISettings) {\r\n const deltaX = node.dx ?? Math.round(node.x1) - Math.round(node.x0)\r\n const deltaY = node.dy ?? Math.round(node.y1) - Math.round(node.y0)\r\n\r\n const isLargeNode = deltaX >= constants.LARGE_NODE_SIZE.dx && deltaY >= constants.LARGE_NODE_SIZE.dy\r\n const showHeader =\r\n deltaY - settings.industry.padding.top - settings.industry.header.height > constants.LARGE_NODE_MIN_HEIGHT\r\n\r\n return isLargeNode && showHeader\r\n }\r\n\r\n constructor(width: number, height: number, type: MapTypeId, settings: ISettings, isSmall: boolean = false) {\r\n this.width = width\r\n this.height = height\r\n this.settings = settings\r\n this.isSmall = isSmall\r\n this.type = type\r\n this.minSectorHeight = settings.sector.padding.top + settings.sector.header.height + constants.SECTOR_MIN_HEIGHT\r\n }\r\n\r\n getExportData() {\r\n let mapRoot: MapDataRoot\r\n if (this.type === MapTypeId.World) {\r\n mapRoot = this._rootsToRoot(this.industries)\r\n } else {\r\n mapRoot = this.layout?.find((node) => node.data.name === 'Root') as unknown as MapDataRoot\r\n }\r\n\r\n // Save some file size by filtering out small nodes on maps where hover is not a concern\r\n if (this.isSmall) {\r\n mapRoot.children = this.filterVisibleNodes(mapRoot.children)\r\n }\r\n\r\n const stringified = JSON.stringify(mapRoot, (key, value) => (key === 'parent' ? '[Circular]' : value))\r\n\r\n return JSON.parse(stringified)\r\n }\r\n\r\n getLayoutData() {\r\n return {\r\n nodes: this.nodes,\r\n sectors: this.sectors,\r\n industries: this.industries,\r\n }\r\n }\r\n\r\n filterVisibleNodes = (arr: T[]) =>\r\n arr.filter((node) => {\r\n const isVisible = this.isNodeVisible(node)\r\n if (isVisible && node.children?.length) {\r\n node.children = this.filterVisibleNodes(node.children)\r\n }\r\n return isVisible\r\n })\r\n\r\n isNodeVisible(d: MapDataRow) {\r\n if (!d.depth || d.depth < NodeDepth.Industry) return true\r\n\r\n return d.dx > 0 && d.dy > 0\r\n }\r\n\r\n getLayout(data: MapDataRoot, options: Record = {}) {\r\n this.nodes = []\r\n this.sectors = []\r\n this.industries = []\r\n\r\n switch (this.type) {\r\n case MapTypeId.Sector:\r\n this.layout = this._generateSP500(data).descendants()\r\n break\r\n case MapTypeId.SectorFull:\r\n this.layout = this._generateFull(data).descendants()\r\n break\r\n case MapTypeId.Portfolio:\r\n case MapTypeId.Screener:\r\n case MapTypeId.ETFHoldings:\r\n this.layout = this._generateScreener(data, options).descendants()\r\n break\r\n case MapTypeId.World:\r\n this.layout = this._generateWorld(data)\r\n break\r\n case MapTypeId.ETF:\r\n this.layout = this._generateETF(data).descendants()\r\n break\r\n }\r\n\r\n this.layout?.forEach((d: any) => {\r\n this._transformNode(d)\r\n\r\n if (!this.isNodeVisible(d)) return\r\n\r\n if (!d.children) {\r\n this.nodes.push(d)\r\n } else if (d.parent && !d.parent.parent) {\r\n this.sectors.push(d)\r\n } else if (d.parent && !!d.parent.parent && d.children) {\r\n this.industries.push(d)\r\n }\r\n })\r\n\r\n return this.getLayoutData()\r\n }\r\n\r\n _transformNode(d: d3.HierarchyRectangularNode) {\r\n Object.assign(d, {\r\n name: d.data.name,\r\n description: d.data.description,\r\n perf: d.data.perf,\r\n additional: d.data.additional,\r\n x: d.x0,\r\n y: d.y0,\r\n dx: d.x1 - d.x0,\r\n dy: d.y1 - d.y0,\r\n })\r\n }\r\n\r\n _rootsToRoot(roots: any) {\r\n return {\r\n name: 'Root',\r\n children: [\r\n {\r\n name: 'World',\r\n children: roots,\r\n },\r\n ],\r\n duplicateTickers: 0,\r\n } as MapDataRoot\r\n }\r\n\r\n _getPadding = (d: d3.HierarchyRectangularNode) => {\r\n // Root\r\n if (d.depth === NodeDepth.Root) {\r\n return [\r\n this.settings.padding.top,\r\n this.settings.padding.right,\r\n this.settings.padding.bottom,\r\n this.settings.padding.left,\r\n ]\r\n }\r\n\r\n // Industries\r\n if (d.depth === NodeDepth.Industry) {\r\n if (this.isSmall || LayoutGenerator.isNodeHeaderVisible(d, this.settings)) {\r\n return [\r\n this.settings.industry.padding.top + this.settings.industry.header.height,\r\n this.settings.industry.padding.right,\r\n this.settings.industry.padding.bottom,\r\n this.settings.industry.padding.left,\r\n ]\r\n }\r\n\r\n return [\r\n LayoutGenerator.smallIndustryPadding.top,\r\n LayoutGenerator.smallIndustryPadding.right,\r\n LayoutGenerator.smallIndustryPadding.bottom,\r\n LayoutGenerator.smallIndustryPadding.left,\r\n ]\r\n }\r\n\r\n // Sectors\r\n return [\r\n this.settings.sector.padding.top + this.settings.sector.header.height,\r\n this.settings.sector.padding.right,\r\n this.settings.sector.padding.bottom,\r\n this.settings.sector.padding.left,\r\n ]\r\n }\r\n\r\n _getPaddingGeo = (d: d3.HierarchyRectangularNode) => {\r\n // Root\r\n if (d.depth === NodeDepth.Root) {\r\n return [\r\n this.settings.padding.top,\r\n this.settings.padding.right,\r\n this.settings.padding.bottom,\r\n this.settings.padding.left,\r\n ]\r\n }\r\n\r\n // Industries\r\n if (d.depth === NodeDepth.Industry) {\r\n if (LayoutGenerator.isNodeHeaderVisible(d, this.settings)) {\r\n return [\r\n this.settings.industry.padding.top + this.settings.industry.header.height,\r\n this.settings.industry.padding.right,\r\n this.settings.industry.padding.bottom,\r\n this.settings.industry.padding.left,\r\n ]\r\n }\r\n\r\n return [\r\n LayoutGenerator.smallIndustryGeoPadding.top,\r\n LayoutGenerator.smallIndustryGeoPadding.right,\r\n LayoutGenerator.smallIndustryGeoPadding.bottom,\r\n LayoutGenerator.smallIndustryGeoPadding.left,\r\n ]\r\n }\r\n\r\n // Sectors\r\n return [\r\n this.settings.sector.padding.top + this.settings.sector.header.height,\r\n this.settings.sector.padding.right,\r\n this.settings.sector.padding.bottom,\r\n this.settings.sector.padding.left,\r\n ]\r\n }\r\n\r\n _getHierarchySort = <\r\n Datum extends { y0?: number; y1?: number; value?: number; data: { name: string }; depth?: number },\r\n >(\r\n a: Datum,\r\n b: Datum,\r\n order: Record\r\n ): number => {\r\n // Sort small sectors (works only when layout is recalculated)\r\n const heightB = b.y1! - b.y0!\r\n if (b.depth === NodeDepth.Sector && Number.isFinite(heightB) && heightB < this.minSectorHeight) {\r\n return b.value! - a.value!\r\n }\r\n\r\n if (order.hasOwnProperty(a.data.name) && order.hasOwnProperty(b.data.name)) {\r\n return order[b.data.name] - order[a.data.name]\r\n }\r\n return b.value! - a.value!\r\n }\r\n\r\n _getHierarchy = (data: MapDataRoot, order: Record) =>\r\n d3\r\n .hierarchy(data as unknown as MapDataNode)\r\n .sum((d) => d.value)\r\n .sort((a, b) => this._getHierarchySort(a, b, order))\r\n\r\n _getTreemap = (width: number, height: number) => {\r\n const paddingFn = this.type === MapTypeId.World ? this._getPaddingGeo : this._getPadding\r\n\r\n return d3\r\n .treemap()\r\n .size([width, height])\r\n .round(true)\r\n .tile(d3.treemapSquarify.ratio(1))\r\n .paddingTop((d) => paddingFn(d)[0])\r\n .paddingRight((d) => paddingFn(d)[1])\r\n .paddingBottom((d) => paddingFn(d)[2])\r\n .paddingLeft((d) => paddingFn(d)[3])\r\n }\r\n\r\n _getIndustriesRoots(data: MapDataRoot, industries: string[]) {\r\n return data.children[0].children.filter(function (d) {\r\n return industries.some((i) => i === d.name)\r\n })\r\n }\r\n\r\n _getSectorsRoots(data: MapDataRoot, sectors: string[]) {\r\n return data.children.filter(function (d) {\r\n return sectors.some((s) => s === d.name)\r\n })\r\n }\r\n\r\n _generateLayout(data: MapDataRoot, order: any, recountSectors = false) {\r\n const treemapHeight = LayoutGenerator.calculateHeight(this.width, this.type, false)\r\n const treemap = this._getTreemap(this.width, treemapHeight)\r\n const hierarchy = this._getHierarchy(data, order)\r\n const recalculateHeight = this.height !== treemapHeight\r\n\r\n // Calculate the base layout\r\n let nodes = treemap(hierarchy)\r\n\r\n // Recalculate for custom height\r\n if (this.height !== treemapHeight) {\r\n treemap.tile(d3.treemapResquarify).size([this.width, this.height])\r\n }\r\n\r\n // Run layout again so that possible small sectors are reordered\r\n // This also applies the recalculateHeight option\r\n if (recountSectors || recalculateHeight) {\r\n nodes = treemap(nodes.sort((a, b) => this._getHierarchySort(a, b, order)))\r\n }\r\n\r\n return nodes\r\n }\r\n\r\n _generateSP500(data: MapDataRoot) {\r\n const nodes = this._generateLayout(data, constants.ORDER_SP500)\r\n\r\n // Switch financial and technology sector\r\n const financialSector = nodes.find((node) => node.data.name === 'Financial')!\r\n const technologySector = nodes.find((node) => node.data.name === 'Technology')!\r\n const financialHeight = financialSector.y1 - financialSector.y0\r\n const technologyHeight = technologySector.y1 - technologySector.y0\r\n\r\n financialSector.eachAfter((node) => {\r\n if (node.y1 - node.y0 < 1) return\r\n node.y0 += technologyHeight\r\n node.y1 += technologyHeight\r\n })\r\n\r\n technologySector.eachAfter((node) => {\r\n if (node.y1 - node.y0 < 1) return\r\n node.y0 -= financialHeight\r\n node.y1 -= financialHeight\r\n })\r\n\r\n return nodes\r\n }\r\n\r\n _generateFull(data: MapDataRoot) {\r\n const layout = this._generateLayout(data, constants.ORDER_SEC_ALL)\r\n\r\n // Swap Technology and financial sectors\r\n const technologySector = layout.find((node) => node.depth === NodeDepth.Sector && node.data.name === 'Technology')!\r\n const financialSector = layout.find((node) => node.depth === NodeDepth.Sector && node.data.name === 'Financial')!\r\n\r\n const financialHeight = financialSector.y1 - financialSector.y0\r\n technologySector.each((node) => {\r\n node.y0 -= financialHeight\r\n node.y1 -= financialHeight\r\n })\r\n\r\n const technologyHeight = technologySector.y1 - technologySector.y0\r\n financialSector.each((node) => {\r\n node.y0 += technologyHeight\r\n node.y1 += technologyHeight\r\n })\r\n\r\n return layout\r\n }\r\n\r\n _generateScreener(data: MapDataRoot, { showETF }: Record) {\r\n const order = showETF ? constants.ORDER_SCREENER_ETF : constants.ORDER_SCREENER\r\n\r\n return this._generateLayout(data, order, true)\r\n }\r\n\r\n _generateETF(data: MapDataRoot) {\r\n return this._generateLayout(data, constants.ORDER_ETF)\r\n }\r\n\r\n _generateWorld = (data: MapDataRoot) => {\r\n const originalWidth = 1211\r\n const ratio = this.width / originalWidth\r\n let nodes: Array> = []\r\n\r\n for (let industryIndex = 0; industryIndex < constants.WORLD_INDUSTRIES.length; industryIndex++) {\r\n const industry = constants.WORLD_INDUSTRIES[industryIndex]\r\n const industryX = Math.round(industry.x * ratio)\r\n const industryY = Math.round(industry.y * ratio)\r\n const industryWidth = Math.round(industry.dx * ratio)\r\n const industryHeight = Math.round(industry.dy * ratio)\r\n\r\n const countriesRoots = this._getIndustriesRoots(data, industry.countries)\r\n const root = this._rootsToRoot(countriesRoots)\r\n const hierarchy = this._getHierarchy(root, constants.ORDER_WORLD)\r\n const treemap = this._getTreemap(industryWidth, industryHeight)\r\n const treemapNodes = treemap(hierarchy)\r\n\r\n treemapNodes.each((d) => {\r\n d.x0 += industryX\r\n d.x1 += industryX\r\n d.y0 += industryY\r\n d.y1 += industryY\r\n })\r\n\r\n // SWITCH BRAZIL AND OTHERS\r\n if (industry.name === 'South America') {\r\n const brazil = treemapNodes.find((d) => d.data.name === 'Brazil')!\r\n const colombia = treemapNodes.find((d) => d.data.name === 'Colombia')!\r\n const brazilWidth = brazil.x1 - brazil.x0\r\n const colombiaWidth = colombia.x1 - colombia.x0\r\n\r\n treemapNodes.each((d) => {\r\n if ([d.parent?.data.name, d.data.name].includes('Brazil')) {\r\n d.x0 += colombiaWidth\r\n d.x1 += colombiaWidth\r\n } else {\r\n d.x0 -= brazilWidth\r\n d.x1 -= brazilWidth\r\n }\r\n })\r\n }\r\n\r\n nodes = nodes.concat(treemapNodes.descendants())\r\n }\r\n\r\n return nodes\r\n }\r\n}\r\n","import { ContentType, apiRequest } from '../../../main/services/api'\r\nimport { MapDataRoot, MapSubtypeId, MapTypeId, PerfData } from '../types'\r\n\r\nexport function mapBaseData(type: MapTypeId, cacheBuster: number) {\r\n return apiRequest(`/maps/${type}.json`, { query: { rev: cacheBuster } }, true)\r\n}\r\n\r\nexport function mapPerf(type: MapTypeId, subtype: MapSubtypeId) {\r\n return apiRequest(`/api/map_perf.ashx`, { query: { t: type, st: subtype } })\r\n}\r\n\r\nexport function mapPerfScreener(query = window.location.search) {\r\n return apiRequest(`/api/map_perf_screener.ashx${query}`)\r\n}\r\n\r\nexport interface UploadMapResponse {\r\n imgUrl: string\r\n shareUrl: string\r\n}\r\n\r\nexport function uploadMap({ type, subtype, data }: { type: MapTypeId; subtype: MapSubtypeId; data: string }) {\r\n return apiRequest(`/publish_map_submit.ashx`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': ContentType.FormUrlEncoded,\r\n },\r\n body: new URLSearchParams({\r\n file: data.replace('data:image/png;base64,', ''),\r\n type,\r\n subtype,\r\n }),\r\n })\r\n}\r\n","import debounce from 'lodash.debounce'\r\n\r\nimport { CancelablePromise, apiRequest } from '../../../main/services/api'\r\nimport Treemap from '../treemap'\r\nimport { MapData, MapDataNode, MapTypeId, PerfData, Scale } from '../types'\r\nimport { getVisibleTooltipTickers } from '../utils'\r\nimport AppDispatcher from './appDispatcher'\r\nimport { ActionTypes } from './constants'\r\nimport mapStore from './mapStore'\r\n\r\nvar _targetScale = 1\r\nfunction zoomIn(treemap: Treemap, scale: number, tx: number, ty: number) {\r\n _targetScale = scale\r\n animate()\r\n function animate() {\r\n treemap.zoom.scale(+(treemap.zoom.scale() + 0.05).toFixed(2), { x: tx, y: ty })\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n if (treemap.zoom.scale() + 0.05 < _targetScale + 0.00001) {\r\n requestAnimationFrame(animate)\r\n }\r\n }\r\n}\r\n\r\nfunction zoomOut(treemap: Treemap, scale: number, tx: number, ty: number) {\r\n _targetScale = scale\r\n animate()\r\n function animate() {\r\n treemap.zoom.scale(+(treemap.zoom.scale() - 0.05).toFixed(2), { x: tx, y: ty })\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n if (treemap.zoom.scale() - 0.05 > _targetScale - 0.00001) {\r\n requestAnimationFrame(animate)\r\n }\r\n }\r\n}\r\n\r\nfunction updateVisibleSparklines(treemap: Treemap) {\r\n const hoveredNode = mapStore.getHoveredNode(treemap.mapNodeId)\r\n if (hoveredNode) {\r\n const tickersToLoad = getVisibleTooltipTickers(hoveredNode)\r\n\r\n if (!tickersToLoad.includes(hoveredNode.name)) {\r\n tickersToLoad.push(hoveredNode.name)\r\n }\r\n\r\n if (tickersToLoad.length) {\r\n debouncedLoadSparklines(tickersToLoad, treemap.type)\r\n }\r\n }\r\n}\r\n\r\nlet _lastSparklinesRequest: CancelablePromise | null = null\r\nasync function loadSparklines(tickers: string[], mapType: string) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.LOAD_SPARKLINES_STARTED,\r\n })\r\n _lastSparklinesRequest?.cancel?.()\r\n _lastSparklinesRequest = apiRequest(\r\n '/api/map_sparklines.ashx',\r\n { query: { t: tickers.join(','), ty: mapType } },\r\n true\r\n )\r\n\r\n try {\r\n const data = await _lastSparklinesRequest\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.LOAD_SPARKLINES_COMPLETED,\r\n data: data,\r\n })\r\n } catch (error) {\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.LOAD_SPARKLINES_FAILED,\r\n error,\r\n })\r\n }\r\n}\r\n\r\nconst debouncedLoadSparklines = debounce(loadSparklines, 200, { trailing: true })\r\n\r\nconst actions = {\r\n setHoveredNode(mapNodeId: string, node: MapDataNode | undefined) {\r\n if (!node) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.RESET_SPARKLINE_DATA,\r\n })\r\n }\r\n\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_HOVERED_NODE,\r\n node,\r\n mapNodeId,\r\n })\r\n },\r\n\r\n loadSparklineData(tickers: string[], mapType: MapTypeId) {\r\n if (tickers) {\r\n debouncedLoadSparklines(tickers, mapType)\r\n }\r\n },\r\n\r\n loadSparklinesCancel() {\r\n _lastSparklinesRequest?.cancel?.()\r\n },\r\n\r\n resetSparklineData() {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.RESET_SPARKLINE_DATA,\r\n })\r\n },\r\n\r\n changeTranslate(treemap: Treemap, tx: number, ty: number) {\r\n treemap.zoom.translate([tx, ty])\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.CHANGE_TRANSLATE,\r\n })\r\n },\r\n\r\n zoom(treemap: Treemap, direction: number, offsetX: number, offsetY: number) {\r\n if (direction > 0) {\r\n const zoomLevel = treemap.getNextZoomLevel()\r\n if (zoomLevel !== treemap.zoom.scale()) {\r\n zoomIn(treemap, zoomLevel, offsetX, offsetY)\r\n }\r\n } else {\r\n const zoomLevel = treemap.getPreviousZoomLevel()\r\n if (zoomLevel !== treemap.zoom.scale()) {\r\n zoomOut(treemap, zoomLevel, offsetX, offsetY)\r\n }\r\n }\r\n },\r\n\r\n render() {\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n },\r\n\r\n zoomAndTranslate(treemap: Treemap, scale: number, tx: number, ty: number) {\r\n treemap.zoom.scale(1, { x: tx, y: ty })\r\n treemap.zoom.scale(scale, { x: tx, y: ty })\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n },\r\n\r\n updateLayout(\r\n treemap: Treemap,\r\n props: { width: number; height: number; data: MapData; scale: Scale; dataHash: string }\r\n ) {\r\n treemap.updateData(props)\r\n treemap.zoom.updateDimensions(props)\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n\r\n // Update hovered node if any\r\n const hoveredNode = mapStore.getHoveredNode(treemap.mapNodeId)\r\n if (hoveredNode) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_HOVERED_NODE,\r\n node: treemap.nodes.find((node) => node.name === hoveredNode.name),\r\n mapNodeId: treemap.mapNodeId,\r\n })\r\n updateVisibleSparklines(treemap)\r\n }\r\n },\r\n\r\n updatePerfData(treemap?: Treemap, data?: PerfData) {\r\n if (!treemap || !data) return\r\n\r\n treemap.updatePerf(data)\r\n AppDispatcher.handleServerAction({ type: ActionTypes.UPDATE_DATA, version: data.version })\r\n\r\n updateVisibleSparklines(treemap)\r\n },\r\n\r\n _setOnPublish(getPublishCanvas: () => HTMLCanvasElement) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_PUBLISH_CANVAS,\r\n getPublishCanvas,\r\n })\r\n },\r\n\r\n setupWidget() {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_WIDGET,\r\n isWidget: true,\r\n })\r\n },\r\n}\r\n\r\nexport default actions\r\n","import { Dispatcher } from 'flux'\r\n\r\nimport { PayloadSources } from './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\nexport default new AppDispatcher()\r\n","import keyMirror from 'keymirror'\r\n\r\nconst ActionTypes = keyMirror({\r\n RENDER_TREEMAP: null,\r\n CHANGE_TRANSLATE: null,\r\n SET_HOVERED_NODE: null,\r\n\r\n LOAD_SPARKLINES_STARTED: null,\r\n LOAD_SPARKLINES_COMPLETED: null,\r\n LOAD_SPARKLINES_FAILED: null,\r\n RESET_SPARKLINE_DATA: null,\r\n\r\n INIT_STARTED: null,\r\n INIT_FAILED: null,\r\n\r\n UPDATE_DATA: null,\r\n\r\n SET_PUBLISH_CANVAS: null,\r\n\r\n SET_WIDGET: null,\r\n})\r\n\r\nconst PayloadSources = keyMirror({\r\n SERVER_ACTION: null,\r\n VIEW_ACTION: null,\r\n})\r\n\r\nexport { ActionTypes, PayloadSources }\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 { MapDataNode } from '../types'\r\nimport AppDispatcher from './appDispatcher'\r\nimport { ActionTypes } from './constants'\r\nimport Store from './store'\r\n\r\nlet _hoveredNode: MapDataNode\r\nlet _mapNodeId: string\r\nlet _sparklinesData: Record = {}\r\nlet _dataVersion: number\r\nlet _isWidget = false\r\nlet _getPublishCanvas: () => HTMLCanvasElement\r\n\r\nclass MapStore extends Store {\r\n getHoveredNode(mapNodeId: string) {\r\n if (mapNodeId === _mapNodeId) return _hoveredNode\r\n return undefined\r\n }\r\n\r\n getSparklines() {\r\n return _sparklinesData\r\n }\r\n\r\n getDataVersion() {\r\n return _dataVersion\r\n }\r\n\r\n isWidget() {\r\n return _isWidget\r\n }\r\n\r\n getPublishCanvas() {\r\n return _getPublishCanvas()\r\n }\r\n}\r\n\r\nvar mapStore = new MapStore()\r\n\r\n// @ts-ignore\r\nmapStore.dispatchToken = AppDispatcher.register(function (payload: any) {\r\n var action = payload.action\r\n\r\n switch (action.type) {\r\n case ActionTypes.RENDER_TREEMAP:\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.SET_HOVERED_NODE:\r\n if (action.node !== _hoveredNode) {\r\n _hoveredNode = action.node\r\n _mapNodeId = action.mapNodeId\r\n mapStore.emitChange()\r\n }\r\n break\r\n\r\n case ActionTypes.CHANGE_TRANSLATE:\r\n // @ts-ignore\r\n _hoveredNode = undefined\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.LOAD_SPARKLINES_STARTED:\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.LOAD_SPARKLINES_COMPLETED:\r\n _sparklinesData = { ..._sparklinesData, ...action.data }\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.RESET_SPARKLINE_DATA:\r\n case ActionTypes.LOAD_SPARKLINES_FAILED:\r\n _sparklinesData = {}\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.UPDATE_DATA:\r\n _dataVersion = action.version\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.SET_PUBLISH_CANVAS:\r\n _getPublishCanvas = action.getPublishCanvas\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.SET_WIDGET:\r\n _isWidget = action.isWidget\r\n mapStore.emitChange()\r\n break\r\n }\r\n})\r\n\r\nexport default mapStore\r\n","import { ReactNode } from 'react'\r\n\r\nexport enum MapTypeId {\r\n Sector = 'sec',\r\n World = 'geo',\r\n SectorFull = 'sec_all',\r\n ETF = 'etf',\r\n Screener = 'screener',\r\n Portfolio = 'portfolio',\r\n ETFHoldings = 'etf_holdings',\r\n}\r\n\r\nexport enum MapSubtypeId {\r\n DayPerf = 'd1',\r\n WeekPerf = 'w1',\r\n MonthPerf = 'w4',\r\n ThreeMonthPerf = 'w13',\r\n SixMonthPerf = 'w26',\r\n YearPerf = 'w52',\r\n YearToDatePerf = 'ytd',\r\n RelativeVolume = 'relvol',\r\n PriceToEarnings = 'pe',\r\n ForwardPriceToEearnings = 'fpe',\r\n PriceEarningsToGrowth = 'peg',\r\n PriceToSellsRatio = 'ps',\r\n PriceToBookRatio = 'pb',\r\n DividendYield = 'div',\r\n EPSGrowth5y = 'eps5y',\r\n FloatShort = 'short',\r\n AnalystRecommendation = 'rec',\r\n EarningsPerf = 'earnperf',\r\n EarningsDate = 'earndate',\r\n // Portfolio\r\n PortfolioGainPct = 'portfolioGainPct',\r\n PortfolioGainUsd = 'portfolioGainUsd',\r\n PortfolioChangePct = 'portfolioChangePct',\r\n PortfolioChangeUsd = 'portfolioChangeUsd',\r\n}\r\n\r\nexport enum ScaleId {\r\n DayPerf = 'default',\r\n WeekPerf = '_5',\r\n MonthPerf = '_10',\r\n ThreeMonthPerf = '_15',\r\n SixMonthPerf = '_20',\r\n YearPerf = '_25',\r\n RelativeVolume = '_relvol',\r\n PriceToEarnings = '_pe',\r\n ForwardPriceToEearnings = '_fpe',\r\n PriceEarningsToGrowth = '_peg',\r\n PriceToSellsRatio = '_ps',\r\n PriceToBookRatio = '_pb',\r\n DividendYield = '_div',\r\n EPSGrowth5y = '_eps5y',\r\n FloatShort = '_short',\r\n AnalystRecommendation = '_rec',\r\n EarningsDate = '_earndate',\r\n // Portfolio\r\n PortfolioPct = '_portfolioPct',\r\n PortfolioUsd = '_portfolioUsd',\r\n}\r\n\r\nexport const enum NodeDepth {\r\n Root,\r\n Sector,\r\n Industry,\r\n Node,\r\n}\r\n\r\nexport interface MapDataRow {\r\n name: string\r\n perf?: number\r\n x: number\r\n y: number\r\n dx: number\r\n dy: number\r\n data: any\r\n depth: NodeDepth\r\n}\r\n\r\nexport interface MapDataRoot {\r\n name: string\r\n children: MapDataSector[]\r\n duplicateTickers: number\r\n hash: string\r\n}\r\n\r\nexport interface MapDataSector extends MapDataRow {\r\n children: MapDataIndustry[]\r\n parent: MapDataRoot\r\n}\r\n\r\nexport interface MapDataIndustry extends MapDataRow {\r\n children: MapDataNode[]\r\n parent: MapDataSector\r\n}\r\n\r\nexport interface MapDataNode extends MapDataRow {\r\n parent: MapDataIndustry\r\n additional?: string\r\n description: string\r\n perfText: string\r\n value: number\r\n}\r\n\r\nexport interface MapData {\r\n sectors: MapDataSector[]\r\n industries: MapDataIndustry[]\r\n nodes: MapDataNode[]\r\n}\r\n\r\nexport type PerfData = {\r\n nodes: Record | Array\r\n additional: Record\r\n subtype: MapSubtypeId\r\n version?: number\r\n hash: string\r\n}\r\n\r\nexport interface MapSubtype {\r\n id: MapSubtypeId\r\n name: string\r\n scaleId: ScaleId\r\n tooltip: string\r\n countIndustryPerf: boolean\r\n countSectorPerf: boolean\r\n}\r\n\r\nexport interface MapType {\r\n name: string\r\n pageTitle: string\r\n nameShort?: string\r\n description: string\r\n type: MapTypeId\r\n subtypes: MapSubtype[]\r\n}\r\n\r\nexport interface Scale {\r\n name: string\r\n tooltip: ReactNode\r\n id: ScaleId\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { ScreenerQuery, ScreenerView } from '../screener/utils'\r\nimport { isMobile } from '../shared/isMobile'\r\nimport { isStockFastRefreshAvailable } from '../shared/isStockFastRefreshAvailable'\r\nimport { EXPANDED_MAP_BODY_CLASSS } from './constants/constants'\r\nimport { LEGEND_HEIGHT, MAP_MIN_HEIGHT, MAP_MIN_WIDTH } from './constants/generator'\r\nimport { Settings, SettingsSmall, SettingsSmallGeo } from './constants/settings'\r\nimport LayoutGenerator from './layout-generator'\r\nimport type Treemap from './treemap'\r\nimport {\r\n MapDataIndustry,\r\n MapDataNode,\r\n MapDataRoot,\r\n MapDataRow,\r\n MapDataSector,\r\n MapSubtypeId,\r\n MapTypeId,\r\n PerfData,\r\n} from './types'\r\n\r\nexport function getOffset(e: MouseEvent | React.MouseEvent) {\r\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\r\n\r\n return {\r\n offsetX: e.clientX - rect.left,\r\n offsetY: e.clientY - rect.top,\r\n }\r\n}\r\n\r\nexport function getIsSmall() {\r\n const query = new URLSearchParams(window.location.search)\r\n return query.get('settings') === 'small'\r\n}\r\n\r\nexport function getSettingsForMapType(type: MapTypeId, isSmall?: boolean) {\r\n if (isSmall) {\r\n if (type === MapTypeId.World) {\r\n return SettingsSmallGeo\r\n }\r\n return SettingsSmall\r\n }\r\n\r\n return Settings\r\n}\r\n\r\ntype DataRow = MapDataRow | MapDataRoot\r\n/**\r\n * We strip parents when serializing data for precomputed JSONs\r\n * but we need to restore them so that we can get them in treemap\r\n */\r\nexport function restoreDataKeys(\r\n data: T[],\r\n perfData: PerfData,\r\n parent?: any\r\n): T[] {\r\n return data.map((row) => {\r\n const newRow = {\r\n ...row,\r\n parent,\r\n perf: (perfData.nodes as Record)[row.name],\r\n additional: perfData.additional[row.name],\r\n }\r\n\r\n newRow.children = row.children ? restoreDataKeys(row.children, perfData, newRow) : undefined\r\n\r\n return newRow\r\n })\r\n}\r\n\r\nexport function splitData(mapData: MapDataRoot) {\r\n let sectors: MapDataSector[] = []\r\n let industries: MapDataIndustry[] = []\r\n let nodes: MapDataNode[] = []\r\n\r\n mapData.children?.forEach((sector) => {\r\n sectors.push(sector)\r\n sector.children?.forEach((industry) => {\r\n industries.push(industry)\r\n industry.children?.forEach((company) => {\r\n if (!(company.dx < 1 || company.dy < 1)) {\r\n nodes.push(company)\r\n }\r\n })\r\n })\r\n })\r\n\r\n return { sectors, industries, nodes }\r\n}\r\n\r\nexport function getMapData(mapData: MapDataRoot, perfData: PerfData) {\r\n const [data] = restoreDataKeys([mapData], perfData)\r\n\r\n return splitData(data)\r\n}\r\n\r\nexport async function fetchBaseData(filename: string, cacheBuster: number) {\r\n const response = await fetch(`/maps/${filename}?rev=${cacheBuster}`)\r\n\r\n return response.json()\r\n}\r\n\r\nfunction getSizeForExpandedMap(element: HTMLElement, wrapper: HTMLElement | null, type: MapTypeId, isSmall: boolean) {\r\n wrapper?.style.removeProperty('max-width')\r\n let size = getRatioSizeForWidth(element.clientWidth, type, isSmall)\r\n const elementHeight = Math.max(window.innerHeight - LEGEND_HEIGHT - 50, MAP_MIN_HEIGHT)\r\n\r\n // We don’t want the map to overflow the height\r\n if (size.height > elementHeight) {\r\n const newWidth = LayoutGenerator.calculateWidth(elementHeight, type, isSmall)\r\n size = {\r\n width: newWidth,\r\n height: LayoutGenerator.calculateHeight(newWidth, type, isSmall),\r\n }\r\n }\r\n\r\n if (wrapper) {\r\n wrapper.style.maxWidth = `${size.width}px`\r\n }\r\n\r\n return size\r\n}\r\n\r\nfunction getRatioSizeForWidth(width: number, type: MapTypeId, isSmall: boolean) {\r\n const mapWidth = Math.max(width, MAP_MIN_WIDTH)\r\n return {\r\n width: mapWidth,\r\n height: LayoutGenerator.calculateHeight(mapWidth, type, isSmall),\r\n }\r\n}\r\n\r\nfunction getSizeRatioBasedMap(element: HTMLElement, wrapper: HTMLElement | null, type: MapTypeId, isSmall: boolean) {\r\n // Remove maxWidth if exiting expanded mode\r\n if (wrapper?.style.maxWidth) {\r\n wrapper.style.removeProperty('max-width')\r\n }\r\n\r\n let size = getRatioSizeForWidth(element.clientWidth, type, isSmall)\r\n\r\n // Set height so that we know if scrollbars are visible\r\n element.style.height = `${size.height + LEGEND_HEIGHT}px`\r\n\r\n // Add a bit of padding if scrollbar is visible and map touches it\r\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\r\n const isMediumScreen =\r\n window.innerWidth > 1430 &&\r\n window.innerWidth < 1450 &&\r\n !document.body.classList.contains('is-screener') &&\r\n !document.body.classList.contains('is-portfolio')\r\n if (isMediumScreen && scrollbarWidth > 0) {\r\n size = getRatioSizeForWidth(element.clientWidth - 10, type, isSmall)\r\n\r\n // This means we would display a horizontal scrollbar, which we don’t want\r\n } else if (size.width !== element.clientWidth) {\r\n size = getRatioSizeForWidth(element.clientWidth, type, isSmall)\r\n }\r\n\r\n element.style.removeProperty('height')\r\n\r\n return size\r\n}\r\n\r\n/**\r\n * Calculate size of the treemap based on w/h ratio and scrollbars visibility\r\n */\r\nexport function getSize(element: HTMLElement | null, type: MapTypeId, isSmall: boolean) {\r\n const canvasWrapper = document.getElementById('canvas-wrapper')\r\n\r\n if (!element) {\r\n return { width: 1, height: 1 }\r\n }\r\n\r\n // Custom width using query param\r\n const query = new URLSearchParams(window.location.search)\r\n if (query.has('width')) {\r\n const width = Number(query.get('width'))\r\n const parsedRatio = query.has('ratio') ? parseFloat(query.get('ratio')!) : undefined\r\n const ratio = Number.isFinite(parsedRatio) ? parsedRatio : undefined\r\n return {\r\n width,\r\n height: LayoutGenerator.calculateHeight(width, type, isSmall, ratio),\r\n }\r\n }\r\n\r\n // Expanded map\r\n if (document.body.classList.contains(EXPANDED_MAP_BODY_CLASSS)) {\r\n return getSizeForExpandedMap(element, canvasWrapper, type, isSmall)\r\n }\r\n\r\n if (type === MapTypeId.ETFHoldings) {\r\n return { height: element.clientHeight, width: element.clientWidth }\r\n }\r\n\r\n return getSizeRatioBasedMap(element, canvasWrapper, type, isSmall)\r\n}\r\n\r\n/**\r\n * Get treemap zoom levels based on env\r\n */\r\nexport function getDefaultZoomLevels() {\r\n if (isMobile()) {\r\n return [1, 1.5]\r\n }\r\n\r\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\r\n return [1, 1.5, 2.25]\r\n }\r\n\r\n return [1, 1.5, 2.25, 3]\r\n}\r\n\r\nexport function parseInitDataAsPerf(data?: MapDataRoot): PerfData | undefined {\r\n if (!data) return\r\n\r\n const nodes: Record = {}\r\n const additional: Record = {}\r\n\r\n for (const sector of data.children) {\r\n for (const industry of sector.children) {\r\n for (const node of industry.children) {\r\n if (node.perf !== undefined) {\r\n nodes[node.name] = node.perf\r\n }\r\n if (node.additional !== undefined) {\r\n additional[node.name] = node.additional\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n nodes,\r\n additional,\r\n subtype: MapSubtypeId.DayPerf,\r\n version: 1,\r\n hash: data.hash,\r\n }\r\n}\r\n\r\nconst MAX_SPARKLINES = 120\r\nconst HOVER_TOP_ROW_HEIGHT = 100\r\nconst HOVER_BORDER_WIDTH = 4\r\nconst ROW_HEIGHT = 30\r\nconst ROW_HEIGHT_SMALL = 24\r\nconst ROW_HEIGHT_BREAKPOINT = 15\r\n\r\nexport function getVisibleTooltipTickers(node?: MapDataNode) {\r\n if (!node) return []\r\n\r\n const industryTickers = node.parent.children\r\n const isSmall = industryTickers.length > ROW_HEIGHT_BREAKPOINT\r\n const rowHeight = isSmall ? ROW_HEIGHT_SMALL : ROW_HEIGHT\r\n const visibleRows = Math.floor((window.innerHeight - HOVER_TOP_ROW_HEIGHT - 2 * HOVER_BORDER_WIDTH) / rowHeight)\r\n const visibleChildren = industryTickers\r\n .slice()\r\n .sort((a, b) => b.dx * b.dy - a.dx * a.dy)\r\n .slice(0, Math.min(visibleRows, MAX_SPARKLINES))\r\n .map((n) => n.name)\r\n\r\n return visibleChildren\r\n}\r\n\r\nexport function onNodeClick({\r\n treemap,\r\n node,\r\n industry,\r\n sector,\r\n}: {\r\n treemap: Treemap\r\n node?: MapDataNode\r\n industry?: MapDataIndustry\r\n sector?: MapDataSector\r\n}) {\r\n if (node) {\r\n window.open(`/quote.ashx?t=${node.name}`)\r\n return\r\n }\r\n\r\n const query = new URLSearchParams()\r\n query.set(ScreenerQuery.View, ScreenerView.Overview.toString())\r\n\r\n // Use ticker filter for ETFs\r\n if (treemap.type === MapTypeId.ETF) {\r\n let tickers: string[] = []\r\n if (industry) {\r\n tickers = industry.children.map((node) => node.name)\r\n } else if (sector) {\r\n tickers = sector.children.flatMap((industry) => industry.children.map((node) => node.name))\r\n }\r\n\r\n if (tickers.length) {\r\n query.set(ScreenerQuery.Tickers, tickers.join(','))\r\n window.open(`/screener.ashx?${query}`)\r\n }\r\n\r\n return\r\n }\r\n\r\n if (industry) {\r\n const id = industry.name.replace(/[^a-zA-Z]/g, '').toLowerCase()\r\n const filter = treemap.type === MapTypeId.World ? 'geo' : 'ind'\r\n\r\n query.set(ScreenerQuery.Filters, `${filter}_${id}`)\r\n window.open(`/screener.ashx?${query}`)\r\n } else if (sector) {\r\n const id = sector.name.replace(/[^a-zA-Z]/g, '').toLowerCase()\r\n\r\n query.set(ScreenerQuery.Filters, `sec_${id}`)\r\n window.open(`/screener.ashx?${query}`)\r\n }\r\n}\r\n\r\nenum MapsPollingIntervalInMs {\r\n Free = 180000,\r\n Elite = 3000,\r\n EliteStocksReduced = 60000,\r\n}\r\n\r\nexport function getMapsRefreshInterval({\r\n base = MapsPollingIntervalInMs.Elite,\r\n reduced = MapsPollingIntervalInMs.EliteStocksReduced,\r\n free = MapsPollingIntervalInMs.Free,\r\n}: { base?: number; reduced?: number; free?: number } = {}) {\r\n const isPremium = FinvizSettings.hasUserPremium\r\n let customRefreshInterval = base\r\n if (!isPremium) {\r\n customRefreshInterval = free\r\n } else if (!isStockFastRefreshAvailable()) {\r\n customRefreshInterval = reduced\r\n }\r\n\r\n return customRefreshInterval\r\n}\r\n","export enum ScreenerQuery {\r\n View = 'v',\r\n Signal = 's',\r\n Order = 'o',\r\n Tickers = 't',\r\n Filters = 'f',\r\n FilterTab = 'ft',\r\n MapSubtype = 'st',\r\n}\r\n\r\nexport enum ScreenerFilter {\r\n MarketCap = 'cap',\r\n Index = 'idx',\r\n Sector = 'sec',\r\n Industry = 'ind',\r\n AverageVolume = 'sh_avgvol',\r\n}\r\n\r\nexport enum ScreenerAddtionalQuery {\r\n ShowEtf = 'show_etf',\r\n}\r\n\r\nexport enum ScreenerView {\r\n Overview = 11,\r\n Maps = 71,\r\n Bubbles = 72,\r\n}\r\n\r\nexport function eventListenerRegister(el: HTMLElement, eventName: string, handler: (...args: any[]) => any) {\r\n el.addEventListener(eventName, handler)\r\n\r\n return () => {\r\n el.removeEventListener(eventName, handler)\r\n }\r\n}\r\n\r\nexport function textContent(el: HTMLElement) {\r\n return el.textContent || el.innerText\r\n}\r\n\r\nexport function ScreenerGetOptionsList(select: HTMLSelectElement) {\r\n const options = select.getAttribute('data-selected')?.split('|') ?? [],\r\n result = []\r\n for (var i = 0, len = options.length; i < len; i++) {\r\n var option = options[i]\r\n for (var j = 0; j < select.children.length; j++) {\r\n var optionEl = select.children[j] as HTMLOptionElement\r\n if (optionEl.value === option) {\r\n result.push({\r\n key: option,\r\n value: textContent(optionEl),\r\n })\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport function ScreenerRenderCustomModal(select: any) {\r\n const filter = select.getAttribute('data-filter')\r\n const customWrapper = document.getElementById('fsm_' + filter) as HTMLElement\r\n if (customWrapper) {\r\n select.style.display = 'none'\r\n customWrapper.style.display = 'block'\r\n const input = document.getElementById('fsmi_' + filter) as HTMLInputElement\r\n const options = ScreenerGetOptionsList(select)\r\n const arr = []\r\n for (let i = 0, len = options.length; i < len; i++) {\r\n arr.push(options[i].value)\r\n }\r\n input.value = arr.join(', ')\r\n }\r\n}\r\n\r\nconst DATE_REGEX = /^[0-9]{2}[-][0-9]{2}[-][0-9]{4}/\r\n\r\nexport function getIsOptionDateRange(option: string) {\r\n if (!option.includes('x')) return false\r\n\r\n const [from, to] = option.split('x')\r\n const [isValidFromDate, isValidToDate] = [from, to].map((value) => {\r\n if (DATE_REGEX.test(value)) {\r\n return !Number.isNaN(new Date(value.replace(/-/g, '/')).getTime())\r\n }\r\n return false\r\n })\r\n\r\n return isValidFromDate || isValidToDate\r\n}\r\n\r\nexport function getInitialDateFromSelectedValues(selectedValues: string[]) {\r\n const initialDate = selectedValues.find(getIsOptionDateRange)\r\n\r\n if (initialDate) {\r\n return initialDate.split('x').map((date) => (DATE_REGEX.test(date) ? date.replace(/-/g, '/') : undefined))\r\n }\r\n}\r\n\r\nexport function dateRangeToFilterString({ from, to }: { from?: string; to?: string }) {\r\n return from || to ? `${from ?? ''}x${to ?? ''}`.replace(/\\//g, '-') : null\r\n}\r\n\r\n/**\r\n * Creates link for given view & subview and ignores any additional query params\r\n */\r\nexport function getQueryForView(view?: ScreenerView, allowedParams: string[] = [], baseQuery = window.location.search) {\r\n const query = new URLSearchParams(baseQuery)\r\n const allowList = [...allowedParams, ...Object.values(ScreenerQuery)]\r\n\r\n /**\r\n * Seems like `query` is a live property, so we can’t use `query.forEach` to delete,\r\n * so we need to copy keys before looping.\r\n * https://stackoverflow.com/questions/60522437\r\n */\r\n const keys = Array.from(query.keys())\r\n\r\n keys.forEach((key) => {\r\n if (!allowList.includes(key)) {\r\n query.delete(key)\r\n }\r\n })\r\n\r\n const [, originalView, settings = 0] = query.get(ScreenerQuery.View)?.match(/(\\d{2})(\\d)/) ?? []\r\n\r\n if (view ?? originalView) {\r\n query.set(ScreenerQuery.View, `${view ?? originalView}${settings}`)\r\n }\r\n\r\n return query\r\n}\r\n\r\n/**\r\n * Parse screener `f` query param to object\r\n */\r\nexport function parseScreenerFilters(baseQuery = window.location.search) {\r\n const query = new URLSearchParams(baseQuery)\r\n const filtersString = query.get(ScreenerQuery.Filters)\r\n\r\n if (!filtersString) return {}\r\n\r\n return Object.fromEntries(\r\n filtersString.split(',').map((f) => {\r\n const lastUnderscore = f.lastIndexOf('_')\r\n const key = f.substring(0, lastUnderscore)\r\n const value = f.substring(lastUnderscore + 1)\r\n return [key, value.split('|')]\r\n })\r\n )\r\n}\r\n\r\n/**\r\n * Stringify screener `f` query param\r\n */\r\nexport function stringifyScreenerFilters(filters: Record) {\r\n return Object.entries(filters)\r\n .filter(([, value]) => String(value).length > 0)\r\n .map(([key, value]) => `${key}_${value.join('|')}`)\r\n .join(',')\r\n}\r\n\r\nexport function rangesToFilter(\r\n ranges: {\r\n from: string\r\n to: string\r\n }[],\r\n rangeSuffixes?: string[],\r\n delimiter = 'x',\r\n rangeDelimiter = 'to'\r\n) {\r\n return ranges.reduce((filter, range, index) => {\r\n const { from, to } = range\r\n const rangeStr = from || to ? `${from}${rangeDelimiter}${to}${rangeSuffixes?.[index] ?? ''}` : ''\r\n\r\n let currentFilter = filter\r\n if (index > 0) currentFilter += delimiter\r\n return currentFilter + rangeStr\r\n }, '')\r\n}\r\n","import { SpecificChartFunctionality } from '../../main/constants'\r\nimport { ChartConfigChartPaneElement, Instrument, LayoutType, ScaleType, TIMEFRAME, Theme } from '../charts-lib'\r\nimport { getParsedCookies } from './cookie'\r\n\r\ninterface PaneElementProps extends ChartConfigChartPaneElement {\r\n label?: string\r\n fromDate?: string\r\n toDate?: string\r\n min?: number\r\n tickers: string[]\r\n}\r\n\r\ninterface StaticChartConfigProps {\r\n width?: number\r\n height?: number\r\n ticker: string\r\n timeframe: TIMEFRAME\r\n paneElements: PaneElementProps[]\r\n specificChartFunctionality?: SpecificChartFunctionality\r\n colorsOverride?: Array\r\n theme?: Theme\r\n colors?: ReturnType\r\n refreshData?: boolean\r\n}\r\n\r\nexport function getStaticChartConfig({\r\n width = 800,\r\n height = 400,\r\n ticker,\r\n timeframe,\r\n paneElements,\r\n specificChartFunctionality = SpecificChartFunctionality.default,\r\n colorsOverride,\r\n theme,\r\n colors = getCustomColorsFromCookies(),\r\n refreshData = false,\r\n}: StaticChartConfigProps) {\r\n return {\r\n layout: LayoutType['1h1v'],\r\n width,\r\n height,\r\n barWidth: 1,\r\n barMargin: 0,\r\n scrollable: false,\r\n editable: false,\r\n specificChartFunctionality,\r\n colorsOverride,\r\n theme,\r\n colors,\r\n charts: [\r\n {\r\n width: 0,\r\n premarket: false,\r\n aftermarket: false,\r\n dateRange: null,\r\n height,\r\n timeframe,\r\n scale: ScaleType.Linear,\r\n ticker: ticker,\r\n leftOffset: 0,\r\n instrument: Instrument.Stock,\r\n refreshData,\r\n stretch: true,\r\n panes: [\r\n {\r\n height,\r\n elements: paneElements,\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n}\r\n\r\nexport function getCustomColorsFromCookies() {\r\n try {\r\n return JSON.parse(getParsedCookies('customColors') as string)\r\n } catch {\r\n return undefined\r\n }\r\n}\r\n","import { waitForPreviousPromise } from '../../main/services/wait-for-previous-promise'\r\n\r\nfunction getCurrentDateInMs() {\r\n return new Date().valueOf()\r\n}\r\n\r\nfunction getIsDocumentVisible() {\r\n return document.visibilityState === 'visible' || document.hidden === false\r\n}\r\n\r\n/**\r\n * Invoke a callback when page visibility changes. Turns the callback into a promise\r\n * and waits for the previous promise to finish before invoking it again\r\n */\r\nexport function notifyOnVisibilityChange(callback: (visible: boolean) => void | Promise) {\r\n const promisifiedCallback = waitForPreviousPromise(() => callback(getIsDocumentVisible()))\r\n\r\n document.addEventListener('visibilitychange', promisifiedCallback)\r\n\r\n return {\r\n callback: promisifiedCallback,\r\n unsubscribe: () => {\r\n document.removeEventListener('visibilitychange', promisifiedCallback)\r\n },\r\n }\r\n}\r\n\r\n/**\r\n * Calls callback based on interval and document visibility. Returns unsubscribe function.\r\n * How it works:\r\n * - document is hidden: interval cleared\r\n * - document visible: interval set-up with remaining time from last interval. Call immediately if interval elapsed\r\n */\r\nexport function intervalCallbackOnWindowVisible(\r\n interval: number | (() => number),\r\n callback: () => void | Promise\r\n) {\r\n const getInterval = typeof interval === 'function' ? interval : () => interval\r\n let refreshPromise: Promise | void | null = null\r\n let nextRefresh = getCurrentDateInMs() + getInterval()\r\n let refreshTimeout: NodeJS.Timeout | null = null\r\n\r\n async function refresh() {\r\n nextRefresh = getCurrentDateInMs() + getInterval()\r\n // Call callback asynchronously\r\n refreshPromise = callback()\r\n await refreshPromise\r\n refreshPromise = null\r\n\r\n // Queue next refresh\r\n if (getIsDocumentVisible()) {\r\n refreshTimeout = setTimeout(refresh, Math.max(0, nextRefresh - getCurrentDateInMs()))\r\n }\r\n }\r\n\r\n /**\r\n * Handle the visibility change event, compute callback remaining time or call immediately\r\n */\r\n function handleVisibilityChange() {\r\n if (refreshTimeout) clearTimeout(refreshTimeout)\r\n\r\n if (getIsDocumentVisible() && refreshPromise === null) {\r\n const currentDateMs = getCurrentDateInMs()\r\n // Refresh if the document is stale, otherwise set a timeout to refresh later\r\n if (nextRefresh <= currentDateMs) {\r\n refresh()\r\n } else {\r\n refreshTimeout = setTimeout(refresh, nextRefresh - currentDateMs)\r\n }\r\n }\r\n }\r\n\r\n if (getIsDocumentVisible()) {\r\n refreshTimeout = setTimeout(refresh, getInterval())\r\n }\r\n\r\n document.addEventListener('visibilitychange', handleVisibilityChange)\r\n\r\n return () => {\r\n if (refreshTimeout) clearTimeout(refreshTimeout)\r\n document.removeEventListener('visibilitychange', handleVisibilityChange)\r\n }\r\n}\r\n","import { getDate } from '../header/utils'\r\n\r\n// Keep in sync with the original in charts repo in app/constants/common.ts\r\nexport const PREMARKET_AFTERMARKET_HOURS = 2.5\r\n\r\n/*\r\n * Keep in sync with the original (Utils static method) in charts repo in app/utils.ts\r\n * See line 15, we use getDate instead of convertLocalToNyTime\r\n */\r\nexport function isStockFastRefreshAvailable(hasPremarket = true, hasAftermarket = true, bufferMinutes = 30) {\r\n const MARKET_START = { hours: 9, minutes: 30 }\r\n const MARKET_END = { hours: 16, minutes: 0 }\r\n const getMinutes = ({ hours, minutes }: { hours: number; minutes: number }) => hours * 60 + minutes\r\n\r\n const date = getDate()\r\n const dayOfWeek = date.getDay()\r\n const currentDayMinutes = date.getHours() * 60 + date.getMinutes()\r\n\r\n const premarketMinutes = hasPremarket ? PREMARKET_AFTERMARKET_HOURS * 60 : 0\r\n const aftermarketMinutes = hasAftermarket ? PREMARKET_AFTERMARKET_HOURS * 60 : 0\r\n\r\n const isWeekend = dayOfWeek === 0 || dayOfWeek === 6\r\n const isOpen = getMinutes(MARKET_START) - premarketMinutes - bufferMinutes <= currentDayMinutes\r\n const isClosed = getMinutes(MARKET_END) + aftermarketMinutes + bufferMinutes <= currentDayMinutes\r\n return !isWeekend && isOpen && !isClosed\r\n}\r\n","export function parseJSONFromScript(id: string, doc: Document = document): T | null {\r\n const el = doc.getElementById(id)\r\n const isValidElement = el && el.tagName === 'SCRIPT' && el.getAttribute('type') === 'application/json'\r\n\r\n if (!isValidElement) {\r\n window.Sentry?.captureMessage('parseJSONFromScript', {\r\n extra: {\r\n el: el ? 'yes' : 'no',\r\n tagName: el?.tagName,\r\n type: el?.getAttribute('type'),\r\n },\r\n })\r\n }\r\n\r\n if (!isValidElement) return null\r\n\r\n try {\r\n return JSON.parse(el.textContent!)\r\n } catch (e) {\r\n Sentry.captureException(e)\r\n return null\r\n }\r\n}\r\n","import * as React from 'react'\r\n\r\nexport interface DelayedProps {\r\n /**\r\n * The delay in milliseconds before the component is rendered.\r\n *\r\n * @default 300\r\n */\r\n delay?: number\r\n\r\n /**\r\n * Delay in milliseconds before rendering timeout state.\r\n */\r\n timeout?: number\r\n\r\n /**\r\n * Throw on timeout (suspense)\r\n */\r\n throwOnTimeout?: boolean\r\n\r\n /**\r\n * Component visible during the delay.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n delayComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when timeout is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n timeoutComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when delay is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n children?: React.ReactNode\r\n}\r\n\r\nexport function Delayed({\r\n delay = 300,\r\n timeout = 0,\r\n throwOnTimeout = false,\r\n delayComponent,\r\n timeoutComponent,\r\n children,\r\n}: DelayedProps) {\r\n const [visible, setVisible] = React.useState(false)\r\n const [hasTimedOut, setHasTimedOut] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const visibilityTimeout = window.setTimeout(() => setVisible(true), delay)\r\n\r\n let failedTimeout: number\r\n if (timeout > 0) {\r\n failedTimeout = window.setTimeout(() => {\r\n setHasTimedOut(true)\r\n if (throwOnTimeout) throw new Error()\r\n }, timeout)\r\n }\r\n\r\n return () => {\r\n clearTimeout(visibilityTimeout)\r\n clearTimeout(failedTimeout)\r\n }\r\n }, [delay, timeout, throwOnTimeout])\r\n\r\n if (!visible) return <>{delayComponent}\r\n\r\n if (hasTimedOut) {\r\n return <>{timeoutComponent}\r\n }\r\n\r\n return <>{children}\r\n}\r\n","import * as React from 'react'\r\n\r\nexport type NotificationContextType = ReturnType\r\n\r\nexport enum NotificationPosition {\r\n TopLeft,\r\n TopRight,\r\n BottomLeft,\r\n BottomRight,\r\n}\r\n\r\nexport interface NotificationOptions {\r\n position?: NotificationPosition\r\n inline?: boolean\r\n}\r\n\r\nexport const NotificationContext = React.createContext<{\r\n show: (element: JSX.Element, options?: NotificationOptions) => void\r\n hide: () => void\r\n}>({\r\n show: () => {},\r\n hide: () => {},\r\n})\r\n\r\nexport function useNotification() {\r\n return React.useContext(NotificationContext)\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\nimport { Dialog, useDialogState } from 'reakit/Dialog'\r\nimport { Portal } from 'reakit/Portal'\r\n\r\nimport { getVisualViewport, useVisualViewport } from '../../hooks/useVisualViewport'\r\nimport { COMPONENT_ANIMATION_DURATION } from '../constants'\r\nimport { getExtendedDialogState } from '../dialog'\r\nimport { NotificationContext, NotificationOptions, NotificationPosition } from './hooks'\r\n\r\ninterface NotificationState {\r\n element: JSX.Element\r\n options: Partial\r\n}\r\n\r\nexport function NotificationWrapper(props: React.PropsWithChildren) {\r\n const state = useDialogState({ modal: false, animated: COMPONENT_ANIMATION_DURATION })\r\n const [notification, setNotification] = React.useState(null)\r\n const { isFullyClosed, isFullyOpened } = getExtendedDialogState(state)\r\n const { viewport, setViewport } = useVisualViewport({ enabled: !!notification })\r\n\r\n const context = React.useRef({\r\n show: (element: JSX.Element, options: Partial = {}) => {\r\n setViewport(() => getVisualViewport(window.visualViewport))\r\n setNotification({ element, options })\r\n state.show()\r\n },\r\n hide: state.hide,\r\n })\r\n\r\n const positionClass = React.useMemo(() => {\r\n const { position = NotificationPosition.BottomLeft } = notification?.options ?? {}\r\n return {\r\n '[--inset-t:1rem] items-start pt-inset-top': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.TopRight,\r\n ].includes(position),\r\n '[--inset-r:1rem] justify-end landscape-secondary:pr-inset-right': [\r\n NotificationPosition.TopRight,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-b:1rem] items-end pb-inset-bottom': [\r\n NotificationPosition.BottomLeft,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-l:1rem] justify-start landscape-primary:pl-inset-left': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.BottomLeft,\r\n ].includes(position),\r\n }\r\n }, [notification?.options])\r\n\r\n const WrapperComponent = React.useMemo(\r\n () => (notification?.options.inline ? React.Fragment : Portal),\r\n [notification?.options.inline]\r\n )\r\n\r\n return (\r\n \r\n {props.children}\r\n {!isFullyClosed && (\r\n \r\n \r\n {({ onTransitionEnd, onAnimationEnd, ...innerProps }) => (\r\n \r\n \r\n {notification?.element}\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 { NotificationContextType, useNotification } from './hooks'\r\n\r\nexport function withNotificationContext(\r\n WrappedComponent: React.ComponentType\r\n) {\r\n const displayName = WrappedComponent.displayName ?? WrappedComponent.name ?? 'Component'\r\n const WithNotificationContext = (props: Omit) => {\r\n const notification = useNotification()\r\n return \r\n }\r\n\r\n WithNotificationContext.displayName = `withNotificationContext(${displayName})`\r\n\r\n return WithNotificationContext\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { useNotification } from './hooks'\r\n\r\ninterface NotificationProps {\r\n className?: string\r\n /**\r\n * Default button text\r\n * @default Close\r\n */\r\n closeText?: string\r\n\r\n /**\r\n * Custom buttons. Overrides `closeText`\r\n */\r\n actions?: JSX.Element\r\n\r\n /**\r\n * When set, the notification will automatically close\r\n */\r\n timeoutInMs?: number\r\n}\r\n\r\nexport function Notification({\r\n className,\r\n closeText = 'Close',\r\n actions,\r\n timeoutInMs,\r\n children,\r\n}: React.PropsWithChildren) {\r\n const notification = useNotification()\r\n\r\n React.useEffect(() => {\r\n let timeoutId: NodeJS.Timeout\r\n if (timeoutInMs) {\r\n timeoutId = setTimeout(() => {\r\n notification.hide()\r\n }, timeoutInMs)\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId)\r\n }\r\n }\r\n }, [notification, timeoutInMs])\r\n\r\n return (\r\n \r\n
{children}
\r\n
\r\n {actions ?? (\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\nimport * as Reakit from 'reakit/Popover'\r\nimport { Portal } from 'reakit/Portal'\r\n\r\nimport { usePopoverMaxHeight } from '../../hooks/use-popover-maxHeight'\r\nimport { useWindowSize } from '../../hooks/use-window-size'\r\nimport { Box, BoxProps, BoxTheme } from '../box'\r\nimport { getExtendedDialogState, useZIndex } from '../dialog'\r\nimport { TooltipArrow } from '../tooltip/tooltip-arrow'\r\nimport { PopoverStateReturn } from './hooks'\r\n\r\nexport interface PopoverProps extends BoxProps, Pick {\r\n /**\r\n * The returned object from `usePopoverState`\r\n */\r\n state: PopoverStateReturn\r\n\r\n /**\r\n * Focus the popover when it opens\r\n *\r\n * @default true\r\n */\r\n focusOnShow?: Reakit.PopoverProps['unstable_autoFocusOnShow']\r\n\r\n /**\r\n * Focus the anchor element when it closes\r\n *\r\n * @default true\r\n */\r\n focusOnHide?: Reakit.PopoverProps['unstable_autoFocusOnHide']\r\n\r\n /**\r\n * Focus the anchor element when it closes\r\n *\r\n * @default undefined\r\n */\r\n finalFocusRef?: Reakit.PopoverProps['unstable_finalFocusRef']\r\n\r\n /**\r\n * Hides when clicked outside of popover, works with changing focus from the trigger component to another one\r\n *\r\n * @default true\r\n */\r\n hideOnClickOutside?: Reakit.PopoverProps['hideOnClickOutside']\r\n\r\n /**\r\n * Overlay click callback or if false is provided, overlay click calls hide func on popover state object\r\n *\r\n * @default undefined\r\n */\r\n onOverlayClick?: (() => void) | false\r\n\r\n /**\r\n * Popover wrapper css style object\r\n *\r\n * @default undefined\r\n */\r\n popoverWrapperStyle?: React.CSSProperties\r\n\r\n /**\r\n * Show popover arrow\r\n *\r\n * @default false\r\n */\r\n hasArrow?: boolean\r\n\r\n /**\r\n * Enable or disable backdrop click events\r\n *\r\n * @default true\r\n */\r\n hasBackdrop?: boolean\r\n\r\n /**\r\n * Set the popover to height to be limited by the viewport instead of having full height\r\n *\r\n * @default false\r\n */\r\n hasViewportHeightLimit?: boolean\r\n\r\n /**\r\n * Set the popover max-width to be limited by the trigger button\r\n */\r\n hasButtonWidthLimit?: boolean\r\n\r\n /**\r\n * Can be used together with `hasViewportHeightLimit` to limit the height of the popover\r\n *\r\n * @default undefined\r\n */\r\n popoverMaxHeight?: number\r\n}\r\n\r\nexport function Popover({\r\n state,\r\n children,\r\n focusOnShow = true,\r\n focusOnHide = true,\r\n finalFocusRef,\r\n 'aria-label': ariaLabel,\r\n hide,\r\n hideOnClickOutside = true,\r\n hasArrow = false,\r\n hasBackdrop = true,\r\n onOverlayClick,\r\n popoverWrapperStyle,\r\n popoverMaxHeight = Number.MAX_SAFE_INTEGER,\r\n theme = 'light',\r\n hasViewportHeightLimit = false,\r\n hasButtonWidthLimit = false,\r\n ...props\r\n}: PopoverProps) {\r\n const zIndex = useZIndex()\r\n const { isFullyClosed } = getExtendedDialogState(state)\r\n const { innerHeight } = useWindowSize({ isWatching: !isFullyClosed })\r\n\r\n const buttonElement = state.unstable_referenceRef.current\r\n const maxHeightStyle = usePopoverMaxHeight({\r\n maxHeightLimit: popoverMaxHeight,\r\n hasViewportHeightLimit,\r\n offsets: state.offsets,\r\n state,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (!buttonElement || !state.visible || !(hasViewportHeightLimit || hasButtonWidthLimit)) return\r\n\r\n const buttonRect = buttonElement.getBoundingClientRect()\r\n const popoverId = buttonElement.getAttribute('aria-controls')\r\n const popoverWrapper = popoverId ? document.getElementById(popoverId) : null\r\n\r\n // Limit popover max-width to be width of the trigger button\r\n if (hasButtonWidthLimit) {\r\n popoverWrapper?.style.setProperty('max-width', `${buttonRect.width}px`)\r\n }\r\n }, [\r\n state.visible,\r\n state.offsets,\r\n buttonElement,\r\n hasViewportHeightLimit,\r\n hasButtonWidthLimit,\r\n innerHeight,\r\n state.placement,\r\n popoverMaxHeight,\r\n ])\r\n\r\n if (isFullyClosed) return null\r\n\r\n return (\r\n \r\n \r\n {({ onTransitionEnd, onAnimationEnd, ...innerProps }) => (\r\n <>\r\n {\r\n // prevents from page scroll when clicked outside of popover\r\n event.preventDefault()\r\n }}\r\n />\r\n \r\n \r\n {hasArrow && (\r\n \r\n \r\n \r\n )}\r\n {children}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\nimport * as Reakit from 'reakit/Popover'\r\n\r\nimport { COMPONENT_ANIMATION_DURATION } from '../constants'\r\n\r\nexport type PopoverStateReturn = ReturnType\r\n\r\nconst DEFAULT_OFFSET: [number, number] = [0, 5]\r\nconst HOVER_TIMEOUT = 150\r\n\r\nconst preventDefault = (ev: React.MouseEvent) => {\r\n ev.preventDefault()\r\n}\r\n\r\n/**\r\n * Hook which provides state to dialogs\r\n */\r\nexport function usePopoverState(settings?: Reakit.PopoverInitialState) {\r\n const offsets = (settings?.unstable_offset ?? DEFAULT_OFFSET) as [number, number]\r\n const popover = Reakit.usePopoverState({\r\n ...settings,\r\n placement: settings?.placement ?? 'bottom-start',\r\n unstable_offset: offsets,\r\n animated: COMPONENT_ANIMATION_DURATION,\r\n modal: false,\r\n })\r\n\r\n return { ...popover, offsets }\r\n}\r\n\r\nexport function useHoverPopover(settings?: Reakit.PopoverInitialState) {\r\n const popover = usePopoverState(settings)\r\n const showTimeout = React.useRef(null)\r\n const hideTimeout = React.useRef(null)\r\n\r\n const clearTimeouts = React.useRef(() => {\r\n if (showTimeout.current !== null) {\r\n window.clearTimeout(showTimeout.current)\r\n }\r\n if (hideTimeout.current !== null) {\r\n window.clearTimeout(hideTimeout.current)\r\n }\r\n })\r\n\r\n const showPopover = React.useRef(() => {\r\n clearTimeouts.current()\r\n showTimeout.current = window.setTimeout(() => {\r\n popover.show()\r\n }, HOVER_TIMEOUT)\r\n })\r\n\r\n const hidePopover = React.useRef(() => {\r\n clearTimeouts.current()\r\n hideTimeout.current = window.setTimeout(() => {\r\n popover.hide()\r\n }, HOVER_TIMEOUT)\r\n })\r\n\r\n // Unmount cleanup\r\n React.useEffect(() => () => clearTimeouts.current(), [])\r\n\r\n return {\r\n ...popover,\r\n show: showPopover.current,\r\n hide: hidePopover.current,\r\n onMouseOver: showPopover.current,\r\n onMouseOut: hidePopover.current,\r\n onMouseDown: preventDefault,\r\n }\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\nimport * as Reakit from 'reakit/Popover'\r\n\r\nimport { useZIndex } from '../dialog'\r\n\r\ninterface PopoverButtonProps extends Reakit.PopoverDisclosureHTMLProps {\r\n state: Reakit.PopoverStateReturn\r\n as?: React.ElementType\r\n}\r\n/**\r\n * The trigger button component which handles ref & focus return, etc.\r\n */\r\nexport const PopoverTrigger = React.forwardRef(\r\n ({ state, ...props }: PopoverButtonProps, ref: React.ForwardedRef) => {\r\n const zIndex = useZIndex()\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n }\r\n)\r\n","import * as React from 'react'\r\n\r\nimport { PopoverStateReturn } from '../popover'\r\nimport { SelectItem } from './types'\r\n\r\nfunction getSelectedItemIndex(items: SelectItem[], value: unknown) {\r\n if (!value && value !== 0) return -1\r\n\r\n return items.findIndex((item) => item.value === value)\r\n}\r\n\r\n/**\r\n * Hook which handles select state and returns onChange handler\r\n */\r\nexport function useSelect>(\r\n state: PopoverStateReturn,\r\n defaultValue: ValueType | undefined,\r\n items: ItemType[],\r\n onChange: (item: ItemType) => void\r\n) {\r\n const [selectedIndex, setSelectedIndex] = React.useState(getSelectedItemIndex(items, defaultValue))\r\n const closePopover = React.useRef(() => state.hide())\r\n\r\n // Update select value on change from outside\r\n React.useEffect(() => {\r\n const newIndex = getSelectedItemIndex(items, defaultValue)\r\n setSelectedIndex(newIndex)\r\n }, [items, selectedIndex, defaultValue])\r\n\r\n const onItemChange = React.useCallback(\r\n (index: number, closeOnSelect = true) => {\r\n const selectedItem = items[index]\r\n setSelectedIndex(index)\r\n\r\n if (closeOnSelect) closePopover.current()\r\n onChange(selectedItem)\r\n\r\n if (!selectedItem.href || !selectedItem.reloadDocument) {\r\n return\r\n }\r\n\r\n if (typeof selectedItem.href === 'string') {\r\n window.location.href = selectedItem.href\r\n return\r\n }\r\n\r\n const newUrl = new URL(selectedItem.href.pathname!, window.location.href)\r\n newUrl.search = selectedItem.href.search ?? ''\r\n newUrl.hash = selectedItem.href.hash ?? ''\r\n\r\n window.location.href = newUrl.toString()\r\n },\r\n [items, onChange, setSelectedIndex]\r\n )\r\n\r\n return { selectedIndex, onItemChange }\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button, ButtonHTMLProps, ButtonProps, ButtonSize, ButtonTheme, ButtonThemeType } from '../button'\r\nimport { Delayed } from '../delayed'\r\nimport { Icon } from '../icon'\r\nimport { PopoverStateReturn, PopoverTrigger } from '../popover'\r\nimport { Spinner } from '../spinner'\r\n\r\nfunction getButtonProps(theme: ButtonTheme, active: boolean): Omit {\r\n switch (theme) {\r\n case ButtonTheme.light:\r\n return {\r\n theme: 'transparent',\r\n contentClass: 'font-normal truncate',\r\n className: classnames(\r\n 'border bg-white disabled:border-gray-100 disabled:bg-gray-50 disabled:text-gray-500 dark:bg-gray-800',\r\n {\r\n 'border-gray-100 hover:border-gray-300 disabled:hover:border-gray-100 dark:border-gray-600 dark:hover:border-gray-400 dark:disabled:border-gray-700':\r\n !active,\r\n 'border-blue-400 dark:border-blue-400': active,\r\n }\r\n ),\r\n rightContent: ,\r\n }\r\n case ButtonTheme.dark:\r\n return {\r\n theme: 'transparent',\r\n contentClass: 'font-normal truncate',\r\n className: classnames('border bg-gray-800 text-gray-50 disabled:border-gray-700 disabled:text-gray-500', {\r\n 'border-gray-600 hover:border-gray-400': !active,\r\n 'border-blue-400': active,\r\n }),\r\n rightContent: ,\r\n }\r\n default:\r\n return {}\r\n }\r\n}\r\n\r\nexport interface SelectButtonProps extends ButtonProps, ButtonHTMLProps {\r\n /**\r\n * Theme for the button\r\n *\r\n * @default light\r\n */\r\n theme?: ButtonThemeType\r\n\r\n isLoading?: boolean\r\n\r\n state?: PopoverStateReturn\r\n\r\n isPopoverTrigger?: boolean\r\n}\r\n\r\nexport function SelectButton({\r\n state,\r\n size = 'regular',\r\n theme = 'light',\r\n isPopoverTrigger = true,\r\n isLoading,\r\n ...props\r\n}: SelectButtonProps) {\r\n const themeProps = React.useMemo(() => getButtonProps(ButtonTheme[theme], !!props.active), [theme, props.active])\r\n\r\n return (\r\n \r\n \r\n \r\n ) : (\r\n props.rightContent ?? themeProps.rightContent\r\n )\r\n }\r\n >\r\n {props.children}\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\nimport { useInRouterContext } from 'react-router-dom'\r\nimport * as Reakit from 'reakit/Popover'\r\n\r\nimport { isMobile } from '../../../app/shared/isMobile'\r\nimport { getExtendedDialogState } from '../dialog'\r\nimport { ListItem } from '../list'\r\nimport { PopoverStateReturn, usePopoverState } from '../popover'\r\nimport { Label } from '../typography'\r\nimport { useSelect } from './hooks'\r\nimport { NativeSelect, NativeSelectInRouterContext } from './native-select'\r\nimport { SelectButton, SelectButtonProps } from './select-button'\r\nimport { SelectList, SelectListProps } from './select-list'\r\nimport { SelectItem } from './types'\r\n\r\n/**\r\n * All non-select props get passed to the button element, these are the supported props\r\n */\r\ntype ButtonPassthroughProps = Omit\r\n\r\nexport interface SelectProps extends ButtonPassthroughProps {\r\n /**\r\n * Optional popover state settings\r\n */\r\n popoverStateSettings?: Reakit.PopoverInitialState\r\n\r\n /**\r\n * Name of the select, will be included in `onChange` event\r\n */\r\n name?: Name\r\n\r\n /**\r\n * Current selected value\r\n */\r\n value?: ValueType\r\n\r\n /**\r\n * List of items to display in the select\r\n */\r\n items: ItemType[]\r\n\r\n /**\r\n * Callback when selected item changes\r\n */\r\n onChange?: (item: ItemType, name: Name) => void\r\n\r\n /**\r\n * Label to display above the select\r\n */\r\n label?: React.ReactNode\r\n\r\n /**\r\n * Text for the button (usually the selected value). Falls back to placeholder if not set\r\n */\r\n buttonContent?: React.ReactNode\r\n\r\n /**\r\n * Placeholder when no value is selected\r\n */\r\n placeholder?: string\r\n\r\n /**\r\n * Additional props to the popover list\r\n */\r\n listProps?: Omit\r\n\r\n /**\r\n * Optional label className override\r\n */\r\n labelClassName?: string\r\n\r\n /**\r\n * Optional label layout switch\r\n */\r\n isHorizontalLabel?: boolean\r\n\r\n /**\r\n * Optional label title className override\r\n */\r\n labelTitleClassName?: string\r\n\r\n /**\r\n * Should use native select element on mobile devices\r\n *\r\n * @default true\r\n */\r\n isNativeMobileSelect?: boolean\r\n\r\n /**\r\n * Should use native select element\r\n *\r\n * @default false\r\n */\r\n isAlwaysNativeSelect?: boolean\r\n\r\n /**\r\n * Set the popover to height to be limited by the viewport instead of having full height\r\n *\r\n * @default false\r\n */\r\n hasPopoverViewportHeightLimit?: boolean\r\n\r\n /**\r\n * Set the popover max-width to be limited by the trigger button\r\n */\r\n hasPopoverButtonWidthLimit?: boolean\r\n\r\n /**\r\n * Triggered when popover state visibility/animating changes\r\n */\r\n onIsInteractingChange?: (isInteracting: boolean) => void\r\n}\r\n\r\nexport function Select, Name = never>({\r\n children,\r\n popoverStateSettings,\r\n onIsInteractingChange,\r\n ...props\r\n}: SelectProps) {\r\n const popoverState = usePopoverState(popoverStateSettings)\r\n const { isFullyClosed } = getExtendedDialogState(popoverState)\r\n\r\n React.useEffect(() => {\r\n onIsInteractingChange?.(!isFullyClosed)\r\n }, [onIsInteractingChange, isFullyClosed])\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport interface StatelessSelectProps extends SelectProps {\r\n /**\r\n * Popover state for handling list in popover\r\n */\r\n popoverState: PopoverStateReturn\r\n}\r\n\r\nexport function StatelessSelect, Name = never>({\r\n // Select\r\n name,\r\n label,\r\n isHorizontalLabel,\r\n value,\r\n items = [],\r\n onChange,\r\n labelClassName,\r\n labelTitleClassName,\r\n 'aria-label': ariaLabel,\r\n // Button\r\n theme,\r\n buttonContent,\r\n placeholder = 'Select value',\r\n // Popover\r\n popoverState,\r\n listProps,\r\n isNativeMobileSelect = true,\r\n isAlwaysNativeSelect = false,\r\n hasPopoverViewportHeightLimit = false,\r\n hasPopoverButtonWidthLimit = true,\r\n children,\r\n ...props\r\n}: StatelessSelectProps) {\r\n const { selectedIndex, onItemChange } = useSelect(popoverState, value, items, (item) => onChange?.(item, name!))\r\n const showMobileSelect = isNativeMobileSelect && isMobile()\r\n const isNativeSelect = isAlwaysNativeSelect || showMobileSelect\r\n\r\n /** Items can have `href` and be router Links. We need a way to account for this in native select */\r\n const isInRouterContext = useInRouterContext()\r\n const NativeSelectComponent = isInRouterContext ? NativeSelectInRouterContext : NativeSelect\r\n\r\n return (\r\n \r\n \r\n {buttonContent ?? items[selectedIndex!]?.label ?? placeholder}\r\n \r\n {isNativeSelect ? (\r\n