diff --git a/package-lock.json b/package-lock.json index 6c836a58..a98a5388 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9464,6 +9464,19 @@ "@tiptap/pm": "^3.0.9" } }, + "node_modules/@tiptap/extension-hard-break": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.0.9.tgz", + "integrity": "sha512-PWNYsUwVsMWt/R5/OWjfGb+7DQT0DvH+1owBimRq0pWZepg8qkz1jdPGgsRmUFyERRsXeEpgj3VaQfrgbyUfrA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.0.9" + } + }, "node_modules/@tiptap/extension-horizontal-rule": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.0.9.tgz", @@ -24873,6 +24886,7 @@ "@tiptap/extension-code": "^3.0.9", "@tiptap/extension-code-block-lowlight": "^3.0.9", "@tiptap/extension-document": "^3.0.9", + "@tiptap/extension-hard-break": "^3.0.9", "@tiptap/extension-horizontal-rule": "^3.0.9", "@tiptap/extension-italic": "^3.0.9", "@tiptap/extension-link": "^3.0.9", diff --git a/packages/ui/package.json b/packages/ui/package.json index 9057b8d2..2ec18a21 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -52,6 +52,7 @@ "@tiptap/extension-code": "^3.0.9", "@tiptap/extension-code-block-lowlight": "^3.0.9", "@tiptap/extension-document": "^3.0.9", + "@tiptap/extension-hard-break": "^3.0.9", "@tiptap/extension-horizontal-rule": "^3.0.9", "@tiptap/extension-italic": "^3.0.9", "@tiptap/extension-link": "^3.0.9", diff --git a/packages/ui/src/components/documents/document-editor.tsx b/packages/ui/src/components/documents/document-editor.tsx index 7718a38c..6c7b1b25 100644 --- a/packages/ui/src/components/documents/document-editor.tsx +++ b/packages/ui/src/components/documents/document-editor.tsx @@ -77,6 +77,7 @@ import { UnderlineMark, DatabaseNode, AutoJoiner, + HardBreakNode, } from '@colanode/ui/editor/extensions'; import { ToolbarMenu, ActionMenu } from '@colanode/ui/editor/menus'; @@ -179,6 +180,7 @@ export const DocumentEditor = ({ }), TextNode, ParagraphNode, + HardBreakNode, Heading1Node, Heading2Node, Heading3Node, diff --git a/packages/ui/src/components/messages/message-editor.tsx b/packages/ui/src/components/messages/message-editor.tsx index ab82120f..79d304ce 100644 --- a/packages/ui/src/components/messages/message-editor.tsx +++ b/packages/ui/src/components/messages/message-editor.tsx @@ -26,6 +26,7 @@ import { TrailingNode, UnderlineMark, MentionExtension, + HardBreakNode, } from '@colanode/ui/editor/extensions'; import { ToolbarMenu } from '@colanode/ui/editor/menus'; @@ -56,6 +57,7 @@ export const MessageEditor = forwardRef< MessageNode, TextNode, ParagraphNode, + HardBreakNode, CodeBlockNode, TabKeymapExtension, PlaceholderExtension.configure({ diff --git a/packages/ui/src/editor/extensions/hard-break.tsx b/packages/ui/src/editor/extensions/hard-break.tsx new file mode 100644 index 00000000..5f8ae90f --- /dev/null +++ b/packages/ui/src/editor/extensions/hard-break.tsx @@ -0,0 +1,3 @@ +import { HardBreak } from '@tiptap/extension-hard-break'; + +export const HardBreakNode = HardBreak; diff --git a/packages/ui/src/editor/extensions/index.tsx b/packages/ui/src/editor/extensions/index.tsx index 4919f7ef..a99c609d 100644 --- a/packages/ui/src/editor/extensions/index.tsx +++ b/packages/ui/src/editor/extensions/index.tsx @@ -18,6 +18,7 @@ import { DividerNode } from '@colanode/ui/editor/extensions/divider'; import { DropcursorExtension } from '@colanode/ui/editor/extensions/dropcursor'; import { FileNode } from '@colanode/ui/editor/extensions/file'; import { FolderNode } from '@colanode/ui/editor/extensions/folder'; +import { HardBreakNode } from '@colanode/ui/editor/extensions/hard-break'; import { Heading1Node } from '@colanode/ui/editor/extensions/heading1'; import { Heading2Node } from '@colanode/ui/editor/extensions/heading2'; import { Heading3Node } from '@colanode/ui/editor/extensions/heading3'; @@ -77,4 +78,5 @@ export { DatabaseNode, AutoJoiner, MentionExtension, + HardBreakNode, }; diff --git a/packages/ui/src/editor/renderers/hard-break.tsx b/packages/ui/src/editor/renderers/hard-break.tsx new file mode 100644 index 00000000..9bc6b54f --- /dev/null +++ b/packages/ui/src/editor/renderers/hard-break.tsx @@ -0,0 +1,10 @@ +import { JSONContent } from '@tiptap/core'; + +interface HardBreakRendererProps { + node: JSONContent; + keyPrefix: string | null; +} + +export const HardBreakRenderer = (_: HardBreakRendererProps) => { + return
; +}; diff --git a/packages/ui/src/editor/renderers/node.tsx b/packages/ui/src/editor/renderers/node.tsx index a4d11cff..0d722ddb 100644 --- a/packages/ui/src/editor/renderers/node.tsx +++ b/packages/ui/src/editor/renderers/node.tsx @@ -7,6 +7,7 @@ import { BulletListRenderer } from '@colanode/ui/editor/renderers/bullet-list'; import { CodeBlockRenderer } from '@colanode/ui/editor/renderers/code-block'; import { DocumentRenderer } from '@colanode/ui/editor/renderers/document'; import { FileRenderer } from '@colanode/ui/editor/renderers/file'; +import { HardBreakRenderer } from '@colanode/ui/editor/renderers/hard-break'; import { Heading1Renderer } from '@colanode/ui/editor/renderers/heading1'; import { Heading2Renderer } from '@colanode/ui/editor/renderers/heading2'; import { Heading3Renderer } from '@colanode/ui/editor/renderers/heading3'; @@ -76,6 +77,9 @@ export const NodeRenderer = ({ .with('mention', () => ( )) + .with('hardBreak', () => ( + + )) .otherwise(() => null)} );