mirror of
				https://github.com/ml-explore/mlx.git
				synced 2025-11-04 18:48:15 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			148 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
 @licstart  The following is the entire license notice for the JavaScript code in this file.
 | 
						|
 | 
						|
 The MIT License (MIT)
 | 
						|
 | 
						|
 Copyright (C) 1997-2020 by Dimitri van Heesch
 | 
						|
 | 
						|
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 | 
						|
 and associated documentation files (the "Software"), to deal in the Software without restriction,
 | 
						|
 including without limitation the rights to use, copy, modify, merge, publish, distribute,
 | 
						|
 sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
 | 
						|
 furnished to do so, subject to the following conditions:
 | 
						|
 | 
						|
 The above copyright notice and this permission notice shall be included in all copies or
 | 
						|
 substantial portions of the Software.
 | 
						|
 | 
						|
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
 | 
						|
 BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
						|
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 | 
						|
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
						|
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
						|
 | 
						|
 @licend  The above is the entire license notice for the JavaScript code in this file
 | 
						|
 */
 | 
						|
 | 
						|
function initResizable(treeview) {
 | 
						|
  let sidenav,navtree,content,header,footer,barWidth=6;
 | 
						|
  const RESIZE_COOKIE_NAME = ''+'width';
 | 
						|
 | 
						|
  function resizeWidth() {
 | 
						|
    const sidenavWidth = $(sidenav).outerWidth();
 | 
						|
    content.css({marginLeft:parseInt(sidenavWidth)+"px"});
 | 
						|
    if (typeof page_layout!=='undefined' && page_layout==1) {
 | 
						|
      footer.css({marginLeft:parseInt(sidenavWidth)+"px"});
 | 
						|
    }
 | 
						|
    Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
 | 
						|
  }
 | 
						|
 | 
						|
  function restoreWidth(navWidth) {
 | 
						|
    content.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
 | 
						|
    if (typeof page_layout!=='undefined' && page_layout==1) {
 | 
						|
      footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
 | 
						|
    }
 | 
						|
    sidenav.css({width:navWidth + "px"});
 | 
						|
  }
 | 
						|
 | 
						|
  function resizeHeight(treeview) {
 | 
						|
    const headerHeight = header.outerHeight();
 | 
						|
    const windowHeight = $(window).height();
 | 
						|
    let contentHeight;
 | 
						|
    if (treeview)
 | 
						|
    {
 | 
						|
      const footerHeight = footer.outerHeight();
 | 
						|
      let navtreeHeight,sideNavHeight;
 | 
						|
      if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */
 | 
						|
        contentHeight = windowHeight - headerHeight - footerHeight;
 | 
						|
        navtreeHeight = contentHeight;
 | 
						|
        sideNavHeight = contentHeight;
 | 
						|
      } else if (page_layout==1) { /* DISABLE_INDEX=YES */
 | 
						|
        contentHeight = windowHeight - footerHeight;
 | 
						|
        navtreeHeight = windowHeight - headerHeight;
 | 
						|
        sideNavHeight = windowHeight;
 | 
						|
      }
 | 
						|
      navtree.css({height:navtreeHeight + "px"});
 | 
						|
      sidenav.css({height:sideNavHeight + "px"});
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      contentHeight = windowHeight - headerHeight;
 | 
						|
    }
 | 
						|
    content.css({height:contentHeight + "px"});
 | 
						|
    if (location.hash.slice(1)) {
 | 
						|
      (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView();
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  function collapseExpand() {
 | 
						|
    let newWidth;
 | 
						|
    if (sidenav.width()>0) {
 | 
						|
      newWidth=0;
 | 
						|
    } else {
 | 
						|
      const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250);
 | 
						|
      newWidth = (width>250 && width<$(window).width()) ? width : 250;
 | 
						|
    }
 | 
						|
    restoreWidth(newWidth);
 | 
						|
    const sidenavWidth = $(sidenav).outerWidth();
 | 
						|
    Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
 | 
						|
  }
 | 
						|
 | 
						|
  header  = $("#top");
 | 
						|
  content = $("#doc-content");
 | 
						|
  footer  = $("#nav-path");
 | 
						|
  sidenav = $("#side-nav");
 | 
						|
  if (!treeview) {
 | 
						|
//    title   = $("#titlearea");
 | 
						|
//    titleH  = $(title).height();
 | 
						|
//    let animating = false;
 | 
						|
//    content.on("scroll", function() {
 | 
						|
//      slideOpts = { duration: 200,
 | 
						|
//                    step: function() {
 | 
						|
//                        contentHeight = $(window).height() - header.outerHeight();
 | 
						|
//                        content.css({ height : contentHeight + "px" });
 | 
						|
//                      },
 | 
						|
//                    done: function() { animating=false; }
 | 
						|
//                  };
 | 
						|
//      if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) {
 | 
						|
//        title.slideUp(slideOpts);
 | 
						|
//        animating=true;
 | 
						|
//      } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) {
 | 
						|
//        title.slideDown(slideOpts);
 | 
						|
//        animating=true;
 | 
						|
//      }
 | 
						|
//    });
 | 
						|
  } else {
 | 
						|
    navtree = $("#nav-tree");
 | 
						|
    $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
 | 
						|
    $(sidenav).resizable({ minWidth: 0 });
 | 
						|
  }
 | 
						|
  $(window).resize(function() { resizeHeight(treeview); });
 | 
						|
  if (treeview)
 | 
						|
  {
 | 
						|
    const device = navigator.userAgent.toLowerCase();
 | 
						|
    const touch_device = device.match(/(iphone|ipod|ipad|android)/);
 | 
						|
    if (touch_device) { /* wider split bar for touch only devices */
 | 
						|
      $(sidenav).css({ paddingRight:'20px' });
 | 
						|
      $('.ui-resizable-e').css({ width:'20px' });
 | 
						|
      $('#nav-sync').css({ right:'34px' });
 | 
						|
      barWidth=20;
 | 
						|
    }
 | 
						|
    const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250);
 | 
						|
    if (width) { restoreWidth(width); } else { resizeWidth(); }
 | 
						|
  }
 | 
						|
  resizeHeight(treeview);
 | 
						|
  const url = location.href;
 | 
						|
  const i=url.indexOf("#");
 | 
						|
  if (i>=0) window.location.hash=url.substr(i);
 | 
						|
  const _preventDefault = function(evt) { evt.preventDefault(); };
 | 
						|
  if (treeview)
 | 
						|
  {
 | 
						|
    $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
 | 
						|
    $(".ui-resizable-handle").dblclick(collapseExpand);
 | 
						|
    // workaround for firefox
 | 
						|
    $("body").css({overflow: "hidden"});
 | 
						|
  }
 | 
						|
  $(window).on('load',function() { resizeHeight(treeview); });
 | 
						|
}
 | 
						|
/* @license-end */
 |