Index: third_party/WebKit/Source/devtools/front_end/common/CSSShadowModel.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/common/CSSShadowModel.js b/third_party/WebKit/Source/devtools/front_end/common/CSSShadowModel.js |
index e6dbc3e1e3046ffc3185dee6b752c6f0d8e6b8c0..40cfdcd3fcf5218f97b46e6a45bf4955aa525344 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/common/CSSShadowModel.js |
+++ b/third_party/WebKit/Source/devtools/front_end/common/CSSShadowModel.js |
@@ -1,274 +1,117 @@ |
// Copyright 2016 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
- |
/** |
- * @constructor |
- * @param {boolean} isBoxShadow |
+ * @unrestricted |
*/ |
-WebInspector.CSSShadowModel = function(isBoxShadow) |
-{ |
+WebInspector.CSSShadowModel = class { |
+ /** |
+ * @param {boolean} isBoxShadow |
+ */ |
+ constructor(isBoxShadow) { |
this._isBoxShadow = isBoxShadow; |
this._inset = false; |
this._offsetX = WebInspector.CSSLength.zero(); |
this._offsetY = WebInspector.CSSLength.zero(); |
this._blurRadius = WebInspector.CSSLength.zero(); |
this._spreadRadius = WebInspector.CSSLength.zero(); |
- this._color = /** @type {!WebInspector.Color} */ (WebInspector.Color.parse("black")); |
+ this._color = /** @type {!WebInspector.Color} */ (WebInspector.Color.parse('black')); |
this._format = [WebInspector.CSSShadowModel._Part.OffsetX, WebInspector.CSSShadowModel._Part.OffsetY]; |
-}; |
- |
-/** |
- * @enum {string} |
- */ |
-WebInspector.CSSShadowModel._Part = { |
- Inset: "I", |
- OffsetX: "X", |
- OffsetY: "Y", |
- BlurRadius: "B", |
- SpreadRadius: "S", |
- Color: "C" |
-}; |
+ } |
-/** |
- * @param {string} text |
- * @return {!Array<!WebInspector.CSSShadowModel>} |
- */ |
-WebInspector.CSSShadowModel.parseTextShadow = function(text) |
-{ |
+ /** |
+ * @param {string} text |
+ * @return {!Array<!WebInspector.CSSShadowModel>} |
+ */ |
+ static parseTextShadow(text) { |
return WebInspector.CSSShadowModel._parseShadow(text, false); |
-}; |
+ } |
-/** |
- * @param {string} text |
- * @return {!Array<!WebInspector.CSSShadowModel>} |
- */ |
-WebInspector.CSSShadowModel.parseBoxShadow = function(text) |
-{ |
+ /** |
+ * @param {string} text |
+ * @return {!Array<!WebInspector.CSSShadowModel>} |
+ */ |
+ static parseBoxShadow(text) { |
return WebInspector.CSSShadowModel._parseShadow(text, true); |
-}; |
- |
-WebInspector.CSSShadowModel.prototype = { |
- /** |
- * @param {boolean} inset |
- */ |
- setInset: function(inset) |
- { |
- this._inset = inset; |
- if (this._format.indexOf(WebInspector.CSSShadowModel._Part.Inset) === -1) |
- this._format.unshift(WebInspector.CSSShadowModel._Part.Inset); |
- }, |
- |
- /** |
- * @param {!WebInspector.CSSLength} offsetX |
- */ |
- setOffsetX: function(offsetX) |
- { |
- this._offsetX = offsetX; |
- }, |
- |
- /** |
- * @param {!WebInspector.CSSLength} offsetY |
- */ |
- setOffsetY: function(offsetY) |
- { |
- this._offsetY = offsetY; |
- }, |
- |
- /** |
- * @param {!WebInspector.CSSLength} blurRadius |
- */ |
- setBlurRadius: function(blurRadius) |
- { |
- this._blurRadius = blurRadius; |
- if (this._format.indexOf(WebInspector.CSSShadowModel._Part.BlurRadius) === -1) { |
- var yIndex = this._format.indexOf(WebInspector.CSSShadowModel._Part.OffsetY); |
- this._format.splice(yIndex + 1, 0, WebInspector.CSSShadowModel._Part.BlurRadius); |
- } |
- }, |
- |
- /** |
- * @param {!WebInspector.CSSLength} spreadRadius |
- */ |
- setSpreadRadius: function(spreadRadius) |
- { |
- this._spreadRadius = spreadRadius; |
- if (this._format.indexOf(WebInspector.CSSShadowModel._Part.SpreadRadius) === -1) { |
- this.setBlurRadius(this._blurRadius); |
- var blurIndex = this._format.indexOf(WebInspector.CSSShadowModel._Part.BlurRadius); |
- this._format.splice(blurIndex + 1, 0, WebInspector.CSSShadowModel._Part.SpreadRadius); |
- } |
- }, |
- |
- /** |
- * @param {!WebInspector.Color} color |
- */ |
- setColor: function(color) |
- { |
- this._color = color; |
- if (this._format.indexOf(WebInspector.CSSShadowModel._Part.Color) === -1) |
- this._format.push(WebInspector.CSSShadowModel._Part.Color); |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- isBoxShadow: function() |
- { |
- return this._isBoxShadow; |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- inset: function() |
- { |
- return this._inset; |
- }, |
- |
- /** |
- * @return {!WebInspector.CSSLength} |
- */ |
- offsetX: function() |
- { |
- return this._offsetX; |
- }, |
- |
- /** |
- * @return {!WebInspector.CSSLength} |
- */ |
- offsetY: function() |
- { |
- return this._offsetY; |
- }, |
- |
- /** |
- * @return {!WebInspector.CSSLength} |
- */ |
- blurRadius: function() |
- { |
- return this._blurRadius; |
- }, |
- |
- /** |
- * @return {!WebInspector.CSSLength} |
- */ |
- spreadRadius: function() |
- { |
- return this._spreadRadius; |
- }, |
- |
- /** |
- * @return {!WebInspector.Color} |
- */ |
- color: function() |
- { |
- return this._color; |
- }, |
- |
- /** |
- * @return {string} |
- */ |
- asCSSText: function() |
- { |
- var parts = []; |
- for (var i = 0; i < this._format.length; i++) { |
- var part = this._format[i]; |
- if (part === WebInspector.CSSShadowModel._Part.Inset && this._inset) |
- parts.push("inset"); |
- else if (part === WebInspector.CSSShadowModel._Part.OffsetX) |
- parts.push(this._offsetX.asCSSText()); |
- else if (part === WebInspector.CSSShadowModel._Part.OffsetY) |
- parts.push(this._offsetY.asCSSText()); |
- else if (part === WebInspector.CSSShadowModel._Part.BlurRadius) |
- parts.push(this._blurRadius.asCSSText()); |
- else if (part === WebInspector.CSSShadowModel._Part.SpreadRadius) |
- parts.push(this._spreadRadius.asCSSText()); |
- else if (part === WebInspector.CSSShadowModel._Part.Color) |
- parts.push(this._color.asString(this._color.format())); |
- } |
- return parts.join(" "); |
- } |
-}; |
+ } |
-/** |
- * @param {string} text |
- * @param {boolean} isBoxShadow |
- * @return {!Array<!WebInspector.CSSShadowModel>} |
- */ |
-WebInspector.CSSShadowModel._parseShadow = function(text, isBoxShadow) |
-{ |
+ /** |
+ * @param {string} text |
+ * @param {boolean} isBoxShadow |
+ * @return {!Array<!WebInspector.CSSShadowModel>} |
+ */ |
+ static _parseShadow(text, isBoxShadow) { |
var shadowTexts = []; |
// Split by commas that aren't inside of color values to get the individual shadow values. |
var splits = WebInspector.TextUtils.splitStringByRegexes(text, [WebInspector.Color.Regex, /,/g]); |
var currentIndex = 0; |
for (var i = 0; i < splits.length; i++) { |
- if (splits[i].regexIndex === 1) { |
- var comma = splits[i]; |
- shadowTexts.push(text.substring(currentIndex, comma.position)); |
- currentIndex = comma.position + 1; |
- } |
+ if (splits[i].regexIndex === 1) { |
+ var comma = splits[i]; |
+ shadowTexts.push(text.substring(currentIndex, comma.position)); |
+ currentIndex = comma.position + 1; |
+ } |
} |
shadowTexts.push(text.substring(currentIndex, text.length)); |
var shadows = []; |
for (var i = 0; i < shadowTexts.length; i++) { |
- var shadow = new WebInspector.CSSShadowModel(isBoxShadow); |
- shadow._format = []; |
- var nextPartAllowed = true; |
- var regexes = [/inset/gi, WebInspector.Color.Regex, WebInspector.CSSLength.Regex]; |
- var results = WebInspector.TextUtils.splitStringByRegexes(shadowTexts[i], regexes); |
- for (var j = 0; j < results.length; j++) { |
- var result = results[j]; |
- if (result.regexIndex === -1) { |
- // Don't allow anything other than inset, color, length values, and whitespace. |
- if (/\S/.test(result.value)) |
- return []; |
- // All parts must be separated by whitespace. |
- nextPartAllowed = true; |
- } else { |
- if (!nextPartAllowed) |
- return []; |
- nextPartAllowed = false; |
+ var shadow = new WebInspector.CSSShadowModel(isBoxShadow); |
+ shadow._format = []; |
+ var nextPartAllowed = true; |
+ var regexes = [/inset/gi, WebInspector.Color.Regex, WebInspector.CSSLength.Regex]; |
+ var results = WebInspector.TextUtils.splitStringByRegexes(shadowTexts[i], regexes); |
+ for (var j = 0; j < results.length; j++) { |
+ var result = results[j]; |
+ if (result.regexIndex === -1) { |
+ // Don't allow anything other than inset, color, length values, and whitespace. |
+ if (/\S/.test(result.value)) |
+ return []; |
+ // All parts must be separated by whitespace. |
+ nextPartAllowed = true; |
+ } else { |
+ if (!nextPartAllowed) |
+ return []; |
+ nextPartAllowed = false; |
- if (result.regexIndex === 0) { |
- shadow._inset = true; |
- shadow._format.push(WebInspector.CSSShadowModel._Part.Inset); |
- } else if (result.regexIndex === 1) { |
- var color = WebInspector.Color.parse(result.value); |
- if (!color) |
- return []; |
- shadow._color = color; |
- shadow._format.push(WebInspector.CSSShadowModel._Part.Color); |
- } else if (result.regexIndex === 2) { |
- var length = WebInspector.CSSLength.parse(result.value); |
- if (!length) |
- return []; |
- var previousPart = shadow._format.length > 0 ? shadow._format[shadow._format.length - 1] : ""; |
- if (previousPart === WebInspector.CSSShadowModel._Part.OffsetX) { |
- shadow._offsetY = length; |
- shadow._format.push(WebInspector.CSSShadowModel._Part.OffsetY); |
- } else if (previousPart === WebInspector.CSSShadowModel._Part.OffsetY) { |
- shadow._blurRadius = length; |
- shadow._format.push(WebInspector.CSSShadowModel._Part.BlurRadius); |
- } else if (previousPart === WebInspector.CSSShadowModel._Part.BlurRadius) { |
- shadow._spreadRadius = length; |
- shadow._format.push(WebInspector.CSSShadowModel._Part.SpreadRadius); |
- } else { |
- shadow._offsetX = length; |
- shadow._format.push(WebInspector.CSSShadowModel._Part.OffsetX); |
- } |
- } |
+ if (result.regexIndex === 0) { |
+ shadow._inset = true; |
+ shadow._format.push(WebInspector.CSSShadowModel._Part.Inset); |
+ } else if (result.regexIndex === 1) { |
+ var color = WebInspector.Color.parse(result.value); |
+ if (!color) |
+ return []; |
+ shadow._color = color; |
+ shadow._format.push(WebInspector.CSSShadowModel._Part.Color); |
+ } else if (result.regexIndex === 2) { |
+ var length = WebInspector.CSSLength.parse(result.value); |
+ if (!length) |
+ return []; |
+ var previousPart = shadow._format.length > 0 ? shadow._format[shadow._format.length - 1] : ''; |
+ if (previousPart === WebInspector.CSSShadowModel._Part.OffsetX) { |
+ shadow._offsetY = length; |
+ shadow._format.push(WebInspector.CSSShadowModel._Part.OffsetY); |
+ } else if (previousPart === WebInspector.CSSShadowModel._Part.OffsetY) { |
+ shadow._blurRadius = length; |
+ shadow._format.push(WebInspector.CSSShadowModel._Part.BlurRadius); |
+ } else if (previousPart === WebInspector.CSSShadowModel._Part.BlurRadius) { |
+ shadow._spreadRadius = length; |
+ shadow._format.push(WebInspector.CSSShadowModel._Part.SpreadRadius); |
+ } else { |
+ shadow._offsetX = length; |
+ shadow._format.push(WebInspector.CSSShadowModel._Part.OffsetX); |
} |
+ } |
} |
- if (invalidCount(WebInspector.CSSShadowModel._Part.OffsetX, 1, 1) |
- || invalidCount(WebInspector.CSSShadowModel._Part.OffsetY, 1, 1) |
- || invalidCount(WebInspector.CSSShadowModel._Part.Color, 0, 1) |
- || invalidCount(WebInspector.CSSShadowModel._Part.BlurRadius, 0, 1) |
- || invalidCount(WebInspector.CSSShadowModel._Part.Inset, 0, isBoxShadow ? 1 : 0) |
- || invalidCount(WebInspector.CSSShadowModel._Part.SpreadRadius, 0, isBoxShadow ? 1 : 0)) |
- return []; |
- shadows.push(shadow); |
+ } |
+ if (invalidCount(WebInspector.CSSShadowModel._Part.OffsetX, 1, 1) || |
+ invalidCount(WebInspector.CSSShadowModel._Part.OffsetY, 1, 1) || |
+ invalidCount(WebInspector.CSSShadowModel._Part.Color, 0, 1) || |
+ invalidCount(WebInspector.CSSShadowModel._Part.BlurRadius, 0, 1) || |
+ invalidCount(WebInspector.CSSShadowModel._Part.Inset, 0, isBoxShadow ? 1 : 0) || |
+ invalidCount(WebInspector.CSSShadowModel._Part.SpreadRadius, 0, isBoxShadow ? 1 : 0)) |
+ return []; |
+ shadows.push(shadow); |
} |
return shadows; |
@@ -278,66 +121,205 @@ WebInspector.CSSShadowModel._parseShadow = function(text, isBoxShadow) |
* @param {number} max |
* @return {boolean} |
*/ |
- function invalidCount(part, min, max) |
- { |
- var count = 0; |
- for (var i = 0; i < shadow._format.length; i++) { |
- if (shadow._format[i] === part) |
- count++; |
- } |
- return count < min || count > max; |
+ function invalidCount(part, min, max) { |
+ var count = 0; |
+ for (var i = 0; i < shadow._format.length; i++) { |
+ if (shadow._format[i] === part) |
+ count++; |
+ } |
+ return count < min || count > max; |
+ } |
+ } |
+ |
+ /** |
+ * @param {boolean} inset |
+ */ |
+ setInset(inset) { |
+ this._inset = inset; |
+ if (this._format.indexOf(WebInspector.CSSShadowModel._Part.Inset) === -1) |
+ this._format.unshift(WebInspector.CSSShadowModel._Part.Inset); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.CSSLength} offsetX |
+ */ |
+ setOffsetX(offsetX) { |
+ this._offsetX = offsetX; |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.CSSLength} offsetY |
+ */ |
+ setOffsetY(offsetY) { |
+ this._offsetY = offsetY; |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.CSSLength} blurRadius |
+ */ |
+ setBlurRadius(blurRadius) { |
+ this._blurRadius = blurRadius; |
+ if (this._format.indexOf(WebInspector.CSSShadowModel._Part.BlurRadius) === -1) { |
+ var yIndex = this._format.indexOf(WebInspector.CSSShadowModel._Part.OffsetY); |
+ this._format.splice(yIndex + 1, 0, WebInspector.CSSShadowModel._Part.BlurRadius); |
+ } |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.CSSLength} spreadRadius |
+ */ |
+ setSpreadRadius(spreadRadius) { |
+ this._spreadRadius = spreadRadius; |
+ if (this._format.indexOf(WebInspector.CSSShadowModel._Part.SpreadRadius) === -1) { |
+ this.setBlurRadius(this._blurRadius); |
+ var blurIndex = this._format.indexOf(WebInspector.CSSShadowModel._Part.BlurRadius); |
+ this._format.splice(blurIndex + 1, 0, WebInspector.CSSShadowModel._Part.SpreadRadius); |
} |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.Color} color |
+ */ |
+ setColor(color) { |
+ this._color = color; |
+ if (this._format.indexOf(WebInspector.CSSShadowModel._Part.Color) === -1) |
+ this._format.push(WebInspector.CSSShadowModel._Part.Color); |
+ } |
+ |
+ /** |
+ * @return {boolean} |
+ */ |
+ isBoxShadow() { |
+ return this._isBoxShadow; |
+ } |
+ |
+ /** |
+ * @return {boolean} |
+ */ |
+ inset() { |
+ return this._inset; |
+ } |
+ |
+ /** |
+ * @return {!WebInspector.CSSLength} |
+ */ |
+ offsetX() { |
+ return this._offsetX; |
+ } |
+ |
+ /** |
+ * @return {!WebInspector.CSSLength} |
+ */ |
+ offsetY() { |
+ return this._offsetY; |
+ } |
+ |
+ /** |
+ * @return {!WebInspector.CSSLength} |
+ */ |
+ blurRadius() { |
+ return this._blurRadius; |
+ } |
+ |
+ /** |
+ * @return {!WebInspector.CSSLength} |
+ */ |
+ spreadRadius() { |
+ return this._spreadRadius; |
+ } |
+ |
+ /** |
+ * @return {!WebInspector.Color} |
+ */ |
+ color() { |
+ return this._color; |
+ } |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ asCSSText() { |
+ var parts = []; |
+ for (var i = 0; i < this._format.length; i++) { |
+ var part = this._format[i]; |
+ if (part === WebInspector.CSSShadowModel._Part.Inset && this._inset) |
+ parts.push('inset'); |
+ else if (part === WebInspector.CSSShadowModel._Part.OffsetX) |
+ parts.push(this._offsetX.asCSSText()); |
+ else if (part === WebInspector.CSSShadowModel._Part.OffsetY) |
+ parts.push(this._offsetY.asCSSText()); |
+ else if (part === WebInspector.CSSShadowModel._Part.BlurRadius) |
+ parts.push(this._blurRadius.asCSSText()); |
+ else if (part === WebInspector.CSSShadowModel._Part.SpreadRadius) |
+ parts.push(this._spreadRadius.asCSSText()); |
+ else if (part === WebInspector.CSSShadowModel._Part.Color) |
+ parts.push(this._color.asString(this._color.format())); |
+ } |
+ return parts.join(' '); |
+ } |
}; |
/** |
- * @constructor |
- * @param {number} amount |
- * @param {string} unit |
+ * @enum {string} |
*/ |
-WebInspector.CSSLength = function(amount, unit) |
-{ |
- this.amount = amount; |
- this.unit = unit; |
+WebInspector.CSSShadowModel._Part = { |
+ Inset: 'I', |
+ OffsetX: 'X', |
+ OffsetY: 'Y', |
+ BlurRadius: 'B', |
+ SpreadRadius: 'S', |
+ Color: 'C' |
}; |
-/** @type {!RegExp} */ |
-WebInspector.CSSLength.Regex = (function() |
-{ |
- var number = "([+-]?(?:[0-9]*[.])?[0-9]+(?:[eE][+-]?[0-9]+)?)"; |
- var unit = "(ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmax|vmin|vw)"; |
- var zero = "[+-]?(?:0*[.])?0+(?:[eE][+-]?[0-9]+)?"; |
- return new RegExp(number + unit + "|" + zero, "gi"); |
-})(); |
/** |
- * @param {string} text |
- * @return {?WebInspector.CSSLength} |
+ * @unrestricted |
*/ |
-WebInspector.CSSLength.parse = function(text) |
-{ |
- var lengthRegex = new RegExp("^(?:" + WebInspector.CSSLength.Regex.source + ")$", "i"); |
+WebInspector.CSSLength = class { |
+ /** |
+ * @param {number} amount |
+ * @param {string} unit |
+ */ |
+ constructor(amount, unit) { |
+ this.amount = amount; |
+ this.unit = unit; |
+ } |
+ |
+ /** |
+ * @param {string} text |
+ * @return {?WebInspector.CSSLength} |
+ */ |
+ static parse(text) { |
+ var lengthRegex = new RegExp('^(?:' + WebInspector.CSSLength.Regex.source + ')$', 'i'); |
var match = text.match(lengthRegex); |
if (!match) |
- return null; |
+ return null; |
if (match.length > 2 && match[2]) |
- return new WebInspector.CSSLength(parseFloat(match[1]), match[2]); |
+ return new WebInspector.CSSLength(parseFloat(match[1]), match[2]); |
return WebInspector.CSSLength.zero(); |
-}; |
+ } |
-/** |
- * @return {!WebInspector.CSSLength} |
- */ |
-WebInspector.CSSLength.zero = function() |
-{ |
- return new WebInspector.CSSLength(0, ""); |
-}; |
+ /** |
+ * @return {!WebInspector.CSSLength} |
+ */ |
+ static zero() { |
+ return new WebInspector.CSSLength(0, ''); |
+ } |
-WebInspector.CSSLength.prototype = { |
- /** |
- * @return {string} |
- */ |
- asCSSText: function() |
- { |
- return this.amount + this.unit; |
- } |
+ /** |
+ * @return {string} |
+ */ |
+ asCSSText() { |
+ return this.amount + this.unit; |
+ } |
}; |
+ |
+/** @type {!RegExp} */ |
+WebInspector.CSSLength.Regex = (function() { |
+ var number = '([+-]?(?:[0-9]*[.])?[0-9]+(?:[eE][+-]?[0-9]+)?)'; |
+ var unit = '(ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmax|vmin|vw)'; |
+ var zero = '[+-]?(?:0*[.])?0+(?:[eE][+-]?[0-9]+)?'; |
+ return new RegExp(number + unit + '|' + zero, 'gi'); |
+})(); |
+ |
+ |