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

Unified Diff: third_party/WebKit/Source/devtools/front_end/elements/ElementsBreadcrumbs.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month 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/elements/ElementsBreadcrumbs.js
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ElementsBreadcrumbs.js b/third_party/WebKit/Source/devtools/front_end/elements/ElementsBreadcrumbs.js
index 18357f8f166ffd5f590724ef06b293438d29b6fc..9cf8e2908c654d75a6296119f5a7762596dc1ea1 100644
--- a/third_party/WebKit/Source/devtools/front_end/elements/ElementsBreadcrumbs.js
+++ b/third_party/WebKit/Source/devtools/front_end/elements/ElementsBreadcrumbs.js
@@ -1,436 +1,420 @@
// Copyright 2014 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
- * @extends {WebInspector.HBox}
+ * @unrestricted
*/
-WebInspector.ElementsBreadcrumbs = function()
-{
- WebInspector.HBox.call(this, true);
- this.registerRequiredCSS("elements/breadcrumbs.css");
-
- this.crumbsElement = this.contentElement.createChild("div", "crumbs");
- this.crumbsElement.addEventListener("mousemove", this._mouseMovedInCrumbs.bind(this), false);
- this.crumbsElement.addEventListener("mouseleave", this._mouseMovedOutOfCrumbs.bind(this), false);
- this._nodeSymbol = Symbol("node");
-};
-
-/** @enum {symbol} */
-WebInspector.ElementsBreadcrumbs.Events = {
- NodeSelected: Symbol("NodeSelected")
-};
-
-WebInspector.ElementsBreadcrumbs.prototype = {
- wasShown: function()
- {
- this.update();
- },
+WebInspector.ElementsBreadcrumbs = class extends WebInspector.HBox {
+ constructor() {
+ super(true);
+ this.registerRequiredCSS('elements/breadcrumbs.css');
+
+ this.crumbsElement = this.contentElement.createChild('div', 'crumbs');
+ this.crumbsElement.addEventListener('mousemove', this._mouseMovedInCrumbs.bind(this), false);
+ this.crumbsElement.addEventListener('mouseleave', this._mouseMovedOutOfCrumbs.bind(this), false);
+ this._nodeSymbol = Symbol('node');
+ }
+
+ /**
+ * @override
+ */
+ wasShown() {
+ this.update();
+ }
+
+ /**
+ * @param {!Array.<!WebInspector.DOMNode>} nodes
+ */
+ updateNodes(nodes) {
+ if (!nodes.length)
+ return;
+
+ var crumbs = this.crumbsElement;
+ for (var crumb = crumbs.firstChild; crumb; crumb = crumb.nextSibling) {
+ if (nodes.indexOf(crumb[this._nodeSymbol]) !== -1) {
+ this.update(true);
+ return;
+ }
+ }
+ }
+
+ /**
+ * @param {?WebInspector.DOMNode} node
+ */
+ setSelectedNode(node) {
+ this._currentDOMNode = node;
+ this.update();
+ }
+
+ _mouseMovedInCrumbs(event) {
+ var nodeUnderMouse = event.target;
+ var crumbElement = nodeUnderMouse.enclosingNodeOrSelfWithClass('crumb');
+ var node = /** @type {?WebInspector.DOMNode} */ (crumbElement ? crumbElement[this._nodeSymbol] : null);
+ if (node)
+ node.highlight();
+ }
+
+ _mouseMovedOutOfCrumbs(event) {
+ if (this._currentDOMNode)
+ WebInspector.DOMModel.hideDOMNodeHighlight();
+ }
+
+ /**
+ * @param {boolean=} force
+ */
+ update(force) {
+ if (!this.isShowing())
+ return;
+
+ var currentDOMNode = this._currentDOMNode;
+ var crumbs = this.crumbsElement;
+
+ var handled = false;
+ var crumb = crumbs.firstChild;
+ while (crumb) {
+ if (crumb[this._nodeSymbol] === currentDOMNode) {
+ crumb.classList.add('selected');
+ handled = true;
+ } else {
+ crumb.classList.remove('selected');
+ }
+
+ crumb = crumb.nextSibling;
+ }
+
+ if (handled && !force) {
+ // We don't need to rebuild the crumbs, but we need to adjust sizes
+ // to reflect the new focused or root node.
+ this.updateSizes();
+ return;
+ }
+
+ crumbs.removeChildren();
+
+ var panel = this;
/**
- * @param {!Array.<!WebInspector.DOMNode>} nodes
+ * @param {!Event} event
+ * @this {WebInspector.ElementsBreadcrumbs}
*/
- updateNodes: function(nodes)
- {
- if (!nodes.length)
- return;
-
- var crumbs = this.crumbsElement;
- for (var crumb = crumbs.firstChild; crumb; crumb = crumb.nextSibling) {
- if (nodes.indexOf(crumb[this._nodeSymbol]) !== -1) {
- this.update(true);
- return;
- }
+ function selectCrumb(event) {
+ event.preventDefault();
+ var crumb = /** @type {!Element} */ (event.currentTarget);
+ if (!crumb.classList.contains('collapsed')) {
+ this.dispatchEventToListeners(WebInspector.ElementsBreadcrumbs.Events.NodeSelected, crumb[this._nodeSymbol]);
+ return;
+ }
+
+ // Clicking a collapsed crumb will expose the hidden crumbs.
+ if (crumb === panel.crumbsElement.firstChild) {
+ // If the focused crumb is the first child, pick the farthest crumb
+ // that is still hidden. This allows the user to expose every crumb.
+ var currentCrumb = crumb;
+ while (currentCrumb) {
+ var hidden = currentCrumb.classList.contains('hidden');
+ var collapsed = currentCrumb.classList.contains('collapsed');
+ if (!hidden && !collapsed)
+ break;
+ crumb = currentCrumb;
+ currentCrumb = currentCrumb.nextSiblingElement;
}
- },
-
- /**
- * @param {?WebInspector.DOMNode} node
- */
- setSelectedNode: function(node)
- {
- this._currentDOMNode = node;
- this.update();
- },
-
- _mouseMovedInCrumbs: function(event)
- {
- var nodeUnderMouse = event.target;
- var crumbElement = nodeUnderMouse.enclosingNodeOrSelfWithClass("crumb");
- var node = /** @type {?WebInspector.DOMNode} */ (crumbElement ? crumbElement[this._nodeSymbol] : null);
- if (node)
- node.highlight();
- },
-
- _mouseMovedOutOfCrumbs: function(event)
- {
- if (this._currentDOMNode)
- WebInspector.DOMModel.hideDOMNodeHighlight();
- },
-
- /**
- * @param {boolean=} force
- */
- update: function(force)
- {
- if (!this.isShowing())
- return;
-
- var currentDOMNode = this._currentDOMNode;
- var crumbs = this.crumbsElement;
-
- var handled = false;
- var crumb = crumbs.firstChild;
- while (crumb) {
- if (crumb[this._nodeSymbol] === currentDOMNode) {
- crumb.classList.add("selected");
- handled = true;
- } else {
- crumb.classList.remove("selected");
- }
-
- crumb = crumb.nextSibling;
+ }
+
+ this.updateSizes(crumb);
+ }
+
+ var boundSelectCrumb = selectCrumb.bind(this);
+ for (var current = currentDOMNode; current; current = current.parentNode) {
+ if (current.nodeType() === Node.DOCUMENT_NODE)
+ continue;
+
+ crumb = createElementWithClass('span', 'crumb');
+ crumb[this._nodeSymbol] = current;
+ crumb.addEventListener('mousedown', boundSelectCrumb, false);
+
+ var crumbTitle = '';
+ switch (current.nodeType()) {
+ case Node.ELEMENT_NODE:
+ if (current.pseudoType())
+ crumbTitle = '::' + current.pseudoType();
+ else
+ WebInspector.DOMPresentationUtils.decorateNodeLabel(current, crumb);
+ break;
+
+ case Node.TEXT_NODE:
+ crumbTitle = WebInspector.UIString('(text)');
+ break;
+
+ case Node.COMMENT_NODE:
+ crumbTitle = '<!-->';
+ break;
+
+ case Node.DOCUMENT_TYPE_NODE:
+ crumbTitle = '<!DOCTYPE>';
+ break;
+
+ case Node.DOCUMENT_FRAGMENT_NODE:
+ crumbTitle = current.shadowRootType() ? '#shadow-root' : current.nodeNameInCorrectCase();
+ break;
+
+ default:
+ crumbTitle = current.nodeNameInCorrectCase();
+ }
+
+ if (!crumb.childNodes.length) {
+ var nameElement = createElement('span');
+ nameElement.textContent = crumbTitle;
+ crumb.appendChild(nameElement);
+ crumb.title = crumbTitle;
+ }
+
+ if (current === currentDOMNode)
+ crumb.classList.add('selected');
+ crumbs.insertBefore(crumb, crumbs.firstChild);
+ }
+
+ this.updateSizes();
+ }
+
+ /**
+ * @param {!Element=} focusedCrumb
+ */
+ updateSizes(focusedCrumb) {
+ if (!this.isShowing())
+ return;
+
+ var crumbs = this.crumbsElement;
+ if (!crumbs.firstChild)
+ return;
+
+ var selectedIndex = 0;
+ var focusedIndex = 0;
+ var selectedCrumb;
+
+ // Reset crumb styles.
+ for (var i = 0; i < crumbs.childNodes.length; ++i) {
+ var crumb = crumbs.children[i];
+ // Find the selected crumb and index.
+ if (!selectedCrumb && crumb.classList.contains('selected')) {
+ selectedCrumb = crumb;
+ selectedIndex = i;
+ }
+
+ // Find the focused crumb index.
+ if (crumb === focusedCrumb)
+ focusedIndex = i;
+
+ crumb.classList.remove('compact', 'collapsed', 'hidden');
+ }
+
+ // Layout 1: Measure total and normal crumb sizes
+ var contentElementWidth = this.contentElement.offsetWidth;
+ var normalSizes = [];
+ for (var i = 0; i < crumbs.childNodes.length; ++i) {
+ var crumb = crumbs.childNodes[i];
+ normalSizes[i] = crumb.offsetWidth;
+ }
+
+ // Layout 2: Measure collapsed crumb sizes
+ var compactSizes = [];
+ for (var i = 0; i < crumbs.childNodes.length; ++i) {
+ var crumb = crumbs.childNodes[i];
+ crumb.classList.add('compact');
+ }
+ for (var i = 0; i < crumbs.childNodes.length; ++i) {
+ var crumb = crumbs.childNodes[i];
+ compactSizes[i] = crumb.offsetWidth;
+ }
+
+ // Layout 3: Measure collapsed crumb size
+ crumbs.firstChild.classList.add('collapsed');
+ var collapsedSize = crumbs.firstChild.offsetWidth;
+
+ // Clean up.
+ for (var i = 0; i < crumbs.childNodes.length; ++i) {
+ var crumb = crumbs.childNodes[i];
+ crumb.classList.remove('compact', 'collapsed');
+ }
+
+ function crumbsAreSmallerThanContainer() {
+ var totalSize = 0;
+ for (var i = 0; i < crumbs.childNodes.length; ++i) {
+ var crumb = crumbs.childNodes[i];
+ if (crumb.classList.contains('hidden'))
+ continue;
+ if (crumb.classList.contains('collapsed')) {
+ totalSize += collapsedSize;
+ continue;
}
+ totalSize += crumb.classList.contains('compact') ? compactSizes[i] : normalSizes[i];
+ }
+ const rightPadding = 10;
+ return totalSize + rightPadding < contentElementWidth;
+ }
- if (handled && !force) {
- // We don't need to rebuild the crumbs, but we need to adjust sizes
- // to reflect the new focused or root node.
- this.updateSizes();
- return;
- }
+ if (crumbsAreSmallerThanContainer())
+ return; // No need to compact the crumbs, they all fit at full size.
- crumbs.removeChildren();
-
- var panel = this;
-
- /**
- * @param {!Event} event
- * @this {WebInspector.ElementsBreadcrumbs}
- */
- function selectCrumb(event)
- {
- event.preventDefault();
- var crumb = /** @type {!Element} */ (event.currentTarget);
- if (!crumb.classList.contains("collapsed")) {
- this.dispatchEventToListeners(WebInspector.ElementsBreadcrumbs.Events.NodeSelected, crumb[this._nodeSymbol]);
- return;
- }
-
- // Clicking a collapsed crumb will expose the hidden crumbs.
- if (crumb === panel.crumbsElement.firstChild) {
- // If the focused crumb is the first child, pick the farthest crumb
- // that is still hidden. This allows the user to expose every crumb.
- var currentCrumb = crumb;
- while (currentCrumb) {
- var hidden = currentCrumb.classList.contains("hidden");
- var collapsed = currentCrumb.classList.contains("collapsed");
- if (!hidden && !collapsed)
- break;
- crumb = currentCrumb;
- currentCrumb = currentCrumb.nextSiblingElement;
- }
- }
-
- this.updateSizes(crumb);
- }
-
- var boundSelectCrumb = selectCrumb.bind(this);
- for (var current = currentDOMNode; current; current = current.parentNode) {
- if (current.nodeType() === Node.DOCUMENT_NODE)
- continue;
-
- crumb = createElementWithClass("span", "crumb");
- crumb[this._nodeSymbol] = current;
- crumb.addEventListener("mousedown", boundSelectCrumb, false);
-
- var crumbTitle = "";
- switch (current.nodeType()) {
- case Node.ELEMENT_NODE:
- if (current.pseudoType())
- crumbTitle = "::" + current.pseudoType();
- else
- WebInspector.DOMPresentationUtils.decorateNodeLabel(current, crumb);
- break;
-
- case Node.TEXT_NODE:
- crumbTitle = WebInspector.UIString("(text)");
- break;
-
- case Node.COMMENT_NODE:
- crumbTitle = "<!-->";
- break;
-
- case Node.DOCUMENT_TYPE_NODE:
- crumbTitle = "<!DOCTYPE>";
- break;
-
- case Node.DOCUMENT_FRAGMENT_NODE:
- crumbTitle = current.shadowRootType() ? "#shadow-root" : current.nodeNameInCorrectCase();
- break;
-
- default:
- crumbTitle = current.nodeNameInCorrectCase();
- }
-
- if (!crumb.childNodes.length) {
- var nameElement = createElement("span");
- nameElement.textContent = crumbTitle;
- crumb.appendChild(nameElement);
- crumb.title = crumbTitle;
- }
-
- if (current === currentDOMNode)
- crumb.classList.add("selected");
- crumbs.insertBefore(crumb, crumbs.firstChild);
- }
-
- this.updateSizes();
- },
+ var BothSides = 0;
+ var AncestorSide = -1;
+ var ChildSide = 1;
/**
- * @param {!Element=} focusedCrumb
+ * @param {function(!Element)} shrinkingFunction
+ * @param {number} direction
*/
- updateSizes: function(focusedCrumb)
- {
- if (!this.isShowing())
- return;
-
- var crumbs = this.crumbsElement;
- if (!crumbs.firstChild)
- return;
-
- var selectedIndex = 0;
- var focusedIndex = 0;
- var selectedCrumb;
-
- // Reset crumb styles.
- for (var i = 0; i < crumbs.childNodes.length; ++i) {
- var crumb = crumbs.children[i];
- // Find the selected crumb and index.
- if (!selectedCrumb && crumb.classList.contains("selected")) {
- selectedCrumb = crumb;
- selectedIndex = i;
- }
-
- // Find the focused crumb index.
- if (crumb === focusedCrumb)
- focusedIndex = i;
-
- crumb.classList.remove("compact", "collapsed", "hidden");
- }
-
- // Layout 1: Measure total and normal crumb sizes
- var contentElementWidth = this.contentElement.offsetWidth;
- var normalSizes = [];
- for (var i = 0; i < crumbs.childNodes.length; ++i) {
- var crumb = crumbs.childNodes[i];
- normalSizes[i] = crumb.offsetWidth;
- }
-
- // Layout 2: Measure collapsed crumb sizes
- var compactSizes = [];
- for (var i = 0; i < crumbs.childNodes.length; ++i) {
- var crumb = crumbs.childNodes[i];
- crumb.classList.add("compact");
- }
- for (var i = 0; i < crumbs.childNodes.length; ++i) {
- var crumb = crumbs.childNodes[i];
- compactSizes[i] = crumb.offsetWidth;
+ function makeCrumbsSmaller(shrinkingFunction, direction) {
+ var significantCrumb = focusedCrumb || selectedCrumb;
+ var significantIndex = significantCrumb === selectedCrumb ? selectedIndex : focusedIndex;
+
+ function shrinkCrumbAtIndex(index) {
+ var shrinkCrumb = crumbs.children[index];
+ if (shrinkCrumb && shrinkCrumb !== significantCrumb)
+ shrinkingFunction(shrinkCrumb);
+ if (crumbsAreSmallerThanContainer())
+ return true; // No need to compact the crumbs more.
+ return false;
+ }
+
+ // Shrink crumbs one at a time by applying the shrinkingFunction until the crumbs
+ // fit in the container or we run out of crumbs to shrink.
+ if (direction) {
+ // Crumbs are shrunk on only one side (based on direction) of the signifcant crumb.
+ var index = (direction > 0 ? 0 : crumbs.childNodes.length - 1);
+ while (index !== significantIndex) {
+ if (shrinkCrumbAtIndex(index))
+ return true;
+ index += (direction > 0 ? 1 : -1);
}
-
- // Layout 3: Measure collapsed crumb size
- crumbs.firstChild.classList.add("collapsed");
- var collapsedSize = crumbs.firstChild.offsetWidth;
-
- // Clean up.
- for (var i = 0; i < crumbs.childNodes.length; ++i) {
- var crumb = crumbs.childNodes[i];
- crumb.classList.remove("compact", "collapsed");
+ } else {
+ // Crumbs are shrunk in order of descending distance from the signifcant crumb,
+ // with a tie going to child crumbs.
+ var startIndex = 0;
+ var endIndex = crumbs.childNodes.length - 1;
+ while (startIndex !== significantIndex || endIndex !== significantIndex) {
+ var startDistance = significantIndex - startIndex;
+ var endDistance = endIndex - significantIndex;
+ if (startDistance >= endDistance)
+ var index = startIndex++;
+ else
+ var index = endIndex--;
+ if (shrinkCrumbAtIndex(index))
+ return true;
}
-
- function crumbsAreSmallerThanContainer()
- {
- var totalSize = 0;
- for (var i = 0; i < crumbs.childNodes.length; ++i) {
- var crumb = crumbs.childNodes[i];
- if (crumb.classList.contains("hidden"))
- continue;
- if (crumb.classList.contains("collapsed")) {
- totalSize += collapsedSize;
- continue;
- }
- totalSize += crumb.classList.contains("compact") ? compactSizes[i] : normalSizes[i];
+ }
+
+ // We are not small enough yet, return false so the caller knows.
+ return false;
+ }
+
+ function coalesceCollapsedCrumbs() {
+ var crumb = crumbs.firstChild;
+ var collapsedRun = false;
+ var newStartNeeded = false;
+ var newEndNeeded = false;
+ while (crumb) {
+ var hidden = crumb.classList.contains('hidden');
+ if (!hidden) {
+ var collapsed = crumb.classList.contains('collapsed');
+ if (collapsedRun && collapsed) {
+ crumb.classList.add('hidden');
+ crumb.classList.remove('compact');
+ crumb.classList.remove('collapsed');
+
+ if (crumb.classList.contains('start')) {
+ crumb.classList.remove('start');
+ newStartNeeded = true;
}
- const rightPadding = 10;
- return totalSize + rightPadding < contentElementWidth;
- }
-
- if (crumbsAreSmallerThanContainer())
- return; // No need to compact the crumbs, they all fit at full size.
-
- var BothSides = 0;
- var AncestorSide = -1;
- var ChildSide = 1;
-
- /**
- * @param {function(!Element)} shrinkingFunction
- * @param {number} direction
- */
- function makeCrumbsSmaller(shrinkingFunction, direction)
- {
- var significantCrumb = focusedCrumb || selectedCrumb;
- var significantIndex = significantCrumb === selectedCrumb ? selectedIndex : focusedIndex;
-
- function shrinkCrumbAtIndex(index)
- {
- var shrinkCrumb = crumbs.children[index];
- if (shrinkCrumb && shrinkCrumb !== significantCrumb)
- shrinkingFunction(shrinkCrumb);
- if (crumbsAreSmallerThanContainer())
- return true; // No need to compact the crumbs more.
- return false;
- }
-
- // Shrink crumbs one at a time by applying the shrinkingFunction until the crumbs
- // fit in the container or we run out of crumbs to shrink.
- if (direction) {
- // Crumbs are shrunk on only one side (based on direction) of the signifcant crumb.
- var index = (direction > 0 ? 0 : crumbs.childNodes.length - 1);
- while (index !== significantIndex) {
- if (shrinkCrumbAtIndex(index))
- return true;
- index += (direction > 0 ? 1 : -1);
- }
- } else {
- // Crumbs are shrunk in order of descending distance from the signifcant crumb,
- // with a tie going to child crumbs.
- var startIndex = 0;
- var endIndex = crumbs.childNodes.length - 1;
- while (startIndex !== significantIndex || endIndex !== significantIndex) {
- var startDistance = significantIndex - startIndex;
- var endDistance = endIndex - significantIndex;
- if (startDistance >= endDistance)
- var index = startIndex++;
- else
- var index = endIndex--;
- if (shrinkCrumbAtIndex(index))
- return true;
- }
- }
-
- // We are not small enough yet, return false so the caller knows.
- return false;
- }
- function coalesceCollapsedCrumbs()
- {
- var crumb = crumbs.firstChild;
- var collapsedRun = false;
- var newStartNeeded = false;
- var newEndNeeded = false;
- while (crumb) {
- var hidden = crumb.classList.contains("hidden");
- if (!hidden) {
- var collapsed = crumb.classList.contains("collapsed");
- if (collapsedRun && collapsed) {
- crumb.classList.add("hidden");
- crumb.classList.remove("compact");
- crumb.classList.remove("collapsed");
-
- if (crumb.classList.contains("start")) {
- crumb.classList.remove("start");
- newStartNeeded = true;
- }
-
- if (crumb.classList.contains("end")) {
- crumb.classList.remove("end");
- newEndNeeded = true;
- }
-
- continue;
- }
-
- collapsedRun = collapsed;
-
- if (newEndNeeded) {
- newEndNeeded = false;
- crumb.classList.add("end");
- }
- } else {
- collapsedRun = true;
- }
- crumb = crumb.nextSibling;
+ if (crumb.classList.contains('end')) {
+ crumb.classList.remove('end');
+ newEndNeeded = true;
}
- if (newStartNeeded) {
- crumb = crumbs.lastChild;
- while (crumb) {
- if (!crumb.classList.contains("hidden")) {
- crumb.classList.add("start");
- break;
- }
- crumb = crumb.previousSibling;
- }
- }
- }
+ continue;
+ }
- /**
- * @param {!Element} crumb
- */
- function compact(crumb)
- {
- if (crumb.classList.contains("hidden"))
- return;
- crumb.classList.add("compact");
- }
+ collapsedRun = collapsed;
- /**
- * @param {!Element} crumb
- * @param {boolean=} dontCoalesce
- */
- function collapse(crumb, dontCoalesce)
- {
- if (crumb.classList.contains("hidden"))
- return;
- crumb.classList.add("collapsed");
- crumb.classList.remove("compact");
- if (!dontCoalesce)
- coalesceCollapsedCrumbs();
+ if (newEndNeeded) {
+ newEndNeeded = false;
+ crumb.classList.add('end');
+ }
+ } else {
+ collapsedRun = true;
}
+ crumb = crumb.nextSibling;
+ }
- if (!focusedCrumb) {
- // When not focused on a crumb we can be biased and collapse less important
- // crumbs that the user might not care much about.
-
- // Compact child crumbs.
- if (makeCrumbsSmaller(compact, ChildSide))
- return;
-
- // Collapse child crumbs.
- if (makeCrumbsSmaller(collapse, ChildSide))
- return;
+ if (newStartNeeded) {
+ crumb = crumbs.lastChild;
+ while (crumb) {
+ if (!crumb.classList.contains('hidden')) {
+ crumb.classList.add('start');
+ break;
+ }
+ crumb = crumb.previousSibling;
}
+ }
+ }
- // Compact ancestor crumbs, or from both sides if focused.
- if (makeCrumbsSmaller(compact, focusedCrumb ? BothSides : AncestorSide))
- return;
-
- // Collapse ancestor crumbs, or from both sides if focused.
- if (makeCrumbsSmaller(collapse, focusedCrumb ? BothSides : AncestorSide))
- return;
-
- if (!selectedCrumb)
- return;
-
- // Compact the selected crumb.
- compact(selectedCrumb);
- if (crumbsAreSmallerThanContainer())
- return;
+ /**
+ * @param {!Element} crumb
+ */
+ function compact(crumb) {
+ if (crumb.classList.contains('hidden'))
+ return;
+ crumb.classList.add('compact');
+ }
- // Collapse the selected crumb as a last resort. Pass true to prevent coalescing.
- collapse(selectedCrumb, true);
- },
+ /**
+ * @param {!Element} crumb
+ * @param {boolean=} dontCoalesce
+ */
+ function collapse(crumb, dontCoalesce) {
+ if (crumb.classList.contains('hidden'))
+ return;
+ crumb.classList.add('collapsed');
+ crumb.classList.remove('compact');
+ if (!dontCoalesce)
+ coalesceCollapsedCrumbs();
+ }
+
+ if (!focusedCrumb) {
+ // When not focused on a crumb we can be biased and collapse less important
+ // crumbs that the user might not care much about.
+
+ // Compact child crumbs.
+ if (makeCrumbsSmaller(compact, ChildSide))
+ return;
+
+ // Collapse child crumbs.
+ if (makeCrumbsSmaller(collapse, ChildSide))
+ return;
+ }
+
+ // Compact ancestor crumbs, or from both sides if focused.
+ if (makeCrumbsSmaller(compact, focusedCrumb ? BothSides : AncestorSide))
+ return;
+
+ // Collapse ancestor crumbs, or from both sides if focused.
+ if (makeCrumbsSmaller(collapse, focusedCrumb ? BothSides : AncestorSide))
+ return;
+
+ if (!selectedCrumb)
+ return;
+
+ // Compact the selected crumb.
+ compact(selectedCrumb);
+ if (crumbsAreSmallerThanContainer())
+ return;
+
+ // Collapse the selected crumb as a last resort. Pass true to prevent coalescing.
+ collapse(selectedCrumb, true);
+ }
+};
- __proto__: WebInspector.HBox.prototype
+/** @enum {symbol} */
+WebInspector.ElementsBreadcrumbs.Events = {
+ NodeSelected: Symbol('NodeSelected')
};

Powered by Google App Engine
This is Rietveld 408576698