Sha256: ac3f478ce7c4554629520e6454ecf4783cfe02478c146435b713298d61acb10f

Contents?: true

Size: 580 Bytes

Versions: 1

Compression:

Stored size: 580 Bytes

Contents

import { DragEvent, useEffect, useRef } from "react";

import * as Drag from "../../types/Drag";

export default function useDraggable<T>(
  draggable: Drag.Draggable<T>,
  startDrag: (evt: React.MouseEvent, draggable: Drag.Draggable<T>) => void
) {
  const ref = useRef<HTMLDivElement>(null);

  const handleDrag = (evt: DragEvent) => {
    evt.preventDefault();
    evt.stopPropagation();
    startDrag(evt, draggable);
  };

  useEffect(() => {
    draggable.ref.current = ref.current;
  }, [draggable.ref]);

  return { ref: ref, onDragStart: handleDrag, draggable: true };
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pages_core-3.15.5 app/javascript/components/drag/useDraggable.ts