UNPKG

@appscode/ui-builder

Version:
6 lines 2.31 kB
"use strict"; /*! * nano-assign v1.0.1 * (c) 2018-present egoist <0x142857@gmail.com> * Released under the MIT License. */var i=function(i){for(var t=arguments,e=1;e<arguments.length;e++)for(var o in arguments[e])i[o]=t[e][o];return i},t={name:"MonacoEditor",props:{original:String,value:{type:String,required:!0},theme:{type:String,default:"vs"},language:String,options:Object,amdRequire:{type:Function},diffEditor:{type:Boolean,default:!1}},model:{event:"change"},watch:{options:{deep:!0,handler:function(i){this.editor&&this.getModifiedEditor().updateOptions(i)}},value:function(i){if(this.editor){var t=this.getModifiedEditor();i!==t.getValue()&&t.setValue(i)}},original:function(i){if(this.editor&&this.diffEditor){var t=this.getOriginalEditor();i!==t.getValue()&&t.setValue(i)}},language:function(i){if(this.editor){var t=this.getModifiedEditor();this.monaco.editor.setModelLanguage(t.getModel(),i)}},theme:function(i){this.editor&&this.monaco.editor.setTheme(i)}},mounted:function(){var i=this;if(this.amdRequire)this.amdRequire(["vs/editor/editor.main"],(function(){i.monaco=window.monaco,i.initMonaco(window.monaco)}));else{var t=require("monaco-editor");this.monaco=t,this.initMonaco(t)}},beforeDestroy:function(){this.editor&&this.editor.dispose()},methods:{initMonaco:function(t){var e=this;this.$emit("editorWillMount",this.monaco);var o=i({value:this.value,theme:this.theme,language:this.language},this.options);if(this.diffEditor){this.editor=t.editor.createDiffEditor(this.$el,o);var n=t.editor.createModel(this.original,this.language),r=t.editor.createModel(this.value,this.language);this.editor.setModel({original:n,modified:r})}else this.editor=t.editor.create(this.$el,o);var d=this.getModifiedEditor();d.onDidChangeModelContent((function(i){var t=d.getValue();e.value!==t&&e.$emit("change",t,i)})),this.$emit("editorDidMount",this.editor)},getMonaco:function(){return this.editor},getEditor:function(){return this.editor},getModifiedEditor:function(){return this.diffEditor?this.editor.getModifiedEditor():this.editor},getOriginalEditor:function(){return this.diffEditor?this.editor.getOriginalEditor():this.editor},focus:function(){this.editor.focus()}},render:function(i){return i("div")}};"undefined"!=typeof window&&window.Vue&&window.Vue.component(t.name,t),exports.default=t;