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 */
							 |