Загрузка данных
]633;E;{ echo "===== DOM EVENT LISTENERS ====="\x3b grep -RInE "addEventListener|removeEventListener" src\x3b echo\x3b echo "===== LIGHTWEIGHT CHARTS SUBSCRIPTIONS ====="\x3b grep -RInE "subscribeClick|unsubscribeClick|subscribeCrosshairMove|unsubscribeCrosshairMove|subscribeVisibleTimeRangeChange|unsubscribeVisibleTimeRangeChange|subscribeVisibleLogicalRangeChange|unsubscribeVisibleLogicalRangeChange" src\x3b echo\x3b echo "===== POINTER / MOUSE EVENTS ====="\x3b grep -RInE "pointerdown|pointerup|pointermove|pointercancel|mousedown|mouseup|mousemove|dblclick|contextmenu|wheel" src\x3b echo\x3b echo "===== EVENT BLOCKING ====="\x3b grep -RInE "stopPropagation|preventDefault|stopImmediatePropagation" src\x3b echo\x3b echo "===== FOCUS ====="\x3b grep -RInE "focus\\(|blur\\(|activeElement|tabIndex|autoFocus" src\x3b echo\x3b echo "===== FOCUS STYLES ====="\x3b grep -RInE "focus-visible|focus-within|:focus|outline|box-shadow" src\x3b echo\x3b echo "===== CHART MOUSE EVENTS ====="\x3b grep -RInE "ChartMouseEvents|subscribeChartEvent|unsubscribeChartEvent" src\x3b echo\x3b echo "===== DIRECT WINDOW / DOCUMENT EVENTS ====="\x3b grep -RInE "window\\.addEventListener|window\\.removeEventListener|document\\.addEventListener|document\\.removeEventListener" src\x3b echo\x3b echo "===== DIRECT CONTAINER EVENTS ====="\x3b grep -RInE "container\\.addEventListener|container\\.removeEventListener" src\x3b } > event-search.txt;92e918ea-05fa-47ea-8d1e-290a668143e7]633;C===== DOM EVENT LISTENERS =====
src/components/Dropdown/index.tsx:81: window.addEventListener('resize', updatePosition);
src/components/Dropdown/index.tsx:82: window.addEventListener('scroll', updatePosition, true);
src/components/Dropdown/index.tsx:87: window.removeEventListener('resize', updatePosition);
src/components/Dropdown/index.tsx:88: window.removeEventListener('scroll', updatePosition, true);
src/components/Dropdown/index.tsx:114: document.addEventListener('pointerdown', handlePointerDown, true);
src/components/Dropdown/index.tsx:115: document.addEventListener('keydown', handleKeyDown);
src/components/Dropdown/index.tsx:118: document.removeEventListener('pointerdown', handlePointerDown, true);
src/components/Dropdown/index.tsx:119: document.removeEventListener('keydown', handleKeyDown);
src/core/ChartMouseEvents.ts:78: this.container.addEventListener('wheel', this.onWheel, { passive: true });
src/core/ChartMouseEvents.ts:79: this.container.addEventListener('pointerdown', this.onPointerDown, { passive: true });
src/core/ChartMouseEvents.ts:80: this.container.addEventListener('pointermove', this.onPointerMove, { passive: true });
src/core/ChartMouseEvents.ts:81: window.addEventListener('pointerup', this.onPointerUp, { passive: true });
src/core/ChartMouseEvents.ts:82: window.addEventListener('pointercancel', this.onPointerCancel, { passive: true });
src/core/ChartMouseEvents.ts:86: this.container.removeEventListener('wheel', this.onWheel);
src/core/ChartMouseEvents.ts:87: this.container.removeEventListener('pointerdown', this.onPointerDown);
src/core/ChartMouseEvents.ts:88: this.container.removeEventListener('pointermove', this.onPointerMove);
src/core/ChartMouseEvents.ts:89: window.removeEventListener('pointerup', this.onPointerUp);
src/core/ChartMouseEvents.ts:90: window.removeEventListener('pointercancel', this.onPointerCancel);
src/core/Drawings/base/DrawingBase.ts:508: window.addEventListener('pointermove', this.handlePointerMove);
src/core/Drawings/base/DrawingBase.ts:509: window.addEventListener('pointerup', this.handlePointerUp);
src/core/Drawings/base/DrawingBase.ts:510: window.addEventListener('pointercancel', this.handlePointerUp);
src/core/Drawings/base/DrawingBase.ts:520: window.removeEventListener('pointermove', this.handlePointerMove);
src/core/Drawings/base/DrawingBase.ts:521: window.removeEventListener('pointerup', this.handlePointerUp);
src/core/Drawings/base/DrawingBase.ts:522: window.removeEventListener('pointercancel', this.handlePointerUp);
src/core/DrawingsManager.tsx:123: window.addEventListener('pointerup', this.handlePointerUp);
src/core/DrawingsManager.tsx:124: window.addEventListener('pointercancel', this.handlePointerUp);
src/core/DrawingsManager.tsx:125: this.container.addEventListener('click', this.handleClick);
src/core/DrawingsManager.tsx:126: this.container.addEventListener('pointerdown', this.handlePointerDown);
src/core/DrawingsManager.tsx:127: this.container.addEventListener('dblclick', this.handleDoubleClick);
src/core/DrawingsManager.tsx:128: this.container.addEventListener('contextmenu', this.handleContextMenu);
src/core/DrawingsManager.tsx:761: window.removeEventListener('pointerup', this.handlePointerUp);
src/core/DrawingsManager.tsx:762: window.removeEventListener('pointercancel', this.handlePointerUp);
src/core/DrawingsManager.tsx:763: this.container.removeEventListener('click', this.handleClick);
src/core/DrawingsManager.tsx:764: this.container.removeEventListener('pointerdown', this.handlePointerDown);
src/core/DrawingsManager.tsx:765: this.container.removeEventListener('dblclick', this.handleDoubleClick);
src/core/DrawingsManager.tsx:766: this.container.removeEventListener('contextmenu', this.handleContextMenu);
src/core/Fullscreen.ts:27: document.addEventListener('fullscreenchange', handler);
src/core/Fullscreen.ts:29: return () => document.removeEventListener('fullscreenchange', handler);
src/core/Hotkeys.ts:44: document.addEventListener('keydown', this.handleKeyDown);
src/core/Hotkeys.ts:88: document.removeEventListener('keydown', this.handleKeyDown);
src/core/PriceScale/PriceScaleControls.tsx:56: this.paneElement.addEventListener('pointermove', this.handlePointerMove);
src/core/PriceScale/PriceScaleControls.tsx:57: this.paneElement.addEventListener('pointerleave', this.handlePointerLeave);
src/core/PriceScale/PriceScaleControls.tsx:205: this.paneElement.removeEventListener('pointermove', this.handlePointerMove);
src/core/PriceScale/PriceScaleControls.tsx:206: this.paneElement.removeEventListener('pointerleave', this.handlePointerLeave);
src/core/TimescaleHoverController.ts:64: this.chartContainer.addEventListener('mousemove', this.handleMouseMove);
src/core/TimescaleHoverController.ts:65: this.chartContainer.addEventListener('mouseleave', this.handleMouseLeave);
src/core/TimescaleHoverController.ts:66: this.controlBarContainer.addEventListener('mouseenter', this.handleControlBarEnter);
src/core/TimescaleHoverController.ts:67: this.controlBarContainer.addEventListener('mouseleave', this.handleMouseLeave);
src/core/TimescaleHoverController.ts:71: this.chartContainer.removeEventListener('mousemove', this.handleMouseMove);
src/core/TimescaleHoverController.ts:72: this.chartContainer.removeEventListener('mouseleave', this.handleMouseLeave);
src/core/TimescaleHoverController.ts:73: this.controlBarContainer.removeEventListener('mouseenter', this.handleControlBarEnter);
src/core/TimescaleHoverController.ts:74: this.controlBarContainer.removeEventListener('mouseleave', this.handleMouseLeave);
src/utils/getPortalHost.ts:32: document.addEventListener('fullscreenchange', syncPortalHostParent);
===== LIGHTWEIGHT CHARTS SUBSCRIPTIONS =====
src/core/ChartMouseEvents.ts:60: this.lwcChart.subscribeCrosshairMove((param) => {
src/core/ChartMouseEvents.ts:63: this.lwcChart.timeScale().subscribeVisibleTimeRangeChange((range) => {
src/core/ChartMouseEvents.ts:66: this.lwcChart.timeScale().subscribeVisibleLogicalRangeChange((logicalRange) => {
src/core/Drawings/ruler/ruler.ts:313: this.chart.subscribeClick(this.clickHandler);
src/core/Drawings/ruler/ruler.ts:314: this.chart.subscribeCrosshairMove(this.moveHandler);
src/core/Drawings/ruler/ruler.ts:325: this.chart.unsubscribeClick(this.clickHandler);
src/core/Drawings/ruler/ruler.ts:326: this.chart.unsubscribeCrosshairMove(this.moveHandler);
src/core/Drawings/sliderPosition/sliderPosition.ts:496: this.chart.subscribeClick(this.clickHandler);
src/core/Drawings/sliderPosition/sliderPosition.ts:504: this.chart.unsubscribeClick(this.clickHandler);
src/core/Drawings/volumeProfile/volumeProfile.ts:176: this.chart.timeScale().subscribeVisibleLogicalRangeChange(this.handleVisibleLogicalRangeChange);
src/core/Drawings/volumeProfile/volumeProfile.ts:189: this.chart.timeScale().unsubscribeVisibleLogicalRangeChange(this.handleVisibleLogicalRangeChange);
src/core/Drawings/__tests__/drawings/volumeProfile.test.ts:388: expect(timeScale.subscribeVisibleLogicalRangeChange).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/volumeProfile.test.ts:392: expect(timeScale.unsubscribeVisibleLogicalRangeChange).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawingTestUtils.ts:78: subscribeVisibleLogicalRangeChange: jest.fn(),
src/core/Drawings/__tests__/drawingTestUtils.ts:79: unsubscribeVisibleLogicalRangeChange: jest.fn(),
src/core/Drawings/__tests__/drawingTestUtils.ts:91: subscribeClick: jest.fn(),
src/core/Drawings/__tests__/drawingTestUtils.ts:92: unsubscribeClick: jest.fn(),
src/core/Drawings/__tests__/drawingTestUtils.ts:93: subscribeCrosshairMove: jest.fn(),
src/core/Drawings/__tests__/drawingTestUtils.ts:94: unsubscribeCrosshairMove: jest.fn(),
src/core/PaneManager.ts:247: this.lwcChart.subscribeClick(handler);
src/core/PaneManager.ts:248: this.subscriptions.add(() => this.lwcChart.unsubscribeClick(handler));
src/core/__tests__/PaneManager.test.ts:75: subscribeClick: jest.fn(),
src/core/__tests__/PaneManager.test.ts:76: unsubscribeClick: jest.fn(),
===== POINTER / MOUSE EVENTS =====
src/components/Dropdown/index.tsx:114: document.addEventListener('pointerdown', handlePointerDown, true);
src/components/Dropdown/index.tsx:118: document.removeEventListener('pointerdown', handlePointerDown, true);
src/core/Chart.ts:170: this.mouseEvents.subscribe('wheel', this.onWheel);
src/core/ChartMouseEvents.ts:13: wheel: WheelEvent;
src/core/ChartMouseEvents.ts:71: private onWheel = (e: WheelEvent) => this.emitChartEvent('wheel', e);
src/core/ChartMouseEvents.ts:78: this.container.addEventListener('wheel', this.onWheel, { passive: true });
src/core/ChartMouseEvents.ts:79: this.container.addEventListener('pointerdown', this.onPointerDown, { passive: true });
src/core/ChartMouseEvents.ts:80: this.container.addEventListener('pointermove', this.onPointerMove, { passive: true });
src/core/ChartMouseEvents.ts:81: window.addEventListener('pointerup', this.onPointerUp, { passive: true });
src/core/ChartMouseEvents.ts:82: window.addEventListener('pointercancel', this.onPointerCancel, { passive: true });
src/core/ChartMouseEvents.ts:86: this.container.removeEventListener('wheel', this.onWheel);
src/core/ChartMouseEvents.ts:87: this.container.removeEventListener('pointerdown', this.onPointerDown);
src/core/ChartMouseEvents.ts:88: this.container.removeEventListener('pointermove', this.onPointerMove);
src/core/ChartMouseEvents.ts:89: window.removeEventListener('pointerup', this.onPointerUp);
src/core/ChartMouseEvents.ts:90: window.removeEventListener('pointercancel', this.onPointerCancel);
src/core/Drawings/base/DrawingBase.ts:508: window.addEventListener('pointermove', this.handlePointerMove);
src/core/Drawings/base/DrawingBase.ts:509: window.addEventListener('pointerup', this.handlePointerUp);
src/core/Drawings/base/DrawingBase.ts:510: window.addEventListener('pointercancel', this.handlePointerUp);
src/core/Drawings/base/DrawingBase.ts:520: window.removeEventListener('pointermove', this.handlePointerMove);
src/core/Drawings/base/DrawingBase.ts:521: window.removeEventListener('pointerup', this.handlePointerUp);
src/core/Drawings/base/DrawingBase.ts:522: window.removeEventListener('pointercancel', this.handlePointerUp);
src/core/DrawingsManager.tsx:123: window.addEventListener('pointerup', this.handlePointerUp);
src/core/DrawingsManager.tsx:124: window.addEventListener('pointercancel', this.handlePointerUp);
src/core/DrawingsManager.tsx:126: this.container.addEventListener('pointerdown', this.handlePointerDown);
src/core/DrawingsManager.tsx:127: this.container.addEventListener('dblclick', this.handleDoubleClick);
src/core/DrawingsManager.tsx:128: this.container.addEventListener('contextmenu', this.handleContextMenu);
src/core/DrawingsManager.tsx:761: window.removeEventListener('pointerup', this.handlePointerUp);
src/core/DrawingsManager.tsx:762: window.removeEventListener('pointercancel', this.handlePointerUp);
src/core/DrawingsManager.tsx:764: this.container.removeEventListener('pointerdown', this.handlePointerDown);
src/core/DrawingsManager.tsx:765: this.container.removeEventListener('dblclick', this.handleDoubleClick);
src/core/DrawingsManager.tsx:766: this.container.removeEventListener('contextmenu', this.handleContextMenu);
src/core/PriceScale/PriceScaleControls.tsx:56: this.paneElement.addEventListener('pointermove', this.handlePointerMove);
src/core/PriceScale/PriceScaleControls.tsx:205: this.paneElement.removeEventListener('pointermove', this.handlePointerMove);
src/core/TimescaleHoverController.ts:64: this.chartContainer.addEventListener('mousemove', this.handleMouseMove);
src/core/TimescaleHoverController.ts:71: this.chartContainer.removeEventListener('mousemove', this.handleMouseMove);
src/core/__tests__/TimescaleHoverController.test.ts:38: new MouseEvent('mousemove', {
src/core/__tests__/TimescaleHoverController.test.ts:57: new MouseEvent('mousemove', {
===== EVENT BLOCKING =====
src/components/FloatingToolbar/index.tsx:128: event.preventDefault();
src/components/FloatingToolbar/index.tsx:151: event.preventDefault();
src/components/FloatingToolbar/index.tsx:176: const stopPropagation = (event: SyntheticEvent): void => {
src/components/FloatingToolbar/index.tsx:177: event.stopPropagation();
src/components/FloatingToolbar/index.tsx:207: onPointerDown={stopPropagation}
src/components/FloatingToolbar/index.tsx:208: onClick={stopPropagation}
src/components/FloatingToolbar/index.tsx:209: onDoubleClick={stopPropagation}
src/components/FloatingToolbar/index.tsx:210: onContextMenu={stopPropagation}
src/components/PriceScaleControls/index.tsx:25: const stopPropagation = (event: SyntheticEvent) => {
src/components/PriceScaleControls/index.tsx:26: event.stopPropagation();
src/components/PriceScaleControls/index.tsx:32: onPointerDown={stopPropagation}
src/components/PriceScaleControls/index.tsx:33: onMouseDown={stopPropagation}
src/components/PriceScaleControls/index.tsx:34: onClick={stopPropagation}
src/core/Drawings/base/AreaDrawingBase.ts:101: event.preventDefault();
src/core/Drawings/base/DrawingBase.ts:588: event.preventDefault();
src/core/Drawings/base/DrawingBase.ts:589: event.stopPropagation();
src/core/Drawings/regressionTrend/regressionTrend.ts:392: event.preventDefault();
src/core/Drawings/sliderPosition/sliderPosition.ts:555: event.preventDefault();
src/core/Drawings/text/text.ts:297: event.preventDefault();
src/core/Drawings/traectory/traectory.ts:308: event.preventDefault();
src/core/Drawings/traectory/traectory.ts:316: event.preventDefault();
src/core/Drawings/volumeProfile/volumeProfile.ts:565: event.preventDefault();
src/core/Drawings/volumeProfile/volumeProfile.ts:582: event.preventDefault();
src/core/Drawings/__tests__/drawings/base/areaDrawingBase.test.ts:225: expect(event.preventDefault).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/areaDrawingBase.test.ts:227: expect(event.stopPropagation).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/areaDrawingBase.test.ts:293: expect(event.preventDefault).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/areaDrawingBase.test.ts:295: expect(event.stopPropagation).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/areaDrawingBase.test.ts:315: expect(event.preventDefault).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/drawingBase.test.ts:510: expect(event.preventDefault).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/drawingBase.test.ts:512: expect(event.stopPropagation).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/drawingBase.test.ts:524: expect(event.preventDefault).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/drawingBase.test.ts:526: expect(event.stopPropagation).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/drawingBase.test.ts:549: expect(event.preventDefault).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawings/base/drawingBase.test.ts:551: expect(event.stopPropagation).toHaveBeenCalledTimes(1);
src/core/Drawings/__tests__/drawingTestUtils.ts:136: preventDefault: jest.fn(),
src/core/Drawings/__tests__/drawingTestUtils.ts:137: stopPropagation: jest.fn(),
src/core/Drawings/__tests__/drawingTestUtils.ts:147: preventDefault: jest.fn(),
src/core/Drawings/__tests__/drawingTestUtils.ts:148: stopPropagation: jest.fn(),
src/core/Hotkeys.ts:104: event.preventDefault();
===== FOCUS =====
===== FOCUS STYLES =====
src/components/FormFields/index.module.scss:29: &:focus-within {
src/components/FormFields/index.module.scss:36: &:focus-within {
src/components/SettingsModal/index.module.scss:33: &:focus-within {
src/components/SettingsModal/index.module.scss:40: &:focus-within {
src/components/SplitDropdown/index.module.scss:11: &:focus-within .menu_button,
src/core/PriceAxisLabels/PriceAxisLabels.ts:557: style: this.isHistoryMode ? 'outlined' : 'filled',
src/core/PriceAxisLabels/PriceAxisLabelsPrimitive.ts:47: if (label.style === 'outlined') {
src/core/PriceAxisLabels/PriceAxisLabelsPrimitive.ts:139: context.fillStyle = label.style === 'outlined' ? colors.chartBackground : label.color;
src/core/PriceAxisLabels/PriceAxisLabelsPrimitive.ts:142: if (label.style !== 'outlined') {
src/core/PriceAxisLabels/types.ts:3:export type PriceAxisLabelStyle = 'filled' | 'outlined';
src/styles/global.scss:77:.moex-chart-root button:focus-visible {
src/styles/global.scss:78: outline: var(--borderWidth-md) solid currentColor;
src/styles/global.scss:79: outline-offset: var(--space-0125);
src/styles/_preflight.scss:74: outline-offset: -2px;
===== CHART MOUSE EVENTS =====
src/core/Chart.ts:20:import { ChartMouseEvents } from '@core/ChartMouseEvents';
src/core/Chart.ts:116: private mouseEvents: ChartMouseEvents;
src/core/Chart.ts:165: this.mouseEvents = new ChartMouseEvents({
src/core/Chart.ts:187: subscribeChartEvent: this.subscribeChartEvent,
src/core/Chart.ts:307: public subscribeChartEvent: ChartMouseEvents['subscribe'] = (event, callback) =>
src/core/Chart.ts:310: public unsubscribeChartEvent: ChartMouseEvents['unsubscribe'] = (event, callback) => {
src/core/ChartMouseEvents.ts:3:export interface ChartMouseEventsParams {
src/core/ChartMouseEvents.ts:20:export class ChartMouseEvents {
src/core/ChartMouseEvents.ts:25: constructor({ lwcChart, container }: ChartMouseEventsParams) {
src/core/Legend.ts:5:import { ChartMouseEvents } from '@core/ChartMouseEvents';
src/core/Legend.ts:17: subscribeChartEvent: ChartMouseEvents['subscribe'];
src/core/Legend.ts:102: subscribeChartEvent,
src/core/Legend.ts:141: this.subscriptions.add(subscribeChartEvent('crosshairMove', this.handleCrosshairMove));
src/core/Pane.tsx:6:import { ChartMouseEvents } from '@core/ChartMouseEvents';
src/core/Pane.tsx:45: subscribeChartEvent: ChartMouseEvents['subscribe'];
src/core/Pane.tsx:92: private readonly subscribeChartEvent: ChartMouseEvents['subscribe'];
src/core/Pane.tsx:107: subscribeChartEvent,
src/core/Pane.tsx:129: this.subscribeChartEvent = subscribeChartEvent;
src/core/Pane.tsx:433: subscribeChartEvent: this.subscribeChartEvent,
src/core/__tests__/Legend.test.ts:74: const subscribeChartEvent = jest.fn((event, handler) => {
src/core/__tests__/Legend.test.ts:80: }) as unknown as LegendParams['subscribeChartEvent'];
src/core/__tests__/Legend.test.ts:86: subscribeChartEvent,
src/core/__tests__/Pane.test.ts:148: subscribeChartEvent: jest.fn() as never,
src/core/__tests__/PaneManager.test.ts:85: subscribeChartEvent: jest.fn(),
===== DIRECT WINDOW / DOCUMENT EVENTS =====
src/components/Dropdown/index.tsx:81: window.addEventListener('resize', updatePosition);
src/components/Dropdown/index.tsx:82: window.addEventListener('scroll', updatePosition, true);
src/components/Dropdown/index.tsx:87: window.removeEventListener('resize', updatePosition);
src/components/Dropdown/index.tsx:88: window.removeEventListener('scroll', updatePosition, true);
src/components/Dropdown/index.tsx:114: document.addEventListener('pointerdown', handlePointerDown, true);
src/components/Dropdown/index.tsx:115: document.addEventListener('keydown', handleKeyDown);
src/components/Dropdown/index.tsx:118: document.removeEventListener('pointerdown', handlePointerDown, true);
src/components/Dropdown/index.tsx:119: document.removeEventListener('keydown', handleKeyDown);
src/core/ChartMouseEvents.ts:81: window.addEventListener('pointerup', this.onPointerUp, { passive: true });
src/core/ChartMouseEvents.ts:82: window.addEventListener('pointercancel', this.onPointerCancel, { passive: true });
src/core/ChartMouseEvents.ts:89: window.removeEventListener('pointerup', this.onPointerUp);
src/core/ChartMouseEvents.ts:90: window.removeEventListener('pointercancel', this.onPointerCancel);
src/core/Drawings/base/DrawingBase.ts:508: window.addEventListener('pointermove', this.handlePointerMove);
src/core/Drawings/base/DrawingBase.ts:509: window.addEventListener('pointerup', this.handlePointerUp);
src/core/Drawings/base/DrawingBase.ts:510: window.addEventListener('pointercancel', this.handlePointerUp);
src/core/Drawings/base/DrawingBase.ts:520: window.removeEventListener('pointermove', this.handlePointerMove);
src/core/Drawings/base/DrawingBase.ts:521: window.removeEventListener('pointerup', this.handlePointerUp);
src/core/Drawings/base/DrawingBase.ts:522: window.removeEventListener('pointercancel', this.handlePointerUp);
src/core/DrawingsManager.tsx:123: window.addEventListener('pointerup', this.handlePointerUp);
src/core/DrawingsManager.tsx:124: window.addEventListener('pointercancel', this.handlePointerUp);
src/core/DrawingsManager.tsx:761: window.removeEventListener('pointerup', this.handlePointerUp);
src/core/DrawingsManager.tsx:762: window.removeEventListener('pointercancel', this.handlePointerUp);
src/core/Fullscreen.ts:27: document.addEventListener('fullscreenchange', handler);
src/core/Fullscreen.ts:29: return () => document.removeEventListener('fullscreenchange', handler);
src/core/Hotkeys.ts:44: document.addEventListener('keydown', this.handleKeyDown);
src/core/Hotkeys.ts:88: document.removeEventListener('keydown', this.handleKeyDown);
src/utils/getPortalHost.ts:32: document.addEventListener('fullscreenchange', syncPortalHostParent);
===== DIRECT CONTAINER EVENTS =====
src/core/ChartMouseEvents.ts:78: this.container.addEventListener('wheel', this.onWheel, { passive: true });
src/core/ChartMouseEvents.ts:79: this.container.addEventListener('pointerdown', this.onPointerDown, { passive: true });
src/core/ChartMouseEvents.ts:80: this.container.addEventListener('pointermove', this.onPointerMove, { passive: true });
src/core/ChartMouseEvents.ts:86: this.container.removeEventListener('wheel', this.onWheel);
src/core/ChartMouseEvents.ts:87: this.container.removeEventListener('pointerdown', this.onPointerDown);
src/core/ChartMouseEvents.ts:88: this.container.removeEventListener('pointermove', this.onPointerMove);
src/core/DrawingsManager.tsx:125: this.container.addEventListener('click', this.handleClick);
src/core/DrawingsManager.tsx:126: this.container.addEventListener('pointerdown', this.handlePointerDown);
src/core/DrawingsManager.tsx:127: this.container.addEventListener('dblclick', this.handleDoubleClick);
src/core/DrawingsManager.tsx:128: this.container.addEventListener('contextmenu', this.handleContextMenu);
src/core/DrawingsManager.tsx:763: this.container.removeEventListener('click', this.handleClick);
src/core/DrawingsManager.tsx:764: this.container.removeEventListener('pointerdown', this.handlePointerDown);
src/core/DrawingsManager.tsx:765: this.container.removeEventListener('dblclick', this.handleDoubleClick);
src/core/DrawingsManager.tsx:766: this.container.removeEventListener('contextmenu', this.handleContextMenu);