Home / Class/ ThrownErrorsView Class — react Architecture

ThrownErrorsView Class — react Architecture

Architecture documentation for the ThrownErrorsView class in ThrownErrorsView.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  2c3a6a4e_0c73_35ac_af62_6070bfc10612["ThrownErrorsView"]
  54164963_cd24_4adc_3d98_1f5b00aa9db1["ThrownErrorsView.js"]
  2c3a6a4e_0c73_35ac_af62_6070bfc10612 -->|defined in| 54164963_cd24_4adc_3d98_1f5b00aa9db1
  51825277_7e9a_a528_c002_9451c2d3f7cf["constructor()"]
  2c3a6a4e_0c73_35ac_af62_6070bfc10612 -->|method| 51825277_7e9a_a528_c002_9451c2d3f7cf
  997945da_776c_ed82_a83f_e6f4652ba220["desiredSize()"]
  2c3a6a4e_0c73_35ac_af62_6070bfc10612 -->|method| 997945da_776c_ed82_a83f_e6f4652ba220
  df9c0cdd_3385_d3e0_0340_b790c0d94af7["setHoveredEvent()"]
  2c3a6a4e_0c73_35ac_af62_6070bfc10612 -->|method| df9c0cdd_3385_d3e0_0340_b790c0d94af7
  206c118a_a95b_2736_0a2c_50fcd6152f5e["_drawSingleThrownError()"]
  2c3a6a4e_0c73_35ac_af62_6070bfc10612 -->|method| 206c118a_a95b_2736_0a2c_50fcd6152f5e
  f2dac41f_c6ba_b398_a87d_c07c5219fab2["draw()"]
  2c3a6a4e_0c73_35ac_af62_6070bfc10612 -->|method| f2dac41f_c6ba_b398_a87d_c07c5219fab2
  b54f8f29_d27e_011a_c427_25d53fdaa0d6["_handleMouseMove()"]
  2c3a6a4e_0c73_35ac_af62_6070bfc10612 -->|method| b54f8f29_d27e_011a_c427_25d53fdaa0d6
  1bfdb03c_42d6_0382_3024_7047540f0e44["handleInteraction()"]
  2c3a6a4e_0c73_35ac_af62_6070bfc10612 -->|method| 1bfdb03c_42d6_0382_3024_7047540f0e44

Relationship Graph

Source Code

packages/react-devtools-timeline/src/content-views/ThrownErrorsView.js lines 42–241

export class ThrownErrorsView extends View {
  _profilerData: TimelineData;
  _intrinsicSize: Size;
  _hoveredEvent: ThrownError | null = null;
  onHover: ((event: ThrownError | null) => void) | null = null;

  constructor(surface: Surface, frame: Rect, profilerData: TimelineData) {
    super(surface, frame);
    this._profilerData = profilerData;

    this._intrinsicSize = {
      width: this._profilerData.duration,
      height: EVENT_ROW_HEIGHT_FIXED,
    };
  }

  desiredSize(): Size {
    return this._intrinsicSize;
  }

  setHoveredEvent(hoveredEvent: ThrownError | null) {
    if (this._hoveredEvent === hoveredEvent) {
      return;
    }
    this._hoveredEvent = hoveredEvent;
    this.setNeedsDisplay();
  }

  /**
   * Draw a single `ThrownError` as a circle in the canvas.
   */
  _drawSingleThrownError(
    context: CanvasRenderingContext2D,
    rect: Rect,
    thrownError: ThrownError,
    baseY: number,
    scaleFactor: number,
    showHoverHighlight: boolean,
  ) {
    const {frame} = this;
    const {timestamp} = thrownError;

    const x = timestampToPosition(timestamp, scaleFactor, frame);
    const radius = REACT_EVENT_DIAMETER / 2;
    const eventRect: Rect = {
      origin: {
        x: x - radius,
        y: baseY,
      },
      size: {width: REACT_EVENT_DIAMETER, height: REACT_EVENT_DIAMETER},
    };
    if (!rectIntersectsRect(eventRect, rect)) {
      return; // Not in view
    }

    const fillStyle = showHoverHighlight
      ? COLORS.REACT_THROWN_ERROR_HOVER
      : COLORS.REACT_THROWN_ERROR;

    const y = eventRect.origin.y + radius;

    context.beginPath();
    context.fillStyle = fillStyle;
    context.arc(x, y, radius, 0, 2 * Math.PI);
    context.fill();
  }

  draw(context: CanvasRenderingContext2D) {
    const {
      frame,
      _profilerData: {thrownErrors},
      _hoveredEvent,
      visibleArea,
    } = this;

    context.fillStyle = COLORS.BACKGROUND;
    context.fillRect(
      visibleArea.origin.x,
      visibleArea.origin.y,
      visibleArea.size.width,
      visibleArea.size.height,

Domain

Frequently Asked Questions

What is the ThrownErrorsView class?
ThrownErrorsView is a class in the react codebase, defined in packages/react-devtools-timeline/src/content-views/ThrownErrorsView.js.
Where is ThrownErrorsView defined?
ThrownErrorsView is defined in packages/react-devtools-timeline/src/content-views/ThrownErrorsView.js at line 42.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free