UNPKG

mui-tiptap

Version:

A Material-UI (MUI) styled WYSIWYG rich text editor, using Tiptap

61 lines (60 loc) 3.06 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); const material_1 = require("@mui/material"); const react_1 = require("@tiptap/react"); const react_2 = require("react"); const mui_1 = require("tss-react/mui"); const context_1 = require("./context"); const styles_1 = require("./styles"); const richTextContentClasses = (0, styles_1.getUtilityClasses)("RichTextContent", ["root", "readonly", "editable"]); const useStyles = (0, mui_1.makeStyles)({ name: { RichTextContent }, })((theme, { disableDefaultStyles = false }) => { return { root: disableDefaultStyles ? {} : { // We add `as CSSObject` to get around typing issues with our editor // styles function. For future reference, this old issue and its // solution are related, though not quite right // https://github.com/garronej/tss-react/issues/2 // https://github.com/garronej/tss-react/commit/9dc3f6f9f70b6df0bd83cd5689c3313467fb4f06 "& .ProseMirror": Object.assign({}, (0, styles_1.getEditorStyles)(theme)), }, // Styles applied when the editor is in read-only mode (editable=false) readonly: {}, // Styles applied when the editor is editable (editable=true) editable: {}, }; }); /** * A component for rendering a MUI-styled version of Tiptap rich text editor * content. * * Must be a child of the RichTextEditorProvider so that the `editor` context is * available. */ function RichTextContent(_a) { var { className, classes: overrideClasses = {}, disableDefaultStyles = false } = _a, boxProps = __rest(_a, ["className", "classes", "disableDefaultStyles"]); const { classes, cx } = useStyles({ disableDefaultStyles }, { props: { classes: overrideClasses }, }); const editor = (0, context_1.useRichTextEditorContext)(); const editorClasses = (0, react_2.useMemo)(() => cx(richTextContentClasses.root, className, classes.root, (editor === null || editor === void 0 ? void 0 : editor.isEditable) ? [richTextContentClasses.editable, classes.editable] : [richTextContentClasses.readonly, classes.readonly]), [className, classes, cx, editor === null || editor === void 0 ? void 0 : editor.isEditable]); return ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({}, boxProps, { className: editorClasses, component: react_1.EditorContent, editor: editor }))); } exports.default = RichTextContent;