{"version":3,"file":"js/10-navscroll.js","sources":["js/10-navscroll.js"],"sourcesContent":["/*******************************************************************************\n * Copyright (c) 2019 IBM Corporation and others.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors:\n *     IBM Corporation - initial API and implementation\n *******************************************************************************/\nvar navScroll = (function() {\n  $(document).ready(function() {\n    var scrollAllowed = true;\n    var prevScrollTop = 0;\n    $(window).scroll(function() {\n      if (!scrollAllowed) {\n        return;\n      }\n      var currScrollTop = $(this).scrollTop();\n      // if scrolled past nav bar, determine whether to hide or show nav bar\n      if ($(\".nav-panel-explore\").hasClass(\"is-active\")) {\n        showNav();\n      } else if (currScrollTop > $(\"#nav_bar\").outerHeight()) {\n        // make docs toolbar position sticky once you scroll past nav bar\n        $(\".toolbar\").css(\"position\", \"sticky\");\n\n        // if scrolling down, hide nav bar\n        if (currScrollTop > prevScrollTop) {\n          hideNav();\n        }\n        // if scrolling up, show nav bar\n        else {\n          showNav();\n        }\n      } else {\n        $(\"#code_column\").css({ position: \"absolute\", top: \"\" });\n        $(\".toolbar\").css({ position: \"static\", top: \"\" });\n        $(\".nav\").css(\"top\", \"\");\n      }\n\n      // When page scrolled back to top: Make nav bar no longer fixed, reset body margin-top\n      if (currScrollTop == 0) {\n        $(\"#nav_bar\").removeClass(\"fixed_top\");\n        $(\"body\").css(\"margin-top\", \"0px\");\n        $(\"#toc_column\").css({ position: \"\", top: \"\" });\n      }\n\n      // make toc scroll off of screen at Nice Work section in guides\n      if (typeof isBackgroundBottomVisible === \"function\") {\n        if (isBackgroundBottomVisible()) {\n          handleTOCScrolling();\n        }\n      }\n\n      prevScrollTop = currScrollTop;\n    });\n\n    $(window).on(\"resize\", function() {\n      if (\n        $(\".toolbar\").css(\"position\") == \"sticky\" &&\n        $(\"#nav_bar\").hasClass(\"fixed_top\")\n      ) {\n        $(\".toolbar\").css(\"top\", $(\"#nav_bar\").outerHeight() + \"px\");\n      }\n    });\n  });\n\n  // slide nav bar into view, move down elements that are fixed to top of screen\n  function showNav() {\n    var nav_height = $(\"#nav_bar\").outerHeight();\n\n    // fix nav bar to top of screen\n    $(\"#nav_bar\").addClass(\"fixed_top\");\n    $(\"#nav_bar\").css(\"top\", \"0px\");\n\n    // push toc column, toc indicator and code column down below nav bar\n    $(\"#toc_column\").css(\"top\", nav_height + \"px\");\n    if (window.outerWidth > 1440) {\n      $(\"#toc_inner\").css(\"margin-top\", nav_height + \"px\");\n    }\n    $(\"#toc_indicator\").css(\"margin-top\", nav_height + \"px\");\n    $(\"#code_column\").css({ position: \"fixed\", top: nav_height + \"px\" });\n\n    // add margin-top to body so page doesn't jump when nav slides into view\n    $(\"body\").css(\"margin-top\", nav_height + \"px\");\n\n    // in guides, if mobile toc accodion is fixed to top of screen, move toc accordion below fixed nav bar\n    if ($(\"#mobile_toc_accordion_container\").hasClass(\"fixed_toc_accordion\")) {\n      $(\"#mobile_toc_accordion_container\").css(\"top\", nav_height + \"px\");\n    }\n\n    // on /guides, if tablet toc accordion is fixed to top of screen, move toc accordion below fixed nav bar\n    if ($(\"#tablet_toc_accordion_container\").css(\"position\") === \"fixed\") {\n      $(\"#tablet_toc_accordion_container\").css(\"top\", nav_height + \"px\");\n    }\n\n    // adjust docs toolbar and nav position\n    $(\".toolbar\").css(\"top\", nav_height + \"px\");\n    if (window.outerWidth < 1024) {\n      $(\".nav-container\").css(\n        \"top\",\n        nav_height + $(\".toolbar\").outerHeight() + \"px\"\n      );\n      $(\".nav\").css(\"top\", \"\");\n    } else {\n      $(\".nav\").css(\"top\", nav_height + \"px\");\n    }\n\n    // move config breadcrumb down when nav bar in view\n    $(\".contentStickyBreadcrumbHeader\").css(\n      \"top\",\n      nav_height + $(\".toolbar\").outerHeight() + \"px\"\n    );\n  }\n\n  // slide nav bar back out of view, reset elements that were pushed down\n  function hideNav() {\n    // reset nav bar and move off screen\n    $(\"#nav_bar\").removeClass(\"fixed_top\");\n    $(\"#nav_bar\").css({ top: \"-60px\" });\n\n    // reset toc column, toc indicator and code column position\n    $(\"#toc_column\").css(\"top\", \"0px\");\n    if (window.outerWidth > 1440) {\n      $(\"#toc_inner\").css(\"margin-top\", \"0px\");\n    }\n    $(\"#toc_indicator\").css(\"margin-top\", \"0px\");\n    $(\"#code_column\").css({ position: \"fixed\", top: \"0px\" });\n\n    // reset body margin-top\n    $(\"body\").css(\"margin-top\", \"0px\");\n\n    // fix mobile and tablet toc accordion to top of screen again\n    $(\"#mobile_toc_accordion_container\").css(\"top\", \"0px\");\n    $(\"#tablet_toc_accordion_container\").css(\"top\", \"0px\");\n\n    // adjust docs toolbar and nav position\n    $(\".toolbar\").css(\"top\", \"0px\");\n    if (window.outerWidth < 1024) {\n      $(\".nav-container\").css(\"top\", $(\".toolbar\").outerHeight() + \"px\");\n      $(\".nav\").css(\"top\", \"\");\n    } else {\n      $(\".nav-container\").css(\"top\", \"\");\n      $(\".nav\").css(\"top\", \"\");\n    }\n\n    // move config breadcrumb back up when nav bar slides out of view\n    $(\".contentStickyBreadcrumbHeader\").css(\n      \"top\",\n      $(\".toolbar\").outerHeight() + \"px\"\n    );\n  }\n\n  function preventScrolling() {\n    scrollAllowed = false;\n  }\n\n  function allowScrolling() {\n    scrollAllowed = true;\n  }\n\n  return {\n    showNav: showNav,\n    hideNav: hideNav,\n    preventScrolling: preventScrolling,\n    allowScrolling: allowScrolling\n  };\n})();\n"],"names":["navScroll","showNav","nav_height","$","outerHeight","addClass","css","window","outerWidth","position","top","hasClass","hideNav","removeClass","document","ready","prevScrollTop","scroll","currScrollTop","this","scrollTop","isBackgroundBottomVisible","handleTOCScrolling","on","preventScrolling","scrollAllowed","allowScrolling"],"mappings":"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"}