Home / File/ SuspenseTimeline.js — react Source File

SuspenseTimeline.js — react Source File

Architecture documentation for SuspenseTimeline.js, a javascript file in the react codebase. 11 imports, 1 dependents.

File javascript BabelCompiler Validation 11 imports 1 dependents 2 functions

Entity Profile

Dependency Diagram

graph LR
  09a08def_3d86_aab5_1719_24f5fdd9d175["SuspenseTimeline.js"]
  913bb343_55ea_f1b8_08f5_b75cb0a92b76["context.js"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> 913bb343_55ea_f1b8_08f5_b75cb0a92b76
  2d59b0f9_9ad6_da4d_0264_d98f193ab3fd["TreeContext.js"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> 2d59b0f9_9ad6_da4d_0264_d98f193ab3fd
  315baf50_1028_51ca_a9c1_679c6a17ed98["hooks.js"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> 315baf50_1028_51ca_a9c1_679c6a17ed98
  9526441b_1b8b_0410_c862_2232f8e4ba65["SuspenseTreeContext.js"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> 9526441b_1b8b_0410_c862_2232f8e4ba65
  9c16d6e1_2095_8169_1c22_25111316b4ab["SuspenseTimeline.css"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> 9c16d6e1_2095_8169_1c22_25111316b4ab
  a780c065_6e09_9761_ec53_ece3335378f1["SuspenseScrubber.js"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> a780c065_6e09_9761_ec53_ece3335378f1
  f9049b08_60f8_abce_a6a6_153f88447124["Button.js"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> f9049b08_60f8_abce_a6a6_153f88447124
  f71ee326_17f0_7db4_4178_2763fb1c2ad1["Button"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> f71ee326_17f0_7db4_4178_2763fb1c2ad1
  9f39024f_b905_9b0f_2fc7_e24785732638["ButtonIcon.js"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> 9f39024f_b905_9b0f_2fc7_e24785732638
  4690d9c0_cb81_9593_7817_f9e61a49f9e7["ButtonIcon"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> 4690d9c0_cb81_9593_7817_f9e61a49f9e7
  ac587885_e294_a1e9_b13f_5e7b920fdb42["react"]
  09a08def_3d86_aab5_1719_24f5fdd9d175 --> ac587885_e294_a1e9_b13f_5e7b920fdb42
  3249b7c1_ae10_2672_10ce_a66fd0ee6f60["SuspenseTab.js"]
  3249b7c1_ae10_2672_10ce_a66fd0ee6f60 --> 09a08def_3d86_aab5_1719_24f5fdd9d175
  style 09a08def_3d86_aab5_1719_24f5fdd9d175 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 */

import * as React from 'react';
import {useContext, useEffect} from 'react';
import {BridgeContext} from '../context';
import {TreeDispatcherContext} from '../Components/TreeContext';
import {useScrollToHostInstance} from '../hooks';
import {
  SuspenseTreeDispatcherContext,
  SuspenseTreeStateContext,
} from './SuspenseTreeContext';
import styles from './SuspenseTimeline.css';
import SuspenseScrubber from './SuspenseScrubber';
import Button from '../Button';
import ButtonIcon from '../ButtonIcon';

function SuspenseTimelineInput() {
  const bridge = useContext(BridgeContext);
  const treeDispatch = useContext(TreeDispatcherContext);
  const suspenseTreeDispatch = useContext(SuspenseTreeDispatcherContext);
  const scrollToHostInstance = useScrollToHostInstance();

  const {timeline, timelineIndex, hoveredTimelineIndex, playing, autoScroll} =
    useContext(SuspenseTreeStateContext);

  const min = 0;
  const max = timeline.length > 0 ? timeline.length - 1 : 0;

  function switchSuspenseNode(nextTimelineIndex: number) {
    const nextSelectedSuspenseID = timeline[nextTimelineIndex].id;
    treeDispatch({
      type: 'SELECT_ELEMENT_BY_ID',
      payload: nextSelectedSuspenseID,
    });
    suspenseTreeDispatch({
      type: 'SUSPENSE_SET_TIMELINE_INDEX',
      payload: nextTimelineIndex,
    });
  }

  function handleChange(pendingTimelineIndex: number) {
    switchSuspenseNode(pendingTimelineIndex);
  }

  function handleFocus() {
    switchSuspenseNode(timelineIndex);
  }

  function handleHoverSegment(hoveredIndex: number) {
    const nextSelectedSuspenseID = timeline[hoveredIndex].id;
    suspenseTreeDispatch({
      type: 'HOVER_TIMELINE_FOR_ID',
      payload: nextSelectedSuspenseID,
// ... (136 more lines)

Domain

Subdomains

Frequently Asked Questions

What does SuspenseTimeline.js do?
SuspenseTimeline.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Validation subdomain.
What functions are defined in SuspenseTimeline.js?
SuspenseTimeline.js defines 2 function(s): SuspenseTimeline, SuspenseTimelineInput.
What does SuspenseTimeline.js depend on?
SuspenseTimeline.js imports 11 module(s): Button, Button.js, ButtonIcon, ButtonIcon.js, SuspenseScrubber.js, SuspenseTimeline.css, SuspenseTreeContext.js, TreeContext.js, and 3 more.
What files import SuspenseTimeline.js?
SuspenseTimeline.js is imported by 1 file(s): SuspenseTab.js.
Where is SuspenseTimeline.js in the architecture?
SuspenseTimeline.js is located at packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseTimeline.js (domain: BabelCompiler, subdomain: Validation, directory: packages/react-devtools-shared/src/devtools/views/SuspenseTab).

Analyze Your Own Codebase

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

Try Supermodel Free