1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00
Files
stackexchange-dnscontrol/web/app/components/Editor.vue

64 lines
1.4 KiB
Vue
Raw Normal View History

2016-08-22 18:31:50 -06:00
<template>
<pre class="editor" v-el:editor>{{text}}</pre>
</template>
<script>
import ace from 'brace'
import 'brace/mode/javascript';
import 'brace/ext/searchbox';
import 'brace/ext/language_tools';
export default {
props: {
text: {type: String, required: true},
onChange: {type: Function}
},
data: function(){ return{
editor: null,
debounced: null,
}
},
methods:{
change: function(e){
if (!this.debounced){
var self = this;
this.debounced = _.debounce(
function(){
if (self.onChange){
self.onChange(self.editor.getValue());
}
},500
)
}
this.debounced();
},
jump: function(r){
this.editor.find(r,{
backwards: false,
wrap: true,
caseSensitive: false,
wholeWord: false,
regExp: true,
});
}
},
ready: function(){
var el = this.$els.editor;
this.editor = ace.edit(el);
this.editor.getSession().setMode('ace/mode/javascript');
this.editor.getSession().on('change', this.change);
this.editor.setOptions({
enableBasicAutocompletion: true
});
}
}
</script>
<style>
.editor{
width: 100%;
height: 500px;
}
</style>