UNPKG

tldraw

Version:

A tiny little drawing editor.

45 lines (44 loc) 1.65 kB
import { jsx } from "react/jsx-runtime"; import * as _Dialog from "@radix-ui/react-dialog"; import { useContainer, useValue } from "@tldraw/editor"; import { memo, useCallback } from "react"; import { useDialogs } from "../context/dialogs.mjs"; const TldrawUiDialog = ({ id, component: ModalContent, onClose }) => { const { removeDialog } = useDialogs(); const container = useContainer(); const handleOpenChange = useCallback( (isOpen) => { if (!isOpen) { if (onClose) { try { onClose(); } catch (err) { console.warn(err); } } removeDialog(id); } }, [id, onClose, removeDialog] ); return /* @__PURE__ */ jsx(_Dialog.Root, { onOpenChange: handleOpenChange, defaultOpen: true, children: /* @__PURE__ */ jsx(_Dialog.Portal, { container, children: /* @__PURE__ */ jsx( _Dialog.Overlay, { dir: "ltr", className: "tlui-dialog__overlay", onClick: (e) => { if (e.target === e.currentTarget) handleOpenChange(false); }, children: /* @__PURE__ */ jsx(_Dialog.Content, { dir: "ltr", className: "tlui-dialog__content", "aria-describedby": void 0, children: /* @__PURE__ */ jsx(ModalContent, { onClose: () => handleOpenChange(false) }) }) } ) }) }); }; const TldrawUiDialogs = memo(function TldrawUiDialogs2() { const { dialogs } = useDialogs(); const dialogsArray = useValue("dialogs", () => dialogs.get(), [dialogs]); return dialogsArray.map((dialog) => /* @__PURE__ */ jsx(TldrawUiDialog, { ...dialog }, dialog.id)); }); export { TldrawUiDialogs }; //# sourceMappingURL=Dialogs.mjs.map