Skip to content

Commit

Permalink
feat(editor): add article & comment editors; add sanitizer and noralizer
Browse files Browse the repository at this point in the history
  • Loading branch information
robertu7 committed Mar 17, 2023
1 parent 0d7284a commit e94252c
Show file tree
Hide file tree
Showing 28 changed files with 3,419 additions and 196 deletions.
1,478 changes: 1,439 additions & 39 deletions package-lock.json

Large diffs are not rendered by default.

68 changes: 46 additions & 22 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,52 @@
"benchmark": "node --loader ts-node/esm --experimental-specifier-resolution=node ./benchmark/index.ts"
},
"peerDependencies": {
"react": "^17.0.2",
"react-dom": "^17.0.2"
"react": ">=17.0.0",
"react-dom": ">=17.0.0"
},
"dependencies": {
"@tiptap/core": "^2.0.0-beta.220",
"@tiptap/extension-blockquote": "^2.0.0-beta.220",
"@tiptap/extension-bold": "^2.0.0-beta.220",
"@tiptap/extension-bullet-list": "^2.0.0-beta.220",
"@tiptap/extension-code": "^2.0.0-beta.220",
"@tiptap/extension-code-block": "^2.0.0-beta.220",
"@tiptap/extension-document": "^2.0.0-beta.220",
"@tiptap/extension-gapcursor": "^2.0.0-beta.220",
"@tiptap/extension-hard-break": "^2.0.0-beta.220",
"@tiptap/extension-heading": "^2.0.0-beta.220",
"@tiptap/extension-history": "^2.0.0-beta.220",
"@tiptap/extension-horizontal-rule": "^2.0.0-beta.220",
"@tiptap/extension-list-item": "^2.0.0-beta.220",
"@tiptap/extension-ordered-list": "^2.0.0-beta.220",
"@tiptap/extension-paragraph": "^2.0.0-beta.220",
"@tiptap/extension-placeholder": "^2.0.0-beta.220",
"@tiptap/extension-strike": "^2.0.0-beta.220",
"@tiptap/extension-text": "^2.0.0-beta.220",
"@tiptap/extension-underline": "^2.0.0-beta.220",
"@tiptap/pm": "^2.0.0-beta.220",
"@tiptap/react": "^2.0.0-beta.220",
"@tiptap/suggestion": "^2.0.0-beta.220",
"hast-util-to-html": "^8.0.4",
"linkifyjs": "^4.1.0",
"mdast-util-gfm-strikethrough": "^1.0.3",
"micromark-extension-gfm-strikethrough": "^1.0.4",
"micromark-util-combine-extensions": "^1.0.0",
"rehype-format": "^4.0.1",
"rehype-parse": "^8.0.4",
"rehype-raw": "^6.1.1",
"rehype-remark": "^9.1.2",
"rehype-rewrite": "^3.0.6",
"rehype-sanitize": "^5.0.1",
"rehype-stringify": "^9.0.3",
"remark-breaks": "^3.0.2",
"remark-directive": "^2.0.1",
"remark-directive-rehype": "^0.4.2",
"remark-parse": "^10.0.1",
"remark-rehype": "^10.1.0",
"remark-stringify": "^10.0.2",
"unified": "^10.1.2",
"zeed-dom": "^0.10.3"
},
"devDependencies": {
"@types/jest": "^29.4.0",
Expand Down Expand Up @@ -76,25 +120,5 @@
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
},
"dependencies": {
"hast-util-to-html": "^8.0.4",
"mdast-util-gfm-strikethrough": "^1.0.3",
"micromark-extension-gfm-strikethrough": "^1.0.4",
"micromark-util-combine-extensions": "^1.0.0",
"rehype-format": "^4.0.1",
"rehype-parse": "^8.0.4",
"rehype-raw": "^6.1.1",
"rehype-remark": "^9.1.2",
"rehype-rewrite": "^3.0.6",
"rehype-sanitize": "^5.0.1",
"rehype-stringify": "^9.0.3",
"remark-breaks": "^3.0.2",
"remark-directive": "^2.0.1",
"remark-directive-rehype": "^0.4.2",
"remark-parse": "^10.0.1",
"remark-rehype": "^10.1.0",
"remark-stringify": "^10.0.2",
"unified": "^10.1.2"
}
}
44 changes: 0 additions & 44 deletions src/converters/html2md.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/converters/index.ts

This file was deleted.

82 changes: 0 additions & 82 deletions src/converters/md2html.ts

This file was deleted.

