{"version":3,"file":"home.6227a3ae.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'\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: {\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(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\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 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 { 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 { 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.16.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 { UNSAFE_mapRouteProperties, Router, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, UNSAFE_DataRouterStateContext, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, unstable_useBlocker, UNSAFE_DataRouterContext } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, RouterProvider, 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, resolvePath, unstable_useBlocker, useActionData, useAsyncError, useAsyncValue, 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 } 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