Index: third_party/WebKit/Source/devtools/front_end/text_editor/CodeMirrorUtils.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/text_editor/CodeMirrorUtils.js b/third_party/WebKit/Source/devtools/front_end/text_editor/CodeMirrorUtils.js |
index b53c2eb49d1666c5605f759df211fc6ddb82dae3..cbff9b0e792fee1b26603862b5b810c50b4aa565 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/text_editor/CodeMirrorUtils.js |
+++ b/third_party/WebKit/Source/devtools/front_end/text_editor/CodeMirrorUtils.js |
@@ -27,70 +27,61 @@ |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
- |
-/** |
- * @constructor |
- * @extends {WebInspector.InplaceEditor} |
- */ |
-WebInspector.CodeMirrorUtils = function() |
-{ |
- WebInspector.InplaceEditor.call(this); |
-}; |
- |
/** |
- * @param {!WebInspector.TextRange} range |
- * @return {!{start: !CodeMirror.Pos, end: !CodeMirror.Pos}} |
+ * @unrestricted |
*/ |
-WebInspector.CodeMirrorUtils.toPos = function(range) |
-{ |
+WebInspector.CodeMirrorUtils = class extends WebInspector.InplaceEditor { |
+ constructor() { |
+ super(); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.TextRange} range |
+ * @return {!{start: !CodeMirror.Pos, end: !CodeMirror.Pos}} |
+ */ |
+ static toPos(range) { |
return { |
- start: new CodeMirror.Pos(range.startLine, range.startColumn), |
- end: new CodeMirror.Pos(range.endLine, range.endColumn) |
+ start: new CodeMirror.Pos(range.startLine, range.startColumn), |
+ end: new CodeMirror.Pos(range.endLine, range.endColumn) |
}; |
-}; |
- |
-/** |
- * @param {!CodeMirror.Pos} start |
- * @param {!CodeMirror.Pos} end |
- * @return {!WebInspector.TextRange} |
- */ |
-WebInspector.CodeMirrorUtils.toRange = function(start, end) |
-{ |
+ } |
+ |
+ /** |
+ * @param {!CodeMirror.Pos} start |
+ * @param {!CodeMirror.Pos} end |
+ * @return {!WebInspector.TextRange} |
+ */ |
+ static toRange(start, end) { |
return new WebInspector.TextRange(start.line, start.ch, end.line, end.ch); |
-}; |
+ } |
-/** |
- * @param {!CodeMirror.ChangeObject} changeObject |
- * @return {{oldRange: !WebInspector.TextRange, newRange: !WebInspector.TextRange}} |
- */ |
-WebInspector.CodeMirrorUtils.changeObjectToEditOperation = function(changeObject) |
-{ |
+ /** |
+ * @param {!CodeMirror.ChangeObject} changeObject |
+ * @return {{oldRange: !WebInspector.TextRange, newRange: !WebInspector.TextRange}} |
+ */ |
+ static changeObjectToEditOperation(changeObject) { |
var oldRange = WebInspector.CodeMirrorUtils.toRange(changeObject.from, changeObject.to); |
var newRange = oldRange.clone(); |
var linesAdded = changeObject.text.length; |
if (linesAdded === 0) { |
- newRange.endLine = newRange.startLine; |
- newRange.endColumn = newRange.startColumn; |
+ newRange.endLine = newRange.startLine; |
+ newRange.endColumn = newRange.startColumn; |
} else if (linesAdded === 1) { |
- newRange.endLine = newRange.startLine; |
- newRange.endColumn = newRange.startColumn + changeObject.text[0].length; |
+ newRange.endLine = newRange.startLine; |
+ newRange.endColumn = newRange.startColumn + changeObject.text[0].length; |
} else { |
- newRange.endLine = newRange.startLine + linesAdded - 1; |
- newRange.endColumn = changeObject.text[linesAdded - 1].length; |
+ newRange.endLine = newRange.startLine + linesAdded - 1; |
+ newRange.endColumn = changeObject.text[linesAdded - 1].length; |
} |
- return { |
- oldRange: oldRange, |
- newRange: newRange |
- }; |
-}; |
- |
-/** |
- * @param {!CodeMirror} codeMirror |
- * @param {number} linesCount |
- * @return {!Array.<string>} |
- */ |
-WebInspector.CodeMirrorUtils.pullLines = function(codeMirror, linesCount) |
-{ |
+ return {oldRange: oldRange, newRange: newRange}; |
+ } |
+ |
+ /** |
+ * @param {!CodeMirror} codeMirror |
+ * @param {number} linesCount |
+ * @return {!Array.<string>} |
+ */ |
+ static pullLines(codeMirror, linesCount) { |
var lines = []; |
codeMirror.eachLine(0, linesCount, onLineHandle); |
return lines; |
@@ -98,144 +89,144 @@ WebInspector.CodeMirrorUtils.pullLines = function(codeMirror, linesCount) |
/** |
* @param {!{text: string}} lineHandle |
*/ |
- function onLineHandle(lineHandle) |
- { |
- lines.push(lineHandle.text); |
+ function onLineHandle(lineHandle) { |
+ lines.push(lineHandle.text); |
} |
-}; |
+ } |
-WebInspector.CodeMirrorUtils.prototype = { |
- /** |
- * @override |
- * @return {string} |
- */ |
- editorContent: function(editingContext) { |
- return editingContext.codeMirror.getValue(); |
- }, |
+ /** |
+ * @param {!Element} element |
+ */ |
+ static appendThemeStyle(element) { |
+ if (WebInspector.themeSupport.hasTheme()) |
+ return; |
+ var backgroundColor = InspectorFrontendHost.getSelectionBackgroundColor(); |
+ var backgroundColorRule = |
+ backgroundColor ? '.CodeMirror .CodeMirror-selected { background-color: ' + backgroundColor + ';}' : ''; |
+ var foregroundColor = InspectorFrontendHost.getSelectionForegroundColor(); |
+ var foregroundColorRule = foregroundColor ? |
+ '.CodeMirror .CodeMirror-selectedtext:not(.CodeMirror-persist-highlight) { color: ' + foregroundColor + |
+ '!important;}' : |
+ ''; |
+ var style = createElement('style'); |
+ if (foregroundColorRule || backgroundColorRule) |
+ style.textContent = backgroundColorRule + foregroundColorRule; |
+ element.appendChild(style); |
+ } |
+ |
+ /** |
+ * @override |
+ * @return {string} |
+ */ |
+ editorContent(editingContext) { |
+ return editingContext.codeMirror.getValue(); |
+ } |
+ |
+ /** |
+ * @param {!Event} e |
+ */ |
+ _consumeCopy(e) { |
+ e.consume(); |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ setUpEditor(editingContext) { |
+ var element = editingContext.element; |
+ var config = editingContext.config; |
+ editingContext.cssLoadView = new WebInspector.CodeMirrorCSSLoadView(); |
+ editingContext.cssLoadView.show(element); |
+ element.focus(); |
+ element.addEventListener('copy', this._consumeCopy, false); |
+ var codeMirror = new window.CodeMirror(element, { |
+ mode: config.mode, |
+ lineWrapping: config.lineWrapping, |
+ lineWiseCopyCut: false, |
+ smartIndent: config.smartIndent, |
+ autofocus: true, |
+ theme: config.theme, |
+ value: config.initialValue |
+ }); |
+ codeMirror.getWrapperElement().classList.add('source-code'); |
+ codeMirror.on('cursorActivity', function(cm) { |
+ cm.display.cursorDiv.scrollIntoViewIfNeeded(false); |
+ }); |
+ editingContext.codeMirror = codeMirror; |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ closeEditor(editingContext) { |
+ editingContext.element.removeEventListener('copy', this._consumeCopy, false); |
+ editingContext.cssLoadView.detach(); |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ cancelEditing(editingContext) { |
+ editingContext.codeMirror.setValue(editingContext.oldText); |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ augmentEditingHandle(editingContext, handle) { |
+ function setWidth(editingContext, width) { |
+ var padding = 30; |
+ var codeMirror = editingContext.codeMirror; |
+ codeMirror.getWrapperElement().style.width = (width - codeMirror.getWrapperElement().offsetLeft - padding) + 'px'; |
+ codeMirror.refresh(); |
+ } |
- /** |
- * @param {!Event} e |
- */ |
- _consumeCopy: function(e) |
- { |
- e.consume(); |
- }, |
- |
- setUpEditor: function(editingContext) |
- { |
- var element = editingContext.element; |
- var config = editingContext.config; |
- editingContext.cssLoadView = new WebInspector.CodeMirrorCSSLoadView(); |
- editingContext.cssLoadView.show(element); |
- element.focus(); |
- element.addEventListener("copy", this._consumeCopy, false); |
- var codeMirror = new window.CodeMirror(element, { |
- mode: config.mode, |
- lineWrapping: config.lineWrapping, |
- lineWiseCopyCut: false, |
- smartIndent: config.smartIndent, |
- autofocus: true, |
- theme: config.theme, |
- value: config.initialValue |
- }); |
- codeMirror.getWrapperElement().classList.add("source-code"); |
- codeMirror.on("cursorActivity", function(cm) { |
- cm.display.cursorDiv.scrollIntoViewIfNeeded(false); |
- }); |
- editingContext.codeMirror = codeMirror; |
- }, |
- |
- closeEditor: function(editingContext) |
- { |
- editingContext.element.removeEventListener("copy", this._consumeCopy, false); |
- editingContext.cssLoadView.detach(); |
- }, |
- |
- cancelEditing: function(editingContext) |
- { |
- editingContext.codeMirror.setValue(editingContext.oldText); |
- }, |
- |
- augmentEditingHandle: function(editingContext, handle) |
- { |
- function setWidth(editingContext, width) |
- { |
- var padding = 30; |
- var codeMirror = editingContext.codeMirror; |
- codeMirror.getWrapperElement().style.width = (width - codeMirror.getWrapperElement().offsetLeft - padding) + "px"; |
- codeMirror.refresh(); |
- } |
- |
- handle.codeMirror = editingContext.codeMirror; |
- handle.setWidth = setWidth.bind(null, editingContext); |
- }, |
- |
- __proto__: WebInspector.InplaceEditor.prototype |
+ handle.codeMirror = editingContext.codeMirror; |
+ handle.setWidth = setWidth.bind(null, editingContext); |
+ } |
}; |
+ |
/** |
- * @constructor |
* @implements {WebInspector.TokenizerFactory} |
+ * @unrestricted |
*/ |
-WebInspector.CodeMirrorUtils.TokenizerFactory = function() { }; |
- |
-WebInspector.CodeMirrorUtils.TokenizerFactory.prototype = { |
- /** |
- * @override |
- * @param {string} mimeType |
- * @return {function(string, function(string, ?string, number, number))} |
- */ |
- createTokenizer: function(mimeType) |
- { |
- var mode = CodeMirror.getMode({indentUnit: 2}, mimeType); |
- var state = CodeMirror.startState(mode); |
- function tokenize(line, callback) |
- { |
- var stream = new CodeMirror.StringStream(line); |
- while (!stream.eol()) { |
- var style = mode.token(stream, state); |
- var value = stream.current(); |
- callback(value, style, stream.start, stream.start + value.length); |
- stream.start = stream.pos; |
- } |
- } |
- return tokenize; |
+WebInspector.CodeMirrorUtils.TokenizerFactory = class { |
+ /** |
+ * @override |
+ * @param {string} mimeType |
+ * @return {function(string, function(string, ?string, number, number))} |
+ */ |
+ createTokenizer(mimeType) { |
+ var mode = CodeMirror.getMode({indentUnit: 2}, mimeType); |
+ var state = CodeMirror.startState(mode); |
+ function tokenize(line, callback) { |
+ var stream = new CodeMirror.StringStream(line); |
+ while (!stream.eol()) { |
+ var style = mode.token(stream, state); |
+ var value = stream.current(); |
+ callback(value, style, stream.start, stream.start + value.length); |
+ stream.start = stream.pos; |
+ } |
} |
+ return tokenize; |
+ } |
}; |
/** |
- * This bogus view is needed to load/unload CodeMirror-related CSS on demand. |
- * |
- * @constructor |
- * @extends {WebInspector.VBox} |
+ * @unrestricted |
*/ |
-WebInspector.CodeMirrorCSSLoadView = function() |
-{ |
- WebInspector.VBox.call(this); |
- this.element.classList.add("hidden"); |
- this.registerRequiredCSS("cm/codemirror.css"); |
- this.registerRequiredCSS("text_editor/cmdevtools.css"); |
+WebInspector.CodeMirrorCSSLoadView = class extends WebInspector.VBox { |
+ /** |
+ * This bogus view is needed to load/unload CodeMirror-related CSS on demand. |
+ */ |
+ constructor() { |
+ super(); |
+ this.element.classList.add('hidden'); |
+ this.registerRequiredCSS('cm/codemirror.css'); |
+ this.registerRequiredCSS('text_editor/cmdevtools.css'); |
WebInspector.CodeMirrorUtils.appendThemeStyle(this.element); |
-}; |
- |
-WebInspector.CodeMirrorCSSLoadView.prototype = { |
- __proto__: WebInspector.VBox.prototype |
+ } |
}; |
-/** |
- * @param {!Element} element |
- */ |
-WebInspector.CodeMirrorUtils.appendThemeStyle = function(element) |
-{ |
- if (WebInspector.themeSupport.hasTheme()) |
- return; |
- var backgroundColor = InspectorFrontendHost.getSelectionBackgroundColor(); |
- var backgroundColorRule = backgroundColor ? ".CodeMirror .CodeMirror-selected { background-color: " + backgroundColor + ";}" : ""; |
- var foregroundColor = InspectorFrontendHost.getSelectionForegroundColor(); |
- var foregroundColorRule = foregroundColor ? ".CodeMirror .CodeMirror-selectedtext:not(.CodeMirror-persist-highlight) { color: " + foregroundColor + "!important;}" : ""; |
- var style = createElement("style"); |
- if (foregroundColorRule || backgroundColorRule) |
- style.textContent = backgroundColorRule + foregroundColorRule; |
- element.appendChild(style); |
-}; |