{"version":3,"file":"home.960c7a7d.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/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/shared/chartLayoutConfig.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/hooks/useVisualViewport.ts","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/react-router-dom/dist/index.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/5KB2YIDT.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/JJ3MV4KB.js"],"sourcesContent":["import { Component, MouseEvent } from 'react'\r\nimport ReactDOM from 'react-dom/client'\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\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?: () => void, 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\nlet root: ReactDOM.Root\r\nfunction mount() {\r\n const rootEl = document.getElementById('js-market-sentiment')\r\n root = ReactDOM.createRoot(rootEl!)\r\n root.render()\r\n}\r\n\r\nfunction unmount() {\r\n root.unmount?.()\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: {\r\n 'Content-Type': ContentType.Html,\r\n 'X-Is-Ajax-Request': 'true',\r\n 'X-Theme': FinvizSettings.hasDarkTheme ? 'dark' : FinvizSettings.hasRedesignEnabled ? 'light' : 'legacy',\r\n },\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 Free = 180000,\r\n}\r\n\r\nif (refreshInfo?.interval) {\r\n initRefresh(refreshInfo.interval * 1000)\r\n\r\n function getIndicesRefreshInterval() {\r\n if (!FinvizSettings.hasUserPremium) {\r\n return IndicesPollingIntervalInMs.Free\r\n }\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({ interval: 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({ interval: 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\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 ROUNDING = IS_REDESIGN ? undefined : '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 option.value === signal)}\r\n rightContent={}\r\n onChange={({ value }) => {\r\n onSignalChange(value)\r\n }}\r\n placement=\"bottom-end\"\r\n orientation=\"horizontal\"\r\n isLoading={isLoading}\r\n disabled={isLoading}\r\n gutter={IS_REDESIGN ? 0 : 1}\r\n // override height defined by button to not stretch old hp signal tables\r\n style={IS_REDESIGN ? undefined : { height: 'auto' }}\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","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({ placement: 'bottom-end' })\r\n const isOpen = state.useState('open')\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 { setCookieRequest } from '../../../main/services/api'\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 try {\r\n await setCookieRequest(HP_SIGNAL_COOKIE, changedSignal)\r\n await handleSignalIntervalChange().catch()\r\n } catch {\r\n setSignal(signal)\r\n }\r\n setIsLoading(false)\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 ReactDOMClient from 'react-dom/client'\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 renderSignalIntervalSwitch() {\r\n const signalSwitches = document.getElementById(HP_SIGNAL_SWITCH_RENDER_SELECTOR)\r\n\r\n if (signalSwitches) {\r\n const root = ReactDOMClient.createRoot(signalSwitches)\r\n root.render()\r\n }\r\n}\r\n\r\nready(function () {\r\n const indices = parseJSONFromScript('js-indices')!\r\n const root = ReactDOMClient.createRoot(document.getElementById('home_indexes')!)\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 root.render(\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n )\r\n\r\n renderSignalIntervalSwitch()\r\n})\r\n","import { ContentType, apiRequest } from '../../../main/services/api'\r\nimport { MapSubtypeId, MapTypeId, PerfData } from '../types'\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 { getVisibleTooltipNodes } 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 const visibleNodes = getVisibleTooltipNodes(hoveredNode)\r\n\r\n if (!visibleNodes.length) return\r\n\r\n const tickersToLoad = visibleNodes.map((node) => node!.name)\r\n if (hoveredNode && !tickersToLoad.includes(hoveredNode?.name)) {\r\n tickersToLoad.push(hoveredNode.name)\r\n }\r\n\r\n debouncedLoadSparklines(tickersToLoad, treemap.type)\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 // This just means we canceled the previous request\r\n if (_lastSparklinesRequest.aborted) return\r\n\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 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.length > 0) {\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\nconst dispatcher = new AppDispatcher()\r\nexport default dispatcher\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 { 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","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 * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { getVisualViewport, useVisualViewport } from '../../hooks/useVisualViewport'\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 [isOpen, setIsOpen] = React.useState(false)\r\n const [notification, setNotification] = React.useState(null)\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 setIsOpen(true)\r\n },\r\n hide: () => setIsOpen(false),\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 : Ariakit.Portal),\r\n [notification?.options.inline]\r\n )\r\n\r\n return (\r\n \r\n {props.children}\r\n {isOpen && (\r\n \r\n \r\n {notification?.element}\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 * as Ariakit from '@ariakit/react'\r\nimport 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: number\r\n if (timeoutInMs) {\r\n timeoutId = window.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 throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nexport function getVisualViewport(visualViewport: VisualViewport | null) {\r\n const width = visualViewport?.width ?? window.innerWidth\r\n const height = visualViewport?.height ?? window.innerHeight\r\n const scale = visualViewport?.scale ?? 1\r\n\r\n return {\r\n top: visualViewport?.offsetTop ?? 0,\r\n left: visualViewport?.offsetLeft ?? 0,\r\n scale: Math.round((1 / scale) * 100) / 100,\r\n width: Math.round(width * scale),\r\n height: Math.round(height * scale),\r\n unscaledWidth: width,\r\n unscaledHeight: height,\r\n }\r\n}\r\n\r\nexport function useVisualViewport({ enabled = true, onScroll = true }: { enabled?: boolean; onScroll?: boolean } = {}) {\r\n const [viewport, setViewport] = React.useState(getVisualViewport(window.visualViewport))\r\n\r\n React.useEffect(() => {\r\n if (!enabled) return\r\n\r\n const handleChange = throttle((ev: Event) => {\r\n const viewport = ev.currentTarget as VisualViewport\r\n if (viewport) {\r\n setViewport(() => getVisualViewport(viewport))\r\n }\r\n }, 50)\r\n\r\n window.visualViewport?.addEventListener('resize', handleChange)\r\n if (onScroll) window.visualViewport?.addEventListener('scroll', handleChange)\r\n handleChange({ currentTarget: window.visualViewport } as Event)\r\n\r\n return () => {\r\n window.visualViewport?.removeEventListener('resize', handleChange)\r\n window.visualViewport?.removeEventListener('scroll', handleChange)\r\n }\r\n }, [enabled, onScroll])\r\n\r\n return React.useMemo(() => ({ viewport, setViewport }), [viewport])\r\n}\r\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher')\n","/*\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * @typechecks\n */\n\n\"use strict\";\n\nvar invariant = require('./invariant');\n\nvar _lastID = 1;\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n *\n * case 'city-update':\n * FlightPriceStore.price =\n * FlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\n function Dispatcher() {\n this.$Dispatcher_callbacks = {};\n this.$Dispatcher_isPending = {};\n this.$Dispatcher_isHandled = {};\n this.$Dispatcher_isDispatching = false;\n this.$Dispatcher_pendingPayload = null;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n *\n * @param {function} callback\n * @return {string}\n */\n Dispatcher.prototype.register=function(callback) {\n var id = _prefix + _lastID++;\n this.$Dispatcher_callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n *\n * @param {string} id\n */\n Dispatcher.prototype.unregister=function(id) {\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.unregister(...): `%s` does not map to a registered callback.',\n id\n );\n delete this.$Dispatcher_callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n *\n * @param {array} ids\n */\n Dispatcher.prototype.waitFor=function(ids) {\n invariant(\n this.$Dispatcher_isDispatching,\n 'Dispatcher.waitFor(...): Must be invoked while dispatching.'\n );\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this.$Dispatcher_isPending[id]) {\n invariant(\n this.$Dispatcher_isHandled[id],\n 'Dispatcher.waitFor(...): Circular dependency detected while ' +\n 'waiting for `%s`.',\n id\n );\n continue;\n }\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.',\n id\n );\n this.$Dispatcher_invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n *\n * @param {object} payload\n */\n Dispatcher.prototype.dispatch=function(payload) {\n invariant(\n !this.$Dispatcher_isDispatching,\n 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.'\n );\n this.$Dispatcher_startDispatching(payload);\n try {\n for (var id in this.$Dispatcher_callbacks) {\n if (this.$Dispatcher_isPending[id]) {\n continue;\n }\n this.$Dispatcher_invokeCallback(id);\n }\n } finally {\n this.$Dispatcher_stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n *\n * @return {boolean}\n */\n Dispatcher.prototype.isDispatching=function() {\n return this.$Dispatcher_isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @param {string} id\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_invokeCallback=function(id) {\n this.$Dispatcher_isPending[id] = true;\n this.$Dispatcher_callbacks[id](this.$Dispatcher_pendingPayload);\n this.$Dispatcher_isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @param {object} payload\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_startDispatching=function(payload) {\n for (var id in this.$Dispatcher_callbacks) {\n this.$Dispatcher_isPending[id] = false;\n this.$Dispatcher_isHandled[id] = false;\n }\n this.$Dispatcher_pendingPayload = payload;\n this.$Dispatcher_isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_stopDispatching=function() {\n this.$Dispatcher_pendingPayload = null;\n this.$Dispatcher_isDispatching = false;\n };\n\n\nmodule.exports = Dispatcher;\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (false) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n if (!(obj instanceof Object && !Array.isArray(obj))) {\n throw new Error('keyMirror(...): Argument must be an object.');\n }\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n","/**\n * React Router DOM v6.26.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, replace, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `
`/`` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a