Home / File/ ResizeObserverCase.js — react Source File

ResizeObserverCase.js — react Source File

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

File javascript BabelCompiler Entrypoint 5 imports 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  5baa25a0_1e52_b988_1762_40c15ffae851["ResizeObserverCase.js"]
  14dde3c9_48ef_6e34_3667_978d06aff15d["TestCase.js"]
  5baa25a0_1e52_b988_1762_40c15ffae851 --> 14dde3c9_48ef_6e34_3667_978d06aff15d
  e1e356f5_b085_dad5_a81f_4b4844381311["TestCase"]
  5baa25a0_1e52_b988_1762_40c15ffae851 --> e1e356f5_b085_dad5_a81f_4b4844381311
  bc8ae172_cc20_3692_943c_bbdb1ad34855["Fixture.js"]
  5baa25a0_1e52_b988_1762_40c15ffae851 --> bc8ae172_cc20_3692_943c_bbdb1ad34855
  2851624d_a736_f3f6_2132_5a20630983fe["Fixture"]
  5baa25a0_1e52_b988_1762_40c15ffae851 --> 2851624d_a736_f3f6_2132_5a20630983fe
  a3aeab4c_4f93_b8d8_01c2_7a351a28a3fb["Fixture"]
  5baa25a0_1e52_b988_1762_40c15ffae851 --> a3aeab4c_4f93_b8d8_01c2_7a351a28a3fb
  463c662d_adfd_912e_a87b_b390bc35e100["index.js"]
  463c662d_adfd_912e_a87b_b390bc35e100 --> 5baa25a0_1e52_b988_1762_40c15ffae851
  style 5baa25a0_1e52_b988_1762_40c15ffae851 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import TestCase from '../../TestCase';
import Fixture from '../../Fixture';

const React = window.React;
const {Fragment, useEffect, useRef, useState} = React;

export default function ResizeObserverCase() {
  const fragmentRef = useRef(null);
  const [width, setWidth] = useState([0, 0, 0]);

  useEffect(() => {
    const resizeObserver = new window.ResizeObserver(entries => {
      if (entries.length > 0) {
        setWidth(prev => {
          const newWidth = [...prev];
          entries.forEach(entry => {
            const index = parseInt(entry.target.id, 10);
            newWidth[index] = Math.round(entry.contentRect.width);
          });
          return newWidth;
        });
      }
    });

    fragmentRef.current.observeUsing(resizeObserver);
    const lastFragmentRefValue = fragmentRef.current;
    return () => {
      lastFragmentRefValue.unobserveUsing(resizeObserver);
    };
  }, []);

  return (
    <TestCase title="Resize Observer">
      <TestCase.Steps>
        <li>Resize the viewport width until the children respond</li>
        <li>See that the width data updates as they elements resize</li>
      </TestCase.Steps>
      <TestCase.ExpectedResult>
        The Fragment Ref has a ResizeObserver attached which has a callback to
        update the width state of each child node.
      </TestCase.ExpectedResult>
      <Fixture>
        <Fragment ref={fragmentRef}>
          <div className="card" id="0" style={{width: '100%'}}>
            <p>
              Width: <b>{width[0]}px</b>
            </p>
          </div>
          <div className="card" id="1" style={{width: '80%'}}>
            <p>
              Width: <b>{width[1]}px</b>
            </p>
          </div>
          <div className="card" id="2" style={{width: '50%'}}>
            <p>
              Width: <b>{width[2]}px</b>
            </p>
          </div>
        </Fragment>
      </Fixture>
    </TestCase>
  );
}

Domain

Subdomains

Frequently Asked Questions

What does ResizeObserverCase.js do?
ResizeObserverCase.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Entrypoint subdomain.
What functions are defined in ResizeObserverCase.js?
ResizeObserverCase.js defines 1 function(s): ResizeObserverCase.
What does ResizeObserverCase.js depend on?
ResizeObserverCase.js imports 5 module(s): Fixture, Fixture, Fixture.js, TestCase, TestCase.js.
What files import ResizeObserverCase.js?
ResizeObserverCase.js is imported by 1 file(s): index.js.
Where is ResizeObserverCase.js in the architecture?
ResizeObserverCase.js is located at fixtures/dom/src/components/fixtures/fragment-refs/ResizeObserverCase.js (domain: BabelCompiler, subdomain: Entrypoint, directory: fixtures/dom/src/components/fixtures/fragment-refs).

Analyze Your Own Codebase

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

Try Supermodel Free