|
296 | 296 | document.onkeydown = handleShortcut;
|
297 | 297 | document.onclick = function(ev) {
|
298 | 298 | if (hasClass(ev.target, 'collapse-toggle')) {
|
299 |
| - collapseDocs(ev.target); |
| 299 | + collapseDocs(ev.target, "toggle"); |
300 | 300 | } else if (hasClass(ev.target.parentNode, 'collapse-toggle')) {
|
301 |
| - collapseDocs(ev.target.parentNode); |
| 301 | + collapseDocs(ev.target.parentNode, "toggle"); |
302 | 302 | } else if (ev.target.tagName === 'SPAN' && hasClass(ev.target.parentNode, 'line-numbers')) {
|
303 | 303 | var prev_id = 0;
|
304 | 304 |
|
|
1618 | 1618 | e.innerHTML = labelForToggleButton(false);
|
1619 | 1619 | });
|
1620 | 1620 | toggle.title = "collapse all docs";
|
1621 |
| - onEach(document.getElementsByClassName("docblock"), function(e) { |
1622 |
| - e.style.display = 'block'; |
1623 |
| - }); |
1624 |
| - onEach(document.getElementsByClassName("toggle-label"), function(e) { |
1625 |
| - e.style.display = 'none'; |
1626 |
| - }); |
1627 |
| - onEach(document.getElementsByClassName("toggle-wrapper"), function(e) { |
1628 |
| - removeClass(e, "collapsed"); |
1629 |
| - }); |
1630 | 1621 | onEach(document.getElementsByClassName("collapse-toggle"), function(e) {
|
1631 |
| - onEveryMatchingChild(e, "inner", function(i_e) { |
1632 |
| - i_e.innerHTML = labelForToggleButton(false); |
1633 |
| - }); |
| 1622 | + collapseDocs(e, "show"); |
1634 | 1623 | });
|
1635 | 1624 | } else {
|
1636 | 1625 | addClass(toggle, "will-expand");
|
1637 | 1626 | onEveryMatchingChild(toggle, "inner", function(e) {
|
1638 | 1627 | e.innerHTML = labelForToggleButton(true);
|
1639 | 1628 | });
|
1640 | 1629 | toggle.title = "expand all docs";
|
1641 |
| - onEach(document.getElementsByClassName("docblock"), function(e) { |
1642 |
| - e.style.display = 'none'; |
1643 |
| - }); |
1644 |
| - onEach(document.getElementsByClassName("toggle-label"), function(e) { |
1645 |
| - e.style.display = 'inline-block'; |
1646 |
| - }); |
1647 |
| - onEach(document.getElementsByClassName("toggle-wrapper"), function(e) { |
1648 |
| - addClass(e, "collapsed"); |
1649 |
| - }); |
| 1630 | + |
1650 | 1631 | onEach(document.getElementsByClassName("collapse-toggle"), function(e) {
|
1651 |
| - onEveryMatchingChild(e, "inner", function(i_e) { |
1652 |
| - i_e.innerHTML = labelForToggleButton(true); |
1653 |
| - }); |
| 1632 | + collapseDocs(e, "hide"); |
1654 | 1633 | });
|
1655 | 1634 | }
|
1656 | 1635 | }
|
1657 | 1636 |
|
1658 |
| - function collapseDocs(toggle) { |
| 1637 | + function collapseDocs(toggle, mode) { |
1659 | 1638 | if (!toggle || !toggle.parentNode) {
|
1660 | 1639 | return;
|
1661 | 1640 | }
|
1662 |
| - var relatedDoc = toggle.parentNode.nextElementSibling; |
1663 |
| - if (hasClass(relatedDoc, "stability")) { |
1664 |
| - relatedDoc = relatedDoc.nextElementSibling; |
1665 |
| - } |
1666 |
| - if (hasClass(relatedDoc, "docblock")) { |
1667 |
| - if (!isHidden(relatedDoc)) { |
1668 |
| - relatedDoc.style.display = 'none'; |
1669 |
| - onEach(toggle.childNodes, function(e) { |
1670 |
| - if (hasClass(e, 'toggle-label')) { |
| 1641 | + |
| 1642 | + function adjustToggle(arg) { |
| 1643 | + return function(e) { |
| 1644 | + if (hasClass(e, 'toggle-label')) { |
| 1645 | + if (arg) { |
1671 | 1646 | e.style.display = 'inline-block';
|
1672 |
| - } |
1673 |
| - if (hasClass(e, 'inner')) { |
1674 |
| - e.innerHTML = labelForToggleButton(true); |
1675 |
| - } |
1676 |
| - }); |
1677 |
| - addClass(toggle.parentNode, 'collapsed'); |
1678 |
| - } else { |
1679 |
| - relatedDoc.style.display = 'block'; |
1680 |
| - removeClass(toggle.parentNode, 'collapsed'); |
1681 |
| - onEach(toggle.childNodes, function(e) { |
1682 |
| - if (hasClass(e, 'toggle-label')) { |
| 1647 | + } else { |
1683 | 1648 | e.style.display = 'none';
|
1684 | 1649 | }
|
1685 |
| - if (hasClass(e, 'inner')) { |
1686 |
| - e.innerHTML = labelForToggleButton(false); |
| 1650 | + } |
| 1651 | + if (hasClass(e, 'inner')) { |
| 1652 | + e.innerHTML = labelForToggleButton(arg); |
| 1653 | + } |
| 1654 | + }; |
| 1655 | + }; |
| 1656 | + |
| 1657 | + if (!hasClass(toggle.parentNode, "impl")) { |
| 1658 | + var relatedDoc = toggle.parentNode.nextElementSibling; |
| 1659 | + if (hasClass(relatedDoc, "stability")) { |
| 1660 | + relatedDoc = relatedDoc.nextElementSibling; |
| 1661 | + } |
| 1662 | + if (hasClass(relatedDoc, "docblock")) { |
| 1663 | + var action = mode; |
| 1664 | + if (action == "toggle") { |
| 1665 | + if(hasClass(relatedDoc, "hidden-by-usual-hider")) { |
| 1666 | + action="show"; |
| 1667 | + } else { |
| 1668 | + action="hide"; |
| 1669 | + } |
| 1670 | + } |
| 1671 | + if (action == "hide") { |
| 1672 | + addClass(relatedDoc, "hidden-by-usual-hider"); |
| 1673 | + onEach(toggle.childNodes, adjustToggle(true)); |
| 1674 | + addClass(toggle.parentNode, 'collapsed'); |
| 1675 | + } else if (action == "show") { |
| 1676 | + removeClass(relatedDoc, "hidden-by-usual-hider"); |
| 1677 | + removeClass(toggle.parentNode, 'collapsed'); |
| 1678 | + onEach(toggle.childNodes, adjustToggle(false)); |
| 1679 | + } |
| 1680 | + } |
| 1681 | + } else { |
| 1682 | + // we are collapsing the impl block |
| 1683 | + function implHider(addOrRemove) { |
| 1684 | + return function(n) { |
| 1685 | + if(hasClass(n, "method")) { |
| 1686 | + if (addOrRemove) { |
| 1687 | + addClass(n, "hidden-by-impl-hider"); |
| 1688 | + } else { |
| 1689 | + removeClass(n, "hidden-by-impl-hider"); |
| 1690 | + } |
| 1691 | + var ns = n.nextElementSibling; |
| 1692 | + while(true) { |
| 1693 | + if (ns && ( |
| 1694 | + hasClass(ns, "docblock") || |
| 1695 | + hasClass(ns, "stability") || |
| 1696 | + false |
| 1697 | + )) { |
| 1698 | + if (addOrRemove) { |
| 1699 | + addClass(ns, "hidden-by-impl-hider"); |
| 1700 | + } else { |
| 1701 | + removeClass(ns, "hidden-by-impl-hider"); |
| 1702 | + } |
| 1703 | + ns = ns.nextElementSibling; |
| 1704 | + continue; |
| 1705 | + } |
| 1706 | + break; |
| 1707 | + } |
1687 | 1708 | }
|
1688 |
| - }); |
| 1709 | + } |
| 1710 | + } |
| 1711 | + |
| 1712 | + var relatedDoc = toggle.parentNode; |
| 1713 | + |
| 1714 | + while (!hasClass(relatedDoc, "impl-items")) { |
| 1715 | + relatedDoc = relatedDoc.nextElementSibling; |
| 1716 | + } |
| 1717 | + |
| 1718 | + if (!relatedDoc) return; |
| 1719 | + |
| 1720 | + // Hide all functions, but not associated types/consts |
| 1721 | + |
| 1722 | + var action = mode; |
| 1723 | + if (action == "toggle") { |
| 1724 | + if(hasClass(relatedDoc, "fns-now-collapsed")) { |
| 1725 | + action="show"; |
| 1726 | + } else { |
| 1727 | + action="hide"; |
| 1728 | + } |
| 1729 | + } |
| 1730 | + |
| 1731 | + if(action == "show") { |
| 1732 | + removeClass(relatedDoc, "fns-now-collapsed"); |
| 1733 | + onEach(toggle.childNodes, adjustToggle(false)); |
| 1734 | + onEach(relatedDoc.childNodes, implHider(false)); |
| 1735 | + } else if (action == "hide") { |
| 1736 | + addClass(relatedDoc, "fns-now-collapsed"); |
| 1737 | + onEach(toggle.childNodes, adjustToggle(true)); |
| 1738 | + onEach(relatedDoc.childNodes, implHider(true)); |
1689 | 1739 | }
|
1690 | 1740 | }
|
1691 | 1741 | }
|
|
1714 | 1764 | hasClass(next.nextElementSibling, 'docblock'))) {
|
1715 | 1765 | insertAfter(toggle.cloneNode(true), e.childNodes[e.childNodes.length - 1]);
|
1716 | 1766 | }
|
| 1767 | + if (hasClass(e, 'impl')) { |
| 1768 | + insertAfter(toggle.cloneNode(true), e.childNodes[e.childNodes.length - 1]); |
| 1769 | + } |
1717 | 1770 | }
|
1718 | 1771 | onEach(document.getElementsByClassName('method'), func);
|
| 1772 | + onEach(document.getElementsByClassName('impl'), func); |
1719 | 1773 | onEach(document.getElementsByClassName('impl-items'), function(e) {
|
1720 | 1774 | onEach(e.getElementsByClassName('associatedconstant'), func);
|
1721 | 1775 | });
|
|
1803 | 1857 | onEach(document.getElementById('main').getElementsByTagName('pre'), function(e) {
|
1804 | 1858 | onEach(e.getElementsByClassName('attributes'), function(i_e) {
|
1805 | 1859 | i_e.parentNode.insertBefore(createToggleWrapper(), i_e);
|
1806 |
| - collapseDocs(i_e.previousSibling.childNodes[0]); |
| 1860 | + collapseDocs(i_e.previousSibling.childNodes[0], "toggle"); |
1807 | 1861 | });
|
1808 | 1862 | });
|
1809 | 1863 |
|
|
0 commit comments