UNPKG

@mantine/tiptap

Version:

Rich text editor based on tiptap

42 lines (39 loc) 1.7 kB
'use client'; import { jsx } from 'react/jsx-runtime'; import { forwardRef, useState } from 'react'; import { useProps, rem } from '@mantine/core'; import { IconBraces } from '../icons/Icons.mjs'; import { useRichTextEditorContext } from '../RichTextEditor.context.mjs'; import { RichTextEditorControl } from './RichTextEditorControl.mjs'; const defaultProps = {}; const RichTextEditorSourceCodeControl = forwardRef((props, ref) => { const { ...others } = useProps("RichTextEditorSourceCodeControl", defaultProps, props); const { editor, labels, variant, onSourceCodeTextSwitch } = useRichTextEditorContext(); const [isSourceCodeModeActive, setIsSourceCodeModeActive] = useState(false); const handleStateChange = () => { if (isSourceCodeModeActive) { editor?.commands.setContent(editor.getText(), true); } else { editor?.commands.setContent(`<textarea>${editor.getHTML()}</textarea>`); } const isSourceCodeModeActiveNew = !isSourceCodeModeActive; setIsSourceCodeModeActive(isSourceCodeModeActiveNew); onSourceCodeTextSwitch?.(isSourceCodeModeActiveNew); }; return /* @__PURE__ */ jsx( RichTextEditorControl, { ...others, variant, active: isSourceCodeModeActive, "aria-label": labels.sourceCodeControlLabel, title: labels.sourceCodeControlLabel, onClick: () => handleStateChange(), ref, children: /* @__PURE__ */ jsx(IconBraces, { style: { width: rem(16), height: rem(16) } }) } ); }); RichTextEditorSourceCodeControl.displayName = "@mantine/tiptap/RichTextEditorSourceCodeControl"; export { RichTextEditorSourceCodeControl }; //# sourceMappingURL=RichTextEditorSourceCodeControl.mjs.map