71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
window.jazzy = {'docset': false}
 | 
						|
if (typeof window.dash != 'undefined') {
 | 
						|
  document.documentElement.className += ' dash'
 | 
						|
  window.jazzy.docset = true
 | 
						|
}
 | 
						|
if (navigator.userAgent.match(/xcode/i)) {
 | 
						|
  document.documentElement.className += ' xcode'
 | 
						|
  window.jazzy.docset = true
 | 
						|
}
 | 
						|
 | 
						|
function toggleItem($link, $content) {
 | 
						|
  var animationDuration = 300;
 | 
						|
  $link.toggleClass('token-open');
 | 
						|
  $content.slideToggle(animationDuration);
 | 
						|
}
 | 
						|
 | 
						|
function itemLinkToContent($link) {
 | 
						|
  return $link.parent().parent().next();
 | 
						|
}
 | 
						|
 | 
						|
// On doc load + hash-change, open any targetted item
 | 
						|
function openCurrentItemIfClosed() {
 | 
						|
  if (window.jazzy.docset) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token');
 | 
						|
  $content = itemLinkToContent($link);
 | 
						|
  if ($content.is(':hidden')) {
 | 
						|
    toggleItem($link, $content);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
$(openCurrentItemIfClosed);
 | 
						|
$(window).on('hashchange', openCurrentItemIfClosed);
 | 
						|
 | 
						|
// On item link ('token') click, toggle its discussion
 | 
						|
$('.token').on('click', function(event) {
 | 
						|
  if (window.jazzy.docset) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  var $link = $(this);
 | 
						|
  toggleItem($link, itemLinkToContent($link));
 | 
						|
 | 
						|
  // Keeps the document from jumping to the hash.
 | 
						|
  var href = $link.attr('href');
 | 
						|
  if (history.pushState) {
 | 
						|
    history.pushState({}, '', href);
 | 
						|
  } else {
 | 
						|
    location.hash = href;
 | 
						|
  }
 | 
						|
  event.preventDefault();
 | 
						|
});
 | 
						|
 | 
						|
// Clicks on links to the current, closed, item need to open the item
 | 
						|
$("a:not('.token')").on('click', function() {
 | 
						|
  if (location == this.href) {
 | 
						|
    openCurrentItemIfClosed();
 | 
						|
  }
 | 
						|
});
 | 
						|
 | 
						|
// KaTeX rendering
 | 
						|
if ("katex" in window) {
 | 
						|
  $($('.math').each( (_, element) => {
 | 
						|
    katex.render(element.textContent, element, {
 | 
						|
      displayMode: $(element).hasClass('m-block'),
 | 
						|
      throwOnError: false,
 | 
						|
      trust: true
 | 
						|
    });
 | 
						|
  }))
 | 
						|
}
 |