{"version":3,"file":"map.fbbf77c8.js","mappings":"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","sources":["webpack://@finviz/website/./js/app/maps/components/MapTypeList.tsx","webpack://@finviz/website/./js/app/maps/App.tsx","webpack://@finviz/website/./js/app/maps/treemap-canvas.tsx","webpack://@finviz/website/./js/app/maps/treemap-small.tsx","webpack://@finviz/website/./js/app/shared/components/Ads.tsx","webpack://@finviz/website/./js/app/shared/parseJSONFromScript.ts"],"sourcesContent":["import classnames from 'classnames'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\nimport { Delayed } from '../../../main/components/delayed'\r\nimport { Spinner } from '../../../main/components/spinner'\r\nimport * as tracking from '../../shared/tracking'\r\nimport { MAP_TYPES } from '../constants/constants'\r\nimport { MapSubtypeId, MapTypeId } from '../types'\r\n\r\ninterface MapTypeProps {\r\n activeType: MapTypeId\r\n activeSubtype: MapSubtypeId\r\n isLoading: boolean\r\n linkClassName?: string\r\n}\r\n\r\nexport function MapTypeList(props: MapTypeProps) {\r\n const linkClass = props.linkClassName ?? ''\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { ErrorBoundary } from 'react-error-boundary'\r\nimport { useNavigate } from 'react-router-dom'\r\n\r\nimport { Button } from '../../main/components/button'\r\nimport { DefaultErrorBoundary } from '../../main/components/error-view'\r\nimport { Paragraph } from '../../main/components/typography'\r\nimport { AdTag, useInvestingChannelAds } from '../shared/components/Ads'\r\nimport * as tracking from '../shared/tracking'\r\nimport { Map, useMapContext } from './components/Map'\r\nimport { MapSelect } from './components/MapSelect'\r\nimport { MapTypeList } from './components/MapTypeList'\r\nimport { SearchInput, SearchResult, useSearch } from './components/Search'\r\nimport { Topbar } from './components/Topbar'\r\nimport { Expand } from './components/Topbar/Expand'\r\nimport { Share } from './components/Topbar/Share'\r\nimport { Zoom } from './components/Topbar/Zoom'\r\nimport { useMapData } from './hooks/use-map-data'\r\nimport { useMapType } from './hooks/use-map-type'\r\nimport { MapDataRoot, MapSubtypeId } from './types'\r\nimport * as mapUtils from './utils'\r\n\r\nconst linkClassName = 'text-link hover:text-white'\r\n\r\nexport interface MapInitProps {\r\n initData?: MapDataRoot\r\n cacheBuster: number\r\n generate?: boolean\r\n}\r\n\r\nfunction App(props: MapInitProps) {\r\n const { treemap } = useMapContext()\r\n const navigate = useNavigate()\r\n const { type, subtype } = useMapType()\r\n const mapData = useMapData(type.type, subtype.id, props.cacheBuster, props.initData)\r\n const search = useSearch()\r\n // Make sure all ads are refreshed on type/subtype change (page navigation)\r\n const hasInvestingChannelAds = useInvestingChannelAds([type, subtype])\r\n\r\n /**\r\n * Set new subtype to be false on perf data load so we don’t display loading state when fetching\r\n * new perf data for the same type\r\n */\r\n const [isNewSubtype, setIsNewSubtype] = React.useState(false)\r\n React.useEffect(() => {\r\n if (!mapData.perfDataQuery.isFetching) {\r\n setIsNewSubtype(false)\r\n }\r\n }, [mapData.perfDataQuery.isFetching])\r\n\r\n const isLoadingInitialBaseData = !mapData.baseDataQuery.isPreviousData && mapData.baseDataQuery.isLoading\r\n const isLoadingInitialPerf = !mapData.perfDataQuery.isPreviousData && mapData.perfDataQuery.isLoading\r\n const isInitialLoading = isLoadingInitialBaseData || isLoadingInitialPerf\r\n const isFetchingNewPerf = isNewSubtype && !mapData.perfDataQuery.isLoading && mapData.perfDataQuery.isFetching\r\n\r\n return (\r\n <>\r\n \r\n

View

\r\n \r\n \r\n \r\n }\r\n mapControls={\r\n <>\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {type.description}\r\n \r\n \r\n
\r\n
\r\n
\r\n

Map Filter

\r\n \r\n
\r\n ({ label: subtype.name, value: subtype.id }))}\r\n isLoading={isFetchingNewPerf}\r\n onChange={(item) => {\r\n const newSubtype = type.subtypes.find((subtype) => subtype.id === item.value)\r\n if (newSubtype) {\r\n const query = new URLSearchParams(window.location.search)\r\n if (newSubtype.id === MapSubtypeId.DayPerf) {\r\n query.delete('st')\r\n } else {\r\n query.set('st', newSubtype.id)\r\n }\r\n\r\n setIsNewSubtype(true)\r\n const stringQuery = query.toString()\r\n navigate({ pathname: window.location.pathname, search: stringQuery }, { replace: true })\r\n tracking.trackPageView({ query: stringQuery })\r\n }\r\n }}\r\n />\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
    \r\n {search.results.map((result) => (\r\n \r\n ))}\r\n
