Загрузка данных


import { ReactRenderer } from '@core/ReactRenderer';

import type { ReactElement } from 'react';

const blockedChartEvents = [
  'pointerdown',
  'pointermove',
  'pointerup',
  'pointercancel',
  'click',
  'dblclick',
  'contextmenu',
  'wheel',
] as const;

export class ModalRenderer extends ReactRenderer {
  constructor(container: HTMLElement) {
    super(container);

    blockedChartEvents.forEach((eventName) => {
      container.addEventListener(eventName, this.stopPropagation);
    });
  }

  render(component: ReactElement): void {
    this.container.style.pointerEvents = 'auto';

    super.render(component);
  }

  clearComponents(): void {
    this.container.style.pointerEvents = 'none';

    super.clearComponents();
  }

  destroy(): void {
    blockedChartEvents.forEach((eventName) => {
      this.container.removeEventListener(eventName, this.stopPropagation);
    });

    this.container.style.pointerEvents = 'none';

    super.destroy();
  }

  private stopPropagation = (event: Event): void => {
    event.stopPropagation();
  };
}