|
|
@ -14,15 +14,40 @@ import {EditorState} from "prosemirror-state" |
|
|
|
import {schema, defaultMarkdownParser, defaultMarkdownSerializer} from "prosemirror-markdown" |
|
|
|
import {schema, defaultMarkdownParser, defaultMarkdownSerializer} from "prosemirror-markdown" |
|
|
|
import {exampleSetup} from "prosemirror-example-setup" |
|
|
|
import {exampleSetup} from "prosemirror-example-setup" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let $title = document.querySelector('#title') |
|
|
|
|
|
|
|
let $content = document.querySelector('#content') |
|
|
|
|
|
|
|
|
|
|
|
class ProseMirrorView { |
|
|
|
class ProseMirrorView { |
|
|
|
constructor(target, content) { |
|
|
|
constructor(target, content) { |
|
|
|
this.view = new EditorView(target, { |
|
|
|
this.view = new EditorView(target, { |
|
|
|
state: EditorState.create({ |
|
|
|
state: EditorState.create({ |
|
|
|
doc: defaultMarkdownParser.parse(content), |
|
|
|
doc: function(content) { |
|
|
|
|
|
|
|
// console.log('loading '+window.draftKey)
|
|
|
|
|
|
|
|
let localDraft = localStorage.getItem(window.draftKey); |
|
|
|
|
|
|
|
if (localDraft != null) { |
|
|
|
|
|
|
|
content = localDraft |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (content.indexOf("# ") === 0) { |
|
|
|
|
|
|
|
let eol = content.indexOf("\n"); |
|
|
|
|
|
|
|
let title = content.substring("# ".length, eol); |
|
|
|
|
|
|
|
content = content.substring(eol+"\n\n".length); |
|
|
|
|
|
|
|
$title.value = title; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return defaultMarkdownParser.parse(content) |
|
|
|
|
|
|
|
}(content), |
|
|
|
plugins: exampleSetup({schema}) |
|
|
|
plugins: exampleSetup({schema}) |
|
|
|
}), |
|
|
|
}), |
|
|
|
dispatchTransaction(transaction) { |
|
|
|
dispatchTransaction(transaction) { |
|
|
|
document.querySelector('#content').value = defaultMarkdownSerializer.serialize(transaction.doc) |
|
|
|
// console.log('saving to '+window.draftKey)
|
|
|
|
|
|
|
|
$content.value = defaultMarkdownSerializer.serialize(transaction.doc) |
|
|
|
|
|
|
|
localStorage.setItem(window.draftKey, function() { |
|
|
|
|
|
|
|
let draft = ""; |
|
|
|
|
|
|
|
if ($title.value != null && $title.value !== "") { |
|
|
|
|
|
|
|
draft = "# "+$title.value+"\n\n" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
draft += $content.value |
|
|
|
|
|
|
|
return draft |
|
|
|
|
|
|
|
}()); |
|
|
|
let newState = this.state.apply(transaction) |
|
|
|
let newState = this.state.apply(transaction) |
|
|
|
this.updateState(newState) |
|
|
|
this.updateState(newState) |
|
|
|
} |
|
|
|
} |
|
|
@ -37,7 +62,7 @@ class ProseMirrorView { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
let place = document.querySelector("#editor") |
|
|
|
let place = document.querySelector("#editor") |
|
|
|
let view = new ProseMirrorView(place, document.querySelector('#content').value) |
|
|
|
let view = new ProseMirrorView(place, $content.value) |
|
|
|
|
|
|
|
|
|
|
|
// document.querySelectorAll("input[type=radio]").forEach(button => {
|
|
|
|
// document.querySelectorAll("input[type=radio]").forEach(button => {
|
|
|
|
// button.addEventListener("change", () => {
|
|
|
|
// button.addEventListener("change", () => {
|
|
|
|