// TODO: This file was created by bulk-decaffeinate. // Sanity-check the conversion and remove this comment. /* * decaffeinate suggestions: * DS101: Remove unnecessary use of Array.from * DS102: Remove unnecessary code created because of implicit returns * DS103: Rewrite code to no longer use __guard__, or convert again using --optional-chaining * DS206: Consider reworking classes to avoid initClass * DS207: Consider shorter variations of null checks * Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md */ const Cls = (app.Router = class Router { static initClass() { $.extend(this.prototype, Events); this.routes = [ ['*', 'before' ], ['/', 'root' ], ['/settings', 'settings' ], ['/offline', 'offline' ], ['/about', 'about' ], ['/news', 'news' ], ['/help', 'help' ], ['/:doc-:type/', 'type' ], ['/:doc/', 'doc' ], ['/:doc/:path(*)', 'entry' ], ['*', 'notFound' ] ]; } constructor() { for (var [path, method] of Array.from(this.constructor.routes)) { page(path, this[method].bind(this)); } this.setInitialPath(); } start() { page.start(); } show(path) { page.show(path); } triggerRoute(name) { this.trigger(name, this.context); this.trigger('after', name, this.context); } before(context, next) { let res; const previousContext = this.context; this.context = context; this.trigger('before', context); if (res = next()) { this.context = previousContext; return res; } else { return; } } doc(context, next) { let doc; if (doc = app.docs.findBySlug(context.params.doc) || app.disabledDocs.findBySlug(context.params.doc)) { context.doc = doc; context.entry = doc.toEntry(); this.triggerRoute('entry'); return; } else { return next(); } } type(context, next) { let type; const doc = app.docs.findBySlug(context.params.doc); if (type = doc != null ? doc.types.findBy('slug', context.params.type) : undefined) { context.doc = doc; context.type = type; this.triggerRoute('type'); return; } else { return next(); } } entry(context, next) { let entry; const doc = app.docs.findBySlug(context.params.doc); if (!doc) { return next(); } let { path } = context.params; const { hash } = context; if (entry = doc.findEntryByPathAndHash(path, hash)) { context.doc = doc; context.entry = entry; this.triggerRoute('entry'); return; } else if (path.slice(-6) === '/index') { path = path.substr(0, path.length - 6); if (entry = doc.findEntryByPathAndHash(path, hash)) { return entry.fullPath(); } } else { path = `${path}/index`; if (entry = doc.findEntryByPathAndHash(path, hash)) { return entry.fullPath(); } } return next(); } root() { if (app.isSingleDoc()) { return '/'; } this.triggerRoute('root'); } settings(context) { if (app.isSingleDoc()) { return `/#/${context.path}`; } this.triggerRoute('settings'); } offline(context){ if (app.isSingleDoc()) { return `/#/${context.path}`; } this.triggerRoute('offline'); } about(context) { if (app.isSingleDoc()) { return `/#/${context.path}`; } context.page = 'about'; this.triggerRoute('page'); } news(context) { if (app.isSingleDoc()) { return `/#/${context.path}`; } context.page = 'news'; this.triggerRoute('page'); } help(context) { if (app.isSingleDoc()) { return `/#/${context.path}`; } context.page = 'help'; this.triggerRoute('page'); } notFound(context) { this.triggerRoute('notFound'); } isIndex() { return ((this.context != null ? this.context.path : undefined) === '/') || (app.isSingleDoc() && __guard__(this.context != null ? this.context.entry : undefined, x => x.isIndex())); } isSettings() { return (this.context != null ? this.context.path : undefined) === '/settings'; } setInitialPath() { // Remove superfluous forward slashes at the beginning of the path let path; if ((path = location.pathname.replace(/^\/{2,}/g, '/')) !== location.pathname) { page.replace(path + location.search + location.hash, null, true); } if (location.pathname === '/') { if (path = this.getInitialPathFromHash()) { page.replace(path + location.search, null, true); } else if (path = this.getInitialPathFromCookie()) { page.replace(path + location.search + location.hash, null, true); } } } getInitialPathFromHash() { try { return __guard__((new RegExp("#/(.+)")).exec(decodeURIComponent(location.hash)), x => x[1]); } catch (error) {} } getInitialPathFromCookie() { let path; if (path = Cookies.get('initial_path')) { Cookies.expire('initial_path'); return path; } } replaceHash(hash) { page.replace(location.pathname + location.search + (hash || ''), null, true); } }); Cls.initClass(); function __guard__(value, transform) { return (typeof value !== 'undefined' && value !== null) ? transform(value) : undefined; }