88 changes: 86 additions & 2 deletions src/editors/Article.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,87 @@
export const ArticleEditor = () => {
return null
import React from 'react'
import Blockquote from '@tiptap/extension-blockquote'
import Bold from '@tiptap/extension-bold'
import BulletList from '@tiptap/extension-bullet-list'
import Code from '@tiptap/extension-code'
import CodeBlock from '@tiptap/extension-code-block'
import Document from '@tiptap/extension-document'
import Gapcursor from '@tiptap/extension-gapcursor'
import HardBreak from '@tiptap/extension-hard-break'
import Heading from '@tiptap/extension-heading'
import History from '@tiptap/extension-history'
import HorizontalRule from '@tiptap/extension-horizontal-rule'
import ListItem from '@tiptap/extension-list-item'
import OrderedList from '@tiptap/extension-ordered-list'
import Paragraph from '@tiptap/extension-paragraph'
import Placeholder from '@tiptap/extension-placeholder'
import Strike from '@tiptap/extension-strike'
import Text from '@tiptap/extension-text'
import { EditorContent, EditorOptions, useEditor } from '@tiptap/react'

import {
FigureAudio,
FigureEmbed,
FigureImage,
Link,
Mention,
MentionSuggestion,
} from './extensions'

type ArticleEditorProps = {
content: string
placeholder?: string
mentionSuggestion?: MentionSuggestion
} & Partial<EditorOptions>

export const makeArticleEditorExtensions = ({
placeholder,
mentionSuggestion,
}: Pick<ArticleEditorProps, 'placeholder' | 'mentionSuggestion'>) => {
return [
Document,
History,
Gapcursor,
Placeholder.configure({
placeholder,
}),
// Basic Formats
Text,
Paragraph,
Heading.configure({
levels: [2, 3],
}),
Bold,
Strike,
Code,
CodeBlock,
Blockquote,
HardBreak,
HorizontalRule,
OrderedList,
ListItem,
BulletList,
// Custom Formats
Link,
FigureImage,
FigureAudio,
FigureEmbed,
Mention.configure({
suggestion: mentionSuggestion,
}),
]
}

export const ArticleEditor: React.FC<ArticleEditorProps> = ({
content,
placeholder,
mentionSuggestion,
...editorProps
}) => {
const editor = useEditor({
extensions: makeArticleEditorExtensions({ placeholder, mentionSuggestion }),
content,
...editorProps,
})

return <EditorContent editor={editor} />
}
72 changes: 70 additions & 2 deletions src/editors/Comment.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,71 @@
export const CommentEditor = () => {
return null
import React from 'react'
import Blockquote from '@tiptap/extension-blockquote'
import Bold from '@tiptap/extension-bold'
import BulletList from '@tiptap/extension-bullet-list'
import Code from '@tiptap/extension-code'
import CodeBlock from '@tiptap/extension-code-block'
import Document from '@tiptap/extension-document'
import HardBreak from '@tiptap/extension-hard-break'
import History from '@tiptap/extension-history'
import HorizontalRule from '@tiptap/extension-horizontal-rule'
import ListItem from '@tiptap/extension-list-item'
import OrderedList from '@tiptap/extension-ordered-list'
import Paragraph from '@tiptap/extension-paragraph'
import Placeholder from '@tiptap/extension-placeholder'
import Strike from '@tiptap/extension-strike'
import Text from '@tiptap/extension-text'
import { EditorContent, EditorOptions, useEditor } from '@tiptap/react'

import { Link, Mention, MentionSuggestion } from './extensions'

type CommentEditorProps = {
content: string
placeholder?: string
mentionSuggestion?: MentionSuggestion
} & Partial<EditorOptions>

export const makeCommentEditorExtensions = ({
placeholder,
mentionSuggestion,
}: Pick<CommentEditorProps, 'placeholder' | 'mentionSuggestion'>) => {
return [
Document,
History,
Placeholder.configure({
placeholder,
}),
// Basic Formats
Text,
Paragraph,
Bold,
Strike,
Code,
CodeBlock,
Blockquote,
HardBreak,
HorizontalRule,
ListItem,
OrderedList,
BulletList,
// Custom Formats
Link,
Mention.configure({
suggestion: mentionSuggestion,
}),
]
}

export const CommentEditor: React.FC<CommentEditorProps> = ({
content,
placeholder,
mentionSuggestion,
...editorProps
}) => {
const editor = useEditor({
extensions: makeCommentEditorExtensions({ placeholder, mentionSuggestion }),
content,
...editorProps,
})

return <EditorContent editor={editor} />
}
Loading

0 comments on commit e94252c

Please sign in to comment.