(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory() : typeof define === 'function' && define.amd ? define(factory) : (factory()); }(this, (function () { 'use strict'; function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } var componentQuery = createCommonjsModule(function (module, exports) { function one(selector, el) { return el.querySelector(selector); } exports = module.exports = function (selector, el) { el = el || document; return one(selector, el); }; exports.all = function (selector, el) { el = el || document; return el.querySelectorAll(selector); }; exports.engine = function (obj) { if (!obj.one) throw new Error('.one callback required'); if (!obj.all) throw new Error('.all callback required'); one = obj.one; exports.all = obj.all; return exports; }; }); var componentQuery_1 = componentQuery.all; var componentQuery_2 = componentQuery.engine; /** * Module dependencies. */ try { var query$1 = componentQuery; } catch (err) { var query$1 = componentQuery; } /** * Element prototype. */ var proto = Element.prototype; /** * Vendor function. */ var vendor = proto.matches || proto.webkitMatchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector; /** * Expose `match()`. */ var componentMatchesSelector = match; /** * Match `el` to `selector`. * * @param {Element} el * @param {String} selector * @return {Boolean} * @api public */ function match(el, selector) { if (!el || el.nodeType !== 1) return false; if (vendor) return vendor.call(el, selector); var nodes = query$1.all(selector, el.parentNode); for (var i = 0; i < nodes.length; ++i) { if (nodes[i] == el) return true; } return false; } /** * Module Dependencies */ try { var matches = componentMatchesSelector; } catch (err) { var matches = componentMatchesSelector; } /** * Export `closest` */ var componentClosest = closest; /** * Closest * * @param {Element} el * @param {String} selector * @param {Element} scope (optional) */ function closest(el, selector, scope) { scope = scope || document.documentElement; // walk up the dom while (el && el !== scope) { if (matches(el, selector)) return el; el = el.parentNode; } // check scope for match return matches(el, selector) ? el : null; } function styleInject(css, ref) { if (ref === void 0) ref = {}; var insertAt = ref.insertAt; if (!css || typeof document === 'undefined') { return; } var head = document.head || document.getElementsByTagName('head')[0]; var style = document.createElement('style'); style.type = 'text/css'; if (insertAt === 'top') { if (head.firstChild) { head.insertBefore(style, head.firstChild); } else { head.appendChild(style); } } else { head.appendChild(style); } if (style.styleSheet) { style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } } var css = ".docsify-pagination-container{display:flex;flex-wrap:wrap;justify-content:space-between;overflow:hidden;margin:5em 0 1em;border-top:1px solid rgba(0,0,0,.07)}.pagination-item{margin-top:2.5em}.pagination-item a,.pagination-item a:hover{text-decoration:none}.pagination-item a{color:currentColor}.pagination-item a:hover .pagination-item-title{text-decoration:underline}.pagination-item:not(:last-child) a .pagination-item-label,.pagination-item:not(:last-child) a .pagination-item-subtitle,.pagination-item:not(:last-child) a .pagination-item-title{opacity:.3;transition:all .2s}.pagination-item:last-child .pagination-item-label,.pagination-item:not(:last-child) a:hover .pagination-item-label{opacity:.6}.pagination-item:not(:last-child) a:hover .pagination-item-title{opacity:1}.pagination-item-label{font-size:.8em}.pagination-item-label>*{line-height:1;vertical-align:middle}.pagination-item-label svg{height:.8em;width:auto;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1px}.pagination-item--next{margin-left:auto;text-align:right}.pagination-item--next svg{margin-left:.5em}.pagination-item--previous svg{margin-right:.5em}.pagination-item-title{font-size:1.6em}.pagination-item-subtitle{text-transform:uppercase;opacity:.3}"; styleInject(css); var classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; var createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /** * constants */ var ROUTER_MODE = { HASH: 'hash', HISTORY: 'history' }; var DEFAULT_OPTIONS = function DEFAULT_OPTIONS(config) { return { previousText: 'PREVIOUS', nextText: 'NEXT', crossChapter: false, crossChapterText: false, routerMode: config.routerMode || ROUTER_MODE.HASH }; }; var CONTAINER_CLASSNAME = 'docsify-pagination-container'; /** * basic utilities */ function toArray(elements) { return Array.prototype.slice.call(elements); } function findChapter(element) { var container = componentClosest(element, 'div > ul > li'); return componentQuery('p', container); } function findHyperlink(element) { return element.href ? element : componentQuery('a', element); } function isALinkTo(path, element) { if (arguments.length === 1) { return function (element) { return isALinkTo(path, element); }; } return decodeURIComponent(element.getAttribute('href').split('?')[0]) === decodeURIComponent(path); } /** * core renderer */ var Link = function () { function Link(element) { classCallCheck(this, Link); if (!element) { return; } this.chapter = findChapter(element); this.hyperlink = findHyperlink(element); let badsites = ["introduction", "recover-mii-channel", "recover-ios", "common-issues-fixes", "fix-errcode-112-1037", "about", "block-updates", "unblock-updates", "dump-games", "dump-wii-games", "uninstall-cbhc", "faq"] let currentpage = window.location.href let lastItem = currentpage.split('/').pop() if (badsites.includes(lastItem)){ throw new NoButtons("No next button is shown."); } } createClass(Link, [{ key: 'toJSON', value: function toJSON() { if (!this.hyperlink) { return; } return { name: this.hyperlink.innerText, href: this.hyperlink.getAttribute('href'), chapterName: this.chapter && this.chapter.innerText || '' }; } }]); return Link; }(); function pagination(vm, _ref) { var crossChapter = _ref.crossChapter, routerMode = _ref.routerMode; try { var path = routerMode === ROUTER_MODE.HISTORY ? vm.route.path : '#' + vm.route.path; var all = toArray(componentQuery.all('.sidebar li a')).filter(function (element) { return !componentMatchesSelector(element, '.section-link'); }); var active = all.find(isALinkTo(path)); var group = toArray((componentClosest(active, 'ul') || {}).children).filter(function (element) { return element.tagName.toUpperCase() === 'LI'; }); var index = crossChapter ? all.findIndex(isALinkTo(path)) : group.findIndex(function (item) { var hyperlink = findHyperlink(item); return hyperlink && isALinkTo(path, hyperlink); }); var links = crossChapter ? all : group; return { prev: new Link(links[index - 1]).toJSON(), next: new Link(links[index + 1]).toJSON() }; } catch (error) { return {}; } } var template = { container: function container() { return '
'; }, inner: function inner(data, options) { return [data.prev && '\n
\n \n
\n \n \n \n ' + options.previousText + '\n
\n
' + data.prev.name + '
\n ', data.prev && options.crossChapterText && '
' + data.prev.chapterName + '
', data.prev && '
\n
\n ', data.next && '\n
\n \n
\n ' + options.nextText + '\n \n \n \n
\n
' + data.next.name + '
\n ', data.next && options.crossChapterText && '
' + data.next.chapterName + '
', data.next && '
\n
\n '].filter(Boolean).join(''); } }; /** * installation */ function install(hook, vm) { var options = _extends({}, DEFAULT_OPTIONS(vm.config), vm.config.pagination || {}); function render() { var container = componentQuery('.' + CONTAINER_CLASSNAME); if (!container) { return; } container.innerHTML = template.inner(pagination(vm, options), options); } hook.afterEach(function (html) { return html + template.container(); }); hook.doneEach(function () { return render(); }); } window.$docsify = window.$docsify || {}; window.$docsify.plugins = [install].concat(window.$docsify.plugins || []); })));