app.views.Document = class Document extends app.View { static el = document; static events = { visibilitychange: "onVisibilityChange" }; static shortcuts = { help: "onHelp", preferences: "onPreferences", escape: "onEscape", superLeft: "onBack", superRight: "onForward", }; static routes = { after: "afterRoute" }; init() { this.menu = new app.views.Menu(); this.sidebar = new app.views.Sidebar(); this.addSubview(this.menu, this.addSubview(this.sidebar)); if (app.views.Resizer.isSupported()) { this.resizer = new app.views.Resizer(); this.addSubview(this.resizer); } this.content = new app.views.Content(); this.addSubview(this.content); if (!app.isSingleDoc() && !app.isMobile()) { this.path = new app.views.Path(); this.addSubview(this.path); } if (!app.isSingleDoc()) { this.settings = new app.views.Settings(); } $.on(document.body, "click", this.onClick); this.activate(); } setTitle(title) { return (this.el.title = title ? `${title} — DevDocs` : "DevDocs API Documentation"); } afterRoute(route) { if (route === "settings") { if (this.settings != null) { this.settings.activate(); } } else { if (this.settings != null) { this.settings.deactivate(); } } } onVisibilityChange() { if (this.el.visibilityState !== "visible") { return; } this.delay(() => { if (app.isMobile() !== app.views.Mobile.detect()) { location.reload(); } }, 300); } onHelp() { app.router.show("/help#shortcuts"); } onPreferences() { app.router.show("/settings"); } onEscape() { const path = !app.isSingleDoc() || location.pathname === app.doc.fullPath() ? "/" : app.doc.fullPath(); app.router.show(path); } onBack() { history.back(); } onForward() { history.forward(); } onClick(event) { const target = $.eventTarget(event); if (!target.hasAttribute("data-behavior")) { return; } $.stopEvent(event); switch (target.getAttribute("data-behavior")) { case "back": history.back(); break; case "reload": window.location.reload(); break; case "reboot": app.reboot(); break; case "hard-reload": app.reload(); break; case "reset": if (confirm("Are you sure you want to reset DevDocs?")) { app.reset(); } break; case "accept-analytics": Cookies.set("analyticsConsent", "1", { expires: 1e8 }) && app.reboot(); break; case "decline-analytics": Cookies.set("analyticsConsent", "0", { expires: 1e8 }) && app.reboot(); break; } }};
app.views.Document = class Document extends app.View {
static el = document;
static events = { visibilitychange: "onVisibilityChange" };
static shortcuts = {
help: "onHelp",
preferences: "onPreferences",
escape: "onEscape",
superLeft: "onBack",
superRight: "onForward",
};
static routes = { after: "afterRoute" };
init() {
this.menu = new app.views.Menu();
this.sidebar = new app.views.Sidebar();
this.addSubview(this.menu, this.addSubview(this.sidebar));
if (app.views.Resizer.isSupported()) {
this.resizer = new app.views.Resizer();
this.addSubview(this.resizer);
}
this.content = new app.views.Content();
this.addSubview(this.content);
if (!app.isSingleDoc() && !app.isMobile()) {
this.path = new app.views.Path();
this.addSubview(this.path);
}
if (!app.isSingleDoc()) {
this.settings = new app.views.Settings();
}
$.on(document.body, "click", this.onClick);
this.activate();
}
setTitle(title) {
return (this.el.title = title
? `${title} — DevDocs`
: "DevDocs API Documentation");
}
afterRoute(route) {
if (route === "settings") {
if (this.settings != null) {
this.settings.activate();
}
} else {
if (this.settings != null) {
this.settings.deactivate();
}
}
}
onVisibilityChange() {
if (this.el.visibilityState !== "visible") {
return;
}
this.delay(() => {
if (app.isMobile() !== app.views.Mobile.detect()) {
location.reload();
}
}, 300);
}
onHelp() {
app.router.show("/help#shortcuts");
}
onPreferences() {
app.router.show("/settings");
}
onEscape() {
const path =
!app.isSingleDoc() || location.pathname === app.doc.fullPath()
? "/"
: app.doc.fullPath();
app.router.show(path);
}
onBack() {
history.back();
}
onForward() {
history.forward();
}
onClick(event) {
const target = $.eventTarget(event);
if (!target.hasAttribute("data-behavior")) {
return;
}
$.stopEvent(event);
switch (target.getAttribute("data-behavior")) {
case "back":
history.back();
break;
case "reload":
window.location.reload();
break;
case "reboot":
app.reboot();
break;
case "hard-reload":
app.reload();
break;
case "reset":
if (confirm("Are you sure you want to reset DevDocs?")) {
app.reset();
}
break;
case "accept-analytics":
Cookies.set("analyticsConsent", "1", { expires: 1e8 }) && app.reboot();
break;
case "decline-analytics":
Cookies.set("analyticsConsent", "0", { expires: 1e8 }) && app.reboot();
break;
}
}
};