\r\n\r\n {hasInvestingChannelAds && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n\r\n \r\n
\r\n \r\n {hasInvestingChannelAds && }\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default App\r\n","import * as ReactDOM from 'react-dom'\r\n\r\nimport App, { MapInitProps } from './App'\r\nimport { MapContext } from './components/MapContext'\r\n\r\nwindow['FinvizInitCanvas'] = async function initCanvas(props: MapInitProps) {\r\n const root = document.getElementById('root')\r\n\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n root\r\n )\r\n}\r\n","import ReactDOM from 'react-dom'\r\n\r\nimport { parseJSONFromScript } from '../shared/parseJSONFromScript'\r\nimport Canvas from './components/Canvas'\r\nimport { MAP_SUBTYPES_COMPANIES_BY_ID } from './constants/constants'\r\nimport { SettingsSmall, SettingsSmallDark, SettingsSmallGeo, SettingsSmallGeoDark } from './constants/settings'\r\nimport Treemap from './treemap'\r\nimport { MapSubtypeId, MapTypeId, PerfData } from './types'\r\nimport * as mapUtils from './utils'\r\n\r\nconst CANVAS_WIDTH = 400\r\nconst CANVAS_HEIGHT_GEO = 235\r\nconst CANVAS_HEIGHT = 300\r\nconst CANVAS_HEIGHT_NEW = 368\r\n\r\nasync function renderTreemaps(props: { perfDataSec: PerfData; perfDataGeo: PerfData; cacheBuster: number }) {\r\n let precomputedData\r\n try {\r\n precomputedData = await mapUtils.fetchBaseData(\r\n FinvizSettings.hasRedesignEnabled ? 'hp_redesign.json' : 'hp.json',\r\n props.cacheBuster\r\n )\r\n } catch {\r\n return\r\n }\r\n\r\n if (props.perfDataSec) {\r\n const subtype = MAP_SUBTYPES_COMPANIES_BY_ID[MapSubtypeId.DayPerf]\r\n const scale = { id: subtype.scaleId, name: subtype.name, tooltip: subtype.tooltip }\r\n const initData = mapUtils.getMapData(precomputedData.sec, props.perfDataSec)\r\n const treemap = new Treemap({\r\n data: initData,\r\n scale,\r\n width: CANVAS_WIDTH,\r\n height: FinvizSettings.hasRedesignEnabled ? CANVAS_HEIGHT_NEW : CANVAS_HEIGHT,\r\n countIndustryPerf: false,\r\n countSectorPerf: true,\r\n settings: FinvizSettings.hasDarkTheme ? SettingsSmallDark : SettingsSmall,\r\n type: MapTypeId.Sector,\r\n subtype: subtype.id,\r\n isSmall: true,\r\n zoomLevels: [1],\r\n version: props.perfDataSec.version,\r\n dataHash: props.perfDataSec.hash,\r\n })\r\n\r\n window.FinvizIndexSecMap = treemap\r\n\r\n ReactDOM.render(\r\n ,\r\n document.getElementById('treemap-small')\r\n )\r\n }\r\n\r\n if (props.perfDataGeo) {\r\n const subtype = MAP_SUBTYPES_COMPANIES_BY_ID[MapSubtypeId.DayPerf]\r\n const scale = { id: subtype.scaleId, name: subtype.name, tooltip: subtype.tooltip }\r\n const initData = mapUtils.getMapData(precomputedData.geo, props.perfDataGeo)\r\n const treemap = new Treemap({\r\n data: initData,\r\n scale,\r\n width: CANVAS_WIDTH,\r\n height: CANVAS_HEIGHT_GEO,\r\n countIndustryPerf: true,\r\n countSectorPerf: false,\r\n settings: FinvizSettings.hasDarkTheme ? SettingsSmallGeoDark : SettingsSmallGeo,\r\n type: MapTypeId.World,\r\n subtype: subtype.id,\r\n isSmall: true,\r\n zoomLevels: [1],\r\n version: props.perfDataGeo.version,\r\n dataHash: props.perfDataGeo.hash,\r\n })\r\n\r\n window.FinvizIndexGeoMap = treemap\r\n\r\n ReactDOM.render(\r\n ,\r\n document.getElementById('treemap-small-geo')\r\n )\r\n }\r\n}\r\n\r\nif (document.getElementById('map-data')) {\r\n const mapProps = parseJSONFromScript<{ perfDataSec: PerfData; perfDataGeo: PerfData; cacheBuster: number }>(\r\n 'map-data'\r\n )\r\n if (mapProps) renderTreemaps(mapProps)\r\n}\r\n","import * as React from 'react'\r\n\r\nimport * as tracking from '../tracking'\r\n\r\nexport const IC_PUBLISHER_ID = 'df0d0d52-cc7f-11e8-82a5-0abbb61c4a6a'\r\n\r\nenum AdTagName {\r\n IC_TickerInContent = 'IC_D_3x3',\r\n IC_MapsLeftRail = 'IC_D_125x125',\r\n IC_Statements = 'IC_D_300x60',\r\n IC_Groups = 'IC_D_300x250',\r\n}\r\n\r\nconst tagDefinition = {\r\n [AdTagName.IC_TickerInContent]: { placements: 3, style: { width: 970, minHeight: 250 } },\r\n [AdTagName.IC_MapsLeftRail]: { placements: 2, style: { width: 125, minHeight: 125 } },\r\n [AdTagName.IC_Statements]: { placements: 1, style: { width: 300, minHeight: 60 } },\r\n [AdTagName.IC_Groups]: { placements: 1, style: { width: 336, minHeight: 280 } },\r\n}\r\n\r\nconst hasInvestingChannelAds = tracking.getAdsProvider() === tracking.AdsProvider.InvestingChannel\r\n\r\n/**\r\n * Get create/destroy methods to control ads insertion\r\n */\r\nexport function getInvestingChannelPage() {\r\n var page: ICPageReturn\r\n\r\n function create() {\r\n try {\r\n if (hasInvestingChannelAds) {\r\n window.InvestingChannelQueue?.push(() => {\r\n page = window.InvestingChannel?.UAT.Run(IC_PUBLISHER_ID)\r\n })\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n\r\n function destroy() {\r\n try {\r\n if (hasInvestingChannelAds) {\r\n window.InvestingChannelQueue?.push(() => {\r\n page?.destroy()\r\n })\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n\r\n return { create, destroy }\r\n}\r\n\r\n/**\r\n * Hook which recreates ads on deps change (SPA navigation,…)\r\n */\r\nexport function useInvestingChannelAds(deps: unknown[] = []) {\r\n React.useLayoutEffect(() => {\r\n const page = getInvestingChannelPage()\r\n\r\n page.create()\r\n\r\n return () => page.destroy()\r\n // eslint cannot statically check the dependencies and complains about it\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps)\r\n\r\n return hasInvestingChannelAds\r\n}\r\n\r\ninterface AdTagProps extends Omit, 'name'> {\r\n /**\r\n * Name of the ad tag\r\n */\r\n name: keyof typeof AdTagName\r\n\r\n /**\r\n * Manually set the placement position for this tag\r\n *\r\n * @default 1\r\n */\r\n position?: number\r\n\r\n /**\r\n * Additional class names for the wrapper div\r\n */\r\n className?: string\r\n}\r\n\r\nexport function AdTag({ name, position = 1, ...props }: AdTagProps) {\r\n const tagName = AdTagName[name]\r\n const tagProps = tagDefinition[tagName]\r\n const placementName = `${tagName}_${Math.min(Math.max(position, 1), tagProps.placements)}`\r\n\r\n if (!hasInvestingChannelAds) return null\r\n\r\n return
\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"],"names":["MapTypeList","props","linkClass","linkClassName","_jsx","className","children","MAP_TYPES","map","isActiveTreemap","activeType","type","query","URLSearchParams","t","activeSubtype","MapSubtypeId","DayPerf","append","NavLink","to","classnames","onClick","document","title","pageTitle","tracking","_jsxs","name","isLoading","Delayed","Spinner","width","treemap","useMapContext","navigate","useNavigate","subtype","useMapType","mapData","useMapData","id","cacheBuster","initData","search","useSearch","hasInvestingChannelAds","useInvestingChannelAds","isNewSubtype","setIsNewSubtype","React","perfDataQuery","isFetching","isLoadingInitialBaseData","baseDataQuery","isPreviousData","isLoadingInitialPerf","isInitialLoading","isFetchingNewPerf","_Fragment","Topbar","navContent","Button","as","href","leftContent","theme","mapControls","Expand","data","Share","mapType","Zoom","Paragraph","size","description","MapSelect","value","buttonContent","items","subtypes","label","onChange","item","newSubtype","find","window","location","delete","set","stringQuery","toString","pathname","replace","SearchInput","onInputChange","inputClass","results","result","SearchResult","onItemClick","onMouseLeave","onResultMouseLeave","AdTag","position","ErrorBoundary","resetKeys","FallbackComponent","DefaultErrorBoundary","Map","isFetchingPerf","isLoadingData","dataHash","hash","onNodeClick","mapUtils","async","root","getElementById","ReactDOM","MapContext","App","mapProps","parseJSONFromScript","precomputedData","FinvizSettings","hasRedesignEnabled","perfDataSec","MAP_SUBTYPES_COMPANIES_BY_ID","scale","scaleId","tooltip","sec","Treemap","height","countIndustryPerf","countSectorPerf","settings","hasDarkTheme","SettingsSmallDark","SettingsSmall","MapTypeId","Sector","isSmall","zoomLevels","version","FinvizIndexSecMap","Canvas","hover","legend","zoom","alt","perfDataGeo","geo","SettingsSmallGeoDark","SettingsSmallGeo","World","FinvizIndexGeoMap","renderTreemaps","IC_PUBLISHER_ID","AdTagName","tagDefinition","IC_TickerInContent","placements","style","minHeight","IC_MapsLeftRail","IC_Statements","IC_Groups","InvestingChannel","getInvestingChannelPage","page","create","InvestingChannelQueue","push","UAT","Run","e","console","error","destroy","deps","arguments","length","undefined","_ref","tagName","tagProps","placementName","Math","min","max","el","isValidElement","getAttribute","Sentry","captureMessage","extra","JSON","parse","textContent","captureException"],"sourceRoot":""}