UNPKG

tldraw

Version:

A tiny little drawing editor.

84 lines (83 loc) 3.45 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var Dialogs_exports = {}; __export(Dialogs_exports, { DefaultDialogs: () => DefaultDialogs }); module.exports = __toCommonJS(Dialogs_exports); var import_jsx_runtime = require("react/jsx-runtime"); var import_editor = require("@tldraw/editor"); var import_radix_ui = require("radix-ui"); var import_react = require("react"); var import_dialogs = require("../context/dialogs"); const TldrawUiDialog = ({ id, component: ModalContent, preventBackgroundClose }) => { const { removeDialog } = (0, import_dialogs.useDialogs)(); const mouseDownInsideContentRef = (0, import_react.useRef)(false); const container = (0, import_editor.useContainer)(); const handleOpenChange = (0, import_react.useCallback)( (isOpen) => { if (!isOpen) { removeDialog(id); } }, [id, removeDialog] ); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_radix_ui.Dialog.Root, { onOpenChange: handleOpenChange, defaultOpen: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_radix_ui.Dialog.Portal, { container, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_radix_ui.Dialog.Overlay, { dir: "ltr", className: "tlui-dialog__overlay", onClick: (e) => { if (mouseDownInsideContentRef.current) return; if (!preventBackgroundClose && e.target === e.currentTarget) handleOpenChange(false); }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_radix_ui.Dialog.Content, { dir: "ltr", className: "tlui-dialog__content", "aria-describedby": void 0, onMouseDown: () => mouseDownInsideContentRef.current = true, onMouseUp: () => mouseDownInsideContentRef.current = false, onInteractOutside: (e) => { mouseDownInsideContentRef.current = false; if (preventBackgroundClose) { e.preventDefault(); } }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)( ModalContent, { onClose: () => { mouseDownInsideContentRef.current = false; handleOpenChange(false); } } ) } ) } ) }) }); }; const DefaultDialogs = (0, import_react.memo)(function DefaultDialogs2() { const { dialogs } = (0, import_dialogs.useDialogs)(); const dialogsArray = (0, import_editor.useValue)("dialogs", () => dialogs.get(), [dialogs]); return dialogsArray.map((dialog) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TldrawUiDialog, { ...dialog }, dialog.id)); }); //# sourceMappingURL=Dialogs.js.map