{"version":3,"file":"bubbles.a4f8bfc7.js","mappings":"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","sources":["webpack://@finviz/website/./js/app/bubbles/services/api.ts","webpack://@finviz/website/./js/app/bubbles/Share.tsx","webpack://@finviz/website/./js/app/bubbles/actions/bubbleActionCreators.ts","webpack://@finviz/website/./js/app/bubbles/bubblesHoverCanvas.tsx","webpack://@finviz/website/./js/app/bubbles/legend.tsx","webpack://@finviz/website/./js/app/bubbles/draggable.tsx","webpack://@finviz/website/./js/app/bubbles/slider.tsx","webpack://@finviz/website/./js/app/bubbles/bubbleChart.tsx","webpack://@finviz/website/./js/app/bubbles/bubblesHover.tsx","webpack://@finviz/website/./js/app/bubbles/constants/constants.ts","webpack://@finviz/website/./js/app/bubbles/dispatcher/appDispatcher.ts","webpack://@finviz/website/./js/app/bubbles/constants/settings.ts","webpack://@finviz/website/./js/app/bubbles/bubbles.tsx","webpack://@finviz/website/./js/app/bubbles/presets.tsx","webpack://@finviz/website/./js/app/bubbles/selects.ts","webpack://@finviz/website/./js/app/bubbles/input.tsx","webpack://@finviz/website/./js/app/bubbles/sidebar.tsx","webpack://@finviz/website/./js/app/bubbles/stores/bubbleStore.ts","webpack://@finviz/website/./js/app/bubbles/stores/hoverStore.ts","webpack://@finviz/website/./js/app/bubbles/stores/store.ts","webpack://@finviz/website/./js/app/bubbles/utils.ts","webpack://@finviz/website/./js/app/maps/components/Topbar/Topbar.tsx","webpack://@finviz/website/./js/app/maps/types.ts","webpack://@finviz/website/./js/app/shared/components/HoverChart.tsx","webpack://@finviz/website/./js/app/shared/components/Share.tsx","webpack://@finviz/website/./js/app/shared/drawShareMap.ts","webpack://@finviz/website/./js/app/shared/hover-chart.ts","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/loading.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/../node_modules/react-router-dom/dist/index.js","webpack://@finviz/website/../node_modules/react-share/es/FacebookIcon.js","webpack://@finviz/website/../node_modules/react-share/es/FacebookShareButton.js","webpack://@finviz/website/../node_modules/react-share/es/TwitterIcon.js","webpack://@finviz/website/../node_modules/react-share/es/TwitterShareButton.js","webpack://@finviz/website/../node_modules/react-share/es/hocs/createIcon.js","webpack://@finviz/website/../node_modules/react-share/es/ShareButton.js","webpack://@finviz/website/../node_modules/react-share/es/hocs/createShareButton.js","webpack://@finviz/website/../node_modules/react-share/es/utils/assert.js","webpack://@finviz/website/../node_modules/react-share/es/utils/objectToGetParams.js","webpack://@finviz/website/../node_modules/@tanstack/query-core/build/lib/mutationObserver.mjs","webpack://@finviz/website/../node_modules/@tanstack/react-query/build/lib/useMutation.mjs"],"sourcesContent":["import { ContentType, apiRequest } from '../../../main/services/api'\r\n\r\nexport interface UploadBubblesResponse {\r\n imgUrl: string\r\n shareUrl: string\r\n}\r\n\r\nexport function uploadMap({ query, data }: { query: string; data: string }) {\r\n const body = new URLSearchParams(query)\r\n\r\n body.set('file', data.replace('data:image/png;base64,', ''))\r\n body.set('isScreener', `${window.location.pathname.includes('screener')}`)\r\n\r\n return apiRequest(`/publish_bubbles_submit.ashx`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': ContentType.FormUrlEncoded,\r\n },\r\n body,\r\n })\r\n}\r\n","import { useMutation } from '@tanstack/react-query'\r\nimport * as React from 'react'\r\n\r\nimport { Share as ShareDialog } from '../shared/components/Share'\r\nimport { drawShareMap } from '../shared/drawShareMap'\r\nimport { colors, sizes } from './selects'\r\nimport * as api from './services/api'\r\nimport BubbleStore from './stores/bubbleStore'\r\nimport { decodeQueryString } from './utils'\r\n\r\ninterface ShareMapProps {\r\n extendedFilters?: boolean\r\n className?: string\r\n}\r\n\r\nexport function Share(props: ShareMapProps) {\r\n const uploadImage = useMutation(api.uploadMap)\r\n\r\n const onShareClick = React.useCallback(async () => {\r\n const queryString = decodeQueryString(props.extendedFilters)\r\n const size = sizes.find((o) => o.value === queryString.size)!.label\r\n const color = colors.find((o) => o.value === queryString.color)!.label\r\n const canvas = document.getElementById('bubble-chart-canvas') as HTMLCanvasElement\r\n\r\n const data = await drawShareMap(canvas, [`size: ${size}`, `color: ${color}`, BubbleStore.getDataUpdateTimeString()])\r\n\r\n if (data) {\r\n uploadImage.mutate({ data, query: window.location.search })\r\n }\r\n }, [uploadImage, props.extendedFilters])\r\n\r\n return \r\n}\r\n","import { CancelablePromise, apiRequest } from '../../../main/services/api'\r\nimport { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport BubbleStore from '../stores/bubbleStore'\r\nimport { BubbleNode, BubblesLoadParam, Range } from '../types'\r\nimport { encodeQueryString } from '../utils'\r\n\r\nlet _lastRequest: CancelablePromise | null = null\r\n\r\nconst actions = {\r\n async load(url: string, params: BubblesLoadParam) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.LOAD_DATA_STARTED,\r\n params: params,\r\n })\r\n\r\n _lastRequest?.cancel?.()\r\n _lastRequest = apiRequest(url, { query: params }, true)\r\n try {\r\n const data = await _lastRequest\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.LOAD_DATA_COMPLETED,\r\n data,\r\n })\r\n } catch (error) {\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.LOAD_DATA_FAILED,\r\n errorStatus: (error as { status: string }).status,\r\n })\r\n }\r\n },\r\n\r\n changeRange(type: string, range: Range) {\r\n if (range.min > range.max) {\r\n var temp = range.min\r\n range.min = range.max\r\n range.max = temp\r\n }\r\n\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.CHANGE_RANGE,\r\n rangeType: type,\r\n range,\r\n })\r\n\r\n window.history?.replaceState?.(\r\n {},\r\n document.title,\r\n `${window.location.pathname}?` + encodeQueryString(BubbleStore.getParams())\r\n )\r\n },\r\n\r\n setHoveredNode(node?: BubbleNode) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_HOVERED_NODE,\r\n node: node,\r\n })\r\n },\r\n\r\n setHoveredColor(color: string | null) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_HOVERED_COLOR,\r\n color: color,\r\n })\r\n },\r\n}\r\n\r\nexport default actions\r\n","import * as d3 from 'd3'\r\nimport Hammer from 'hammerjs'\r\nimport * as React from 'react'\r\n\r\nimport { isFirefoxDesktop } from '../shared/isMobile'\r\nimport { retinafy } from '../shared/retinafy'\r\nimport BubbleActionCreators from './actions/bubbleActionCreators'\r\nimport { BubbleSettings } from './constants/settings'\r\nimport HoverStore from './stores/hoverStore'\r\nimport { BubbleNode } from './types'\r\n\r\ninterface BubblesHoverCanvasProps {\r\n width: number\r\n height: number\r\n margin: { top: number; right: number; bottom: number; left: number }\r\n bubbles: BubbleNode[]\r\n onDoubleTap: HammerListener\r\n settings: BubbleSettings\r\n}\r\n\r\nclass BubblesHoverCanvas extends React.Component {\r\n canvasRef = React.createRef()\r\n declare canvasContext: CanvasRenderingContext2D\r\n\r\n componentDidMount() {\r\n HoverStore.addChangeListener(this._onChange)\r\n\r\n const canvas = this.canvasRef.current\r\n const context = canvas?.getContext('2d', isFirefoxDesktop() ? { willReadFrequently: true } : undefined)\r\n\r\n if (!canvas || !context) return\r\n\r\n this.canvasContext = context\r\n\r\n retinafy(\r\n canvas,\r\n this.canvasContext,\r\n this.props.width + this.props.margin.left + this.props.margin.right,\r\n this.props.height + this.props.margin.top + this.props.margin.bottom\r\n )\r\n\r\n const hammertime = new Hammer(canvas)\r\n hammertime.on('doubletap', this.props.onDoubleTap)\r\n }\r\n\r\n componentWillUnmount() {\r\n HoverStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState({ hoveredNode: HoverStore.getHoveredNode() })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n\r\n _onMouseMove = (e: React.MouseEvent) => {\r\n const { settings } = this.props\r\n var hoverContext = this.canvasContext,\r\n data = this.props.bubbles,\r\n width = this.props.width,\r\n height = this.props.height,\r\n margin = this.props.margin\r\n\r\n var hovered = this._getHoveredNode(e)\r\n const canvas = this.canvasRef.current\r\n\r\n if (canvas) {\r\n canvas.style.cursor = hovered ? 'pointer' : 'default'\r\n }\r\n\r\n if (HoverStore.getHoveredNode() !== hovered) {\r\n hoverContext.clearRect(0, 0, width + margin.left + margin.right, height + margin.top + margin.bottom)\r\n if (hovered) {\r\n hoverContext.save()\r\n hoverContext.lineWidth = 1.1\r\n hoverContext.textAlign = 'center'\r\n hoverContext.textBaseline = 'middle'\r\n hoverContext.translate(margin.left, margin.top)\r\n var d = hovered\r\n\r\n var clr = d.sc\r\n var rgb = d3.rgb(clr)\r\n rgb.r = Math.round(rgb.r + 255 * 0.15)\r\n rgb.g = Math.round(rgb.g + 255 * 0.15)\r\n rgb.b = Math.round(rgb.b + 255 * 0.15)\r\n var fillStyle = 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + 0.8 + ')'\r\n\r\n rgb.r = Math.round(rgb.r * 0.9 + 255 * 0.3)\r\n rgb.g = Math.round(rgb.g * 0.9 + 255 * 0.3)\r\n rgb.b = Math.round(rgb.b * 0.9 + 255 * 0.3)\r\n var strokeStyle = 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + 1 + ')'\r\n\r\n hoverContext.beginPath()\r\n hoverContext.arc(d.sx, d.sy, d.sr, 0, 2 * Math.PI, true)\r\n hoverContext.fillStyle = fillStyle\r\n hoverContext.strokeStyle = strokeStyle\r\n hoverContext.stroke()\r\n\r\n this._renderText(hoverContext, data, hovered, clr, strokeStyle, settings)\r\n hoverContext.restore()\r\n }\r\n }\r\n\r\n BubbleActionCreators.setHoveredNode(hovered)\r\n }\r\n\r\n _renderText = (\r\n context: CanvasRenderingContext2D,\r\n data: BubbleNode[],\r\n d: BubbleNode,\r\n clr: string,\r\n strokeStyle: string,\r\n settings: BubbleSettings\r\n ) => {\r\n var showText = true\r\n var px = d.sx,\r\n py = d.sy,\r\n pr = d.sr + (d.sr > 10 ? 0 : 15),\r\n ax1 = px - pr,\r\n ax2 = px + pr,\r\n ay1 = py - pr,\r\n ay2 = py + pr\r\n for (var j = 0; j < data.length; j++) {\r\n var d2 = data[j]\r\n // eslint-disable-next-line eqeqeq\r\n if (d == d2) {\r\n continue\r\n }\r\n\r\n var bpx = d2.sx,\r\n bpy = d2.sy,\r\n bpr = d2.sr,\r\n bx1 = bpx - bpr,\r\n bx2 = bpx + bpr,\r\n by1 = bpy - bpr,\r\n by2 = bpy + bpr\r\n\r\n if (!(ax1 > bx2 || bx1 > ax2 || ay1 > by2 || by1 > ay2)) {\r\n showText = false\r\n break\r\n }\r\n }\r\n\r\n if (showText) {\r\n if (d.sr > 10) {\r\n var rgb = d3.rgb(clr)\r\n rgb.r = Math.round(rgb.r * 0.9 + 255 * 0.55)\r\n rgb.g = Math.round(rgb.g * 0.9 + 255 * 0.55)\r\n rgb.b = Math.round(rgb.b * 0.9 + 255 * 0.55)\r\n // eslint-disable-next-line @typescript-eslint/no-redeclare\r\n var strokeStyle = 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + 1 + ')'\r\n\r\n context.font = '12px Lato'\r\n if (settings.bubble.textShadow) {\r\n context.fillStyle = settings.bubble.textShadow\r\n context.fillText(d.ticker, px + 1, py + 1)\r\n }\r\n context.fillStyle = settings.bubble.color ?? strokeStyle\r\n context.fillText(d.ticker, px, py)\r\n } else {\r\n context.font = '11px Lato'\r\n if (settings.textShadow) {\r\n context.fillStyle = settings.textShadow\r\n context.fillText(d.ticker, px + 1, py + d.sr + 11)\r\n }\r\n context.fillStyle = settings.color ?? strokeStyle\r\n context.fillText(d.ticker, px, py + d.sr + 10)\r\n }\r\n }\r\n }\r\n\r\n _getHoveredNode = (e: React.MouseEvent) => {\r\n var data = this.props.bubbles\r\n var p = this._getArea(e)\r\n p.x -= this.props.margin.left\r\n p.y -= this.props.margin.top\r\n var hovered\r\n for (var i = data.length - 1; i >= 0; i--) {\r\n var d = data[i]\r\n if (Math.pow(p.x - d.sx, 2) + Math.pow(p.y - d.sy, 2) < Math.pow(d.sr, 2)) {\r\n hovered = d\r\n break\r\n }\r\n }\r\n return hovered\r\n }\r\n\r\n _getArea = (e: React.MouseEvent) => {\r\n // @ts-ignore\r\n var rect = e.target.getBoundingClientRect()\r\n return {\r\n x: e.clientX - rect.left,\r\n y: e.clientY - rect.top,\r\n }\r\n }\r\n}\r\n\r\nexport default BubblesHoverCanvas\r\n","import * as d3 from 'd3'\r\nimport { Component } from 'react'\r\n\r\nimport { Icon } from '../../main/components/icon'\r\nimport ActionCreators from './actions/bubbleActionCreators'\r\nimport HoverStore from './stores/hoverStore'\r\n\r\ninterface LegendProps {\r\n colorFn: any\r\n}\r\n\r\nclass Legend extends Component {\r\n state = { color: null }\r\n componentDidMount() {\r\n HoverStore.addChangeListener(this._handleStateUpdate)\r\n }\r\n\r\n componentWillUnmount() {\r\n HoverStore.removeChangeListener(this._handleStateUpdate)\r\n }\r\n\r\n _handleStateUpdate = () => {\r\n this.setState({ color: HoverStore.getHoveredColor() })\r\n }\r\n\r\n render() {\r\n var domain = this.props.colorFn.domain()\r\n const isNumberDomain = domain.every((d: any) => Number.isFinite(d))\r\n var steps = domain\r\n if (domain.length === 2 && isNumberDomain) {\r\n steps = [Math.round(domain[0] * 10) / 10]\r\n var diff = Math.round(domain[1] * 10) / 10 - steps[0]\r\n var step = diff / 6\r\n for (var i = 1; i < 7; i++) {\r\n steps.push(Math.round((steps[0] + step * i) * 10) / 10)\r\n }\r\n }\r\n\r\n /*if (this.props.scale.id === '_rec') {\r\n steps = [5, 4, 3, 2, 1];\r\n }*/\r\n\r\n var onlyPositive = domain[0] >= 0 && domain[1] >= 0\r\n return (\r\n
\r\n
\r\n Double-click on a bubble to display detailed information\r\n in a new window.\r\n
\r\n
\r\n {steps.map((step: any) => {\r\n var n = step\r\n if (step > 1 || step < -1) {\r\n n = d3.format('.2s')(step).replace('G', 'B')\r\n }\r\n n = (step > 0 && !onlyPositive ? '+' : '') + n\r\n var format = '%N' //scaleStepFormat[this.props.scale.id];\r\n if (typeof format !== 'string') {\r\n format = format[n]\r\n }\r\n\r\n var rgb = d3.rgb(this.props.colorFn(step))\r\n var style = {\r\n background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + 0.85 + ')',\r\n width: domain.length === 2 && isNumberDomain ? 50 : 'auto',\r\n paddingLeft: 6,\r\n paddingRight: 6,\r\n textShadow: '0px 1px 0 rgba(0,0,0,0.25)',\r\n opacity: !this.state.color || this.state.color === n ? 1 : 0.4,\r\n }\r\n return (\r\n {\r\n if (steps.length > 1) {\r\n ActionCreators.setHoveredColor(step)\r\n }\r\n }}\r\n onMouseOut={() => {\r\n ActionCreators.setHoveredColor(null)\r\n }}\r\n >\r\n {format.replace('%N', n)}\r\n
\r\n )\r\n })}\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Legend\r\n","import classnames from 'classnames'\r\nimport { CSSProperties, Component } from 'react'\r\nimport ReactDOM from 'react-dom'\r\n\r\nimport { formatValue } from './utils'\r\n\r\nvar getOffset = function (el: Element) {\r\n var clientRect = el.getBoundingClientRect()\r\n return {\r\n top: clientRect.top + window.pageYOffset,\r\n left: clientRect.left + window.pageXOffset,\r\n }\r\n}\r\n\r\ninterface DraggablePos {\r\n x: number\r\n y: number\r\n}\r\n\r\ninterface DraggableProps {\r\n type: string\r\n initialPos: DraggablePos\r\n onChanged: (pos: number) => void\r\n onChange: (pos: number) => void\r\n style: CSSProperties\r\n onMouseEnter: Function\r\n onMouseLeave: Function\r\n tooltipValue: any\r\n tooltipFormat?: string\r\n tooltipShown: boolean\r\n}\r\n\r\ninterface DraggableState {\r\n pos: DraggablePos\r\n dragging: boolean\r\n hovered: boolean\r\n rel: DraggablePos | null\r\n touch: boolean\r\n}\r\n\r\nclass Draggable extends Component {\r\n static defaultProps = {\r\n initialPos: { x: 0, y: 0 },\r\n }\r\n\r\n state: DraggableState = {\r\n pos: this.props.initialPos,\r\n dragging: false,\r\n hovered: false,\r\n rel: null,\r\n touch: false,\r\n }\r\n\r\n componentDidUpdate(props: DraggableProps, state: DraggableState) {\r\n if (this.state.dragging && !state.dragging) {\r\n if (this.state.touch) {\r\n document.addEventListener('touchmove', this.onMouseMove)\r\n document.addEventListener('touchend', this.onMouseUp)\r\n } else {\r\n document.addEventListener('mousemove', this.onMouseMove)\r\n document.addEventListener('mouseup', this.onMouseUp)\r\n }\r\n } else if (!this.state.dragging && state.dragging) {\r\n if (this.state.touch) {\r\n document.removeEventListener('touchmove', this.onMouseMove)\r\n document.removeEventListener('touchend', this.onMouseUp)\r\n } else {\r\n document.removeEventListener('mousemove', this.onMouseMove)\r\n document.removeEventListener('mouseup', this.onMouseUp)\r\n }\r\n }\r\n }\r\n\r\n onMouseDown = (e: MouseEvent) => {\r\n if (e.button !== 0) {\r\n return\r\n }\r\n var offset = getOffset(ReactDOM.findDOMNode(this) as Element)\r\n this.setState({\r\n dragging: true,\r\n touch: false,\r\n rel: {\r\n x: e.pageX - offset.left,\r\n y: e.pageY - offset.top,\r\n },\r\n })\r\n e.stopPropagation()\r\n e.preventDefault()\r\n }\r\n\r\n onTouchStart = (e: TouchEvent) => {\r\n var offset = getOffset(ReactDOM.findDOMNode(this) as Element)\r\n this.setState({\r\n dragging: true,\r\n touch: true,\r\n rel: {\r\n x: e.touches[0].pageX - offset.left,\r\n y: e.touches[0].pageY - offset.top,\r\n },\r\n })\r\n e.stopPropagation()\r\n e.preventDefault()\r\n }\r\n\r\n onMouseUp = (e: MouseEvent | TouchEvent) => {\r\n this.setState({ dragging: false })\r\n this.props.onChanged(this.props.type === 'vertical' ? this.state.pos.y : this.state.pos.x)\r\n e.stopPropagation()\r\n e.preventDefault()\r\n }\r\n\r\n onMouseMove = (e: MouseEvent | TouchEvent) => {\r\n if (!this.state.dragging) return\r\n\r\n var pageX = this.state.touch ? (e as TouchEvent).touches[0].pageX : (e as MouseEvent).pageX\r\n var pageY = this.state.touch ? (e as TouchEvent).touches[0].pageY : (e as MouseEvent).pageY\r\n // @ts-ignore\r\n var offset = getOffset(ReactDOM.findDOMNode(this).parentNode.parentNode)\r\n var changedPos: Record = {}\r\n if (this.props.type === 'vertical') {\r\n changedPos.y = pageY - offset.top - this.state.rel!.y - (this.props.style.marginTop as any)\r\n } else {\r\n changedPos.x = pageX - offset.left - this.state.rel!.x - (this.props.style.marginLeft as any)\r\n }\r\n\r\n this.setState({\r\n pos: changedPos as unknown as DraggablePos,\r\n })\r\n\r\n var retVal = this.props.onChange(this.props.type === 'vertical' ? this.state.pos.y : this.state.pos.x)\r\n if (typeof retVal !== 'undefined') {\r\n if (this.props.type === 'vertical') {\r\n // @ts-ignore\r\n this.setState({ pos: { y: retVal } })\r\n } else {\r\n // @ts-ignore\r\n this.setState({ pos: { x: retVal } })\r\n }\r\n }\r\n\r\n e.stopPropagation()\r\n e.preventDefault()\r\n }\r\n\r\n onMouseEnter = () => {\r\n this.setState({ hovered: true })\r\n this.props.onMouseEnter()\r\n }\r\n\r\n onMouseLeave = () => {\r\n this.setState({ hovered: false })\r\n this.props.onMouseLeave()\r\n }\r\n\r\n render() {\r\n const isVertical = this.props.type === 'vertical'\r\n\r\n return (\r\n \r\n
\r\n {formatValue(this.props.tooltipValue, this.props.tooltipFormat)}\r\n
\r\n \r\n )\r\n }\r\n\r\n isDragged = () => this.state.dragging\r\n\r\n isHovered = () => this.state.hovered\r\n}\r\n\r\nexport default Draggable\r\n","import * as d3 from 'd3'\r\nimport * as React from 'react'\r\n\r\nimport { isFirefoxDesktop } from '../shared/isMobile'\r\nimport { BubbleSettings } from './constants/settings'\r\nimport Draggable from './draggable'\r\nimport { BubbleNode, Range } from './types'\r\nimport { getSizeScale } from './utils'\r\n\r\ninterface SliderProps {\r\n bubbles: BubbleNode[]\r\n type: string\r\n height: number\r\n width: number\r\n scale: any\r\n range: Range\r\n format?: string\r\n onRangeChange: (range: Range) => void\r\n settings: BubbleSettings\r\n}\r\n\r\ninterface SliderState {\r\n leftHandle: number\r\n rightHandle: number\r\n leftHandleDragging: boolean\r\n leftHandleHovered: boolean\r\n rightHandleDragging: boolean\r\n rightHandleHovered: boolean\r\n tooltipShown: boolean\r\n counts: number[]\r\n opacity: (count: number) => number\r\n max: number\r\n}\r\n\r\nclass Slider extends React.Component {\r\n // @ts-ignore\r\n canvasContext: CanvasRenderingContext2D\r\n\r\n canvas = React.createRef()\r\n\r\n constructor(props: SliderProps) {\r\n super(props)\r\n var bubbles = props.bubbles\r\n var size = props.type === 'vertical' ? props.height : props.width\r\n var counts: number[] = []\r\n for (var i = 0; i < size; i++) {\r\n counts[i] = 0\r\n }\r\n\r\n var rScale = getSizeScale(bubbles)\r\n bubbles.forEach((d) => {\r\n var val = (props.type === 'vertical' ? d.y : d.x) ?? 0\r\n var x = Math.round(props.scale(val))\r\n var r = Math.max(Math.round(rScale(d.size)), 1.5)\r\n counts[x]++\r\n for (let i = 1; i < r; i++) {\r\n if (x - i >= 0) {\r\n counts[x - i] += 1\r\n }\r\n }\r\n for (let i = 1; i < r && x + i < size; i++) {\r\n counts[x + i] += 1\r\n }\r\n })\r\n\r\n var min = 0,\r\n max = Math.max.apply(\r\n null,\r\n counts.filter((d) => d >= 0)\r\n ),\r\n opacity = d3.scaleLinear().range([2, 100]).domain([min, max])\r\n\r\n var leftHandle = 0,\r\n rightHandle = props.type === 'vertical' ? props.height : props.width\r\n if (props.range) {\r\n leftHandle = Math.max(leftHandle, props.scale.copy().clamp(true)(props.range.min))\r\n rightHandle = Math.min(rightHandle, props.scale.copy().clamp(true)(props.range.max))\r\n if (leftHandle > rightHandle) {\r\n var temp = leftHandle\r\n leftHandle = rightHandle\r\n rightHandle = temp\r\n }\r\n }\r\n\r\n this.state = {\r\n leftHandle,\r\n rightHandle,\r\n leftHandleHovered: false,\r\n leftHandleDragging: false,\r\n rightHandleHovered: false,\r\n rightHandleDragging: false,\r\n tooltipShown: false,\r\n counts,\r\n opacity,\r\n max,\r\n }\r\n }\r\n\r\n render() {\r\n var width = this.props.width,\r\n height = 9,\r\n style = {\r\n width: 9,\r\n height: 17,\r\n marginTop: 3,\r\n marginLeft: -5,\r\n }\r\n if (this.props.type === 'vertical') {\r\n width = 9\r\n height = this.props.height\r\n style.width = 17\r\n style.height = 9\r\n style.marginTop = -3\r\n style.marginLeft = -4\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n componentDidMount() {\r\n const canvas = this.canvas.current\r\n const context = canvas?.getContext('2d', isFirefoxDesktop() ? { willReadFrequently: true } : undefined)\r\n\r\n if (!canvas || !context) return\r\n\r\n this.canvasContext = context\r\n this._renderCanvas()\r\n }\r\n\r\n componentDidUpdate() {\r\n this._renderCanvas()\r\n }\r\n\r\n _renderCanvas = () => {\r\n var { counts, opacity, max } = this.state\r\n const settings = this.props.settings.slider\r\n var size = this.props.type === 'vertical' ? this.props.height : this.props.width\r\n var context = this.canvasContext\r\n\r\n var width = this.props.width,\r\n height = 9\r\n if (this.props.type === 'vertical') {\r\n width = 9\r\n height = this.props.height\r\n }\r\n\r\n context.save()\r\n context.clearRect(0, 0, width, height)\r\n\r\n if (this.props.type === 'vertical') {\r\n context.translate(width, 0)\r\n context.rotate(Math.PI / 2)\r\n }\r\n\r\n context.strokeStyle = settings.stroke\r\n context.beginPath()\r\n context.moveTo(0, 4.5)\r\n context.lineTo(size, 4.5)\r\n context.stroke()\r\n\r\n if (this.state.leftHandle !== 0 || this.state.rightHandle !== size) {\r\n context.strokeStyle = settings.highlightStroke\r\n context.beginPath()\r\n context.moveTo(this.state.leftHandle + 1, 4.5)\r\n context.lineTo(this.state.rightHandle, 4.5)\r\n context.stroke()\r\n }\r\n\r\n for (var i = 0; i < size; i++) {\r\n var count = counts[i]\r\n if (count === 0) {\r\n continue\r\n }\r\n if (\r\n i >= this.state.leftHandle &&\r\n i <= this.state.rightHandle &&\r\n (this.state.leftHandle !== 0 || this.state.rightHandle !== size)\r\n ) {\r\n context.fillStyle = settings.distributionHighligt(opacity(count) / 100)\r\n } else {\r\n context.fillStyle = settings.distribution(opacity(count) / 100)\r\n }\r\n context.fillRect(i, count > max * 0.6 ? 3 : 4, 1, count > max * 0.6 ? 3 : 1)\r\n }\r\n\r\n if (this.state.leftHandle !== 0 || this.state.rightHandle !== size) {\r\n context.fillStyle = settings.highlight\r\n context.fillRect(this.state.leftHandle + 1, 0, this.state.rightHandle - this.state.leftHandle, 9)\r\n }\r\n\r\n context.restore()\r\n }\r\n\r\n _onHandleChange = (type: string, value: number) => {\r\n var size = this.props.type === 'vertical' ? this.props.height : this.props.width\r\n if (value < 0) {\r\n value = 0\r\n } else if (value > size) {\r\n value = size\r\n }\r\n\r\n if (type === 'left' && value >= this.state.rightHandle) {\r\n value = this.state.rightHandle - 1\r\n } else if (type === 'right' && value <= this.state.leftHandle) {\r\n value = this.state.leftHandle + 1\r\n }\r\n\r\n var state: Record = {}\r\n state[type + 'Handle'] = value\r\n state[type + 'HandleDragging'] = true\r\n // @ts-ignore\r\n this.setState(state)\r\n\r\n return value\r\n }\r\n\r\n _onHandleChanged = (type: string, value: number) => {\r\n var state: Record = {}\r\n state[type + 'Handle'] = value\r\n state[type + 'HandleDragging'] = false\r\n // @ts-ignore\r\n this.setState(state)\r\n\r\n // @ts-ignore\r\n var range: Range = {\r\n min: this.state.leftHandle,\r\n max: this.state.rightHandle,\r\n }\r\n if (type === 'left') {\r\n range.min = value\r\n } else {\r\n range.max = value\r\n }\r\n\r\n range.scaled = {\r\n min: this.props.scale.invert(range.min),\r\n max: this.props.scale.invert(range.max),\r\n }\r\n\r\n this.props.onRangeChange(range)\r\n }\r\n\r\n _showTooltip = (type: string) => {\r\n var state: Record = {}\r\n state[type + 'HandleHovered'] = true\r\n // @ts-ignore\r\n this.setState(state)\r\n }\r\n\r\n _hideTooltip = (type: string) => {\r\n var state: Record = {}\r\n state[type + 'HandleHovered'] = false\r\n // @ts-ignore\r\n this.setState(state)\r\n }\r\n}\r\n\r\nexport default Slider\r\n","import * as d3 from 'd3'\r\nimport throttle from 'lodash.throttle'\r\nimport { Component, MouseEvent, createRef } from 'react'\r\n\r\nimport { isFirefoxDesktop, isMobile } from '../shared/isMobile'\r\nimport { retinafy } from '../shared/retinafy'\r\nimport BubbleActionCreators from './actions/bubbleActionCreators'\r\nimport BubblesHoverCanvas from './bubblesHoverCanvas'\r\nimport { BubbleSettings } from './constants/settings'\r\nimport Legend from './legend'\r\nimport * as Selects from './selects'\r\nimport Slider from './slider'\r\nimport BubbleStore from './stores/bubbleStore'\r\nimport HoverStore from './stores/hoverStore'\r\nimport { BubbleNode, Range } from './types'\r\nimport { getScales, getXScale, getYScale } from './utils'\r\n\r\nconst BUBBLES_MIN_WIDTH = 794\r\nconst SIDEBAR_WIDTH = 200\r\nconst TOOLTIP_WIDTH = 60\r\nconst SLIDER_WIDTH = 24\r\n\r\ninterface SelectOption {\r\n value: string\r\n label: string\r\n format?: string\r\n}\r\n\r\nvar labelX: SelectOption, labelY: SelectOption // TODO\r\n\r\ninterface BubbleProps {\r\n settings: BubbleSettings\r\n}\r\n\r\ninterface BubbleChartState {\r\n bubbles: any\r\n errorCode: any\r\n hasError: any\r\n isLoading: any\r\n params: any\r\n scales: any\r\n width: number\r\n height: number\r\n hoveredColor: string | null\r\n}\r\n\r\nclass BubbleChart extends Component {\r\n canvasRef = createRef()\r\n declare canvasContext: CanvasRenderingContext2D\r\n\r\n constructor(props: any) {\r\n super(props)\r\n\r\n this.state = this._getState()\r\n }\r\n\r\n componentDidMount() {\r\n BubbleStore.addChangeListener(this._updateState)\r\n HoverStore.addChangeListener(this._onHoverStoreChange)\r\n const canvas = this.canvasRef.current\r\n const context = canvas?.getContext('2d', isFirefoxDesktop() ? { willReadFrequently: true } : undefined)\r\n\r\n if (!canvas || !context) return\r\n\r\n this.canvasContext = context\r\n\r\n Selects.xys.forEach((option) => {\r\n if (option.value === this.state.params.x) {\r\n labelX = option\r\n }\r\n if (option.value === this.state.params.y) {\r\n labelY = option\r\n }\r\n })\r\n\r\n if (isMobile()) {\r\n window.addEventListener('orientationchange', this._onResize)\r\n } else {\r\n window.addEventListener('resize', this._onResize)\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n BubbleStore.removeChangeListener(this._updateState)\r\n HoverStore.removeChangeListener(this._onHoverStoreChange)\r\n window.removeEventListener('resize', this._onResize)\r\n window.removeEventListener('orientationchange', this._onResize)\r\n }\r\n\r\n _onResize = throttle(() => {\r\n const size = this._getSize()\r\n if (size.width !== this.state.width && size.height !== this.state.height) {\r\n this._updateState()\r\n }\r\n }, 100)\r\n\r\n _updateState = () => {\r\n this.setState(this._getState())\r\n }\r\n\r\n _getSize() {\r\n const browserWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)\r\n const browserHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)\r\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\r\n const isScreener = document.body.classList.contains('is-screener')\r\n const container = document.getElementById(isScreener ? 'root' : 'bubbles')\r\n const containerWidth = (container?.clientWidth ?? BUBBLES_MIN_WIDTH) - scrollbarWidth\r\n const spacing = this.props.settings.margin.left + this.props.settings.margin.right + SIDEBAR_WIDTH\r\n let width = containerWidth - spacing\r\n\r\n if (browserWidth - containerWidth < TOOLTIP_WIDTH) {\r\n width = width - TOOLTIP_WIDTH / 2\r\n }\r\n\r\n if (browserWidth - containerWidth - TOOLTIP_WIDTH > TOOLTIP_WIDTH) {\r\n width = width + SLIDER_WIDTH\r\n }\r\n\r\n const ratio =\r\n (browserWidth <= 1650 && browserHeight < 880) || (browserWidth >= 1650 && browserHeight < 980) ? 2 : 1.85\r\n const height = ~~(width / ratio)\r\n\r\n return { width, height }\r\n }\r\n\r\n _addShowTextToBubbles(bubbles: BubbleNode[]) {\r\n for (let i = 0; i < bubbles.length; i++) {\r\n const d = bubbles[i]\r\n const px = d.sx,\r\n py = d.sy,\r\n pr = d.sr + (d.sr > 10 ? 0 : 15),\r\n ax1 = px - pr,\r\n ax2 = px + pr,\r\n ay1 = py - pr,\r\n ay2 = py + pr\r\n\r\n d.showText = { px, py }\r\n\r\n for (let j = 0; j < bubbles.length; j++) {\r\n const d2 = bubbles[j]\r\n // eslint-disable-next-line eqeqeq\r\n if (d == d2) {\r\n continue\r\n }\r\n const bpx = d2.sx,\r\n bpy = d2.sy,\r\n bpr = d2.sr,\r\n bx1 = bpx - bpr,\r\n bx2 = bpx + bpr,\r\n by1 = bpy - bpr,\r\n by2 = bpy + bpr\r\n if (!(ax1 > bx2 || bx1 > ax2 || ay1 > by2 || by1 > ay2)) {\r\n d.showText = false\r\n break\r\n }\r\n }\r\n }\r\n }\r\n\r\n _getState = () => {\r\n // precompute scaled x, y, size\r\n const bubblesInRange = BubbleStore.getBubblesInRange()\r\n const params = BubbleStore.getParams()\r\n const size = this._getSize()\r\n const scales = getScales(bubblesInRange, size.width, size.height, params.color, this.props.settings.colorPalette)\r\n const hoveredColor = HoverStore.getHoveredColor()\r\n\r\n const bubbles = bubblesInRange.map((node) => ({\r\n ...node,\r\n sx: Math.round(scales.x(node.x)),\r\n sy: Math.round(scales.y(node.y)),\r\n sr: Math.max(Math.round(scales.r(node.size)), 1.5),\r\n sc: scales.c(node.color),\r\n }))\r\n this._addShowTextToBubbles(bubbles)\r\n\r\n return {\r\n bubbles,\r\n params,\r\n scales,\r\n isLoading: BubbleStore.isLoading(),\r\n hasError: BubbleStore.hasError(),\r\n errorCode: BubbleStore.getErrorCode(),\r\n width: size.width,\r\n height: size.height,\r\n hoveredColor,\r\n }\r\n }\r\n\r\n _onHoverStoreChange = () => {\r\n const hoveredColor = HoverStore.getHoveredColor()\r\n if (hoveredColor !== this.state.hoveredColor) {\r\n this.setState({ hoveredColor })\r\n }\r\n }\r\n\r\n render() {\r\n const { width, height } = this.state\r\n const { margin } = this.props.settings\r\n\r\n var message\r\n if (this.state.isLoading) {\r\n message = 'Loading...'\r\n } else if (this.state.hasError) {\r\n message = 'Oops, something went wrong. Please refresh the page or try again.'\r\n if (this.state.errorCode === 400) {\r\n message = 'Page not found.'\r\n }\r\n } else if (!this.state.isLoading && !this.state.hasError && this.state.bubbles.length === 0) {\r\n message = 'No stocks selected.'\r\n }\r\n\r\n var { c } = this.state.scales\r\n var allBubbles = BubbleStore.getBubbles()\r\n\r\n var formatX = Selects.xys.filter((o) => o.value === this.state.params.x)[0].format\r\n var formatY = Selects.xys.filter((o) => o.value === this.state.params.y)[0].format\r\n\r\n return (\r\n
\r\n \r\n {document.title}\r\n \r\n \r\n\r\n {!this.state.isLoading && !this.state.hasError && this.state.bubbles.length >= 0 && (\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n {/* @ts-ignore */}\r\n \r\n
\r\n\r\n
\r\n {/* @ts-ignore */}\r\n \r\n
\r\n
\r\n )}\r\n\r\n {message &&

{message}

}\r\n
\r\n )\r\n }\r\n\r\n componentDidUpdate() {\r\n this._render()\r\n }\r\n\r\n _render = () => {\r\n const { width, height } = this.state\r\n if (this.state.isLoading || this.state.hasError) {\r\n return\r\n }\r\n\r\n var context = this.canvasContext,\r\n data = this.state.bubbles\r\n const { settings } = this.props\r\n\r\n var { x, y } = this.state.scales\r\n\r\n retinafy(\r\n context.canvas,\r\n context,\r\n width + settings.margin.left + settings.margin.right,\r\n height + settings.margin.top + settings.margin.bottom\r\n )\r\n\r\n context.save()\r\n context.lineWidth = 1\r\n context.fillStyle = settings.background\r\n context.fillRect(\r\n 0,\r\n 0,\r\n width + settings.margin.left + settings.margin.right,\r\n height + settings.margin.top + settings.margin.bottom\r\n )\r\n context.translate(settings.margin.left, settings.margin.top)\r\n\r\n context.strokeStyle = settings.grid\r\n var xTicks = x.ticks(10)\r\n context.beginPath()\r\n for (var i = 0; i < xTicks.length; i++) {\r\n var tick = xTicks[i]\r\n var dx = Math.round(x(tick)) + 0.5\r\n context.moveTo(dx, 0)\r\n context.lineTo(dx, height)\r\n }\r\n context.stroke()\r\n\r\n var yTicks = y.ticks(10)\r\n context.beginPath()\r\n for (i = 0; i < yTicks.length; i++) {\r\n tick = yTicks[i]\r\n var dy = Math.round(y(tick)) + 0.5\r\n context.moveTo(0.5, dy)\r\n context.lineTo(width + 0.5, dy)\r\n }\r\n context.stroke()\r\n\r\n context.strokeStyle = settings.axis.stroke\r\n context.beginPath()\r\n dx = Math.round(x(x.domain()[0])) + 0.5\r\n context.moveTo(dx, 0)\r\n context.lineTo(dx, height)\r\n for (i = 0; i < xTicks.length; i++) {\r\n tick = xTicks[i]\r\n dx = Math.round(x(tick)) + 0.5\r\n context.moveTo(dx, height)\r\n context.lineTo(dx, height + 6.5)\r\n }\r\n context.stroke()\r\n\r\n context.beginPath()\r\n dy = Math.round(y(y.domain()[0])) + 0.5\r\n context.moveTo(0.5, dy)\r\n context.lineTo(width + 0.5, dy)\r\n for (i = 0; i < yTicks.length; i++) {\r\n tick = yTicks[i]\r\n dy = Math.round(y(tick)) + 0.5\r\n context.moveTo(0.5, dy)\r\n context.lineTo(-6.5, dy)\r\n }\r\n context.stroke()\r\n\r\n context.font = '8pt Verdana'\r\n context.fillStyle = settings.axis.text\r\n context.textAlign = 'center'\r\n context.textBaseline = 'bottom'\r\n for (i = 0; i < xTicks.length; i++) {\r\n tick = xTicks[i]\r\n dx = Math.round(x(tick)) + 0.5\r\n context.fillText(formatXAxis(tick), dx, height + 22)\r\n }\r\n\r\n context.textAlign = 'right'\r\n context.textBaseline = 'middle'\r\n for (i = 0; i < yTicks.length; i++) {\r\n tick = yTicks[i]\r\n dy = Math.round(y(tick)) + 0.5\r\n context.fillText(formatYAxis(tick), -12, dy)\r\n }\r\n\r\n context.fillText(labelX.label, width - 1, height - 10)\r\n\r\n context.textAlign = 'right'\r\n context.save()\r\n context.translate(10, 1)\r\n context.rotate((-90 * Math.PI) / 180)\r\n context.fillText(labelY.label, 0, 0)\r\n context.restore()\r\n\r\n context.lineWidth = 1.1\r\n context.textAlign = 'center'\r\n context.textBaseline = 'middle'\r\n for (i = 0; i < data.length; i++) {\r\n var d = data[i]\r\n\r\n var clr = d.sc\r\n var isBubbleDimmed = !!this.state.hoveredColor && this.state.hoveredColor !== d.color\r\n var rgb, fillStyle, strokeStyle\r\n\r\n if (isBubbleDimmed) {\r\n fillStyle = settings.bubble.fill\r\n strokeStyle = settings.bubble.stroke\r\n } else {\r\n rgb = d3.rgb(clr)\r\n fillStyle = 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + 0.85 + ')'\r\n rgb.r = Math.round(rgb.r * 0.9 + 255 * 0.15)\r\n rgb.g = Math.round(rgb.g * 0.9 + 255 * 0.15)\r\n rgb.b = Math.round(rgb.b * 0.9 + 255 * 0.15)\r\n strokeStyle = 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + 1 + ')'\r\n }\r\n\r\n context.beginPath()\r\n context.arc(d.sx, d.sy, d.sr, 0, 2 * Math.PI, true)\r\n context.fillStyle = fillStyle\r\n context.fill()\r\n context.strokeStyle = strokeStyle\r\n context.stroke()\r\n\r\n this._renderText(context, d, clr, strokeStyle, settings, isBubbleDimmed)\r\n }\r\n context.restore()\r\n }\r\n\r\n _renderText = (\r\n context: CanvasRenderingContext2D,\r\n d: BubbleNode,\r\n clr: string,\r\n strokeStyle: string,\r\n settings: BubbleSettings,\r\n isBubbleDimmed: boolean\r\n ) => {\r\n if (d.showText) {\r\n const { px, py } = d.showText\r\n if (d.sr > 10) {\r\n if (!isBubbleDimmed) {\r\n var rgb = d3.rgb(clr)\r\n rgb.r = Math.round(rgb.r * 0.9 + 255 * 0.55)\r\n rgb.g = Math.round(rgb.g * 0.9 + 255 * 0.55)\r\n rgb.b = Math.round(rgb.b * 0.9 + 255 * 0.55)\r\n // eslint-disable-next-line @typescript-eslint/no-redeclare\r\n strokeStyle = 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + 1 + ')'\r\n }\r\n\r\n context.font = '12px Lato'\r\n if (settings.bubble.textShadow) {\r\n context.fillStyle = settings.bubble.textShadow\r\n context.fillText(d.ticker, px + 1, py + 1)\r\n }\r\n context.fillStyle = settings.bubble.color ?? strokeStyle\r\n context.fillText(d.ticker, px, py)\r\n } else {\r\n context.font = '11px Lato'\r\n if (settings.textShadow) {\r\n context.fillStyle = settings.textShadow\r\n context.fillText(d.ticker, px + 1, py + d.sr + 11)\r\n }\r\n context.fillStyle = settings.color ?? strokeStyle\r\n context.fillText(d.ticker, px, py + d.sr + 10)\r\n }\r\n }\r\n }\r\n\r\n _onDoubleTap = (e: HammerInput) => {\r\n e.preventDefault()\r\n const hovered = this._getHoveredNode(e.pointers[0])\r\n if (hovered) {\r\n window.open('/quote.ashx?t=' + hovered.ticker)\r\n }\r\n }\r\n\r\n _onRangeChange = (type: string, range: Range) => {\r\n BubbleActionCreators.changeRange(type, range.scaled!)\r\n }\r\n\r\n _getHoveredNode = (e: MouseEvent) => {\r\n var data = this.state.bubbles\r\n var p = this._getArea(e)\r\n p.x -= this.props.settings.margin.left\r\n p.y -= this.props.settings.margin.top\r\n var hovered\r\n for (var i = data.length - 1; i >= 0; i--) {\r\n var d = data[i]\r\n if (Math.pow(p.x - d.sx, 2) + Math.pow(p.y - d.sy, 2) < Math.pow(d.sr, 2)) {\r\n hovered = d\r\n break\r\n }\r\n }\r\n return hovered\r\n }\r\n\r\n _getArea = (e: MouseEvent) => {\r\n // @ts-ignore\r\n var rect = e.target.getBoundingClientRect()\r\n return {\r\n x: e.clientX - rect.left,\r\n y: e.clientY - rect.top,\r\n }\r\n }\r\n}\r\n\r\nvar format = d3.format('~s')\r\nfunction formatXAxis(value: number) {\r\n var formatted: string | number = parseFloat(value.toFixed(2))\r\n if (value > 1 || value < -1) {\r\n formatted = format(formatted).replace('G', 'B')\r\n }\r\n if (labelX.format === '%') {\r\n formatted += '%'\r\n }\r\n return formatted as string\r\n}\r\n\r\nfunction formatYAxis(value: number) {\r\n var formatted: string | number = parseFloat(value.toFixed(2))\r\n if (value > 1 || value < -1) {\r\n formatted = format(formatted).replace('G', 'B')\r\n }\r\n if (labelY.format === '%') {\r\n formatted += '%'\r\n }\r\n return formatted as string\r\n}\r\n\r\nexport { formatXAxis, formatYAxis, BubbleChart }\r\n","import { Component } from 'react'\r\n\r\nimport { HoverChart } from '../shared/components/HoverChart'\r\nimport { ETF_MARKET_CAP_LABEL, colors, sizes, xys } from './selects'\r\nimport HoverStore from './stores/hoverStore'\r\nimport { formatValue } from './utils'\r\n\r\ninterface BubblesHoverProps {\r\n labelX: string\r\n labelY: string\r\n labelSize: string\r\n labelColor: string\r\n}\r\n\r\nclass BubblesHover extends Component {\r\n state = { shown: false }\r\n\r\n componentDidMount() {\r\n HoverStore.addChangeListener(this._onChange)\r\n document.addEventListener('mousemove', this._onMouseMove)\r\n }\r\n\r\n componentWillUnmount() {\r\n HoverStore.removeChangeListener(this._onChange)\r\n document.removeEventListener('mousemove', this._onMouseMove)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState({\r\n shown: !!HoverStore.getHoveredNode(),\r\n })\r\n }\r\n\r\n render() {\r\n if (!this.state.shown) {\r\n return null\r\n }\r\n\r\n // so we don't have duplicates\r\n var vals: Record = {}\r\n var hoveredNode = HoverStore.getHoveredNode()\r\n\r\n var x = xys.find((o) => o.value === this.props.labelX)\r\n if (x) {\r\n vals[x.value] = { label: x.label, value: hoveredNode.x, format: x.format }\r\n }\r\n\r\n var y = xys.find((o) => o.value === this.props.labelY)\r\n if (y) {\r\n vals[y.value] = { label: y.label, value: hoveredNode.y, format: y.format }\r\n }\r\n\r\n var size = sizes.find((o) => o.value === this.props.labelSize)\r\n if (size) {\r\n vals[size.value] = { label: size.label, value: hoveredNode.size }\r\n }\r\n\r\n var color = colors.find((o) => o.value === this.props.labelColor)\r\n if (color) {\r\n vals[color.value] = { label: color.label, value: hoveredNode.color, format: color.format }\r\n }\r\n\r\n return (\r\n \r\n
{hoveredNode.company}
\r\n
\r\n
\r\n {Object.keys(vals).map((key) => {\r\n const isETFMarketCap = hoveredNode.isETF && key === 'marketCap'\r\n const label = isETFMarketCap ? ETF_MARKET_CAP_LABEL : vals[key].label\r\n const value = formatValue(vals[key].value, vals[key].format, true)\r\n\r\n if (!['sector', 'order', 'ticker', 'const'].includes(key)) {\r\n return (\r\n
\r\n

{label}

\r\n {value}\r\n
\r\n
\r\n )\r\n }\r\n\r\n return null\r\n })}\r\n
\r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n _onMouseMove = (e: MouseEvent) => {\r\n if (!this.state.shown) {\r\n return\r\n }\r\n var marginLeft = 100\r\n var marginTop = 0\r\n var el = document.getElementById('hover-bubbles')!\r\n var hoverWidth = Math.max(el.scrollWidth, 467)\r\n var hoverHeight = Math.max(el.scrollHeight, 213)\r\n var availWidth = document.documentElement.clientWidth\r\n var availHeight = document.documentElement.clientHeight\r\n if (e.clientX + hoverWidth + marginLeft * 1.5 < availWidth) {\r\n el.style.left = e.clientX + marginLeft + 'px'\r\n } else if (e.clientX - hoverWidth - marginLeft > 0) {\r\n el.style.left = e.clientX - marginLeft - hoverWidth + 'px'\r\n } else {\r\n marginLeft = 20\r\n if (e.clientX + hoverWidth + marginLeft < availWidth) {\r\n el.style.left = e.clientX + marginLeft + 'px'\r\n } else {\r\n el.style.left = e.clientX - marginLeft - hoverWidth + 'px'\r\n }\r\n }\r\n el.style.top =\r\n Math.max(0, e.clientY + marginTop - Math.max(0, e.clientY + marginTop + hoverHeight - availHeight)) + 'px'\r\n }\r\n}\r\n\r\nexport default BubblesHover\r\n","import keyMirror from 'keymirror'\r\n\r\nexport const ActionTypes = keyMirror({\r\n LOAD_DATA_STARTED: null,\r\n LOAD_DATA_COMPLETED: null,\r\n LOAD_DATA_FAILED: null,\r\n\r\n CHANGE_RANGE: null,\r\n\r\n SET_HOVERED_NODE: null,\r\n SET_HOVERED_COLOR: null,\r\n\r\n PUBLISH_BUBBLES_STARTED: null,\r\n PUBLISH_BUBBLES_COMPLETED: null,\r\n PUBLISH_BUBBLES_FAILED: null,\r\n PUBLISH_BUBBLES_CLOSE: null,\r\n})\r\n\r\nexport const PayloadSources = keyMirror({\r\n SERVER_ACTION: null,\r\n VIEW_ACTION: null,\r\n})\r\n","import { Dispatcher } from 'flux'\r\n\r\nimport { PayloadSources } from '../constants/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 tailwindColors from '../../../../../config/colors'\r\nimport { alphaToHex } from '../../../main/components/color-picker'\r\n\r\nexport interface BubbleSettings {\r\n margin: { top: number; right: number; bottom: number; left: number }\r\n background: string\r\n grid: string\r\n axis: {\r\n stroke: string\r\n text: string\r\n }\r\n bubble: {\r\n color?: string\r\n textShadow?: string\r\n stroke: string\r\n fill: string\r\n }\r\n color?: string\r\n textShadow?: string\r\n slider: {\r\n stroke: string\r\n highlightStroke: string\r\n highlight: string\r\n distributionHighligt: (opacity: number) => string\r\n distribution: (opacity: number) => string\r\n }\r\n colorPalette?: string[]\r\n}\r\n\r\nexport const BUBBLES_SETTINGS: BubbleSettings = {\r\n margin: { top: 20, right: 25, bottom: 30, left: 50 },\r\n background: tailwindColors.finviz['blue-gray'],\r\n grid: '#8a95b126',\r\n axis: {\r\n stroke: '#8a95b1',\r\n text: '#8a95b1',\r\n },\r\n bubble: {\r\n textShadow: '#0006',\r\n stroke: 'rgba(255,255,255,0.25)',\r\n fill: 'rgba(255,255,255,0.1)',\r\n },\r\n textShadow: '#000000b3',\r\n slider: {\r\n stroke: '#404553',\r\n highlightStroke: '#ffd61480',\r\n highlight: '#ffd61426',\r\n distributionHighligt: (opacity) => `#ffd614${alphaToHex(opacity)}`,\r\n distribution: (opacity) => `#ffffff${alphaToHex(opacity)}`,\r\n },\r\n}\r\n","import * as React from 'react'\r\nimport ReactDOM from 'react-dom'\r\n\r\nimport { Paragraph } from '../../main/components'\r\nimport { Button } from '../../main/components/button'\r\nimport { Topbar } from '../maps/components/Topbar'\r\nimport { QueryClientContext } from '../shared/components/QueryClientContext'\r\nimport { Share } from './Share'\r\nimport BubbleActionCreators from './actions/bubbleActionCreators'\r\nimport { BubbleChart } from './bubbleChart'\r\nimport BubblesHover from './bubblesHover'\r\nimport { BUBBLES_SETTINGS } from './constants/settings'\r\nimport { Presets } from './presets'\r\nimport { ETF_INDUSTRY_IDS, ETF_SECTOR_VALUE, MARKET_CAP_VALUE } from './selects'\r\nimport { SidebarContent } from './sidebar'\r\nimport { BubblesLoadParam } from './types'\r\nimport { decodeQueryString, encodeQueryString } from './utils'\r\n\r\nconst linkClassName = 'text-link hover:text-gray-50'\r\n\r\nfunction Bubbles() {\r\n const queryString = decodeQueryString(true)\r\n const hasETFsEnabled =\r\n // Index isn’t set\r\n queryString.idx === 'any' &&\r\n // Sector isn’t set or is specifically set to financial sector\r\n (!queryString.ind || queryString.ind === 'any' || ETF_INDUSTRY_IDS.includes(queryString.ind)) &&\r\n // Industry isn’t set or is specifically set to an ETF industry\r\n (!queryString.sec || queryString.sec === 'any' || queryString.sec === ETF_SECTOR_VALUE)\r\n\r\n const onChange = React.useRef((values: any) => {\r\n let query = encodeQueryString(values)\r\n\r\n if (query.length) query = `?${query}`\r\n\r\n document.location.href = `/bubbles.ashx${query}`\r\n }).current\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 {hasETFsEnabled && queryString.size === MARKET_CAP_VALUE && (\r\n \r\n ETF size represents assets under management.\r\n \r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nwindow['FinvizInitBubbles'] = function () {\r\n BubbleActionCreators.load('/api/bubbles.ashx', decodeQueryString(true) as unknown as BubblesLoadParam)\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('bubbles')\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button } from '../../main/components/button'\r\nimport { generatePresetUrl } from './utils'\r\n\r\nconst SECTOR = [\r\n {\r\n href: { x: 'sector', y: 'instOwn', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Institutional Ownership',\r\n },\r\n {\r\n href: { x: 'sector', y: 'forwardPE', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Forward P/E Ratio',\r\n },\r\n {\r\n href: { x: 'sector', y: 'employees', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Employees',\r\n },\r\n {\r\n href: { x: 'sector', y: 'grossMargin', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Gross Margin',\r\n },\r\n {\r\n href: { x: 'sector', y: 'marketCap', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Market Capitalization',\r\n },\r\n {\r\n href: { x: 'sector', y: 'averageVolumeUsd', size: 'averageVolumeUsd', color: 'sector', idx: 'sp500' },\r\n label: 'Average USD Volume',\r\n },\r\n {\r\n href: { x: 'sector', y: 'sma200', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Simple Moving Average 200',\r\n },\r\n {\r\n href: { x: 'sector', y: 'rsi', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Relative Strength Index 14',\r\n },\r\n {\r\n href: { x: 'sector', y: 'shortInterestRatio', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Short Interest Ratio',\r\n },\r\n]\r\n\r\nconst PERFORMANCE = [\r\n {\r\n href: { x: 'sector', y: 'lastChange', size: 'relativeVolume', color: 'lastChange', idx: 'sp500' },\r\n label: 'Today’s performance by Relative Volume',\r\n },\r\n {\r\n href: { x: 'sector', y: 'lastChange', size: 'marketCap', color: 'lastChange', idx: 'sp500' },\r\n label: 'Today’s performance by Market Capitalization',\r\n },\r\n {\r\n href: { x: 'sector', y: 'lastChange', size: 'averageVolumeUsd', color: 'lastChange', idx: 'sp500' },\r\n label: 'Today’s performance by Average USD Volume',\r\n },\r\n {\r\n // prettier-ignore\r\n href: { x: 'sector', y: 'lastChange', size: 'relativeVolume', color: 'lastChange', idx: 'any', ind: 'exchangetradedfund'},\r\n label: 'Today’s performance by Relative Volume (ETFs)',\r\n },\r\n {\r\n href: { x: 'sector', y: 'perfYtd', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Year-to-Date Performance',\r\n },\r\n {\r\n href: { x: 'sector', y: 'perf1w', size: 'marketCap', color: 'perf1w', idx: 'sp500' },\r\n label: '1-Week Performance',\r\n },\r\n {\r\n href: { x: 'sector', y: 'high52w', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: '52-Week High',\r\n },\r\n {\r\n href: { x: 'sector', y: 'low52w', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: '52-Week Low',\r\n },\r\n {\r\n href: { x: 'high52w', y: 'low52w', size: 'const', color: 'sector', idx: 'sp500' },\r\n label: '52-Week High vs Low',\r\n },\r\n {\r\n href: { x: 'insiderTrans', y: 'perf26w', size: 'marketCap', color: 'perf26w', idx: 'sp500' },\r\n label: 'Insider Transactions vs 6-Month Performance',\r\n },\r\n {\r\n href: { x: 'instOwn', y: 'perf26w', size: 'marketCap', color: 'perf26w', idx: 'sp500' },\r\n label: 'Institutional Ownership vs 6-Month Performance',\r\n },\r\n {\r\n href: { x: 'marketCap', y: 'perf52w', size: 'marketCap', color: 'perf52w', idx: 'sp500' },\r\n label: 'Market Capitalization vs 12-Month Performance',\r\n },\r\n {\r\n href: { x: 'roa', y: 'perf52w', size: 'marketCap', color: 'perf52w', idx: 'sp500' },\r\n label: 'ROA vs 12-Month Performance',\r\n },\r\n {\r\n href: { x: 'rsi', y: 'perf4w', size: 'marketCap', color: 'perf4w', idx: 'sp500' },\r\n label: 'Relative Strength Index 14 vs 4-Week Performance',\r\n },\r\n {\r\n href: { x: 'shortInterestRatio', y: 'rsi', size: 'marketCap', color: 'perf4w', idx: 'sp500' },\r\n label: 'Short Interest Ratio vs Relative Strength Index 14',\r\n },\r\n]\r\n\r\nconst OTHER = [\r\n {\r\n href: { x: 'employees', y: 'sales', size: 'marketCap', color: 'const', tickers: 'AAPL,GOOG,MSFT,AMZN,FB' },\r\n label: 'Employees vs Sales in AAPL, GOOG, MSFT, AMZN, FB',\r\n },\r\n {\r\n href: { x: 'PE', y: 'forwardPE', size: 'marketCap', color: 'perf52w', sec: 'technology', cap: 'largeover' },\r\n label: 'P/E vs Forward P/E Ratio in Large cap. Technology Stocks',\r\n },\r\n {\r\n href: { x: 'consRecom', y: 'order', size: 'const', color: 'consRecom' },\r\n label: 'Analyst Recommendations Distribution - Buy Bias',\r\n },\r\n {\r\n href: { x: 'consRecom', y: 'sector', size: 'const', color: 'consRecom' },\r\n label: 'Analyst Recommendations Distribution by sector - Buy Bias',\r\n },\r\n {\r\n href: { x: 'income', y: 'sales', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: 'Income vs Sales (S&P 500)',\r\n },\r\n {\r\n href: { x: 'eps5Years', y: 'sales5Years', size: 'marketCap', color: 'sector', idx: 'sp500' },\r\n label: '5-Year EPS vs Sales growth (S&P 500)',\r\n },\r\n]\r\n\r\ninterface PresetsModalProps {\r\n className?: string\r\n generatePresetUrl: (preset: Record) => string\r\n onClose: (ev: React.MouseEvent) => void\r\n}\r\n\r\nclass PresetsModal extends React.Component {\r\n static defaultProps = {\r\n generatePresetUrl,\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n

Bubbles presets

\r\n \r\n
\r\n
\r\n

By Sector (S&P 500)

\r\n {SECTOR.map((link) => (\r\n \r\n {link.label}\r\n
\r\n
\r\n ))}\r\n\r\n

By Performance (S&P 500)

\r\n {PERFORMANCE.map((link) => (\r\n \r\n {link.label}\r\n
\r\n
\r\n ))}\r\n\r\n

Other

\r\n {OTHER.map((link) => (\r\n \r\n {link.label}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n _closeModal = (e: React.MouseEvent) => {\r\n e.preventDefault()\r\n this.props.onClose(e)\r\n }\r\n\r\n _hideModalOverlay = (e: React.MouseEvent) => {\r\n if (e.target === e.currentTarget) {\r\n this._closeModal(e)\r\n }\r\n }\r\n}\r\n\r\ninterface PresetsProps {\r\n generatePresetUrl?: (preset: Record) => string\r\n className?: string\r\n isDark?: boolean\r\n}\r\n\r\nexport function Presets({ className, generatePresetUrl, isDark }: PresetsProps) {\r\n const [showPresets, setShowPresets] = React.useState(false)\r\n return (\r\n <>\r\n \r\n {showPresets && (\r\n setShowPresets(false)}\r\n generatePresetUrl={generatePresetUrl}\r\n />\r\n )}\r\n \r\n )\r\n}\r\n","import { SelectItem } from '../../main/components'\r\n\r\nexport type BubbleSelectOption = SelectItem & { format?: string }\r\n\r\nexport const ETF_MARKET_CAP_LABEL = 'Assets under management'\r\nexport const MARKET_CAP_VALUE = 'marketCap'\r\nexport const ETF_SECTOR_VALUE = 'financial'\r\nexport const ETF_INDUSTRY_IDS = [\r\n 'exchangetradedfund',\r\n 'closedendfunddebt',\r\n 'closedendfundequity',\r\n 'closedendfundforeign',\r\n]\r\n\r\nvar xys = [\r\n { value: 'sector', label: 'Sector' },\r\n { value: 'ticker', label: 'Ticker' },\r\n { value: 'order', label: 'Order' },\r\n { value: MARKET_CAP_VALUE, label: 'Market Capitalization' },\r\n { value: 'dividendYield', label: 'Dividend Yield', format: '%' },\r\n { value: 'payoutRatio', label: 'Payout Ratio', format: '%' },\r\n { value: 'employees', label: 'Employees' },\r\n { value: 'income', label: 'Income' },\r\n { value: 'sales', label: 'Sales' },\r\n { value: 'epsQoQ', label: 'EPS growth Q/Q', format: '%' },\r\n { value: 'epsYoY', label: 'EPS growth this Y/Y', format: '%' },\r\n { value: 'epsYoY1', label: 'EPS growth next Y/Y', format: '%' },\r\n { value: 'eps5Years', label: 'EPS growth past 5 years', format: '%' },\r\n { value: 'estLTGrowth', label: 'EPS growth long term est.', format: '%' },\r\n { value: 'salesQoQ', label: 'Sales growth Q/Q', format: '%' },\r\n { value: 'sales5Years', label: 'Sales growth past 5 years', format: '%' },\r\n { value: 'PE', label: 'P/E' },\r\n { value: 'forwardPE', label: 'Forward P/E' },\r\n { value: 'PEG', label: 'PEG' },\r\n { value: 'PS', label: 'P/S' },\r\n { value: 'PB', label: 'P/B' },\r\n { value: 'PC', label: 'P/C' },\r\n { value: 'PFCF', label: 'P/FCF' },\r\n { value: 'roi', label: 'ROI' },\r\n { value: 'roe', label: 'ROE' },\r\n { value: 'roa', label: 'ROA' },\r\n { value: 'grossMargin', label: 'Gross Margin', format: '%' },\r\n { value: 'operMargin', label: 'Operating Margin', format: '%' },\r\n { value: 'netMargin', label: 'Profit Margin', format: '%' },\r\n { value: 'curRatio', label: 'Current Ratio' },\r\n { value: 'quickRatio', label: 'Quick Ratio' },\r\n { value: 'ltdebtEq', label: 'Long Term Debt to Equity' },\r\n { value: 'debtEq', label: 'Total Debt to Equity' },\r\n { value: 'lastChange', label: 'Change', format: '%' },\r\n { value: 'changeOpen', label: 'Change from Open', format: '%' },\r\n { value: 'gap', label: 'Gap', format: '%' },\r\n { value: 'lastVolume', label: 'Volume' },\r\n { value: 'lastVolumeUsd', label: 'Volume USD' },\r\n { value: 'averageVolume', label: 'Average Volume' },\r\n { value: 'averageVolumeUsd', label: 'Average Volume USD' },\r\n { value: 'relativeVolume', label: 'Relative Volume' },\r\n { value: 'perf1w', label: '1 Week Performance', format: '%' },\r\n { value: 'perf4w', label: '1 Month Performance', format: '%' },\r\n { value: 'perf13w', label: '3 Month Performance', format: '%' },\r\n { value: 'perf26w', label: '6 Month Performance', format: '%' },\r\n { value: 'perf52w', label: '1 Year Performance', format: '%' },\r\n { value: 'perfYtd', label: 'Year To Date Performance', format: '%' },\r\n { value: 'volatility1w', label: 'Weekly Volatility', format: '%' },\r\n { value: 'volatility4w', label: 'Monthly Volatlity', format: '%' },\r\n { value: 'beta', label: 'Beta' },\r\n { value: 'low52w', label: '52-Week Low', format: '%' },\r\n { value: 'high52w', label: '52-Week High', format: '%' },\r\n { value: 'sma20', label: 'Simple Moving Average 20', format: '%' },\r\n { value: 'sma50', label: 'Simple Moving Average 50', format: '%' },\r\n { value: 'sma200', label: 'Simple Moving Average 200', format: '%' },\r\n { value: 'rsi', label: 'Relative Strength Index 14' },\r\n { value: 'insiderOwn', label: 'Insider Ownership', format: '%' },\r\n { value: 'insiderTrans', label: 'Insider Transactions', format: '%' },\r\n { value: 'instOwn', label: 'Institutional Ownership', format: '%' },\r\n { value: 'instTrans', label: 'Institutional Transactions', format: '%' },\r\n { value: 'shortInterestShare', label: 'Short Interest Share', format: '%' },\r\n { value: 'shortInterestRatio', label: 'Short Interest Ratio' },\r\n { value: 'consRecom', label: 'Analyst Recommendation' },\r\n { value: 'targetPrice', label: 'Target Price', format: '%' },\r\n]\r\n\r\nvar sizes = [\r\n { value: 'const', label: 'Constant' },\r\n { value: 'marketCap', label: 'Market Capitalization' },\r\n { value: 'lastVolume', label: 'Volume' },\r\n { value: 'lastVolumeUsd', label: 'Volume USD' },\r\n { value: 'averageVolume', label: 'Average Volume' },\r\n { value: 'averageVolumeUsd', label: 'Average Volume USD' },\r\n { value: 'relativeVolume', label: 'Relative Volume' },\r\n]\r\n\r\nvar colors = [\r\n { value: 'const', label: 'Constant' },\r\n { value: 'sector', label: 'Sector' },\r\n { value: 'industry', label: 'Industry' },\r\n { value: 'country', label: 'Country' },\r\n { value: 'marketCap', label: 'Market Capitalization' },\r\n { value: 'lastChange', label: 'Change', format: '%' },\r\n { value: 'perf1w', label: '1 Week Performance', format: '%' },\r\n { value: 'perf4w', label: '1 Month Performance', format: '%' },\r\n { value: 'perf13w', label: '3 Month Performance', format: '%' },\r\n { value: 'perf26w', label: '6 Month Performance', format: '%' },\r\n { value: 'perf52w', label: '1 Year Performance', format: '%' },\r\n { value: 'perfYtd', label: 'Year To Date Performance', format: '%' },\r\n { value: 'lastVolume', label: 'Volume' },\r\n { value: 'lastVolumeUsd', label: 'Volume USD' },\r\n { value: 'averageVolume', label: 'Average Volume' },\r\n { value: 'averageVolumeUsd', label: 'Average Volume USD' },\r\n { value: 'relativeVolume', label: 'Relative Volume' },\r\n { value: 'consRecom', label: 'Analyst Recommendation' },\r\n]\r\n\r\nvar indexes = [\r\n { value: 'any', label: 'Any' },\r\n { value: 'sp500', label: 'S&P 500' },\r\n { value: 'ndx', label: 'NASDAQ 100' },\r\n { value: 'dji', label: 'DJIA' },\r\n { value: 'rut', label: 'RUSSELL 2000' },\r\n]\r\n\r\nvar sectors = [\r\n { value: '', label: 'Any' },\r\n { value: 'basicmaterials', label: 'Basic Materials' },\r\n { value: 'communicationservices', label: 'Communication Services' },\r\n { value: 'consumercyclical', label: 'Consumer Cyclical' },\r\n { value: 'consumerdefensive', label: 'Consumer Defensive' },\r\n { value: 'energy', label: 'Energy' },\r\n { value: ETF_SECTOR_VALUE, label: 'Financial' },\r\n { value: 'healthcare', label: 'Healthcare' },\r\n { value: 'industrials', label: 'Industrials' },\r\n { value: 'realestate', label: 'Real Estate' },\r\n { value: 'technology', label: 'Technology' },\r\n { value: 'utilities', label: 'Utilities' },\r\n]\r\n\r\nvar industries = [\r\n { value: '', label: 'Any' },\r\n { value: 'stocksonly', label: 'Stocks only (ex-Funds)' },\r\n { value: 'exchangetradedfund', label: 'Exchange Traded Fund' },\r\n { value: 'advertisingagencies', label: 'Advertising Agencies' },\r\n { value: 'aerospacedefense', label: 'Aerospace & Defense' },\r\n { value: 'agriculturalinputs', label: 'Agricultural Inputs' },\r\n { value: 'airlines', label: 'Airlines' },\r\n { value: 'airportsairservices', label: 'Airports & Air Services' },\r\n { value: 'aluminum', label: 'Aluminum' },\r\n { value: 'apparelmanufacturing', label: 'Apparel Manufacturing' },\r\n { value: 'apparelretail', label: 'Apparel Retail' },\r\n { value: 'assetmanagement', label: 'Asset Management' },\r\n { value: 'automanufacturers', label: 'Auto Manufacturers' },\r\n { value: 'autoparts', label: 'Auto Parts' },\r\n { value: 'autotruckdealerships', label: 'Auto & Truck Dealerships' },\r\n { value: 'banksdiversified', label: 'Banks - Diversified' },\r\n { value: 'banksregional', label: 'Banks - Regional' },\r\n { value: 'beveragesbrewers', label: 'Beverages - Brewers' },\r\n { value: 'beveragesnonalcoholic', label: 'Beverages - Non-Alcoholic' },\r\n { value: 'beverageswineriesdistilleries', label: 'Beverages - Wineries & Distilleries' },\r\n { value: 'biotechnology', label: 'Biotechnology' },\r\n { value: 'broadcasting', label: 'Broadcasting' },\r\n { value: 'buildingmaterials', label: 'Building Materials' },\r\n { value: 'buildingproductsequipment', label: 'Building Products & Equipment' },\r\n { value: 'businessequipmentsupplies', label: 'Business Equipment & Supplies' },\r\n { value: 'capitalmarkets', label: 'Capital Markets' },\r\n { value: 'chemicals', label: 'Chemicals' },\r\n { value: 'closedendfunddebt', label: 'Closed-End Fund - Debt' },\r\n { value: 'closedendfundequity', label: 'Closed-End Fund - Equity' },\r\n { value: 'closedendfundforeign', label: 'Closed-End Fund - Foreign' },\r\n { value: 'cokingcoal', label: 'Coking Coal' },\r\n { value: 'communicationequipment', label: 'Communication Equipment' },\r\n { value: 'computerhardware', label: 'Computer Hardware' },\r\n { value: 'confectioners', label: 'Confectioners' },\r\n { value: 'conglomerates', label: 'Conglomerates' },\r\n { value: 'consultingservices', label: 'Consulting Services' },\r\n { value: 'consumerelectronics', label: 'Consumer Electronics' },\r\n { value: 'copper', label: 'Copper' },\r\n { value: 'creditservices', label: 'Credit Services' },\r\n { value: 'departmentstores', label: 'Department Stores' },\r\n { value: 'diagnosticsresearch', label: 'Diagnostics & Research' },\r\n { value: 'discountstores', label: 'Discount Stores' },\r\n { value: 'drugmanufacturersgeneral', label: 'Drug Manufacturers - General' },\r\n { value: 'drugmanufacturersspecialtygeneric', label: 'Drug Manufacturers - Specialty & Generic' },\r\n { value: 'educationtrainingservices', label: 'Education & Training Services' },\r\n { value: 'electricalequipmentparts', label: 'Electrical Equipment & Parts' },\r\n { value: 'electroniccomponents', label: 'Electronic Components' },\r\n { value: 'electronicgamingmultimedia', label: 'Electronic Gaming & Multimedia' },\r\n { value: 'electronicscomputerdistribution', label: 'Electronics & Computer Distribution' },\r\n { value: 'engineeringconstruction', label: 'Engineering & Construction' },\r\n { value: 'entertainment', label: 'Entertainment' },\r\n { value: 'farmheavyconstructionmachinery', label: 'Farm & Heavy Construction Machinery' },\r\n { value: 'farmproducts', label: 'Farm Products' },\r\n { value: 'financialconglomerates', label: 'Financial Conglomerates' },\r\n { value: 'financialdatastockexchanges', label: 'Financial Data & Stock Exchanges' },\r\n { value: 'fooddistribution', label: 'Food Distribution' },\r\n { value: 'footwearaccessories', label: 'Footwear & Accessories' },\r\n { value: 'furnishingsfixturesappliances', label: 'Furnishings, Fixtures & Appliances' },\r\n { value: 'gambling', label: 'Gambling' },\r\n { value: 'gold', label: 'Gold' },\r\n { value: 'grocerystores', label: 'Grocery Stores' },\r\n { value: 'healthcareplans', label: 'Healthcare Plans' },\r\n { value: 'healthinformationservices', label: 'Health Information Services' },\r\n { value: 'homeimprovementretail', label: 'Home Improvement Retail' },\r\n { value: 'householdpersonalproducts', label: 'Household & Personal Products' },\r\n { value: 'industrialdistribution', label: 'Industrial Distribution' },\r\n { value: 'informationtechnologyservices', label: 'Information Technology Services' },\r\n { value: 'infrastructureoperations', label: 'Infrastructure Operations' },\r\n { value: 'insurancebrokers', label: 'Insurance Brokers' },\r\n { value: 'insurancediversified', label: 'Insurance - Diversified' },\r\n { value: 'insurancelife', label: 'Insurance - Life' },\r\n { value: 'insurancepropertycasualty', label: 'Insurance - Property & Casualty' },\r\n { value: 'insurancereinsurance', label: 'Insurance - Reinsurance' },\r\n { value: 'insurancespecialty', label: 'Insurance - Specialty' },\r\n { value: 'integratedfreightlogistics', label: 'Integrated Freight & Logistics' },\r\n { value: 'internetcontentinformation', label: 'Internet Content & Information' },\r\n { value: 'internetretail', label: 'Internet Retail' },\r\n { value: 'leisure', label: 'Leisure' },\r\n { value: 'lodging', label: 'Lodging' },\r\n { value: 'lumberwoodproduction', label: 'Lumber & Wood Production' },\r\n { value: 'luxurygoods', label: 'Luxury Goods' },\r\n { value: 'marineshipping', label: 'Marine Shipping' },\r\n { value: 'medicalcarefacilities', label: 'Medical Care Facilities' },\r\n { value: 'medicaldevices', label: 'Medical Devices' },\r\n { value: 'medicaldistribution', label: 'Medical Distribution' },\r\n { value: 'medicalinstrumentssupplies', label: 'Medical Instruments & Supplies' },\r\n { value: 'metalfabrication', label: 'Metal Fabrication' },\r\n { value: 'mortgagefinance', label: 'Mortgage Finance' },\r\n { value: 'oilgasdrilling', label: 'Oil & Gas Drilling' },\r\n { value: 'oilgasep', label: 'Oil & Gas E&P' },\r\n { value: 'oilgasequipmentservices', label: 'Oil & Gas Equipment & Services' },\r\n { value: 'oilgasintegrated', label: 'Oil & Gas Integrated' },\r\n { value: 'oilgasmidstream', label: 'Oil & Gas Midstream' },\r\n { value: 'oilgasrefiningmarketing', label: 'Oil & Gas Refining & Marketing' },\r\n { value: 'otherindustrialmetalsmining', label: 'Other Industrial Metals & Mining' },\r\n { value: 'otherpreciousmetalsmining', label: 'Other Precious Metals & Mining' },\r\n { value: 'packagedfoods', label: 'Packaged Foods' },\r\n { value: 'packagingcontainers', label: 'Packaging & Containers' },\r\n { value: 'paperpaperproducts', label: 'Paper & Paper Products' },\r\n { value: 'personalservices', label: 'Personal Services' },\r\n { value: 'pharmaceuticalretailers', label: 'Pharmaceutical Retailers' },\r\n { value: 'pollutiontreatmentcontrols', label: 'Pollution & Treatment Controls' },\r\n { value: 'publishing', label: 'Publishing' },\r\n { value: 'railroads', label: 'Railroads' },\r\n { value: 'realestatedevelopment', label: 'Real Estate - Development' },\r\n { value: 'realestatediversified', label: 'Real Estate - Diversified' },\r\n { value: 'realestateservices', label: 'Real Estate Services' },\r\n { value: 'recreationalvehicles', label: 'Recreational Vehicles' },\r\n { value: 'reitdiversified', label: 'REIT - Diversified' },\r\n { value: 'reithealthcarefacilities', label: 'REIT - Healthcare Facilities' },\r\n { value: 'reithotelmotel', label: 'REIT - Hotel & Motel' },\r\n { value: 'reitindustrial', label: 'REIT - Industrial' },\r\n { value: 'reitmortgage', label: 'REIT - Mortgage' },\r\n { value: 'reitoffice', label: 'REIT - Office' },\r\n { value: 'reitresidential', label: 'REIT - Residential' },\r\n { value: 'reitretail', label: 'REIT - Retail' },\r\n { value: 'reitspecialty', label: 'REIT - Specialty' },\r\n { value: 'rentalleasingservices', label: 'Rental & Leasing Services' },\r\n { value: 'residentialconstruction', label: 'Residential Construction' },\r\n { value: 'resortscasinos', label: 'Resorts & Casinos' },\r\n { value: 'restaurants', label: 'Restaurants' },\r\n { value: 'scientifictechnicalinstruments', label: 'Scientific & Technical Instruments' },\r\n { value: 'securityprotectionservices', label: 'Security & Protection Services' },\r\n { value: 'semiconductorequipmentmaterials', label: 'Semiconductor Equipment & Materials' },\r\n { value: 'semiconductors', label: 'Semiconductors' },\r\n { value: 'shellcompanies', label: 'Shell Companies' },\r\n { value: 'silver', label: 'Silver' },\r\n { value: 'softwareapplication', label: 'Software - Application' },\r\n { value: 'softwareinfrastructure', label: 'Software - Infrastructure' },\r\n { value: 'solar', label: 'Solar' },\r\n { value: 'specialtybusinessservices', label: 'Specialty Business Services' },\r\n { value: 'specialtychemicals', label: 'Specialty Chemicals' },\r\n { value: 'specialtyindustrialmachinery', label: 'Specialty Industrial Machinery' },\r\n { value: 'specialtyretail', label: 'Specialty Retail' },\r\n { value: 'staffingemploymentservices', label: 'Staffing & Employment Services' },\r\n { value: 'steel', label: 'Steel' },\r\n { value: 'telecomservices', label: 'Telecom Services' },\r\n { value: 'textilemanufacturing', label: 'Textile Manufacturing' },\r\n { value: 'thermalcoal', label: 'Thermal Coal' },\r\n { value: 'tobacco', label: 'Tobacco' },\r\n { value: 'toolsaccessories', label: 'Tools & Accessories' },\r\n { value: 'travelservices', label: 'Travel Services' },\r\n { value: 'trucking', label: 'Trucking' },\r\n { value: 'uranium', label: 'Uranium' },\r\n { value: 'utilitiesdiversified', label: 'Utilities - Diversified' },\r\n { value: 'utilitiesindependentpowerproducers', label: 'Utilities - Independent Power Producers' },\r\n { value: 'utilitiesregulatedelectric', label: 'Utilities - Regulated Electric' },\r\n { value: 'utilitiesregulatedgas', label: 'Utilities - Regulated Gas' },\r\n { value: 'utilitiesregulatedwater', label: 'Utilities - Regulated Water' },\r\n { value: 'utilitiesrenewable', label: 'Utilities - Renewable' },\r\n { value: 'wastemanagement', label: 'Waste Management' },\r\n]\r\n\r\nvar marketCaps = [\r\n { value: '', label: 'Any' },\r\n { value: 'mega', label: 'Mega ($200bln and more)' },\r\n { value: 'large', label: 'Large ($10bln to $200bln)' },\r\n { value: 'mid', label: 'Mid ($2bln to $10bln)' },\r\n { value: 'small', label: 'Small ($300mln to $2bln)' },\r\n { value: 'micro', label: 'Micro ($50mln to $300mln)' },\r\n { value: 'nano', label: 'Nano (under $50mln)' },\r\n { value: 'largeover', label: '+Large (over $10bln)' },\r\n { value: 'midover', label: '+Mid (over $2bln)' },\r\n { value: 'smallover', label: '+Small (over $300mln)' },\r\n { value: 'microover', label: '+Micro (over $50mln)' },\r\n { value: 'largeunder', label: '-Large (under $200bln)' },\r\n { value: 'midunder', label: '-Mid (under $10bln)' },\r\n { value: 'smallunder', label: '-Small (under $2bln)' },\r\n { value: 'microunder', label: '-Micro (under $300mln)' },\r\n]\r\n\r\nvar averageVolumes = [\r\n { value: '', label: 'Any' },\r\n { value: 'u50', label: 'Under 50K' },\r\n { value: 'u100', label: 'Under 100K' },\r\n { value: 'u500', label: 'Under 500K' },\r\n { value: 'u750', label: 'Under 750K' },\r\n { value: 'u1000', label: 'Under 1M' },\r\n { value: 'o50', label: 'Over 50K' },\r\n { value: 'o100', label: 'Over 100K' },\r\n { value: 'o200', label: 'Over 200K' },\r\n { value: 'o300', label: 'Over 300K' },\r\n { value: 'o400', label: 'Over 400K' },\r\n { value: 'o500', label: 'Over 500K' },\r\n { value: 'o750', label: 'Over 750K' },\r\n { value: 'o1000', label: 'Over 1M' },\r\n { value: 'o2000', label: 'Over 2M' },\r\n { value: '100to500', label: '100K to 500K' },\r\n { value: '100to1000', label: '100K to 1M' },\r\n { value: '500to1000', label: '500K to 1M' },\r\n { value: '500to10000', label: '500K to 10M' },\r\n]\r\n\r\nexport { xys, sizes, colors, indexes, sectors, industries, marketCaps, averageVolumes }\r\n","import classname from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Input, InputHTMLProps, InputProps } from '../../main/components/input'\r\n\r\nenum BubblesInputTheme {\r\n light,\r\n dark,\r\n}\r\n\r\ninterface BubblesInputThemeReturn {\r\n label: React.HTMLProps\r\n input: InputProps\r\n}\r\n\r\nfunction getInputTheme(theme: BubblesInputTheme): BubblesInputThemeReturn {\r\n switch (theme) {\r\n case BubblesInputTheme.light:\r\n return {\r\n label: {\r\n className: 'text-gray-400',\r\n },\r\n input: {\r\n theme: 'none',\r\n rounding: 'none',\r\n inputClass: 'bg-[#4a505f] border border-[#585f72] focus:bg-[#535a6b] focus:border-[#707990]',\r\n },\r\n }\r\n case BubblesInputTheme.dark:\r\n return {\r\n label: {\r\n className: 'text-gray-500',\r\n },\r\n input: {},\r\n }\r\n }\r\n}\r\n\r\ninterface BubblesInputProps extends Omit, Omit {\r\n theme?: keyof typeof BubblesInputTheme\r\n}\r\n\r\nexport function BubblesInput({ theme = 'light', label, ...props }: BubblesInputProps) {\r\n const inputTheme = React.useMemo(() => getInputTheme(BubblesInputTheme[theme]), [theme])\r\n\r\n return (\r\n {label}}\r\n {...inputTheme.input}\r\n {...props}\r\n />\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { Button } from '../../main/components/button'\r\nimport { Icon } from '../../main/components/icon'\r\nimport { MapSelect, MapSelectTheme } from '../maps/components/MapSelect'\r\nimport { BubblesInput } from './input'\r\nimport {\r\n BubbleSelectOption,\r\n MARKET_CAP_VALUE,\r\n averageVolumes,\r\n colors,\r\n indexes,\r\n industries,\r\n marketCaps,\r\n sectors,\r\n sizes,\r\n xys,\r\n} from './selects'\r\n\r\ntype OptionName =\r\n | 'x'\r\n | 'y'\r\n | 'size'\r\n | 'color'\r\n | 'idx'\r\n | 'sec'\r\n | 'ind'\r\n | 'cap'\r\n | 'sh_avgvol'\r\n | 'tickers'\r\n | 'excludeTickers'\r\n\r\ninterface SidebarContentProps {\r\n hasETFs?: boolean\r\n linkClassName?: string\r\n extendedFilters?: boolean\r\n theme?: keyof typeof MapSelectTheme\r\n selected: Partial>\r\n onChange: (value: Partial>) => void\r\n}\r\n\r\nexport function SidebarContent(props: SidebarContentProps) {\r\n const { selected, onChange } = props\r\n\r\n const handleSwitchAxis = React.useCallback(() => {\r\n onChange({ ...selected, x: selected.y, y: selected.x })\r\n }, [selected, onChange])\r\n\r\n const handleSelect = React.useCallback(\r\n (item: BubbleSelectOption, name: OptionName) => {\r\n onChange({ ...selected, [name]: item.value })\r\n },\r\n [selected, onChange]\r\n )\r\n\r\n const handleBlur = React.useCallback(\r\n (ev: React.ChangeEvent) => {\r\n const name = ev.currentTarget.name as OptionName\r\n const value = ev.currentTarget.value\r\n\r\n if (value !== (selected[name] ?? '')) {\r\n onChange({ ...selected, [name]: value })\r\n }\r\n },\r\n [selected, onChange]\r\n )\r\n\r\n const handleKeyDown = React.useCallback(\r\n (ev: React.KeyboardEvent) => {\r\n if (ev.key === 'Enter') {\r\n onChange({\r\n ...selected,\r\n [ev.currentTarget.name]: ev.currentTarget.value,\r\n })\r\n }\r\n },\r\n [selected, onChange]\r\n )\r\n\r\n const xOptions = React.useMemo(\r\n () =>\r\n xys.filter(\r\n (option) =>\r\n !(\r\n (selected.y === 'order' && ['ticker', 'sector'].includes(option.value)) ||\r\n (option.value === 'order' && ['', 'order', 'sector', 'ticker'].includes(selected.y!))\r\n )\r\n ),\r\n [selected.y]\r\n )\r\n\r\n const yOptions = React.useMemo(\r\n () =>\r\n xys.filter(\r\n (option) =>\r\n !(\r\n (selected.x === 'order' && ['ticker', 'sector'].includes(option.value)) ||\r\n (option.value === 'order' && ['', 'order', 'sector', 'ticker'].includes(selected.x!))\r\n )\r\n ),\r\n [selected.x]\r\n )\r\n\r\n const sizeOptions = React.useMemo(\r\n () =>\r\n sizes.map((option) => {\r\n if (props.hasETFs && option.value === MARKET_CAP_VALUE) {\r\n return { ...option, label: 'Market Capitalization', subtitle: 'ETFs: Assets Under Management' }\r\n }\r\n\r\n return option\r\n }),\r\n [props.hasETFs]\r\n )\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n {props.extendedFilters && (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n )}\r\n
\r\n )\r\n}\r\n","import { getFormattedDateString } from '../../header/utils'\r\nimport { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport { BubbleNode, BubblesLoadParam, Range } from '../types'\r\nimport Store from './store'\r\n\r\nvar _isLoading: boolean\r\nvar _hasError: boolean\r\nvar _errorCode: any\r\n\r\nvar _params: BubblesLoadParam\r\n\r\nvar _bubbles: BubbleNode[] = []\r\nvar _bubblesInRange: BubbleNode[] = []\r\nvar _rangeX: Range\r\nvar _rangeY: Range\r\n\r\nvar _dataUpdateTimeString: string\r\nvar _modal = { shown: false, failed: false, completed: false, imgUrl: '', shareUrl: '' }\r\nclass BubbleStore extends Store {\r\n isLoading() {\r\n return _isLoading\r\n }\r\n\r\n hasError() {\r\n return _hasError\r\n }\r\n\r\n getErrorCode() {\r\n return _errorCode\r\n }\r\n\r\n getParams() {\r\n return _params\r\n }\r\n\r\n getBubbles() {\r\n return _bubbles\r\n }\r\n\r\n getBubblesInRange() {\r\n return _bubblesInRange\r\n }\r\n\r\n getRange(type: string) {\r\n if (type === 'x') {\r\n return _rangeX\r\n } else {\r\n return _rangeY\r\n }\r\n }\r\n\r\n getRanges() {\r\n return {\r\n x: _rangeX,\r\n y: _rangeY,\r\n }\r\n }\r\n\r\n getModal() {\r\n return _modal\r\n }\r\n\r\n getDataUpdateTimeString() {\r\n return _dataUpdateTimeString\r\n }\r\n}\r\nvar bubbleStore = new BubbleStore()\r\n\r\nvar parseRange = function (range: string) {\r\n try {\r\n var parts = range.split('|')\r\n return {\r\n min: parseFloat(parts[0]),\r\n max: parseFloat(parts[1]),\r\n }\r\n } catch (e) {}\r\n return false\r\n}\r\n\r\nvar changeRange = function (type: string, range: Range) {\r\n if (type === 'x') {\r\n _rangeX = range\r\n } else {\r\n _rangeY = range\r\n }\r\n\r\n _bubblesInRange = _bubbles.filter(function (d) {\r\n var val = true\r\n if (_rangeX) {\r\n val = val && d.x >= _rangeX.min && d.x <= _rangeX.max\r\n }\r\n if (_rangeY) {\r\n val = val && d.y >= _rangeY.min && d.y <= _rangeY.max\r\n }\r\n return val\r\n })\r\n\r\n if (_rangeX) {\r\n _params.rangeX = _rangeX.min + '|' + _rangeX.max\r\n }\r\n if (_rangeY) {\r\n _params.rangeY = _rangeY.min + '|' + _rangeY.max\r\n }\r\n}\r\n\r\n// @ts-ignore\r\nbubbleStore.dispatchToken = AppDispatcher.register(function (payload: any) {\r\n var action = payload.action\r\n\r\n switch (action.type) {\r\n case ActionTypes.LOAD_DATA_STARTED:\r\n _params = action.params\r\n _isLoading = true\r\n _hasError = false\r\n bubbleStore.emitChange()\r\n break\r\n\r\n case ActionTypes.LOAD_DATA_COMPLETED:\r\n _isLoading = false\r\n _dataUpdateTimeString = getFormattedDateString()\r\n\r\n _bubbles = action.data.map((node: any) => {\r\n const parsedX = parseFloat(node.x)\r\n const parsedY = parseFloat(node.y)\r\n const parsedSize = parseFloat(node.size)\r\n const parsedColor = parseFloat(node.color)\r\n\r\n return {\r\n ...node,\r\n x: Number.isFinite(parsedX) ? parsedX : node.x,\r\n y: Number.isFinite(parsedY) ? parsedY : node.y,\r\n size: Number.isFinite(parsedSize) ? parsedSize : node.size,\r\n color: Number.isFinite(parsedColor) ? parsedColor : node.color,\r\n }\r\n })\r\n _bubbles.sort(function (a, b) {\r\n return b.size - a.size\r\n })\r\n\r\n _bubblesInRange = _bubbles\r\n\r\n if (_params.rangeX && parseRange(_params.rangeX)) {\r\n // @ts-ignore\r\n changeRange('x', parseRange(_params.rangeX))\r\n }\r\n\r\n if (_params.rangeY && parseRange(_params.rangeY)) {\r\n // @ts-ignore\r\n changeRange('y', parseRange(_params.rangeY))\r\n }\r\n\r\n bubbleStore.emitChange()\r\n break\r\n\r\n case ActionTypes.LOAD_DATA_FAILED:\r\n _isLoading = false\r\n _hasError = true\r\n _errorCode = action.errorStatus\r\n bubbleStore.emitChange()\r\n break\r\n\r\n case ActionTypes.CHANGE_RANGE:\r\n changeRange(action.rangeType, action.range)\r\n bubbleStore.emitChange()\r\n break\r\n\r\n case ActionTypes.PUBLISH_BUBBLES_STARTED:\r\n _modal.shown = true\r\n _modal.failed = false\r\n _modal.completed = false\r\n bubbleStore.emitChange()\r\n break\r\n\r\n case ActionTypes.PUBLISH_BUBBLES_COMPLETED:\r\n _modal.failed = false\r\n _modal.completed = true\r\n _modal.imgUrl = action.data.imgUrl\r\n _modal.shareUrl = action.data.shareUrl\r\n bubbleStore.emitChange()\r\n break\r\n\r\n case ActionTypes.PUBLISH_BUBBLES_FAILED:\r\n _modal.failed = true\r\n bubbleStore.emitChange()\r\n break\r\n\r\n case ActionTypes.PUBLISH_BUBBLES_CLOSE:\r\n _modal.shown = false\r\n bubbleStore.emitChange()\r\n break\r\n }\r\n})\r\n\r\nexport default bubbleStore\r\n","import { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport { BubbleNode } from '../types'\r\nimport Store from './store'\r\n\r\nvar _hoveredNode: BubbleNode\r\nvar _hoveredColor: string\r\nclass HoverStore extends Store {\r\n getHoveredNode() {\r\n return _hoveredNode\r\n }\r\n\r\n getHoveredColor() {\r\n return _hoveredColor\r\n }\r\n}\r\nvar hoverStore = new HoverStore()\r\n\r\n// @ts-ignore\r\nhoverStore.dispatchToken = AppDispatcher.register(function (payload: any) {\r\n var action = payload.action\r\n\r\n switch (action.type) {\r\n case ActionTypes.SET_HOVERED_NODE: {\r\n if (action.node !== _hoveredNode) {\r\n _hoveredNode = action.node\r\n hoverStore.emitChange()\r\n }\r\n break\r\n }\r\n case ActionTypes.SET_HOVERED_COLOR: {\r\n if (action.color !== _hoveredColor) {\r\n _hoveredColor = action.color && !Number.isFinite(action.color) ? action.color : null\r\n hoverStore.emitChange()\r\n }\r\n break\r\n }\r\n }\r\n})\r\n\r\nexport default hoverStore\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 * as d3 from 'd3'\r\n\r\nimport { ScaleId } from '../maps/types'\r\nimport { decodeQueryString as decode, encodeQueryString } from '../queryString'\r\nimport { GradientDefinition, bubbleGradients } from '../shared/gradients'\r\nimport {\r\n BubbleSelectOption,\r\n averageVolumes,\r\n colors,\r\n indexes,\r\n industries,\r\n marketCaps,\r\n sectors,\r\n sizes,\r\n xys,\r\n} from './selects'\r\nimport { BubbleNode } from './types'\r\n\r\nconst DEFAULT_COLOR_SCALE = [\r\n '#ff4146',\r\n '#ea580c',\r\n '#ff9300',\r\n '#84cc16',\r\n '#34aa00',\r\n '#00d16d',\r\n '#14b8a6',\r\n '#18a3e0',\r\n '#5963d1',\r\n '#4f46e5',\r\n '#9425c2',\r\n '#c026d3',\r\n '#ff80ff',\r\n '#ff5888',\r\n '#ffe100',\r\n]\r\n\r\nfunction getValueWithFallback(values: BubbleSelectOption[], value: string | undefined, fallback: string) {\r\n const v = values.find((v) => v.value === value)\r\n\r\n return v?.value ?? fallback\r\n}\r\n\r\nfunction getDefaultValues(query: Record = {}, extendedFilters: boolean = false) {\r\n let state: Record = {\r\n x: getValueWithFallback(xys, query.x, 'sector'),\r\n y: getValueWithFallback(xys, query.y, 'lastChange'),\r\n size: getValueWithFallback(sizes, query.size, 'marketCap'),\r\n color: getValueWithFallback(colors, query.color, 'sector'),\r\n idx: getValueWithFallback(indexes, query.idx, 'sp500'),\r\n rangeX: query.rangeX ?? '',\r\n rangeY: query.rangeY ?? '',\r\n }\r\n\r\n if (extendedFilters) {\r\n state = {\r\n ...state,\r\n sec: getValueWithFallback(sectors, query.sec, ''),\r\n ind: getValueWithFallback(industries, query.ind, ''),\r\n cap: getValueWithFallback(marketCaps, query.cap, ''),\r\n sh_avgvol: getValueWithFallback(averageVolumes, query.sh_avgvol, ''),\r\n tickers: query.tickers ?? '',\r\n excludeTickers: query.excludeTickers ?? '',\r\n }\r\n }\r\n\r\n return state\r\n}\r\n\r\nfunction decodeQueryString(extendedFilters?: boolean) {\r\n return getDefaultValues(decode(), extendedFilters)\r\n}\r\n\r\nvar percentile = function (arr: number[], excelPercentile: number) {\r\n var sequence = arr.concat().sort(function (a, b) {\r\n return a - b\r\n })\r\n var N = sequence.length\r\n var n = (N - 1) * excelPercentile + 1\r\n\r\n if (n === 1) {\r\n return sequence[0]\r\n } else if (n === N) {\r\n return sequence[N - 1]\r\n } else {\r\n var k = ~~n\r\n var d = n - k\r\n return sequence[k - 1] + d * (sequence[k] - sequence[k - 1])\r\n }\r\n}\r\n\r\nvar getXScale = function (data: BubbleNode[], width: number) {\r\n var x = d3\r\n .scaleLinear()\r\n .range([0, width])\r\n .domain(d3.extent(data, (d: BubbleNode) => d.x) as [number, number])\r\n .nice(10)\r\n if (data.length === 1) {\r\n x.domain([x.domain()[0] * 0.9, x.domain()[0] * 1.1]).nice(10)\r\n }\r\n return x\r\n}\r\n\r\nvar getYScale = function (data: BubbleNode[], height: number) {\r\n var y = d3\r\n .scaleLinear()\r\n .range([height, 0])\r\n .domain(d3.extent(data, (d: BubbleNode) => d.y) as [number, number])\r\n .nice(10)\r\n if (data.length === 1) {\r\n y.domain([y.domain()[0] * 0.9, y.domain()[0] * 1.1]).nice(10)\r\n }\r\n return y\r\n}\r\n\r\nvar _colorScales: Record = {}\r\nfunction getColorScale(data: BubbleNode[], colorOption: string, colorScale = DEFAULT_COLOR_SCALE) {\r\n if (_colorScales[colorOption]) {\r\n return _colorScales[colorOption]\r\n }\r\n\r\n let c: any\r\n let colors: number[]\r\n let min: number\r\n let max: number\r\n let gradient: GradientDefinition\r\n let linearScale: d3.ScaleLinear\r\n switch (colorOption) {\r\n case 'exchange':\r\n case 'sector':\r\n case 'industry':\r\n case 'country':\r\n c = d3.scaleOrdinal().range(colorScale)\r\n break\r\n case 'marketCap':\r\n case 'averageVolume':\r\n case 'relativeVolume':\r\n case 'lastVolume':\r\n case 'averageVolumeUsd':\r\n case 'lastVolumeUsd':\r\n colors = data.map((d) => Number(d.color)).filter(Number.isFinite)\r\n min = percentile(colors, 0.05)\r\n max = percentile(colors, 0.95)\r\n gradient = bubbleGradients['_relvol']\r\n linearScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([0, gradient.colors.length - 1])\r\n c = (d?: number) => {\r\n if (typeof d === 'undefined' || d === null) {\r\n return gradient.nullColor\r\n }\r\n if (d > max) d = max\r\n if (d < min) d = min\r\n var i = Math.round(linearScale(d))\r\n return gradient.colors[i]\r\n }\r\n c.domain = () => [min, max]\r\n break\r\n case 'lastChange':\r\n case 'perf1w':\r\n case 'perf4w':\r\n case 'perf13w':\r\n case 'perf26w':\r\n case 'perf52w':\r\n case 'perfYtd':\r\n colors = data.map((d) => Number(d.color)).filter(Number.isFinite)\r\n\r\n min = percentile(colors, 0.05)\r\n max = percentile(colors, 0.95)\r\n max = Math.max(Math.abs(min), Math.abs(max))\r\n min = -max\r\n\r\n gradient = bubbleGradients[ScaleId.DayPerf]\r\n linearScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([0, gradient.colors.length - 1])\r\n c = (d?: number) => {\r\n if (typeof d === 'undefined' || d === null) {\r\n return gradient.nullColor\r\n }\r\n if (d > max) d = max\r\n if (d < min) d = min\r\n var i = Math.round(linearScale(d))\r\n return gradient.colors[i]\r\n }\r\n c.domain = () => [min, max]\r\n break\r\n case 'consRecom':\r\n min = 5\r\n max = 1\r\n gradient = bubbleGradients[ScaleId.DayPerf]\r\n linearScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([0, gradient.colors.length - 1])\r\n c = (d?: number) => {\r\n if (typeof d === 'undefined' || d === null) {\r\n return gradient.nullColor\r\n }\r\n if (d < max) d = max\r\n if (d > min) d = min\r\n var i = Math.round(linearScale(d))\r\n return gradient.colors[i]\r\n }\r\n c.domain = () => [min, max]\r\n break\r\n case 'const':\r\n default:\r\n c = function () {\r\n return '#18a3e0'\r\n }\r\n c.domain = () => ['Constant']\r\n break\r\n }\r\n\r\n if (data.length > 0) {\r\n _colorScales[colorOption] = c\r\n }\r\n return c\r\n}\r\n\r\nvar getSizeScale = function (data: BubbleNode[]) {\r\n var r = d3\r\n .scaleSqrt()\r\n .range([0, 40])\r\n .domain(d3.extent(data, (d: BubbleNode) => d.size) as [number, number])\r\n .nice(10)\r\n\r\n if (r.domain()[0] === 1 && r.domain()[1] === 1) {\r\n r.domain([0, 50])\r\n }\r\n return r\r\n}\r\n\r\nvar getScales = function (\r\n data: BubbleNode[],\r\n width: number,\r\n height: number,\r\n colorOption: string,\r\n colorScale?: string[]\r\n) {\r\n return {\r\n x: getXScale(data, width),\r\n y: getYScale(data, height),\r\n r: getSizeScale(data),\r\n c: getColorScale(data, colorOption, colorScale),\r\n }\r\n}\r\n\r\nfunction generatePresetUrl(presetConfig: Record, baseQuery?: URLSearchParams) {\r\n const query = encodeQueryString({ ...Object.fromEntries(baseQuery ?? []), ...presetConfig })\r\n\r\n return `${window.location.pathname}?${query}`\r\n}\r\n\r\nfunction formatValue(value: number | string, format?: string, finiteFormatting?: boolean) {\r\n if (finiteFormatting && !Number.isFinite(value)) {\r\n return '—'\r\n }\r\n\r\n if (typeof value === 'number') {\r\n const absValue = Math.abs(value)\r\n\r\n if (absValue < 1000) {\r\n value = value.toFixed(2)\r\n } else if (absValue < 1000 * 1000) {\r\n value = (value / 1000).toFixed(2) + 'K'\r\n } else if (absValue < 1000 * 1000 * 1000) {\r\n value = (value / 1000000).toFixed(2) + 'M'\r\n } else {\r\n value = (value / 1000000000).toFixed(2) + 'B'\r\n }\r\n }\r\n\r\n if (format === '%') {\r\n value += '%'\r\n }\r\n\r\n return value\r\n}\r\n\r\nexport {\r\n getDefaultValues,\r\n encodeQueryString,\r\n decodeQueryString,\r\n percentile,\r\n getXScale,\r\n getYScale,\r\n getColorScale,\r\n getSizeScale,\r\n getScales,\r\n generatePresetUrl,\r\n formatValue,\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\ninterface TopbarProps {\r\n className?: string\r\n navContent?: React.ReactNode\r\n mapControls?: React.ReactNode\r\n}\r\n\r\nexport function Topbar(props: React.PropsWithChildren) {\r\n return (\r\n
\r\n {props.navContent && (\r\n
\r\n {props.navContent}\r\n
\r\n )}\r\n
{props.children}
\r\n {props.mapControls}\r\n
\r\n )\r\n}\r\n","import { ReactNode } from 'react'\r\n\r\nexport enum MapTypeId {\r\n Sector = 'sec',\r\n World = 'geo',\r\n SectorFull = 'sec_all',\r\n ETF = 'etf',\r\n Screener = 'screener',\r\n Portfolio = 'portfolio',\r\n ETFHoldings = 'etf_holdings',\r\n}\r\n\r\nexport enum MapSubtypeId {\r\n DayPerf = 'd1',\r\n WeekPerf = 'w1',\r\n MonthPerf = 'w4',\r\n ThreeMonthPerf = 'w13',\r\n SixMonthPerf = 'w26',\r\n YearPerf = 'w52',\r\n YearToDatePerf = 'ytd',\r\n RelativeVolume = 'relvol',\r\n PriceToEarnings = 'pe',\r\n ForwardPriceToEearnings = 'fpe',\r\n PriceEarningsToGrowth = 'peg',\r\n PriceToSellsRatio = 'ps',\r\n PriceToBookRatio = 'pb',\r\n DividendYield = 'div',\r\n EPSGrowth5y = 'eps5y',\r\n FloatShort = 'short',\r\n AnalystRecommendation = 'rec',\r\n EarningsPerf = 'earnperf',\r\n EarningsDate = 'earndate',\r\n // Portfolio\r\n PortfolioGainPct = 'portfolioGainPct',\r\n PortfolioGainUsd = 'portfolioGainUsd',\r\n PortfolioChangePct = 'portfolioChangePct',\r\n PortfolioChangeUsd = 'portfolioChangeUsd',\r\n}\r\n\r\nexport enum ScaleId {\r\n DayPerf = 'default',\r\n WeekPerf = '_5',\r\n MonthPerf = '_10',\r\n ThreeMonthPerf = '_15',\r\n SixMonthPerf = '_20',\r\n YearPerf = '_25',\r\n RelativeVolume = '_relvol',\r\n PriceToEarnings = '_pe',\r\n ForwardPriceToEearnings = '_fpe',\r\n PriceEarningsToGrowth = '_peg',\r\n PriceToSellsRatio = '_ps',\r\n PriceToBookRatio = '_pb',\r\n DividendYield = '_div',\r\n EPSGrowth5y = '_eps5y',\r\n FloatShort = '_short',\r\n AnalystRecommendation = '_rec',\r\n EarningsDate = '_earndate',\r\n // Portfolio\r\n PortfolioPct = '_portfolioPct',\r\n PortfolioUsd = '_portfolioUsd',\r\n}\r\n\r\nexport const enum NodeDepth {\r\n Root,\r\n Sector,\r\n Industry,\r\n Node,\r\n}\r\n\r\nexport interface MapDataRow {\r\n name: string\r\n perf?: number\r\n x: number\r\n y: number\r\n dx: number\r\n dy: number\r\n data: any\r\n depth: NodeDepth\r\n}\r\n\r\nexport interface MapDataRoot {\r\n name: string\r\n children: MapDataSector[]\r\n duplicateTickers: number\r\n hash: string\r\n}\r\n\r\nexport interface MapDataSector extends MapDataRow {\r\n children: MapDataIndustry[]\r\n parent: MapDataRoot\r\n}\r\n\r\nexport interface MapDataIndustry extends MapDataRow {\r\n children: MapDataNode[]\r\n parent: MapDataSector\r\n}\r\n\r\nexport interface MapDataNode extends MapDataRow {\r\n parent: MapDataIndustry\r\n additional?: string\r\n description: string\r\n perfText: string\r\n value: number\r\n}\r\n\r\nexport interface MapData {\r\n sectors: MapDataSector[]\r\n industries: MapDataIndustry[]\r\n nodes: MapDataNode[]\r\n}\r\n\r\nexport type PerfData = {\r\n nodes: Record | Array\r\n additional: Record\r\n subtype: MapSubtypeId\r\n version?: number\r\n hash: string\r\n}\r\n\r\nexport interface MapSubtype {\r\n id: MapSubtypeId\r\n name: string\r\n scaleId: ScaleId\r\n tooltip: string\r\n countIndustryPerf: boolean\r\n countSectorPerf: boolean\r\n}\r\n\r\nexport interface MapType {\r\n name: string\r\n pageTitle: string\r\n nameShort?: string\r\n description: string\r\n type: MapTypeId\r\n subtypes: MapSubtype[]\r\n}\r\n\r\nexport interface Scale {\r\n name: string\r\n tooltip: ReactNode\r\n id: ScaleId\r\n}\r\n","import * as React from 'react'\r\n\r\nimport * as utils from '../hover-chart'\r\n\r\nexport interface ImageProps\r\n extends React.DetailedHTMLProps, HTMLImageElement> {\r\n ticker: string\r\n}\r\n\r\nexport function HoverChart({ ticker, ...props }: ImageProps) {\r\n const referrerPolicy = utils.getReferrerPolicy()\r\n const dimensions = utils.getHoverChartDimensions()\r\n const url = utils.getHoverChartUrl(ticker, true)\r\n const srcSet = utils.getSrcSet(url)\r\n\r\n return \r\n}\r\n","/* eslint-disable import/first */\r\nimport { UseMutationResult } from '@tanstack/react-query'\r\nimport * as React from 'react'\r\nimport { FacebookIcon, FacebookShareButton, TwitterIcon, TwitterShareButton } from 'react-share'\r\n\r\nimport { Button } from '../../../main/components/button'\r\nimport { CopyToClipboard } from '../../../main/components/copy-to-clipboard'\r\nimport {\r\n Dialog,\r\n DialogBody,\r\n DialogDismiss,\r\n DialogFooter,\r\n DialogHeader,\r\n useDialogState,\r\n} from '../../../main/components/dialog'\r\nimport { ErrorView } from '../../../main/components/error-view'\r\nimport { Loading } from '../../../main/components/loading'\r\nimport { Heading } from '../../../main/components/typography'\r\n\r\ninterface ShareResponse {\r\n imgUrl: string\r\n shareUrl: string\r\n}\r\n\r\ninterface ShareProps {\r\n state: UseMutationResult\r\n onShareClick: () => void\r\n className?: string\r\n disabled?: boolean\r\n}\r\n\r\nexport function Share(props: ShareProps) {\r\n const dialogState = useDialogState()\r\n\r\n return (\r\n <>\r\n {\r\n props.onShareClick()\r\n dialogState.show()\r\n }}\r\n >\r\n Share map\r\n \r\n\r\n \r\n Share map\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\ninterface ShareDialogBodyProps {\r\n isError: boolean\r\n isLoading: boolean\r\n data?: ResponseType\r\n}\r\n\r\nfunction ShareDialogBody(props: ShareDialogBodyProps) {\r\n if (props.isLoading) {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n if (props.isError || !props.data) {\r\n return (\r\n
\r\n \r\n There’s been an error sharing the map.\r\n
\r\n Please try sharing the map again and if the problem persists, please contact support.\r\n \r\n }\r\n />\r\n
\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n {document.title}\r\n
\r\n \r\n Copy and paste link in email, website, or forum\r\n \r\n }\r\n text={props.data.shareUrl}\r\n bottomLeftContent={\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n
\r\n \r\n )\r\n}\r\n","import logoBase64 from './assets/logo.png'\r\nimport { getTextFontFamily } from './getTextFontFamily'\r\nimport { isFirefoxDesktop } from './isMobile'\r\nimport { loadImage } from './loadImage'\r\nimport { getScaleRatio } from './retinafy'\r\n\r\nexport async function drawShareMap(canvasEl: HTMLCanvasElement, text: string[]) {\r\n const fontFamily = getTextFontFamily()\r\n\r\n const ratio = getScaleRatio()\r\n const width = canvasEl.width / ratio\r\n const height = canvasEl.height / ratio\r\n\r\n const canvas = document.createElement('canvas')\r\n const context = canvas.getContext('2d', isFirefoxDesktop() ? { willReadFrequently: true } : undefined)!\r\n canvas.width = width\r\n canvas.height = height + 22\r\n\r\n // Background\r\n context.fillStyle = '#fff'\r\n context.fillRect(0, 0, width, height)\r\n\r\n // Logo\r\n const logo = await loadImage(logoBase64)\r\n context.drawImage(logo, 2, 4)\r\n\r\n // Labels\r\n const label = text.map((t) => t.toUpperCase())\r\n let x = width\r\n const y = 11\r\n\r\n context.textBaseline = 'middle'\r\n context.textAlign = 'right'\r\n context.font = '9pt ' + fontFamily\r\n for (let i = label.length - 1; i >= 0; i--) {\r\n const text = label[i]\r\n let textWidth = context.measureText(text).width\r\n\r\n context.fillStyle = '#4c5261'\r\n context.fillText(text, x, y)\r\n\r\n if (i > 0) {\r\n const divider = ' • '\r\n context.fillStyle = '#5faaf4'\r\n context.fillText(divider, x - textWidth, y)\r\n textWidth = textWidth + context.measureText(divider).width\r\n }\r\n\r\n x = x - textWidth\r\n }\r\n\r\n context.drawImage(canvasEl, 0, 0, width * ratio, height * ratio, 0, 22, width, height)\r\n\r\n return canvas.toDataURL()\r\n}\r\n","import { HTMLAttributeReferrerPolicy } from 'react'\r\n\r\nimport { encodeQueryString } from '../queryString'\r\n\r\nconst DEFAULT_OVERLAYS =\r\n '&o[0][ot]=sma&o[0][op]=50&o[0][oc]=FF8F33C6&o[1][ot]=sma&o[1][op]=200&o[1][oc]=DCB3326D&o[2][ot]=patterns&o[2][op]=&o[2][oc]=000'\r\n\r\nexport function getHoverChartUrl(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange = FinvizSettings.hoverCharts?.stock?.dateRange\r\n): string {\r\n const theme = FinvizSettings.hasDarkTheme ? 'd' : undefined\r\n const overlays = FinvizSettings.hasUserPremium && FinvizSettings.hoverCharts?.stock?.patterns ? DEFAULT_OVERLAYS : ''\r\n const query = encodeQueryString({\r\n cs: 'm',\r\n t: ticker,\r\n tf: timeframe ?? 'd',\r\n ct: 'candle_stick',\r\n r: dateRange,\r\n tm: theme,\r\n })\r\n\r\n let imgUrl = `${FinvizSettings.nodeChartsDomain}/chart.ashx?${query}${overlays}`\r\n\r\n if (escaped) {\r\n // \"Escaping\" [ and ] because of how boxover.js works\r\n imgUrl = imgUrl.replace(/\\[/g, '[[').replace(/]/g, ']]')\r\n }\r\n return imgUrl\r\n}\r\n\r\nexport function getHoverChartDimensions() {\r\n switch (FinvizSettings.hoverCharts?.stock?.timeframe) {\r\n case 'i3':\r\n case 'i15':\r\n return { width: 584, height: 180 }\r\n case 'i5':\r\n return { width: 376, height: 180 }\r\n case 'd':\r\n if (FinvizSettings.hoverCharts?.stock?.patterns) return { width: 464, height: 230 }\r\n return { width: 324, height: 180 }\r\n default:\r\n return { width: 324, height: 180 }\r\n }\r\n}\r\n\r\nexport function getReferrerPolicy(): HTMLAttributeReferrerPolicy {\r\n return 'no-referrer-when-downgrade'\r\n}\r\n\r\nexport function getHoverChartImg(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange?: string\r\n) {\r\n const chartSize = getHoverChartDimensions()\r\n const referrerPolicy = getReferrerPolicy()\r\n const url = getHoverChartUrl(ticker, escaped, timeframe, dateRange)\r\n const srcSet = getSrcSet(url)\r\n const srcsetString = srcSet?.length ? ` srcset='${srcSet}'` : ''\r\n\r\n return {\r\n img: ``,\r\n ...chartSize,\r\n }\r\n}\r\n\r\nexport function getSrcSet(url: string) {\r\n // You must keep a space after , for refresh to work\r\n return `${url} 1x, ${url}&sf=2 2x`\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 { link } from '../services/routing'\r\nimport { Delayed, DelayedProps } from './delayed'\r\nimport { ErrorView } from './error-view'\r\nimport { Spinner } from './spinner'\r\n\r\ntype LoadingProps = Pick\r\n\r\nexport function Loading({ delay, timeout, throwOnTimeout }: LoadingProps) {\r\n return (\r\n \r\n There’s been an error loading the application.\r\n
\r\n Please make sure your internet connection is stable and refresh the page. If the error persists, please{' '}\r\n \r\n contact support\r\n \r\n .\r\n \r\n }\r\n />\r\n }\r\n >\r\n \r\n \r\n )\r\n}\r\n\r\nexport function LoadingScreen(props: LoadingProps) {\r\n return (\r\n
\r\n \r\n
\r\n )\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","/**\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