Changes

Jump to navigation Jump to search
6,187 bytes removed ,  13:34, 5 November 2021
no edit summary
Line 318: Line 318:  
/* End of mw.loader.using callback */
 
/* End of mw.loader.using callback */
 
} );
 
} );
(function(window, $, mw) {
  −
    'use strict';
  −
  −
    var buttonStart = typeof window.BackToTopStart === 'number' ?
  −
            window.BackToTopStart :
  −
            window.innerHeight,
  −
        scrollSpeed = typeof window.BackToTopSpeed === 'number' ?
  −
            window.BackToTopSpeed :
  −
            600,
  −
        fadeSpeed = typeof window.BackToTopFade === 'number' ?
  −
            window.BackToTopFade :
  −
            600,
  −
        $button,
  −
        cc = mw.config.get('skin') === 'fandomdesktop' ?
  −
        $(':root').css('--theme-accent-color') :
  −
        $('.wds-community-header').css('background-color'),
  −
        theme;
  −
  −
    // Double-run protection
  −
    if (window.BackToTopLoaded) {
  −
        return;
  −
    }
  −
    window.BackToTopLoaded = true;
  −
  −
    function init() {
  −
        var $buttonChildren = $button.children('button, img, div');
     −
        $buttonChildren.hide();
+
 
        $(window).scroll(throttle(100, function() {
  −
            if ($(this).scrollTop() > buttonStart) {
  −
                switch (fadeSpeed) {
  −
                    case 0:
  −
                        $buttonChildren.show();
  −
                        break;
  −
                    default:
  −
                        $buttonChildren.fadeIn(fadeSpeed);
  −
                        break;
  −
                }
  −
            } else {
  −
                switch (fadeSpeed) {
  −
                    case 0:
  −
                        $buttonChildren.hide();
  −
                        break;
  −
                    default:
  −
                        $buttonChildren.fadeOut(fadeSpeed);
  −
                        break;
  −
                }
  −
            }
  −
        }));
  −
        mw.hook('dev.BackToTopButton').fire($button);
  −
    }
  −
  −
    function click() {
  −
        $('body, html').animate({
  −
            scrollTop: 0
  −
        }, scrollSpeed);
  −
        return false;
  −
    }
  −
  −
    function modernPreload(l) {
  −
        if (++_loaded == l) {
  −
            modernInit(window.dev.wds, window.dev.colors);
  −
        }
  −
    }
  −
  −
    function modernInit(wds, colors) {
  −
        cc    = colors.parse(cc);
  −
        theme = cc.isBright() ? '#000000' : '#ffffff';
  −
        cc    = cc.hex();
  −
        $button = $('<div>', {
  −
            id: 'BackToTopBtn',
  −
            append: [
  −
                $('<div>', {
  −
                    css: {
  −
                        background: cc,
  −
                        color:      theme,
  −
                    },
  −
                    'html': wds.icon('menu-control')
  −
                })
  −
            ],
  −
            click: click
  −
        }).appendTo(document.body);
  −
        $.proxy(modernReposition, $button.children('div'))();
  −
        $(window).on('resize', throttle(100, $.proxy(modernReposition, $button.children('div'))));
  −
        init();
  −
    }
  −
   
  −
    /* $.throttle source code */
  −
    function throttle (delay, no_trailing, callback, debounce_mode) {
  −
        var timeout_id, last_exec = 0;
  −
        if (typeof no_trailing !== 'boolean') {
  −
            debounce_mode = callback;
  −
            callback = no_trailing;
  −
            no_trailing = undefined;
  −
        }
  −
        function wrapper() {
  −
            var that = this
  −
              , elapsed = +new Date() - last_exec
  −
              , args = arguments;
  −
            function exec() {
  −
                last_exec = +new Date();
  −
                callback.apply(that, args);
  −
            }
  −
            ;function clear() {
  −
                timeout_id = undefined;
  −
            }
  −
            ;if (debounce_mode && !timeout_id) {
  −
                exec();
  −
            }
  −
            timeout_id && clearTimeout(timeout_id);
  −
            if (debounce_mode === undefined && elapsed > delay) {
  −
                exec();
  −
            } else if (no_trailing !== true) {
  −
                timeout_id = setTimeout(debounce_mode ? clear : exec, debounce_mode === undefined ? delay - elapsed : delay);
  −
            }
  −
        }
  −
        ;if ($.guid) {
  −
            wrapper.guid = callback.guid = callback.guid || $.guid++;
  −
        }
  −
        return wrapper;
  −
    };
  −
  −
    function modernReposition() {
  −
        this.css({
  −
            'right':$(window).width()/100*5,
  −
            'bottom':$('#WikiaBar #WikiaBarWrapper').height()+8
  −
        });
  −
    }
  −
  −
    function arrowInit() {
  −
        $button = $('<li>', {
  −
            click: click,
  −
            id: 'backtotop'
  −
        }).append(
  −
            $('<img>', {
  −
                src: 'https://images.wikia.nocookie.net/dev/images/' + (
  −
                    (theme === 'black' || window.BackToTopArrowBlack) ?
  −
                        'f/f2/BlackToTopArrow' :
  −
                        'c/c3/BackToTopArrow_white'
  −
                    ) + '.png'
  −
            })
  −
        ).appendTo('#WikiaBarWrapper .toolbar > .tools');
  −
        init();
  −
    }
  −
  −
    function oldInit(i18n) {
  −
        $button = $('<li>', {
  −
            click: click,
  −
            id: 'backtotop'
  −
        }).append(
  −
            $('<button>', {
  −
                css: {
  −
                    height: '20px'
  −
                },
  −
                type: 'button',
  −
                class: (mw.config.get('wgVerion') !== '1.19.24' ? 'wds-button' : 'button'),
  −
                text: (typeof window.BackToTopText === 'string' && window.BackToTopText) || i18n.msg('backToTop').plain()
  −
            })
  −
        ).appendTo('#WikiaBarWrapper .toolbar > .tools');
  −
        init();
  −
    }
  −
  −
    if (window.BackToTopModern) {
  −
        var _loaded = 0;
  −
        [
  −
            {
  −
                h: 'wds',
  −
                s: 'u:dev:MediaWiki:WDSIcons/code.js'
  −
            },
  −
            {
  −
                h:'colors',
  −
                s: 'u:dev:MediaWiki:Colors/code.js'
  −
            }
  −
        ].forEach(function(lib, i, a) {
  −
            importArticle({
  −
                type: 'script',
  −
                article: lib.s
  −
            });
  −
            mw.hook('dev.' + lib.h).add(
  −
                $.proxy(modernPreload, null, a.length)
  −
            );
  −
        });
  −
    } else if (window.BackToTopArrow) {
  −
        arrowInit();
  −
    } else {
  −
        importArticle({
  −
            type: 'script',
  −
            article: 'u:dev:MediaWiki:I18n-js/code.js'
  −
        });
  −
        mw.hook('dev.i18n').add(function (i18n) {
  −
            i18n.loadMessages('BackToTopButton').done(oldInit);
  −
        });
  −
    }
  −
    importArticle({
  −
        type: 'style',
  −
        article: 'u:dev:MediaWiki:BackToTopButton.css'
  −
    });
  −
}(this, jQuery, mediaWiki));
   
/* DO NOT ADD CODE BELOW THIS LINE */
 
/* DO NOT ADD CODE BELOW THIS LINE */

Navigation menu