UNPKG

@empoleon/tiptap

Version:

Rich text editor based on tiptap

1 lines 11.3 kB
{"version":3,"file":"RichTextEditor.mjs","sources":["../src/RichTextEditor.tsx"],"sourcesContent":["import { createMemo, JSX, splitProps } from 'solid-js';\nimport { Editor } from '@empoleon/solid-tiptap';\nimport {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@empoleon/core';\nimport { DEFAULT_LABELS, RichTextEditorLabels } from './labels';\nimport { RichTextEditorProvider } from './RichTextEditor.context';\nimport { RichTextEditorContent } from './RichTextEditorContent/RichTextEditorContent';\nimport * as controls from './RichTextEditorControl';\nimport { RichTextEditorControl } from './RichTextEditorControl/RichTextEditorControl';\nimport { RichTextEditorControlsGroup } from './RichTextEditorControlsGroup/RichTextEditorControlsGroup';\nimport { RichTextEditorToolbar } from './RichTextEditorToolbar/RichTextEditorToolbar';\nimport classes from './RichTextEditor.module.css';\n\nexport type RichTextEditorVariant = 'default' | 'subtle';\n\nexport type RichTextEditorStylesNames =\n | 'linkEditorSave'\n | 'linkEditorDropdown'\n | 'root'\n | 'content'\n | 'typographyStylesProvider'\n | 'control'\n | 'controlIcon'\n | 'controlsGroup'\n | 'toolbar'\n | 'linkEditor'\n | 'linkEditorInput'\n | 'linkEditorExternalControl';\n\nexport interface RichTextEditorProps\n extends BoxProps,\n StylesApiProps<RichTextEditorFactory>,\n ElementProps<'div'> {\n /** Tiptap editor instance */\n editor: Editor | null;\n\n /** Determines whether code highlight styles should be added, `true` by default */\n withCodeHighlightStyles?: boolean;\n\n /** Determines whether typography styles should be added, `true` by default */\n withTypographyStyles?: boolean;\n\n /** Labels that are used in controls */\n labels?: Partial<RichTextEditorLabels>;\n\n /** Child editor components */\n children: JSX.Element;\n}\n\nexport type RichTextEditorFactory = Factory<{\n props: RichTextEditorProps;\n ref: HTMLDivElement;\n stylesNames: RichTextEditorStylesNames;\n variant: RichTextEditorVariant;\n staticComponents: {\n Content: typeof RichTextEditorContent;\n Control: typeof RichTextEditorControl;\n Toolbar: typeof RichTextEditorToolbar;\n ControlsGroup: typeof RichTextEditorControlsGroup;\n Bold: typeof controls.BoldControl;\n Italic: typeof controls.ItalicControl;\n Strikethrough: typeof controls.StrikeThroughControl;\n Underline: typeof controls.UnderlineControl;\n ClearFormatting: typeof controls.ClearFormattingControl;\n H1: typeof controls.H1Control;\n H2: typeof controls.H2Control;\n H3: typeof controls.H3Control;\n H4: typeof controls.H4Control;\n H5: typeof controls.H5Control;\n H6: typeof controls.H6Control;\n BulletList: typeof controls.BulletListControl;\n OrderedList: typeof controls.OrderedListControl;\n Link: typeof controls.RichTextEditorLinkControl;\n Unlink: typeof controls.UnlinkControl;\n Blockquote: typeof controls.BlockquoteControl;\n AlignLeft: typeof controls.AlignLeftControl;\n AlignRight: typeof controls.AlignRightControl;\n AlignCenter: typeof controls.AlignCenterControl;\n AlignJustify: typeof controls.AlignJustifyControl;\n Superscript: typeof controls.SuperscriptControl;\n Subscript: typeof controls.SubscriptControl;\n Code: typeof controls.CodeControl;\n CodeBlock: typeof controls.CodeBlockControl;\n ColorPicker: typeof controls.RichTextEditorColorPickerControl;\n Color: typeof controls.RichTextEditorColorControl;\n Highlight: typeof controls.HighlightControl;\n Hr: typeof controls.HrControl;\n UnsetColor: typeof controls.UnsetColorControl;\n Undo: typeof controls.UndoControl;\n Redo: typeof controls.RedoControl;\n TaskList: typeof controls.TaskListControl;\n TaskListSink: typeof controls.TaskListSinkControl;\n TaskListLift: typeof controls.TaskListLiftControl;\n };\n}>;\n\nconst defaultProps: Partial<RichTextEditorProps> = {\n withCodeHighlightStyles: true,\n withTypographyStyles: true,\n variant: 'default',\n};\n\nexport const RichTextEditor = factory<RichTextEditorFactory>(_props => {\n const props = useProps('RichTextEditor', defaultProps, _props);\n const [local, others] = splitProps(props, [\n 'classNames',\n 'className',\n 'style',\n 'styles',\n 'unstyled',\n 'vars',\n 'editor',\n 'withCodeHighlightStyles',\n 'withTypographyStyles',\n 'labels',\n 'children',\n 'variant',\n 'ref'\n ]);\n\n const getStyles = useStyles<RichTextEditorFactory>({\n name: 'RichTextEditor',\n classes,\n props,\n className: local.className,\n style: local.style,\n classNames: local.classNames,\n styles: local.styles,\n unstyled: local.unstyled,\n vars: local.vars,\n });\n\n const mergedLabels = createMemo(() => ({ ...DEFAULT_LABELS, ...local.labels }));\n\n return (\n <RichTextEditorProvider\n value={{\n editor: local.editor,\n getStyles,\n labels: mergedLabels(),\n withCodeHighlightStyles: local.withCodeHighlightStyles,\n withTypographyStyles: local.withTypographyStyles,\n unstyled: local.unstyled,\n variant: local.variant,\n }}\n >\n <Box {...getStyles('root')} {...others} ref={local.ref}>\n {local.children}\n </Box>\n </RichTextEditorProvider>\n );\n});\n\nRichTextEditor.classes = classes;\nRichTextEditor.displayName = '@empoleon/tiptap/RichTextEditor';\n\n// Generic components\nRichTextEditor.Content = RichTextEditorContent;\nRichTextEditor.Control = RichTextEditorControl;\nRichTextEditor.Toolbar = RichTextEditorToolbar;\nRichTextEditor.ControlsGroup = RichTextEditorControlsGroup;\n\n// Controls components\nRichTextEditor.Bold = controls.BoldControl;\nRichTextEditor.Italic = controls.ItalicControl;\nRichTextEditor.Strikethrough = controls.StrikeThroughControl;\nRichTextEditor.Underline = controls.UnderlineControl;\nRichTextEditor.ClearFormatting = controls.ClearFormattingControl;\nRichTextEditor.H1 = controls.H1Control;\nRichTextEditor.H2 = controls.H2Control;\nRichTextEditor.H3 = controls.H3Control;\nRichTextEditor.H4 = controls.H4Control;\nRichTextEditor.H5 = controls.H5Control;\nRichTextEditor.H6 = controls.H6Control;\nRichTextEditor.BulletList = controls.BulletListControl;\nRichTextEditor.OrderedList = controls.OrderedListControl;\nRichTextEditor.Link = controls.RichTextEditorLinkControl;\nRichTextEditor.Unlink = controls.UnlinkControl;\nRichTextEditor.Blockquote = controls.BlockquoteControl;\nRichTextEditor.AlignLeft = controls.AlignLeftControl;\nRichTextEditor.AlignRight = controls.AlignRightControl;\nRichTextEditor.AlignCenter = controls.AlignCenterControl;\nRichTextEditor.AlignJustify = controls.AlignJustifyControl;\nRichTextEditor.Superscript = controls.SuperscriptControl;\nRichTextEditor.Subscript = controls.SubscriptControl;\nRichTextEditor.Code = controls.CodeControl;\nRichTextEditor.CodeBlock = controls.CodeBlockControl;\nRichTextEditor.ColorPicker = controls.RichTextEditorColorPickerControl;\nRichTextEditor.Color = controls.RichTextEditorColorControl;\nRichTextEditor.Highlight = controls.HighlightControl;\nRichTextEditor.Hr = controls.HrControl;\nRichTextEditor.UnsetColor = controls.UnsetColorControl;\nRichTextEditor.Undo = controls.UndoControl;\nRichTextEditor.Redo = controls.RedoControl;\nRichTextEditor.TaskList = controls.TaskListControl;\nRichTextEditor.TaskListSink = controls.TaskListSinkControl;\nRichTextEditor.TaskListLift = controls.TaskListLiftControl;\n"],"names":["defaultProps","withCodeHighlightStyles","withTypographyStyles","variant","RichTextEditor","factory","_props","props","useProps","local","others","splitProps","getStyles","useStyles","name","classes","className","style","classNames","styles","unstyled","vars","mergedLabels","createMemo","DEFAULT_LABELS","labels","_$createComponent","RichTextEditorProvider","value","editor","children","Box","ref","r$","_ref$","displayName","Content","RichTextEditorContent","Control","RichTextEditorControl","Toolbar","RichTextEditorToolbar","ControlsGroup","RichTextEditorControlsGroup","Bold","controls","Italic","Strikethrough","Underline","ClearFormatting","H1","H2","H3","H4","H5","H6","BulletList","OrderedList","Link","Unlink","Blockquote","AlignLeft","AlignRight","AlignCenter","AlignJustify","Superscript","Subscript","Code","CodeBlock","ColorPicker","Color","Highlight","Hr","UnsetColor","Undo","Redo","TaskList","TaskListSink","TaskListLift"],"mappings":"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"}