Sha256: e4ec566b022bfcbd6c27493ad616f127540976da71c245a84b10de394397cfb6

Contents?: true

Size: 629 Bytes

Versions: 1

Compression:

Stored size: 629 Bytes

Contents

import { useCallback, useState } from "react";
import * as Crop from "../../types/Crop";

export default function useContainerSize(): [
  (node?: HTMLDivElement) => void,
  Crop.Size
] {
  const [containerSize, setContainerSize] = useState<Crop.Size>();

  const ref = useCallback((node?: HTMLDivElement) => {
    const measure = () => {
      setContainerSize({
        width: node.offsetWidth - 2,
        height: node.offsetHeight - 2
      });
    };
    if (node !== null) {
      measure();
      const observer = new ResizeObserver(measure);
      observer.observe(node);
    }
  }, []);

  return [ref, containerSize];
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pages_core-3.15.5 app/javascript/components/ImageCropper/useContainerSize.ts