import { Editor } from "@tiptap/react";
import Moveable from "react-moveable";

export const ImageResizer = ({ editor }: { editor: Editor }) => {
  const updateMediaSize = () => {
    const imageInfo = document.querySelector(
      ".ProseMirror-selectednode",
    ) as HTMLImageElement;
    if (imageInfo) {
      const selection = editor.state.selection;
      editor.commands.setImage({
        src: imageInfo.src,
        width: Number(imageInfo.style.width.replace("px", "")),
        height: Number(imageInfo.style.height.replace("px", "")),
      } as any);
      editor.commands.setNodeSelection(selection.from);
    }
  };

  return (
    <>
      <Moveable
        target={document.querySelector(".ProseMirror-selectednode") as any}
        container={null}
        origin={false}
        edge={false}
        throttleDrag={0}
        keepRatio
        resizable
        throttleResize={0}
        onResize={({ target, width, height, delta }: any) => {
          delta[0] && (target!.style.width = `${width}px`);
          delta[1] && (target!.style.height = `${height}px`);
        }}
        onResizeEnd={() => {
          updateMediaSize();
        }}
        scalable
        renderDirections={["w", "e"]}
        onScale={({ target, transform }: any) => {
          target!.style.transform = transform;
        }}
      />
    </>
  );
};
