Home / Class/ FlamechartStackLayerView Class — react Architecture

FlamechartStackLayerView Class — react Architecture

Architecture documentation for the FlamechartStackLayerView class in FlamechartView.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  1c41caa2_9be5_5d0b_7a2d_ee4e7e896fab["FlamechartStackLayerView"]
  d08702f1_e022_2394_00ee_ac0a9c33e2de["FlamechartView.js"]
  1c41caa2_9be5_5d0b_7a2d_ee4e7e896fab -->|defined in| d08702f1_e022_2394_00ee_ac0a9c33e2de
  ba8a3f6a_b537_63fc_e5a1_452ad3c407fc["constructor()"]
  1c41caa2_9be5_5d0b_7a2d_ee4e7e896fab -->|method| ba8a3f6a_b537_63fc_e5a1_452ad3c407fc
  925f2764_883a_25b2_9c11_7fb9f6196511["desiredSize()"]
  1c41caa2_9be5_5d0b_7a2d_ee4e7e896fab -->|method| 925f2764_883a_25b2_9c11_7fb9f6196511
  489ed209_81ca_8846_edcc_5c7d0945ab8b["setHoveredFlamechartStackFrame()"]
  1c41caa2_9be5_5d0b_7a2d_ee4e7e896fab -->|method| 489ed209_81ca_8846_edcc_5c7d0945ab8b
  a2777e3e_5de8_64fd_2831_e7d1431e9806["draw()"]
  1c41caa2_9be5_5d0b_7a2d_ee4e7e896fab -->|method| a2777e3e_5de8_64fd_2831_e7d1431e9806
  2048ceb7_6a90_62bc_935c_4b6ddcb44285["_handleMouseMove()"]
  1c41caa2_9be5_5d0b_7a2d_ee4e7e896fab -->|method| 2048ceb7_6a90_62bc_935c_4b6ddcb44285
  29bdc2a3_2ebc_c032_b444_98a10af67b95["handleInteraction()"]
  1c41caa2_9be5_5d0b_7a2d_ee4e7e896fab -->|method| 29bdc2a3_2ebc_c032_b444_98a10af67b95

Relationship Graph

Source Code

packages/react-devtools-timeline/src/content-views/FlamechartView.js lines 74–270

class FlamechartStackLayerView extends View {
  /** Layer to display */
  _stackLayer: FlamechartStackLayer;

  /** A set of `stackLayer`'s frames, for efficient lookup. */
  _stackFrameSet: Set<FlamechartStackFrame>;

  _internalModuleSourceToRanges: InternalModuleSourceToRanges;

  _intrinsicSize: Size;

  _hoveredStackFrame: FlamechartStackFrame | null = null;
  _onHover: ((node: FlamechartStackFrame | null) => void) | null = null;

  constructor(
    surface: Surface,
    frame: Rect,
    stackLayer: FlamechartStackLayer,
    internalModuleSourceToRanges: InternalModuleSourceToRanges,
    duration: number,
  ) {
    super(surface, frame);
    this._stackLayer = stackLayer;
    this._stackFrameSet = new Set(stackLayer);
    this._internalModuleSourceToRanges = internalModuleSourceToRanges;
    this._intrinsicSize = {
      width: duration,
      height: FLAMECHART_FRAME_HEIGHT,
    };
  }

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

  setHoveredFlamechartStackFrame(
    hoveredStackFrame: FlamechartStackFrame | null,
  ) {
    if (this._hoveredStackFrame === hoveredStackFrame) {
      return; // We're already hovering over this frame
    }

    // Only care about frames displayed by this view.
    const stackFrameToSet =
      hoveredStackFrame && this._stackFrameSet.has(hoveredStackFrame)
        ? hoveredStackFrame
        : null;
    if (this._hoveredStackFrame === stackFrameToSet) {
      return; // Resulting state is unchanged
    }
    this._hoveredStackFrame = stackFrameToSet;
    this.setNeedsDisplay();
  }

  draw(context: CanvasRenderingContext2D) {
    const {
      frame,
      _stackLayer,
      _hoveredStackFrame,
      _intrinsicSize,
      visibleArea,
    } = this;

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

    const scaleFactor = positioningScaleFactor(_intrinsicSize.width, frame);

    for (let i = 0; i < _stackLayer.length; i++) {
      const stackFrame = _stackLayer[i];
      const {name, timestamp, duration} = stackFrame;

      const width = durationToWidth(duration, scaleFactor);
      if (width < 1) {
        continue; // Too small to render at this zoom level
      }

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free