UNPKG

vue-cm

Version:

CodeMirror component for Vue.js

3 lines (2 loc) • 2.36 kB
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("codemirror")):"function"==typeof define&&define.amd?define(["codemirror"],e):r.VueCodeMirror=e(r.CodeMirror)}(this,function(r){"use strict";r=r&&r.hasOwnProperty("default")?r.default:r;var e=function r(e,t){if(e===t)return!0;var o,i=Array.isArray(e),n=Array.isArray(t);if(i&&n){if(e.length!=t.length)return!1;for(o=0;o<e.length;o++)if(!r(e[o],t[o]))return!1;return!0}if(i!=n)return!1;if(e&&t&&"object"==typeof e&&"object"==typeof t){var c=Object.keys(e);if(c.length!==Object.keys(t).length)return!1;var u=e instanceof Date,s=t instanceof Date;if(u&&s)return e.getTime()==t.getTime();if(u!=s)return!1;var f=e instanceof RegExp,d=t instanceof RegExp;if(f&&d)return e.toString()==t.toString();if(f!=d)return!1;for(o=0;o<c.length;o++)if(!Object.prototype.hasOwnProperty.call(t,c[o]))return!1;for(o=0;o<c.length;o++)if(!r(e[c[o]],t[c[o]]))return!1;return!0}return!1},t={name:"CodeMirror",model:{event:"change"},props:{value:String,options:Object,preserveScrollPosition:Boolean},methods:{focus:function(){this.codemirror&&this.codemirror.focus()},getCodeMirror:function(){return this.codemirror},setOptionIfChanged:function(r,t){var o=this.codemirror.getOption(r);e(o,t)||this.codemirror.setOption(r,t)}},watch:{value:function(r){if(this.codemirror&&r!==this.codemirror.getValue())if(this.preserveScrollPosition){var e=this.codemirror.getScrollInfo();this.codemirror.setValue(r),this.codemirror.scrollTo(e.left,e.top)}else this.codemirror.setValue(r)},options:{deep:!0,handler:function(r){var e=this;if(this.codemirror)for(var t in r)e.setOptionIfChanged(t,r[t])}}},mounted:function(){var e=this;this.codemirror=r.fromTextArea(this.$el,this.options),this.codemirror.on("change",function(r){return e.$emit("change",r.getValue())}),this.codemirror.on("focus",function(){return e.$emit("focus")}),this.codemirror.on("blur",function(){return e.$emit("blur")}),this.codemirror.on("scroll",function(r){return e.$emit("scroll",r.getScrollInfo())}),this.codemirror.on("cursorActivity",function(r){return e.$emit("cursorActivity",r)})},beforeDestroy:function(){this.codemirror&&this.codemirror.toTextArea()},render:function(r){return r("textarea",null,[this.value])}};return"undefined"!=typeof window&&window.Vue&&window.Vue.component(t.name,t),t}); //# sourceMappingURL=cm.min.js.map