| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2009 Joseph Pecoraro | 3 * Copyright (C) 2009 Joseph Pecoraro |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| 24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| 25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 28 */ | 28 */ |
| 29 | 29 |
| 30 /** | 30 /** |
| 31 * @unrestricted | 31 * @unrestricted |
| 32 */ | 32 */ |
| 33 WebInspector.ComputedStyleWidget = class extends WebInspector.ThrottledWidget { | 33 Elements.ComputedStyleWidget = class extends UI.ThrottledWidget { |
| 34 constructor() { | 34 constructor() { |
| 35 super(); | 35 super(); |
| 36 this.element.classList.add('computed-style-sidebar-pane'); | 36 this.element.classList.add('computed-style-sidebar-pane'); |
| 37 | 37 |
| 38 this.registerRequiredCSS('elements/computedStyleSidebarPane.css'); | 38 this.registerRequiredCSS('elements/computedStyleSidebarPane.css'); |
| 39 this._alwaysShowComputedProperties = {'display': true, 'height': true, 'widt
h': true}; | 39 this._alwaysShowComputedProperties = {'display': true, 'height': true, 'widt
h': true}; |
| 40 | 40 |
| 41 this._computedStyleModel = new WebInspector.ComputedStyleModel(); | 41 this._computedStyleModel = new Elements.ComputedStyleModel(); |
| 42 this._computedStyleModel.addEventListener( | 42 this._computedStyleModel.addEventListener( |
| 43 WebInspector.ComputedStyleModel.Events.ComputedStyleChanged, this.update
, this); | 43 Elements.ComputedStyleModel.Events.ComputedStyleChanged, this.update, th
is); |
| 44 | 44 |
| 45 this._showInheritedComputedStylePropertiesSetting = | 45 this._showInheritedComputedStylePropertiesSetting = |
| 46 WebInspector.settings.createSetting('showInheritedComputedStylePropertie
s', false); | 46 Common.settings.createSetting('showInheritedComputedStyleProperties', fa
lse); |
| 47 this._showInheritedComputedStylePropertiesSetting.addChangeListener( | 47 this._showInheritedComputedStylePropertiesSetting.addChangeListener( |
| 48 this._showInheritedComputedStyleChanged.bind(this)); | 48 this._showInheritedComputedStyleChanged.bind(this)); |
| 49 | 49 |
| 50 var hbox = this.element.createChild('div', 'hbox styles-sidebar-pane-toolbar
'); | 50 var hbox = this.element.createChild('div', 'hbox styles-sidebar-pane-toolbar
'); |
| 51 var filterContainerElement = hbox.createChild('div', 'styles-sidebar-pane-fi
lter-box'); | 51 var filterContainerElement = hbox.createChild('div', 'styles-sidebar-pane-fi
lter-box'); |
| 52 var filterInput = WebInspector.StylesSidebarPane.createPropertyFilterElement
( | 52 var filterInput = Elements.StylesSidebarPane.createPropertyFilterElement( |
| 53 WebInspector.UIString('Filter'), hbox, filterCallback.bind(this)); | 53 Common.UIString('Filter'), hbox, filterCallback.bind(this)); |
| 54 filterContainerElement.appendChild(filterInput); | 54 filterContainerElement.appendChild(filterInput); |
| 55 | 55 |
| 56 var toolbar = new WebInspector.Toolbar('styles-pane-toolbar', hbox); | 56 var toolbar = new UI.Toolbar('styles-pane-toolbar', hbox); |
| 57 toolbar.appendToolbarItem(new WebInspector.ToolbarCheckbox( | 57 toolbar.appendToolbarItem(new UI.ToolbarCheckbox( |
| 58 WebInspector.UIString('Show all'), undefined, this._showInheritedCompute
dStylePropertiesSetting)); | 58 Common.UIString('Show all'), undefined, this._showInheritedComputedStyle
PropertiesSetting)); |
| 59 | 59 |
| 60 this._propertiesOutline = new TreeOutlineInShadow(); | 60 this._propertiesOutline = new TreeOutlineInShadow(); |
| 61 this._propertiesOutline.hideOverflow(); | 61 this._propertiesOutline.hideOverflow(); |
| 62 this._propertiesOutline.registerRequiredCSS('elements/computedStyleSidebarPa
ne.css'); | 62 this._propertiesOutline.registerRequiredCSS('elements/computedStyleSidebarPa
ne.css'); |
| 63 this._propertiesOutline.element.classList.add('monospace', 'computed-propert
ies'); | 63 this._propertiesOutline.element.classList.add('monospace', 'computed-propert
ies'); |
| 64 this.element.appendChild(this._propertiesOutline.element); | 64 this.element.appendChild(this._propertiesOutline.element); |
| 65 | 65 |
| 66 this._linkifier = new WebInspector.Linkifier(WebInspector.ComputedStyleWidge
t._maxLinkLength); | 66 this._linkifier = new Components.Linkifier(Elements.ComputedStyleWidget._max
LinkLength); |
| 67 | 67 |
| 68 /** | 68 /** |
| 69 * @param {?RegExp} regex | 69 * @param {?RegExp} regex |
| 70 * @this {WebInspector.ComputedStyleWidget} | 70 * @this {Elements.ComputedStyleWidget} |
| 71 */ | 71 */ |
| 72 function filterCallback(regex) { | 72 function filterCallback(regex) { |
| 73 this._filterRegex = regex; | 73 this._filterRegex = regex; |
| 74 this._updateFilter(regex); | 74 this._updateFilter(regex); |
| 75 } | 75 } |
| 76 | 76 |
| 77 var fontsWidget = new WebInspector.PlatformFontsWidget(this._computedStyleMo
del); | 77 var fontsWidget = new Elements.PlatformFontsWidget(this._computedStyleModel)
; |
| 78 fontsWidget.show(this.element); | 78 fontsWidget.show(this.element); |
| 79 } | 79 } |
| 80 | 80 |
| 81 _showInheritedComputedStyleChanged() { | 81 _showInheritedComputedStyleChanged() { |
| 82 this.update(); | 82 this.update(); |
| 83 } | 83 } |
| 84 | 84 |
| 85 /** | 85 /** |
| 86 * @override | 86 * @override |
| 87 * @return {!Promise.<?>} | 87 * @return {!Promise.<?>} |
| 88 */ | 88 */ |
| 89 doUpdate() { | 89 doUpdate() { |
| 90 var promises = [this._computedStyleModel.fetchComputedStyle(), this._fetchMa
tchedCascade()]; | 90 var promises = [this._computedStyleModel.fetchComputedStyle(), this._fetchMa
tchedCascade()]; |
| 91 return Promise.all(promises).spread(this._innerRebuildUpdate.bind(this)); | 91 return Promise.all(promises).spread(this._innerRebuildUpdate.bind(this)); |
| 92 } | 92 } |
| 93 | 93 |
| 94 /** | 94 /** |
| 95 * @return {!Promise.<?WebInspector.CSSMatchedStyles>} | 95 * @return {!Promise.<?SDK.CSSMatchedStyles>} |
| 96 */ | 96 */ |
| 97 _fetchMatchedCascade() { | 97 _fetchMatchedCascade() { |
| 98 var node = this._computedStyleModel.node(); | 98 var node = this._computedStyleModel.node(); |
| 99 if (!node || !this._computedStyleModel.cssModel()) | 99 if (!node || !this._computedStyleModel.cssModel()) |
| 100 return Promise.resolve(/** @type {?WebInspector.CSSMatchedStyles} */ (null
)); | 100 return Promise.resolve(/** @type {?SDK.CSSMatchedStyles} */ (null)); |
| 101 | 101 |
| 102 return this._computedStyleModel.cssModel().cachedMatchedCascadeForNode(node)
.then(validateStyles.bind(this)); | 102 return this._computedStyleModel.cssModel().cachedMatchedCascadeForNode(node)
.then(validateStyles.bind(this)); |
| 103 | 103 |
| 104 /** | 104 /** |
| 105 * @param {?WebInspector.CSSMatchedStyles} matchedStyles | 105 * @param {?SDK.CSSMatchedStyles} matchedStyles |
| 106 * @return {?WebInspector.CSSMatchedStyles} | 106 * @return {?SDK.CSSMatchedStyles} |
| 107 * @this {WebInspector.ComputedStyleWidget} | 107 * @this {Elements.ComputedStyleWidget} |
| 108 */ | 108 */ |
| 109 function validateStyles(matchedStyles) { | 109 function validateStyles(matchedStyles) { |
| 110 return matchedStyles && matchedStyles.node() === this._computedStyleModel.
node() ? matchedStyles : null; | 110 return matchedStyles && matchedStyles.node() === this._computedStyleModel.
node() ? matchedStyles : null; |
| 111 } | 111 } |
| 112 } | 112 } |
| 113 | 113 |
| 114 /** | 114 /** |
| 115 * @param {string} text | 115 * @param {string} text |
| 116 * @return {!Node} | 116 * @return {!Node} |
| 117 */ | 117 */ |
| 118 _processColor(text) { | 118 _processColor(text) { |
| 119 var color = WebInspector.Color.parse(text); | 119 var color = Common.Color.parse(text); |
| 120 if (!color) | 120 if (!color) |
| 121 return createTextNode(text); | 121 return createTextNode(text); |
| 122 var swatch = WebInspector.ColorSwatch.create(); | 122 var swatch = UI.ColorSwatch.create(); |
| 123 swatch.setColor(color); | 123 swatch.setColor(color); |
| 124 swatch.setFormat(WebInspector.Color.detectColorFormat(color)); | 124 swatch.setFormat(Common.Color.detectColorFormat(color)); |
| 125 return swatch; | 125 return swatch; |
| 126 } | 126 } |
| 127 | 127 |
| 128 /** | 128 /** |
| 129 * @param {?WebInspector.ComputedStyleModel.ComputedStyle} nodeStyle | 129 * @param {?Elements.ComputedStyleModel.ComputedStyle} nodeStyle |
| 130 * @param {?WebInspector.CSSMatchedStyles} matchedStyles | 130 * @param {?SDK.CSSMatchedStyles} matchedStyles |
| 131 */ | 131 */ |
| 132 _innerRebuildUpdate(nodeStyle, matchedStyles) { | 132 _innerRebuildUpdate(nodeStyle, matchedStyles) { |
| 133 /** @type {!Set<string>} */ | 133 /** @type {!Set<string>} */ |
| 134 var expandedProperties = new Set(); | 134 var expandedProperties = new Set(); |
| 135 for (var treeElement of this._propertiesOutline.rootElement().children()) { | 135 for (var treeElement of this._propertiesOutline.rootElement().children()) { |
| 136 if (!treeElement.expanded) | 136 if (!treeElement.expanded) |
| 137 continue; | 137 continue; |
| 138 var propertyName = treeElement[WebInspector.ComputedStyleWidget._propertyS
ymbol].name; | 138 var propertyName = treeElement[Elements.ComputedStyleWidget._propertySymbo
l].name; |
| 139 expandedProperties.add(propertyName); | 139 expandedProperties.add(propertyName); |
| 140 } | 140 } |
| 141 this._propertiesOutline.removeChildren(); | 141 this._propertiesOutline.removeChildren(); |
| 142 this._linkifier.reset(); | 142 this._linkifier.reset(); |
| 143 var cssModel = this._computedStyleModel.cssModel(); | 143 var cssModel = this._computedStyleModel.cssModel(); |
| 144 if (!nodeStyle || !matchedStyles || !cssModel) | 144 if (!nodeStyle || !matchedStyles || !cssModel) |
| 145 return; | 145 return; |
| 146 | 146 |
| 147 var uniqueProperties = nodeStyle.computedStyle.keysArray(); | 147 var uniqueProperties = nodeStyle.computedStyle.keysArray(); |
| 148 uniqueProperties.sort(propertySorter); | 148 uniqueProperties.sort(propertySorter); |
| 149 | 149 |
| 150 var propertyTraces = this._computePropertyTraces(matchedStyles); | 150 var propertyTraces = this._computePropertyTraces(matchedStyles); |
| 151 var inhertiedProperties = this._computeInheritedProperties(matchedStyles); | 151 var inhertiedProperties = this._computeInheritedProperties(matchedStyles); |
| 152 var showInherited = this._showInheritedComputedStylePropertiesSetting.get(); | 152 var showInherited = this._showInheritedComputedStylePropertiesSetting.get(); |
| 153 for (var i = 0; i < uniqueProperties.length; ++i) { | 153 for (var i = 0; i < uniqueProperties.length; ++i) { |
| 154 var propertyName = uniqueProperties[i]; | 154 var propertyName = uniqueProperties[i]; |
| 155 var propertyValue = nodeStyle.computedStyle.get(propertyName); | 155 var propertyValue = nodeStyle.computedStyle.get(propertyName); |
| 156 var canonicalName = WebInspector.cssMetadata().canonicalPropertyName(prope
rtyName); | 156 var canonicalName = SDK.cssMetadata().canonicalPropertyName(propertyName); |
| 157 var inherited = !inhertiedProperties.has(canonicalName); | 157 var inherited = !inhertiedProperties.has(canonicalName); |
| 158 if (!showInherited && inherited && !(propertyName in this._alwaysShowCompu
tedProperties)) | 158 if (!showInherited && inherited && !(propertyName in this._alwaysShowCompu
tedProperties)) |
| 159 continue; | 159 continue; |
| 160 if (propertyName !== canonicalName && propertyValue === nodeStyle.computed
Style.get(canonicalName)) | 160 if (propertyName !== canonicalName && propertyValue === nodeStyle.computed
Style.get(canonicalName)) |
| 161 continue; | 161 continue; |
| 162 | 162 |
| 163 var propertyElement = createElement('div'); | 163 var propertyElement = createElement('div'); |
| 164 propertyElement.classList.add('computed-style-property'); | 164 propertyElement.classList.add('computed-style-property'); |
| 165 propertyElement.classList.toggle('computed-style-property-inherited', inhe
rited); | 165 propertyElement.classList.toggle('computed-style-property-inherited', inhe
rited); |
| 166 var renderer = new WebInspector.StylesSidebarPropertyRenderer( | 166 var renderer = new Elements.StylesSidebarPropertyRenderer( |
| 167 null, nodeStyle.node, propertyName, /** @type {string} */ (propertyVal
ue)); | 167 null, nodeStyle.node, propertyName, /** @type {string} */ (propertyVal
ue)); |
| 168 renderer.setColorHandler(this._processColor.bind(this)); | 168 renderer.setColorHandler(this._processColor.bind(this)); |
| 169 var propertyNameElement = renderer.renderName(); | 169 var propertyNameElement = renderer.renderName(); |
| 170 propertyNameElement.classList.add('property-name'); | 170 propertyNameElement.classList.add('property-name'); |
| 171 propertyElement.appendChild(propertyNameElement); | 171 propertyElement.appendChild(propertyNameElement); |
| 172 | 172 |
| 173 var colon = createElementWithClass('span', 'delimeter'); | 173 var colon = createElementWithClass('span', 'delimeter'); |
| 174 colon.textContent = ':'; | 174 colon.textContent = ':'; |
| 175 propertyNameElement.appendChild(colon); | 175 propertyNameElement.appendChild(colon); |
| 176 | 176 |
| 177 var propertyValueElement = propertyElement.createChild('span', 'property-v
alue'); | 177 var propertyValueElement = propertyElement.createChild('span', 'property-v
alue'); |
| 178 | 178 |
| 179 var propertyValueText = renderer.renderValue(); | 179 var propertyValueText = renderer.renderValue(); |
| 180 propertyValueText.classList.add('property-value-text'); | 180 propertyValueText.classList.add('property-value-text'); |
| 181 propertyValueElement.appendChild(propertyValueText); | 181 propertyValueElement.appendChild(propertyValueText); |
| 182 | 182 |
| 183 var semicolon = createElementWithClass('span', 'delimeter'); | 183 var semicolon = createElementWithClass('span', 'delimeter'); |
| 184 semicolon.textContent = ';'; | 184 semicolon.textContent = ';'; |
| 185 propertyValueElement.appendChild(semicolon); | 185 propertyValueElement.appendChild(semicolon); |
| 186 | 186 |
| 187 var treeElement = new TreeElement(); | 187 var treeElement = new TreeElement(); |
| 188 treeElement.selectable = false; | 188 treeElement.selectable = false; |
| 189 treeElement.title = propertyElement; | 189 treeElement.title = propertyElement; |
| 190 treeElement[WebInspector.ComputedStyleWidget._propertySymbol] = {name: pro
pertyName, value: propertyValue}; | 190 treeElement[Elements.ComputedStyleWidget._propertySymbol] = {name: propert
yName, value: propertyValue}; |
| 191 var isOdd = this._propertiesOutline.rootElement().children().length % 2 ==
= 0; | 191 var isOdd = this._propertiesOutline.rootElement().children().length % 2 ==
= 0; |
| 192 treeElement.listItemElement.classList.toggle('odd-row', isOdd); | 192 treeElement.listItemElement.classList.toggle('odd-row', isOdd); |
| 193 this._propertiesOutline.appendChild(treeElement); | 193 this._propertiesOutline.appendChild(treeElement); |
| 194 | 194 |
| 195 var trace = propertyTraces.get(propertyName); | 195 var trace = propertyTraces.get(propertyName); |
| 196 if (trace) { | 196 if (trace) { |
| 197 var activeProperty = this._renderPropertyTrace(cssModel, matchedStyles,
nodeStyle.node, treeElement, trace); | 197 var activeProperty = this._renderPropertyTrace(cssModel, matchedStyles,
nodeStyle.node, treeElement, trace); |
| 198 treeElement.listItemElement.addEventListener('mousedown', (e) => e.consu
me(), false); | 198 treeElement.listItemElement.addEventListener('mousedown', (e) => e.consu
me(), false); |
| 199 treeElement.listItemElement.addEventListener('dblclick', (e) => e.consum
e(), false); | 199 treeElement.listItemElement.addEventListener('dblclick', (e) => e.consum
e(), false); |
| 200 treeElement.listItemElement.addEventListener('click', handleClick.bind(n
ull, treeElement), false); | 200 treeElement.listItemElement.addEventListener('click', handleClick.bind(n
ull, treeElement), false); |
| 201 var gotoSourceElement = propertyValueElement.createChild('div', 'goto-so
urce-icon'); | 201 var gotoSourceElement = propertyValueElement.createChild('div', 'goto-so
urce-icon'); |
| 202 gotoSourceElement.addEventListener('click', this._navigateToSource.bind(
this, activeProperty)); | 202 gotoSourceElement.addEventListener('click', this._navigateToSource.bind(
this, activeProperty)); |
| 203 if (expandedProperties.has(propertyName)) | 203 if (expandedProperties.has(propertyName)) |
| 204 treeElement.expand(); | 204 treeElement.expand(); |
| 205 } | 205 } |
| 206 } | 206 } |
| 207 | 207 |
| 208 this._updateFilter(this._filterRegex); | 208 this._updateFilter(this._filterRegex); |
| 209 | 209 |
| 210 /** | 210 /** |
| 211 * @param {string} a | 211 * @param {string} a |
| 212 * @param {string} b | 212 * @param {string} b |
| 213 * @return {number} | 213 * @return {number} |
| 214 */ | 214 */ |
| 215 function propertySorter(a, b) { | 215 function propertySorter(a, b) { |
| 216 if (a.startsWith('-webkit') ^ b.startsWith('-webkit')) | 216 if (a.startsWith('-webkit') ^ b.startsWith('-webkit')) |
| 217 return a.startsWith('-webkit') ? 1 : -1; | 217 return a.startsWith('-webkit') ? 1 : -1; |
| 218 var canonical1 = WebInspector.cssMetadata().canonicalPropertyName(a); | 218 var canonical1 = SDK.cssMetadata().canonicalPropertyName(a); |
| 219 var canonical2 = WebInspector.cssMetadata().canonicalPropertyName(b); | 219 var canonical2 = SDK.cssMetadata().canonicalPropertyName(b); |
| 220 return canonical1.compareTo(canonical2); | 220 return canonical1.compareTo(canonical2); |
| 221 } | 221 } |
| 222 | 222 |
| 223 /** | 223 /** |
| 224 * @param {!TreeElement} treeElement | 224 * @param {!TreeElement} treeElement |
| 225 * @param {!Event} event | 225 * @param {!Event} event |
| 226 */ | 226 */ |
| 227 function handleClick(treeElement, event) { | 227 function handleClick(treeElement, event) { |
| 228 if (!treeElement.expanded) | 228 if (!treeElement.expanded) |
| 229 treeElement.expand(); | 229 treeElement.expand(); |
| 230 else | 230 else |
| 231 treeElement.collapse(); | 231 treeElement.collapse(); |
| 232 event.consume(); | 232 event.consume(); |
| 233 } | 233 } |
| 234 } | 234 } |
| 235 | 235 |
| 236 /** | 236 /** |
| 237 * @param {!WebInspector.CSSProperty} cssProperty | 237 * @param {!SDK.CSSProperty} cssProperty |
| 238 * @param {!Event} event | 238 * @param {!Event} event |
| 239 */ | 239 */ |
| 240 _navigateToSource(cssProperty, event) { | 240 _navigateToSource(cssProperty, event) { |
| 241 WebInspector.Revealer.reveal(cssProperty); | 241 Common.Revealer.reveal(cssProperty); |
| 242 event.consume(true); | 242 event.consume(true); |
| 243 } | 243 } |
| 244 | 244 |
| 245 /** | 245 /** |
| 246 * @param {!WebInspector.CSSModel} cssModel | 246 * @param {!SDK.CSSModel} cssModel |
| 247 * @param {!WebInspector.CSSMatchedStyles} matchedStyles | 247 * @param {!SDK.CSSMatchedStyles} matchedStyles |
| 248 * @param {!WebInspector.DOMNode} node | 248 * @param {!SDK.DOMNode} node |
| 249 * @param {!TreeElement} rootTreeElement | 249 * @param {!TreeElement} rootTreeElement |
| 250 * @param {!Array<!WebInspector.CSSProperty>} tracedProperties | 250 * @param {!Array<!SDK.CSSProperty>} tracedProperties |
| 251 * @return {!WebInspector.CSSProperty} | 251 * @return {!SDK.CSSProperty} |
| 252 */ | 252 */ |
| 253 _renderPropertyTrace(cssModel, matchedStyles, node, rootTreeElement, tracedPro
perties) { | 253 _renderPropertyTrace(cssModel, matchedStyles, node, rootTreeElement, tracedPro
perties) { |
| 254 var activeProperty = null; | 254 var activeProperty = null; |
| 255 for (var property of tracedProperties) { | 255 for (var property of tracedProperties) { |
| 256 var trace = createElement('div'); | 256 var trace = createElement('div'); |
| 257 trace.classList.add('property-trace'); | 257 trace.classList.add('property-trace'); |
| 258 if (matchedStyles.propertyState(property) === WebInspector.CSSMatchedStyle
s.PropertyState.Overloaded) | 258 if (matchedStyles.propertyState(property) === SDK.CSSMatchedStyles.Propert
yState.Overloaded) |
| 259 trace.classList.add('property-trace-inactive'); | 259 trace.classList.add('property-trace-inactive'); |
| 260 else | 260 else |
| 261 activeProperty = property; | 261 activeProperty = property; |
| 262 | 262 |
| 263 var renderer = new WebInspector.StylesSidebarPropertyRenderer( | 263 var renderer = new Elements.StylesSidebarPropertyRenderer( |
| 264 null, node, property.name, /** @type {string} */ (property.value)); | 264 null, node, property.name, /** @type {string} */ (property.value)); |
| 265 renderer.setColorHandler(this._processColor.bind(this)); | 265 renderer.setColorHandler(this._processColor.bind(this)); |
| 266 var valueElement = renderer.renderValue(); | 266 var valueElement = renderer.renderValue(); |
| 267 valueElement.classList.add('property-trace-value'); | 267 valueElement.classList.add('property-trace-value'); |
| 268 valueElement.addEventListener('click', this._navigateToSource.bind(this, p
roperty), false); | 268 valueElement.addEventListener('click', this._navigateToSource.bind(this, p
roperty), false); |
| 269 var gotoSourceElement = createElement('div'); | 269 var gotoSourceElement = createElement('div'); |
| 270 gotoSourceElement.classList.add('goto-source-icon'); | 270 gotoSourceElement.classList.add('goto-source-icon'); |
| 271 gotoSourceElement.addEventListener('click', this._navigateToSource.bind(th
is, property)); | 271 gotoSourceElement.addEventListener('click', this._navigateToSource.bind(th
is, property)); |
| 272 valueElement.insertBefore(gotoSourceElement, valueElement.firstChild); | 272 valueElement.insertBefore(gotoSourceElement, valueElement.firstChild); |
| 273 | 273 |
| 274 trace.appendChild(valueElement); | 274 trace.appendChild(valueElement); |
| 275 | 275 |
| 276 var rule = property.ownerStyle.parentRule; | 276 var rule = property.ownerStyle.parentRule; |
| 277 if (rule) { | 277 if (rule) { |
| 278 var linkSpan = trace.createChild('span', 'trace-link'); | 278 var linkSpan = trace.createChild('span', 'trace-link'); |
| 279 linkSpan.appendChild( | 279 linkSpan.appendChild( |
| 280 WebInspector.StylePropertiesSection.createRuleOriginNode(matchedStyl
es, this._linkifier, rule)); | 280 Elements.StylePropertiesSection.createRuleOriginNode(matchedStyles,
this._linkifier, rule)); |
| 281 } | 281 } |
| 282 | 282 |
| 283 var selectorElement = trace.createChild('span', 'property-trace-selector')
; | 283 var selectorElement = trace.createChild('span', 'property-trace-selector')
; |
| 284 selectorElement.textContent = rule ? rule.selectorText() : 'element.style'
; | 284 selectorElement.textContent = rule ? rule.selectorText() : 'element.style'
; |
| 285 selectorElement.title = selectorElement.textContent; | 285 selectorElement.title = selectorElement.textContent; |
| 286 | 286 |
| 287 var traceTreeElement = new TreeElement(); | 287 var traceTreeElement = new TreeElement(); |
| 288 traceTreeElement.title = trace; | 288 traceTreeElement.title = trace; |
| 289 traceTreeElement.selectable = false; | 289 traceTreeElement.selectable = false; |
| 290 rootTreeElement.appendChild(traceTreeElement); | 290 rootTreeElement.appendChild(traceTreeElement); |
| 291 } | 291 } |
| 292 return /** @type {!WebInspector.CSSProperty} */ (activeProperty); | 292 return /** @type {!SDK.CSSProperty} */ (activeProperty); |
| 293 } | 293 } |
| 294 | 294 |
| 295 /** | 295 /** |
| 296 * @param {!WebInspector.CSSMatchedStyles} matchedStyles | 296 * @param {!SDK.CSSMatchedStyles} matchedStyles |
| 297 * @return {!Map<string, !Array<!WebInspector.CSSProperty>>} | 297 * @return {!Map<string, !Array<!SDK.CSSProperty>>} |
| 298 */ | 298 */ |
| 299 _computePropertyTraces(matchedStyles) { | 299 _computePropertyTraces(matchedStyles) { |
| 300 var result = new Map(); | 300 var result = new Map(); |
| 301 for (var style of matchedStyles.nodeStyles()) { | 301 for (var style of matchedStyles.nodeStyles()) { |
| 302 var allProperties = style.allProperties; | 302 var allProperties = style.allProperties; |
| 303 for (var property of allProperties) { | 303 for (var property of allProperties) { |
| 304 if (!property.activeInStyle() || !matchedStyles.propertyState(property)) | 304 if (!property.activeInStyle() || !matchedStyles.propertyState(property)) |
| 305 continue; | 305 continue; |
| 306 if (!result.has(property.name)) | 306 if (!result.has(property.name)) |
| 307 result.set(property.name, []); | 307 result.set(property.name, []); |
| 308 result.get(property.name).push(property); | 308 result.get(property.name).push(property); |
| 309 } | 309 } |
| 310 } | 310 } |
| 311 return result; | 311 return result; |
| 312 } | 312 } |
| 313 | 313 |
| 314 /** | 314 /** |
| 315 * @param {!WebInspector.CSSMatchedStyles} matchedStyles | 315 * @param {!SDK.CSSMatchedStyles} matchedStyles |
| 316 * @return {!Set<string>} | 316 * @return {!Set<string>} |
| 317 */ | 317 */ |
| 318 _computeInheritedProperties(matchedStyles) { | 318 _computeInheritedProperties(matchedStyles) { |
| 319 var result = new Set(); | 319 var result = new Set(); |
| 320 for (var style of matchedStyles.nodeStyles()) { | 320 for (var style of matchedStyles.nodeStyles()) { |
| 321 for (var property of style.allProperties) { | 321 for (var property of style.allProperties) { |
| 322 if (!matchedStyles.propertyState(property)) | 322 if (!matchedStyles.propertyState(property)) |
| 323 continue; | 323 continue; |
| 324 result.add(WebInspector.cssMetadata().canonicalPropertyName(property.nam
e)); | 324 result.add(SDK.cssMetadata().canonicalPropertyName(property.name)); |
| 325 } | 325 } |
| 326 } | 326 } |
| 327 return result; | 327 return result; |
| 328 } | 328 } |
| 329 | 329 |
| 330 /** | 330 /** |
| 331 * @param {?RegExp} regex | 331 * @param {?RegExp} regex |
| 332 */ | 332 */ |
| 333 _updateFilter(regex) { | 333 _updateFilter(regex) { |
| 334 var children = this._propertiesOutline.rootElement().children(); | 334 var children = this._propertiesOutline.rootElement().children(); |
| 335 for (var child of children) { | 335 for (var child of children) { |
| 336 var property = child[WebInspector.ComputedStyleWidget._propertySymbol]; | 336 var property = child[Elements.ComputedStyleWidget._propertySymbol]; |
| 337 var matched = !regex || regex.test(property.name) || regex.test(property.v
alue); | 337 var matched = !regex || regex.test(property.name) || regex.test(property.v
alue); |
| 338 child.hidden = !matched; | 338 child.hidden = !matched; |
| 339 } | 339 } |
| 340 } | 340 } |
| 341 }; | 341 }; |
| 342 | 342 |
| 343 WebInspector.ComputedStyleWidget._maxLinkLength = 30; | 343 Elements.ComputedStyleWidget._maxLinkLength = 30; |
| 344 | 344 |
| 345 WebInspector.ComputedStyleWidget._propertySymbol = Symbol('property'); | 345 Elements.ComputedStyleWidget._propertySymbol = Symbol('property'); |
| OLD | NEW |