|
|
@ -62,9 +62,10 @@
|
|
|
|
.editor-code-main
|
|
|
|
.editor-code-main
|
|
|
|
.editor-code-editor
|
|
|
|
.editor-code-editor
|
|
|
|
.editor-code-editor-title Editor
|
|
|
|
.editor-code-editor-title Editor
|
|
|
|
codemirror(ref='cm', v-model='code', :options='cmOptions', @ready="onCmReady")
|
|
|
|
codemirror(ref='cm', v-model='code', :options='cmOptions', @ready='onCmReady', @input='onCmInput')
|
|
|
|
.editor-code-preview
|
|
|
|
.editor-code-preview
|
|
|
|
.editor-code-preview-title Preview
|
|
|
|
.editor-code-preview-title Preview
|
|
|
|
|
|
|
|
.editor-code-preview-content(v-html='previewHTML')
|
|
|
|
v-speed-dial(v-model='fabInsertMenu', :open-on-hover='true', direction='top', transition='slide-y-reverse-transition', :fixed='true', :right='!isMobile', :left='isMobile', :bottom='true')
|
|
|
|
v-speed-dial(v-model='fabInsertMenu', :open-on-hover='true', direction='top', transition='slide-y-reverse-transition', :fixed='true', :right='!isMobile', :left='isMobile', :bottom='true')
|
|
|
|
v-btn(color='blue', fab, dark, v-model='fabInsertMenu', slot='activator')
|
|
|
|
v-btn(color='blue', fab, dark, v-model='fabInsertMenu', slot='activator')
|
|
|
|
v-icon add_circle
|
|
|
|
v-icon add_circle
|
|
|
@ -87,6 +88,8 @@
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
<script>
|
|
|
|
|
|
|
|
import _ from 'lodash'
|
|
|
|
|
|
|
|
|
|
|
|
import { codemirror } from 'vue-codemirror'
|
|
|
|
import { codemirror } from 'vue-codemirror'
|
|
|
|
import 'codemirror/lib/codemirror.css'
|
|
|
|
import 'codemirror/lib/codemirror.css'
|
|
|
|
|
|
|
|
|
|
|
@ -106,6 +109,16 @@ import 'codemirror/addon/search/matchesonscrollbar.js'
|
|
|
|
import 'codemirror/addon/search/searchcursor.js'
|
|
|
|
import 'codemirror/addon/search/searchcursor.js'
|
|
|
|
import 'codemirror/addon/search/match-highlighter.js'
|
|
|
|
import 'codemirror/addon/search/match-highlighter.js'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Markdown-it
|
|
|
|
|
|
|
|
import MarkdownIt from 'markdown-it'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const md = new MarkdownIt({
|
|
|
|
|
|
|
|
html: true,
|
|
|
|
|
|
|
|
breaks: true,
|
|
|
|
|
|
|
|
linkify: true,
|
|
|
|
|
|
|
|
typography: true
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
export default {
|
|
|
|
components: {
|
|
|
|
components: {
|
|
|
|
codemirror
|
|
|
|
codemirror
|
|
|
@ -127,7 +140,8 @@ export default {
|
|
|
|
annotateScrollbar: true
|
|
|
|
annotateScrollbar: true
|
|
|
|
},
|
|
|
|
},
|
|
|
|
viewportMargin: 50
|
|
|
|
viewportMargin: 50
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
previewHTML: ''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
computed: {
|
|
|
@ -156,7 +170,11 @@ export default {
|
|
|
|
self.$parent.save()
|
|
|
|
self.$parent.save()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
this.onCmInput(this.code)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
onCmInput: _.debounce(function (newContent) {
|
|
|
|
|
|
|
|
this.previewHTML = md.render(newContent)
|
|
|
|
|
|
|
|
}, 500)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
</script>
|