{"version":3,"file":"js/01-nav.js","sources":["js/01-nav.js"],"sourcesContent":["var navigation = (function(){\n  'use strict';\n  var init = function(){\n    var $navContainer = $('.nav-container');\n    var $navToggle = $('.nav-toggle');\n\n    if ($navContainer.length <= 0) return;\n\n    $navToggle.on('click', showNav);\n    $navContainer.on('click', handlePageClick);\n\n    var $menuPanel = $navContainer.find('[data-panel=menu]').eq(0);\n    if ($menuPanel.length <= 0) return;\n\n    // fix TOC reference section from html minification changes\n    var $referenceNav = $(\"span:contains(Reference)\");\n    if($referenceNav.length <= 0) return;\n    var $addTo = $referenceNav.next();\n    var $start = $referenceNav.parent().next();\n    while($start.length > 0){\n      var $temp = $start.next();\n      $start.appendTo($addTo);\n      $start = $temp;\n    }\n\n    // Expand all first level doc categories\n    $(\".nav-menu > .nav-list > .nav-item\").addClass('is-active');\n\n    var $currentPageItem = $menuPanel.find('.is-current-page').eq(0);\n    if ($currentPageItem.length > 0) {\n      activateCurrentPath($currentPageItem);\n      scrollItemToMidpoint($currentPageItem.find('.nav-link').eq(0));\n    } else {\n      $menuPanel.scrollTop(0);\n    }\n\n    $($menuPanel).on(\"click\", \".nav-item-toggle\", function (){\n      $(this).parent().toggleClass('is-active');\n    })\n\n    $($menuPanel).on(\"click\", \".nav-text\", function (){\n      $(this).parent().toggleClass('is-active');\n    })\n\n    if($('.components .version').length === 1){\n      $('.nav-panel-explore .context .version').addClass('hide-after');\n      $('.nav-panel-explore .context').css('pointer-events', 'none');\n    }\n\n    $('.nav-container .nav .context').on('click', function () {\n      var $currentPanel = $('.nav .is-active[data-panel]');\n      var activatePanel = $currentPanel[0].dataset.panel === 'menu' ? 'explore' : 'menu';\n      $currentPanel.toggleClass('is-active');\n      $('.nav [data-panel=' + activatePanel + ']').toggleClass('is-active');\n    });\n\n    $(document).on('click', handlePageClick);\n\n    $('.nav-menu > .nav-list').on('scroll', function(e){\n      e.stopPropagation();\n    });\n\n    $(document).on('keydown', function(e){\n        if(e.which === 27){\n          closeVersionPicker();\n        }\n    });\n\n    // NOTE prevent text from being selected by double click\n    $menuPanel.on('mousedown', function (e) {\n      if (e.detail > 1) e.preventDefault();\n    });\n\n    $('#filter_titles').on('keyup', filterNavTitles);\n\n    $('#clear_filter').on(\"click\", function () {\n      $('#filter_titles').val('');\n      filterNavTitles();\n    })\n  };\n\n  $('.components .versions li a').on('click', function(e){\n    e.stopPropagation();\n    location.href = $(this)[0].href;\n    closeVersionPicker();\n  });\n\n  $('.components .versions li').on('click', function(e) {\n    e.stopPropagation();\n    var li = $(this);\n    var anchor = li.find('a');\n    anchor.click();\n  });\n\n  function activateCurrentPath (navItem) {\n    var ancestor = navItem.parent();\n    while (!(ancestor.hasClass('nav-menu'))) {\n      if (ancestor.prop('tagName') === 'LI' && ancestor.hasClass('nav-item')) {\n        ancestor.addClass('is-active is-current-path');\n      }\n      ancestor = ancestor.parent();\n    }\n    navItem.addClass('is-active is-current-page');\n  }\n\n  // Detect if the version switcher is open to close it when clicking somewhere else.\n  function handlePageClick (e) {\n    e.stopPropagation();\n    if($('.context')[0].contains(e.target)){\n      return;\n    }\n    if($('.components:visible').length > 0){\n      if(!$('.components')[0].contains(e.target)){\n        closeVersionPicker();\n      }\n    }\n  }\n\n\n  function closeVersionPicker (e) {\n    if($('.nav-panel-explore').hasClass('is-active')){\n      $('.nav-panel-explore').toggleClass('is-active');\n      $('.nav-panel-menu').toggleClass('is-active'); // Change active panel to the nav menu\n    }\n  }\n\n  function showNav (e) {\n    if ($('.nav-toggle').hasClass('is-active')) return hideNav(e);\n    $('html').addClass('is-clipped--nav');\n    $('.nav-toggle').addClass('is-active');\n    $('.nav-container').addClass('is-active');\n    $('html').on('click', hideNav);\n    e.stopPropagation();\n  }\n\n  function hideNav (e) {\n    $('.nav-toggle').removeClass('is-active');\n    $('.nav-container').removeClass('is-active');\n    $('html').removeClass('is-clipped--nav');\n    $('html').off('click', hideNav);\n    e.stopPropagation();\n  }\n\n  function scrollItemToMidpoint (el) {\n    var $nav = $('.nav-container nav');\n    var $panel = $('.nav-container [data-panel=menu]');\n    var rect = $panel[0].getBoundingClientRect();\n    var effectiveHeight = rect.height;\n    if ($nav.css(\"position\") === 'sticky') effectiveHeight -= rect.top - parseFloat($nav.css(\"top\"));\n\n    var elementHeight = el[0].getBoundingClientRect().height;\n    if ((el.offset().top + elementHeight) > effectiveHeight) {\n      // If you must scroll to see the TOC element, then move TOC so that the element\n      // is displayed about the middle of the TOC.\n      $panel.scrollTop(Math.max(0, (elementHeight - effectiveHeight) * 0.5 + el.offset().top));\n    } else {\n      // Else, just leave the user on the initial TOC (at the top) with the element highlighted.\n      $panel.scrollTop(0);\n    }\n  }\n\n  //Filter article titles in TOC using text input\n  function filterNavTitles(){\n    let input = $('#filter_titles').val().toLowerCase();\n    let title_match=false;\n    if(input==='' ){\n      $('#clear_filter, .no-results-container').hide();\n      $(\".nav-menu > .nav-list > .nav-item\").addClass('is-active');\n      $('.nav-menu > .nav-list >.nav-item .nav-item').has('.nav-item-toggle').removeClass('is-active');\n      $('.nav-item').each(function() {\n        if ($(this).css('display') === 'none') {\n            $(this).css('display', '');\n        }\n      });\n      return;\n    } \n    $('#clear_filter').show();\n    let articles = $('.nav-link , .nav-menu .nav-text');\n    articles.parent().hide();\n    articles.each(function() {\n      let article = $(this);\n      let title = article.text().toLowerCase();\n      if (title.includes(input)) {\n        title_match=true;\n        $('.no-results-container').hide();\n        article.parent().show();\n        article.parent().has('.nav-item-toggle').removeClass('is-active');\n        showAncestors(article.parent());\n        showDescendants(article.parent());\n      }\n    });\n    if(!title_match){\n      $('.no-results-container').show();\n    }\n  }\n\n  function showAncestors(item){\n    let parent = item.parents('.nav-item');\n    parent.each(function() {\n      $(this).show();\n      $(this).has('.nav-item-toggle').addClass('is-active');\n    });\n  }\n\n  function showDescendants(item) {\n    let children = item.find('.nav-item');\n    children.each(function() {\n      $(this).show();\n      $(this).has('.nav-item-toggle').removeClass('is-active');\n    });\n  }\n\n  return {\n    init: init,\n    activateCurrentPath: activateCurrentPath,\n    scrollItemToMidpoint: scrollItemToMidpoint\n  };\n})();\nnavigation.init();\n"],"names":["navigation","activateCurrentPath","navItem","ancestor","parent","hasClass","prop","addClass","handlePageClick","e","stopPropagation","$","contains","target","length","closeVersionPicker","toggleClass","showNav","hideNav","on","removeClass","off","scrollItemToMidpoint","el","$nav","$panel","rect","getBoundingClientRect","effectiveHeight","height","elementHeight","css","top","parseFloat","offset","scrollTop","Math","max","filterNavTitles","let","input","val","toLowerCase","title_match","articles","hide","has","each","this","show","article","text","includes","parents","find","location","href","click","init","$navContainer","$navToggle","$menuPanel","eq","$referenceNav","$addTo","next","$start","$temp","appendTo","$currentPageItem","$currentPanel","activatePanel","dataset","panel","document","which","detail","preventDefault"],"mappings":"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"}