Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2019-07-01 15:53:05 +0300
committerJulius Härtl <jus@bitgrid.net>2019-07-02 09:21:49 +0300
commitd85640fa6ffc6ffe277830580ab693e069ea088b (patch)
treeff4549a1e5bf691fccddb995a442d9863008bf46 /src/EditorFactory.js
parent9977abd62c377a4e65c9e5ee83a629c5f4cc82a1 (diff)
Allow plain text editing of files
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'src/EditorFactory.js')
-rw-r--r--src/EditorFactory.js31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/EditorFactory.js b/src/EditorFactory.js
index 3bd7b27fe..2026a56c8 100644
--- a/src/EditorFactory.js
+++ b/src/EditorFactory.js
@@ -19,7 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-import { Editor } from 'tiptap'
+import { Editor, Text } from 'tiptap'
import {
HardBreak,
Heading,
@@ -30,15 +30,18 @@ import {
ListItem,
Blockquote,
CodeBlock,
+ CodeBlockHighlight,
HorizontalRule,
History
} from 'tiptap-extensions'
import { Strong, Italic, Strike } from './marks'
-import { Image } from './nodes'
+import { Image, PlainTextDocument } from './nodes'
import MarkdownIt from 'markdown-it'
import { MarkdownSerializer, defaultMarkdownSerializer } from 'prosemirror-markdown'
-
+import cpp from 'highlight.js/lib/languages/cpp'
+import javascript from 'highlight.js/lib/languages/javascript'
+import css from 'highlight.js/lib/languages/css'
const createEditor = ({ content, onUpdate, extensions, enableRichEditing }) => {
let richEditingExtensions = []
if (enableRichEditing) {
@@ -48,6 +51,7 @@ const createEditor = ({ content, onUpdate, extensions, enableRichEditing }) => {
new Strong(),
new Italic(),
new Strike(),
+ new HardBreak(),
new HorizontalRule(),
new BulletList(),
new OrderedList(),
@@ -57,16 +61,26 @@ const createEditor = ({ content, onUpdate, extensions, enableRichEditing }) => {
new Link(),
new Image()
]
+ } else {
+ richEditingExtensions = [
+ new PlainTextDocument(),
+ new Text(),
+ new CodeBlockHighlight({
+ languages: {
+ cpp, css, javascript
+ }
+ })
+ ]
}
extensions = extensions || []
return new Editor({
content: content,
onUpdate: onUpdate,
extensions: [
- new HardBreak(),
...richEditingExtensions,
new History()
- ].concat(extensions)
+ ].concat(extensions),
+ useBuiltInExtensions: enableRichEditing
})
}
@@ -95,5 +109,10 @@ const createMarkdownSerializer = (_nodes, _marks) => {
)
}
+const serializePlainText = (tiptap) => {
+ const doc = tiptap.getHTML().replace(/<[^>]*>?/gm, '')
+ return new DOMParser().parseFromString(doc, 'text/html').body.textContent
+}
+
export default createEditor
-export { markdownit, createEditor, createMarkdownSerializer }
+export { markdownit, createEditor, createMarkdownSerializer, serializePlainText }