| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- 'use strict'
 
- import $ from 'jquery'
 
- import Vue from 'vue'
 
- import _ from 'lodash'
 
- import * as ace from 'brace'
 
- import 'brace/theme/tomorrow_night'
 
- import 'brace/mode/markdown'
 
- import 'brace-ext-modelist'
 
- let codeEditor = null
 
- // 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)
 
-     }
 
-   })
 
- }
 
- // Vue Code Block instance
 
- module.exports = (mde, mdeModalOpenState) => {
 
-   let modelist = ace.acequire('ace/ext/modelist')
 
-   let vueCodeBlock = new Vue({
 
-     el: '#modal-editor-codeblock',
 
-     data: {
 
-       modes: modelist.modesByName,
 
-       modeSelected: 'text',
 
-       initContent: ''
 
-     },
 
-     watch: {
 
-       modeSelected: (val, oldVal) => {
 
-         loadAceMode(val).done(() => {
 
-           ace.acequire('ace/mode/' + val)
 
-           codeEditor.getSession().setMode('ace/mode/' + val)
 
-         })
 
-       }
 
-     },
 
-     methods: {
 
-       open: (ev) => {
 
-         $('#modal-editor-codeblock').addClass('is-active')
 
-         _.delay(() => {
 
-           codeEditor = ace.edit('codeblock-editor')
 
-           codeEditor.setTheme('ace/theme/tomorrow_night')
 
-           codeEditor.getSession().setMode('ace/mode/' + vueCodeBlock.modeSelected)
 
-           codeEditor.setOption('fontSize', '14px')
 
-           codeEditor.setOption('hScrollBarAlwaysVisible', false)
 
-           codeEditor.setOption('wrap', true)
 
-           codeEditor.setValue(vueCodeBlock.initContent)
 
-           codeEditor.focus()
 
-           codeEditor.renderer.updateFull()
 
-         }, 300)
 
-       },
 
-       cancel: (ev) => {
 
-         mdeModalOpenState = false  // eslint-disable-line no-undef
 
-         $('#modal-editor-codeblock').removeClass('is-active')
 
-         vueCodeBlock.initContent = ''
 
-       },
 
-       insertCode: (ev) => {
 
-         if (mde.codemirror.doc.somethingSelected()) {
 
-           mde.codemirror.execCommand('singleSelection')
 
-         }
 
-         let codeBlockText = '\n```' + vueCodeBlock.modeSelected + '\n' + codeEditor.getValue() + '\n```\n'
 
-         mde.codemirror.doc.replaceSelection(codeBlockText)
 
-         vueCodeBlock.cancel()
 
-       }
 
-     }
 
-   })
 
-   return vueCodeBlock
 
- }
 
 
  |