diff --git a/package-lock.json b/package-lock.json index 147bbd0..23ad93c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -84,6 +84,7 @@ "remirror": "^1.0.77", "secp256k1": "^4.0.3", "serverless-http": "^3.0.1", + "turndown": "^7.1.1", "typescript": "^4.6.3", "web-vitals": "^2.1.4", "webln": "^0.3.0", diff --git a/package.json b/package.json index 82024c7..be89451 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,7 @@ "remirror": "^1.0.77", "secp256k1": "^4.0.3", "serverless-http": "^3.0.1", + "turndown": "^7.1.1", "typescript": "^4.6.3", "web-vitals": "^2.1.4", "webln": "^0.3.0", diff --git a/src/Components/Inputs/TextEditor/SaveModule.tsx b/src/Components/Inputs/TextEditor/SaveModule.tsx index 6ba3f11..76b910f 100644 --- a/src/Components/Inputs/TextEditor/SaveModule.tsx +++ b/src/Components/Inputs/TextEditor/SaveModule.tsx @@ -19,8 +19,6 @@ export default function SaveModule(props: Props) { const changeCallback = useDebouncedCallback(ctx => { const { state } = ctx; const md = getMarkdown(state); - console.log(md); - onChange(md); }, [], 500) diff --git a/src/Components/Inputs/TextEditor/ToolButton/VideoToolBtn.tsx b/src/Components/Inputs/TextEditor/ToolButton/VideoToolBtn.tsx index 96ba4e7..c91acce 100644 --- a/src/Components/Inputs/TextEditor/ToolButton/VideoToolBtn.tsx +++ b/src/Components/Inputs/TextEditor/ToolButton/VideoToolBtn.tsx @@ -26,10 +26,10 @@ export default function VideoToolButton({ classes }: Props) { const onInsertVideo = useCallback(({ payload: { src } }: typeof INSERT_VIDEO_ACTION) => { - commands.addYouTubeVideo({ - video: src, + commands.addYouTubeVideo({ video: src }); + // commands.insertText(``, { - }) + // }) }, [commands]) useReduxEffect(onInsertVideo, INSERT_VIDEO_ACTION.type) diff --git a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/ContentEditor.tsx b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/ContentEditor.tsx index cccbe5d..af35f4e 100644 --- a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/ContentEditor.tsx +++ b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/ContentEditor.tsx @@ -1,5 +1,6 @@ import 'remirror/styles/all.css'; import styles from './styles.module.scss' +import TurndownService from 'turndown' import javascript from 'refractor/lang/javascript'; import typescript from 'refractor/lang/typescript'; @@ -29,6 +30,9 @@ import TextEditorComponents from 'src/Components/Inputs/TextEditor'; import Toolbar from './Toolbar'; +const turndownService = new TurndownService() +turndownService.keep(['iframe']); + interface Props { placeholder?: string; initialContent?: string; @@ -53,6 +57,9 @@ export default function ContentEditor({ placeholder, initialContent, name }: Pro rel: 'noopener noreferrer' } }), + new MarkdownExtension({ + copyAsMarkdown: true, htmlToMarkdown: (html) => turndownService.turndown(html) + }), new BoldExtension(), // new StrikeExtension(), new UnderlineExtension(), @@ -71,7 +78,6 @@ export default function ContentEditor({ placeholder, initialContent, name }: Pro new IframeExtension(), // new TrailingNodeExtension(), // new TableExtension(), - new MarkdownExtension({ copyAsMarkdown: true, }), new NodeFormattingExtension(), /** * `HardBreakExtension` allows us to create a newline inside paragraphs. diff --git a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/Toolbar.tsx b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/Toolbar.tsx index 37f6de8..ef73d3d 100644 --- a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/Toolbar.tsx +++ b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/Toolbar.tsx @@ -22,7 +22,7 @@ export default function Toolbar() { - {/* */} + diff --git a/src/features/Posts/pages/PostDetailsPage/Components/PageContent/styles.module.css b/src/features/Posts/pages/PostDetailsPage/Components/PageContent/styles.module.css index 1afeebc..e594a0c 100644 --- a/src/features/Posts/pages/PostDetailsPage/Components/PageContent/styles.module.css +++ b/src/features/Posts/pages/PostDetailsPage/Components/PageContent/styles.module.css @@ -48,3 +48,9 @@ border-radius: 12px; color: whitesmoke; } + +.body iframe { + width: min(100%, 640px); + aspect-ratio: 16/9; + margin: 36px auto; +}