Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Unified Diff: third_party/WebKit/Source/devtools/front_end/common/CSSShadowModel.js

Issue 2319763004: DevTools: (DO NOT COMMIT) Add shadow swatches to Sources, work in progress (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 f372d6f85f29efded224526226c5ba6852594944..8b8d71a8a7bf7eb514d99e6ebb2dff4df5d0a8e0 100644
--- a/third_party/WebKit/Source/devtools/front_end/common/CSSShadowModel.js
+++ b/third_party/WebKit/Source/devtools/front_end/common/CSSShadowModel.js
@@ -18,6 +18,8 @@ WebInspector.CSSShadowModel = function(isBoxShadow)
this._format = [WebInspector.CSSShadowModel._Part.OffsetX, WebInspector.CSSShadowModel._Part.OffsetY];
}
+WebInspector.CSSShadowModel.PropertyRegex = /((?:-webkit-)?box|text)-shadow\s*?:.+?[;\n\r]/g;
+
/**
* @enum {string}
*/
@@ -48,6 +50,31 @@ WebInspector.CSSShadowModel.parseBoxShadow = function(text)
return WebInspector.CSSShadowModel._parseShadow(text, true);
}
+/**
+ * @param {string} text
+ * @return {!Array<{text: string, position: number}>}
+ */
+WebInspector.CSSShadowModel.splitShadows = function(text)
+{
+ // This function removes the whitespace around each shadow but not inside.
+ var shadowTexts = WebInspector.CSSShadowModel._splitShadowsByCommas(text);
+ var shadowPositions = [];
+ var index = 0;
+ for (var i = 0; i < shadowTexts.length; i++) {
+ var shadowText = shadowTexts[i];
+ var position = shadowText.search(/\S/);
+ if (position === -1)
+ return []
+ shadowPositions.push({
+ text: shadowText.trim(),
+ position: index + position
+ });
+ // +1 for the comma that was removed.
+ index = index + shadowText.length + 1;
+ }
+ return shadowPositions;
+}
+
WebInspector.CSSShadowModel.prototype = {
/**
* @param {boolean} inset
@@ -198,19 +225,7 @@ WebInspector.CSSShadowModel.prototype = {
*/
WebInspector.CSSShadowModel._parseShadow = function(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;
- }
- }
- shadowTexts.push(text.substring(currentIndex, text.length));
-
+ var shadowTexts = WebInspector.CSSShadowModel._splitShadowsByCommas(text);
var shadows = [];
for (var i = 0; i < shadowTexts.length; i++) {
var shadow = new WebInspector.CSSShadowModel(isBoxShadow);
@@ -290,6 +305,27 @@ WebInspector.CSSShadowModel._parseShadow = function(text, isBoxShadow)
}
/**
+ * @param {string} text
+ * @return {!Array<string>}
+ */
+WebInspector.CSSShadowModel._splitShadowsByCommas = function(text)
+{
+ 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;
+ }
+ }
+ shadowTexts.push(text.substring(currentIndex, text.length));
+ return shadowTexts;
+}
+
+/**
* @constructor
* @param {number} amount
* @param {string} unit

Powered by Google App Engine
This is Rietveld 408576698