diff --git a/src/assets/styles/prosemirror.scss b/src/assets/styles/prosemirror.scss new file mode 100644 index 00000000..3867cbde --- /dev/null +++ b/src/assets/styles/prosemirror.scss @@ -0,0 +1,53 @@ +.ProseMirror, .ProseMirror-static { + outline: 0; + border: 0; + font-size: 20px; + line-height: 1.5; + word-break: break-word; + font-family: '微软雅黑'; + + ::selection { + background-color: rgba(27, 110, 232, 0.3); + color: inherit; + } + + p + p { + margin-top: 5px; + } + + ul { + list-style-type: disc; + padding-inline-start: 20px; + + li { + list-style-type: disc; + } + } + + ol { + list-style-type: decimal; + padding-inline-start: 20px; + + li { + list-style-type: decimal; + } + } + + code { + background-color: #eee; + padding: 1px 3px; + margin: 0 1px; + border-radius: 2px; + font-family: inherit; + } + + blockquote { + overflow: hidden; + padding-right: 1.2em; + padding-left: 1.2em; + margin-left: 0; + margin-right: 0; + font-style: italic; + border-left: 5px solid #ccc; + } +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index fe8e7f8e..3814f646 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,6 +2,8 @@ import { createApp } from 'vue' import App from './App.vue' import store from './store' +import 'prosemirror-view/style/prosemirror.css' +import '@/assets/styles/prosemirror.scss' import '@/assets/styles/global.scss' import 'animate.css' diff --git a/src/mocks/index.ts b/src/mocks/index.ts index 306bb751..62741730 100644 --- a/src/mocks/index.ts +++ b/src/mocks/index.ts @@ -24,7 +24,7 @@ export const slides: Slide[] = [ }, opacity: 1, lock: false, - content: '
一段测试文字,字号固定为28px
', }, { id: 'xxx3', diff --git a/src/prosemirror/index.ts b/src/prosemirror/index.ts new file mode 100644 index 00000000..42a75bb9 --- /dev/null +++ b/src/prosemirror/index.ts @@ -0,0 +1,28 @@ +import { EditorState } from 'prosemirror-state' +import { EditorView } from 'prosemirror-view' +import { Schema, DOMParser } from 'prosemirror-model' + +import { buildPlugins } from './plugins/index' +import { schemaNodes, schemaMarks } from './schema/index' + +const schema = new Schema({ + nodes: schemaNodes, + marks: schemaMarks, +}) + +export const createDocument = (content: string) => { + const htmlString = `