User:Arashiryuu0/wikia.js

/** * @namespace Personal_JS */   var has = Object.prototype.hasOwnProperty; importArticles({       type: 'script',        articles: [            'u:bloodborne:DOMTools.js'        ]    }); importArticles({       type: 'style',        articles: [            'u:dev:MediaWiki:FontAwesome.css',            'u:dev:MediaWiki:ModernWikiActivity.css',            'u:dev:MediaWiki:ModernProfile/Masthead.css',            'u:dev:MediaWiki:ModernProfile/Wall.css',            'u:dev:MediaWiki:ModernCommentsSection.css',            'u:dev:MediaWiki:ModernWikiActivity.css',            'u:dev:MediaWiki:FandomizedRailModules/code.css',        ]    }); function wait { if (!has.call(window, 'DOMTools')) return setTimeout(wait, 1000); pageLoaded; }   function pageLoaded { /**        * Setup */       importArticle({            type: 'script',            article: 'u:bloodborne:Tooltips.js'        }); /**        * 0         */        (function {            var headTarget = DOMTools.query('.wds-community-header__wiki-buttons.wds-button-group', document);            if (!headTarget) return;            try {                $all(headTarget, [ createElement('a', {                        className: 'wds-button wds-is-squished wds-is-secondary',                        id: 'jsReturn',                        childNodes: [                            createElement('span', { className: 'jsReturn', textContent: '\u2111', })                       ],                        style: 'font-size: 20px; font-weight: 400;',                        href: '/wiki/User:Arashiryuu0/wikia.js',                         title: 'Return to Personal JS'                    }), createElement('a', {                       className: 'wds-button wds-is-squished wds-is-secondary',                        id: 'cssReturn',                        childNodes: [                            createElement('span', { className: 'cssReturn', textContent: '\u212D', })                       ],                        style: 'font-size: 20px; font-weight: 400;',                        href: '/wiki/User:Arashiryuu0/wikia.css',                         title: 'Return to Personal CSS'                    }), createElement('a', {                        className: 'wds-button wds-is-squished wds-is-secondary',                         id: 'purgePageButton',                        childNodes: [                            createElement('span', { className: 'purgeButton', textContent: '\u262F', })                       ],                        style: 'font-size: 20px; font-weight: 400;',                        href: '?action=purge',                         title: 'Purge Page'                    }), createElement('a', {                        className: 'wds-button wds-is-squished wds-is-secondary',                         childNodes: [                            createElement('span', { className: 'userReturn', textContent: '↩' })                       ],                        style: 'font-size: 18px; font-weight: 600;',                        href: '/wiki/User:Arashiryuu0',                         title: 'Return to User Page'                    }), createElement('a', {                        className: 'wds-button wds-is-squished wds-is-secondary',                         childNodes: [                            createElement('span', { className: 'randomPage', textContent: '?' })                       ],                         style: 'font-size: 18px;',                         dataset: { tracking: 'Special:Random' },                         href: '/wiki/Special:Random',                         title: 'Random Page'                    }) ]);           } catch(e) {                console.error(e);            }        }); /**        * 1         */        (function {            if (wgNamespaceNumber !== 0) return;            var toggle,                toggleCss,                header = $_('.wds-community-header'),                wrapper = $_('.WikiaPageContentWrapper'),                $wrapper = $(wrapper);            function isHidden(x) {                return x.classList.contains('hidden') ? 'show' : 'hide';            }            function onClick {                var hidden = getComputedStyle(wrapper).display,                    state = [                        'inline-block',                        'inline-flex',                        'initial',                        'block',                        'flex'                    ];                if (state.includes(hidden)) {                    $wrapper.hide;                    wrapper.classList.add('hidden');                    this.textContent = isHidden(wrapper); } else { $wrapper.show; wrapper.classList.remove('hidden'); this.textContent = isHidden(wrapper); }           }            toggleCss = createElement('style', {                id: 'togglePageCss',                textContent: '#togglePage {'                    + 'position: relative;'                    + 'left: 2px;'                    + 'bottom: 2.2vh;'                    + 'color: whitesmoke;'                    + 'cursor: pointer;'                    + 'text-transform: uppercase;'                    + '}'            }); toggle = createElement('a', {               id: 'togglePage',                textContent: isHidden(wrapper),                'click.page': onClick            }); $every([               [document.head, toggleCss],                [header, toggle]            ]); });       /**         * 2         */        (function { var date = new Date, currentDay = date.toLocaleDateString(document.documentElement.lang, {                   weekday: 'long'                }); var day = createElement('a', {               id: 'currDay',                title: 'Today',                target: '_blank',                textContent: currentDay            }), style = createElement('style', {               id: 'EllipseFixCSS',                type: 'text/css',                textContent: '.WikiaSiteWrapper .wds-community-header .wds-community-header__wiki-buttons > .wds-dropdown > .wds-dropdown__content, .wds-dropdown.wds-is-active::after, .wds-dropdown.wds-is-active::before, .wds-dropdown:hover::after, .wds-dropdown:hover::before { display: none; } .wds-community-header__wiki-buttons > .wds-dropdown > .wds-button:hover { cursor: pointer; }'            }), stylesheet = createElement('style', {               id: 'ToggleCSS',                type: 'text/css',                textContent: '.wds-dropdown.wds-is-active:not(.wds-no-chevron)::after, .wds-dropdown.wds-is-active:not(.wds-no-chevron)::before, .wds-dropdown:not(.wds-is-touch-device):hover:not(.wds-no-chevron)::after, .wds-dropdown:not(.wds-is-touch-device):hover:not(.wds-no-chevron)::before, .wds-community-header__local-navigation .wds-dropdown:hover .wds-dropdown__content { display: none; } .wds-community-header__local-navigation .wds-dropdown:hover .wds-dropdown__toggle-chevron { transform: none; transition: transform 200ms cubic-bezier(0.6, -0.28, 0.74, 0.05); }'            }); var toggles = $$('.wds-community-header__local-navigation .wds-dropdown .wds-dropdown__toggle-chevron'), headerButton = $_('.wds-community-header__wiki-buttons > .wds-dropdown > .wds-button'); var len, i;           $all(document.head, [style, stylesheet]); function toggleEllipse { var root = this.parentElement, content; content = root.querySelector('.wds-dropdown__content'); $(content).toggle('fast'); }           function toggleChevron { var rotation = 'rotateX(180deg)', content, root = this.parentElement.parentElement; content = root.querySelector('.wds-dropdown__content'); $(content).toggle('fast'); this.style.transform = this.style.transform !== rotation ? rotation : 'none'; }           $a($_('.wds-community-header__local-navigation'), day); if (headerButton) { headerButton.setAttribute('title', 'Options'); DOMTools.css(headerButton, 'padding', '11px 3px'); DOMTools.on(headerButton, 'click.toggle', toggleEllipse); }           if (toggles.length) { len = toggles.length; i = 0; for (i; i < len; i++) DOMTools.on(toggles[i], 'click.toggle', toggleChevron); }       });        /**         * 3         */        (function { if (!wgPageName.includes('WikiActivity')) return; var article = $_('.WikiaArticle'), e,               options = { childList: true, subtree: true }; function iterate { var i = 0, selection = $$('.activity-ns-1201 > table, .activity-ns-2001 > table'), len = selection.length; for (i; i < len; i++) { if (!selection[i].classList) continue; if (DOMTools.hasClass(selection[i], 'wallfeed')) continue; DOMTools.addClass(selection[i], 'wallfeed'); log('iteration complete: ' + i, selection[i]); }           }            function handleMutation(changes) { var change, node, i, len; for (change in changes) { change = changes[change]; if (change.addedNodes.length) { i = 0; len = change.addedNodes.length; for (i; i < len; i++) { node = change.addedNodes[i]; if (node.classList && node.classList.contains('activityfeed')) iterate; }                   }                }            }            e = new MutationObserver(handleMutation); log('iterating...'); iterate; e.observe(article, options); });   }    wait; }); /** * @namespace Utility */ function log { var args = Array.prototype.slice.call(arguments); args.unshift('%c[LOG] %c%s\n\u2014', 'color: #FFCB6B;', 'color: #F78C6A;', new Date.toUTCString); return console.log.apply(this, args); } function $_(selector) { return document.querySelector(selector); } function $$(selector) { return document.querySelectorAll(selector); } function $a(target, element) { if (!target) return; return target.appendChild(element); } function $every(targets) { var targetType, elementType, elements, target, tLen, eLen, i, j;   targets = targets || []; if (!targets) return; targetType = targets.constructor.name; if (targetType !== 'Array') throw new TypeError('Must provide a 2d array.'); tLen = targets.length; i = 0; for (i; i < tLen; i++) { elements = targets[i] || 0; if (!elements) continue; elementType = elements.constructor.name; if (elementType !== 'Array') throw new TypeError('Must provide a 2d array.'); target = elements.shift; eLen = elements.length; j = 0; for (j; j < eLen; j++) $a(target, elements[j]); } } function $all(target, elements) { var len, i;   target = target || 0; if (!target) return; elements = elements || []; if ((target.constructor && !(target.constructor.name.includes('Node') || target.constructor.name.includes('Element'))) || elements.constructor.name !== 'Array') throw new TypeError('First parameter must be a target element. Second parameter must be an array!'); len = elements.length; i = 0; for (i; i < len; i++) $a(target, elements[i]); } function createElement(type, properties) { var attributes, element, events, prop, name, evName, len, val, ev, ty, pr, i;   type = type || ''; properties = properties || {}; ty = type.constructor.name; pr = properties.constructor.name; if (ty !== 'String' || pr !== 'Object') throw new TypeError('Expected: String, Object. Received: ' + ty + ', ' + pr); element = document.createElement(type); element.events = {}; attributes = [ 'text', 'class' ];   events = [ 'click', 'dblclick', 'contextmenu', 'keyup', 'keydown', 'keypress', 'mouseup', 'mousedown', 'mousemove', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave' ];   for (prop in properties) { val = properties[prop] || 0; evName = prop.split('.')[0]; if (!val) continue; name = val.constructor.name; if (attributes.includes(prop)) { if (prop === 'text') { element.textContent = val; continue; }           element.setAttribute(prop, val); } else if (events.includes(evName) && name === 'Function') { DOMTools.on(element, prop, val); } else if (prop === 'dataset' && name === 'Object') { for (i in val) element[prop][i] = val[i]; } else if (prop === 'childNodes' && name === 'Array') { i = 0; len = val.length; for (i; i < len; i++) { if (![1, 3].includes(val[i].nodeType)) continue; $a(element, val[i]); }       } else { element[prop] = val; }   }    element.props = properties; return element; } /*@end@*/
 * (function {