| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| Vvveb.CodeEditor = { |
| |
| isActive: false, |
| oldValue: '', |
| doc:false, |
| codemirror:false, |
| |
| init: function(doc) { |
|
|
| if (this.codemirror == false) { |
| this.codemirror = CodeMirror.fromTextArea(document.querySelector("#vvveb-code-editor textarea"), { |
| mode: 'text/html', |
| lineNumbers: true, |
| autofocus: true, |
| lineWrapping: true, |
| |
| theme: 'material' |
| }); |
| |
| this.isActive = true; |
| this.codemirror.getDoc().on("change", function (e, v) { |
| if (v.origin != "setValue") { |
| delay(() => { |
| Vvveb.Builder.setHtml(e.getValue()); |
| |
| document.querySelectorAll("#top-panel .save-btn").forEach(e => e.removeAttribute("disabled")); |
| }, 1000); |
| } |
| }); |
| } |
| |
| |
| |
| Vvveb.Builder.frameBody.addEventListener("vvveb.undo.add", () => Vvveb.CodeEditor.setValue()); |
| Vvveb.Builder.frameBody.addEventListener("vvveb.undo.restore", () => Vvveb.CodeEditor.setValue()); |
| |
| |
| Vvveb.Builder.documentFrame.addEventListener("load", () => Vvveb.CodeEditor.setValue()); |
|
|
| this.isActive = true; |
| this.setValue(); |
|
|
| return this.codemirror; |
| }, |
|
|
| setValue: function(value) { |
| if (this.isActive == true) { |
| let scrollInfo = this.codemirror.getScrollInfo(); |
| this.codemirror.setValue(Vvveb.Builder.getHtml()); |
| this.codemirror.scrollTo(scrollInfo.left, scrollInfo.top); |
| let self = this; |
| setTimeout(function() { |
| self.codemirror.refresh(); |
| }, 300); |
| } |
| }, |
|
|
| destroy: function(element) { |
| |
| |
| |
| |
| |
| this.isActive = false; |
| }, |
|
|
| toggle: function() { |
| if (this.isActive != true) { |
| this.isActive = true; |
| return this.init(); |
| } |
| this.isActive = false; |
| this.destroy(); |
| } |
| } |
|
|
|
|
| |
| Vvveb.ModalCodeEditor.init = function (modal = false, editor = false) { |
| this.modal = document.getElementById("codeEditorModal"); |
| this.editor = CodeMirror.fromTextArea(document.querySelector("#codeEditorModal textarea"), { |
| mode: 'text/html', |
| lineNumbers: true, |
| autofocus: true, |
| lineWrapping: true, |
| |
| theme: 'material' |
| }); |
| |
| let self = this; |
| this.modal.querySelector('.save-btn').addEventListener("click", function(event) { |
| window.dispatchEvent(new CustomEvent("vvveb.ModalCodeEditor.save", {detail: self.getValue()})); |
| self.hide(); |
| return false; |
| }); |
| } |
|
|
| Vvveb.ModalCodeEditor.setValue = function (value) { |
| let scrollInfo = this.editor.getScrollInfo(); |
| this.editor.setValue(value); |
| this.editor.scrollTo(scrollInfo.left, scrollInfo.top); |
| let self = this; |
| setTimeout(function() { |
| self.editor.refresh(); |
| }, 300); |
| }; |
|
|
| Vvveb.ModalCodeEditor.getValue = function (value) { |
| return this.editor.getValue(); |
| }; |
|
|
|
|
| Vvveb.CssEditor = { |
| |
| oldValue: '', |
| doc:false, |
| textarea:false, |
| editor:false, |
| |
| init: function(doc) { |
| this.textarea = document.getElementById("css-editor"); |
| this.editor = CodeMirror.fromTextArea(this.textarea, { |
| mode: 'text/css', |
| lineNumbers: true, |
| autofocus: true, |
| lineWrapping: true, |
| |
| theme: 'material' |
| }); |
| |
| let self = this; |
| |
| document.querySelectorAll('[href="#css-tab"],[href="#configuration"]').forEach( t => t.addEventListener("click", e => { |
| self.setValue(Vvveb.StyleManager.getCss()); |
| })); |
| |
| this.editor.getDoc().on("change", function (e, v) { |
| if (v.origin != "setValue") |
| delay(() => Vvveb.StyleManager.setCss(e.getValue()), 1000); |
| }); |
| }, |
|
|
| getValue: function() { |
| return this.editor.getValue(); |
| }, |
| |
| setValue: function(value) { |
| let scrollInfo = this.editor.getScrollInfo(); |
| this.editor.setValue(value); |
| this.editor.scrollTo(scrollInfo.left, scrollInfo.top); |
| let self = this; |
| setTimeout(function() { |
| self.editor.refresh(); |
| }, 300); |
| |
| }, |
|
|
| destroy: function(element) { |
| } |
| } |
|
|