미디어위키:Gadget-CollapsibleSidebar.js

/* CollapsibleSidebar- @author ykhwong
*/
$(function () {
const sidebarCookieName = 'sidebarHidden';
const commonImgUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb";
const img = {
	next: commonImgUrl + "/9/95/Icons8_flat_next.svg/15px-Icons8_flat_next.svg.png",
	prev: commonImgUrl + "/b/bd/Icons8_flat_previous.svg/15px-Icons8_flat_previous.svg.png"
};
const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
const cookieExpires = 30;
var sidebarHidden = false;
var sidebarGadgetLoaded = false;
var fadeSpeed=15;
var lastTime = 0;
var sDiv, timer;
function autoHide() {
	if( isMobile ) {
		return;
	}
	sDiv = document.getElementById('sidebarCollapse').style;
	sDiv.opacity = 0;
	$(document).on('mousemove', function(e){
		var thisTime = Math.round(Date.now()/1000);
		if ((thisTime - lastTime)  160) {
		$("#sidebarCollapse").css("left", sidebarHidden ? "20px" : "165px");
		$("#left-navigation").css("margin-left", sidebarHidden ? "31px" : "176px");
	} else {
		$("#sidebarCollapse").css("left", sidebarHidden ? "4px" : "149px");
		$("#left-navigation").css("margin-left", sidebarHidden ? "15px" : "160px");
	}
	if (mw.user.options.get("visualeditor-newwikitext") === "1") {
		var menuloc = $(".oo-ui-toolbar").offset().top + $(".oo-ui-toolbar-bar").outerHeight(true);	
		$("#sidebarCollapse").css("top", ( menuloc + 15 ) + "px");
	}
}
function sidebarHiddenProc() {
	var sidebarCollapse = "";
	sidebarGadgetLoaded = true;
	sidebarCollapse = $().attr({
		'id': 'sidebarCollapse',
		'src': img.prev,
	}).css({
		'position': 'fixed',
		'float': 'right',
		'width': '13px',
		'height': '13px',
		'top': '140px',
		'cursor': 'pointer',
		'padding': '5px',
		'-webkit-border-radius': '50px',
		'-moz-border-radius': '50px',
		'border-radius': '50px',
		'text-align': 'center',
		'border': '1px solid rgb(199, 238, 255)',
		'background-color': 'white',
		'z-index': '2'
	});
	sidebarCollapse.appendTo('#mw-navigation');
	if ( mw.cookie.get( sidebarCookieName ) === "true" ) {
		hideSidebar();
	}
	updatePos();
	autoHide();
	$(window).resize(function() {
		updatePos();
	});
	$("#sidebarCollapse").mouseover(function() {
		$(this).css("background-color", "rgb(242, 251, 255)");
	}).mouseout(function() {
		$(this).css("background-color", "white");
	}).click(function() {
		sidebarHidden ? showSidebar() : hideSidebar();
	});
}
function sidebarHiddenInit() {
	// Should only work with vector skin
	// Exception handling: Blankpage and RTRC
	if (
		
/vector/.test( mw.config.get( 'skin' ) ) 
		$(".skin-vector-legacy").length === 0 
$(".mw-special-Blankpage").length !== 0
	) {
		return;
	}
	if ( $('#mw-navigation').length === 0 ) {
		var obs = new MutationObserver(function(mutations, observer) {
			if (sidebarGadgetLoaded) {
				return;
			}
			for (var i=0; i<mutations.length; ++i) {
				for (var j=0; j<mutationsi.addedNodes.length; ++j) {
					if (mutationsi.addedNodesj.id == "mw-navigation") {
						sidebarHiddenProc();
						break;
					}
				}
			}
		});
		obs.observe(document.body, { childList: true });
		return;
	}
	sidebarHiddenProc();
}
mw.loader.using('mediawiki.cookie').then(function () {
	sidebarHiddenInit();
});
}());