{"version":3,"file":"bubbles.3f668eae.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 { 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 { 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\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
\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 = '3-month average dollar volume'\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: 'marketCap', 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: 'financial', 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 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 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 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, false)\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