{"version":3,"file":"home.24309679.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