mirror of https://github.com/Requarks/wiki.git
4 changed files with 89 additions and 51 deletions
Unified View
Diff Options
-
2assets/js/app.js
-
61client/js/components/editor-codeblock.js
-
73client/js/components/editor.js
-
4views/modals/editor-codeblock.pug
2
assets/js/app.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,61 @@ |
|||||
|
|
||||
|
let codeEditor = ace.edit("codeblock-editor"); |
||||
|
codeEditor.setTheme("ace/theme/tomorrow_night"); |
||||
|
codeEditor.getSession().setMode("ace/mode/markdown"); |
||||
|
codeEditor.setOption('fontSize', '14px'); |
||||
|
codeEditor.setOption('hScrollBarAlwaysVisible', false); |
||||
|
codeEditor.setOption('wrap', true); |
||||
|
|
||||
|
let modelist = ace.require("ace/ext/modelist"); |
||||
|
|
||||
|
let vueCodeBlock = new Vue({ |
||||
|
el: '#modal-editor-codeblock', |
||||
|
data: { |
||||
|
modes: modelist.modesByName, |
||||
|
modeSelected: 'text' |
||||
|
}, |
||||
|
watch: { |
||||
|
modeSelected: (val, oldVal) => { |
||||
|
loadAceMode(val).done(() => { |
||||
|
ace.require("ace/mode/" + val); |
||||
|
codeEditor.getSession().setMode("ace/mode/" + val); |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
cancel: (ev) => { |
||||
|
mdeModalOpenState = false; |
||||
|
$('#modal-editor-codeblock').slideUp(); |
||||
|
}, |
||||
|
insertCode: (ev) => { |
||||
|
|
||||
|
if(mde.codemirror.doc.somethingSelected()) { |
||||
|
mde.codemirror.execCommand('singleSelection'); |
||||
|
} |
||||
|
let codeBlockText = '```' + vueCodeBlock.modeSelected + '\n' + codeEditor.getValue() + '\n```'; |
||||
|
|
||||
|
mde.codemirror.doc.replaceSelection(codeBlockText); |
||||
|
vueCodeBlock.cancel(); |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
// ACE - Mode Loader
|
||||
|
|
||||
|
let modelistLoaded = []; |
||||
|
let loadAceMode = (m) => { |
||||
|
return $.ajax({ |
||||
|
url: '/js/ace/mode-' + m + '.js', |
||||
|
dataType: "script", |
||||
|
cache: true, |
||||
|
beforeSend: () => { |
||||
|
if(_.includes(modelistLoaded, m)) { |
||||
|
return false; |
||||
|
} |
||||
|
}, |
||||
|
success: () => { |
||||
|
modelistLoaded.push(m); |
||||
|
} |
||||
|
}); |
||||
|
} |
xxxxxxxxxx