aboutsummaryrefslogtreecommitdiff
path: root/app/src/web/assets/js/menu.ts
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2019-02-05 23:16:29 -0500
committerGitHub <noreply@github.com>2019-02-05 23:16:29 -0500
commit8e3bfc168009c8682c4f6191d655f3ca10ae9f21 (patch)
treecf8419a06e193c08622ead5e6854b995a5eeba77 /app/src/web/assets/js/menu.ts
parent83fb36f666fbb934b74b5f763b8ffb2e56ca7761 (diff)
parentddfc310fde5f50ba52ef930287449c2e08faaca8 (diff)
downloadfrost-8e3bfc168009c8682c4f6191d655f3ca10ae9f21.tar.gz
frost-8e3bfc168009c8682c4f6191d655f3ca10ae9f21.tar.bz2
frost-8e3bfc168009c8682c4f6191d655f3ca10ae9f21.zip
Merge pull request #1334 from AllanWang/fix/offline-crash
Fix/offline crash
Diffstat (limited to 'app/src/web/assets/js/menu.ts')
-rw-r--r--app/src/web/assets/js/menu.ts59
1 files changed, 59 insertions, 0 deletions
diff --git a/app/src/web/assets/js/menu.ts b/app/src/web/assets/js/menu.ts
new file mode 100644
index 00000000..6f9dbf16
--- /dev/null
+++ b/app/src/web/assets/js/menu.ts
@@ -0,0 +1,59 @@
+// Click menu and move contents to main view
+(function () {
+ const viewport = document.querySelector("#viewport");
+ const root = document.querySelector("#root");
+ const bookmarkJewel = document.querySelector("#bookmarks_jewel");
+ if (!viewport || !root || !bookmarkJewel) {
+ console.log('Menu.js: main elements not found');
+ Frost.emit(0);
+ return
+ }
+ const menuA = bookmarkJewel.querySelector("a");
+ if (!menuA) {
+ console.log('Menu.js: menu links not found');
+ Frost.emit(0);
+ return
+ }
+ const jewel = document.querySelector('#mJewelNav');
+ if (!jewel) {
+ console.log('Menu.js: jewel is null');
+ return
+ }
+
+ const y = new MutationObserver(() => {
+ viewport.removeAttribute('style');
+ root.removeAttribute('style');
+ });
+
+ y.observe(viewport, {
+ attributes: true
+ });
+ y.observe(root, {
+ attributes: true
+ });
+
+ const x = new MutationObserver(() => {
+ const menu = document.querySelector('.mSideMenu');
+ if (menu) {
+ x.disconnect();
+ console.log("Found side menu");
+ // Transfer elements
+ while (root.firstChild) {
+ root.removeChild(root.firstChild);
+ }
+ while (menu.childNodes.length) {
+ viewport.appendChild(menu.childNodes[0]);
+ }
+ Frost.emit(0);
+ setTimeout(() => {
+ y.disconnect();
+ console.log('Unhook styler');
+ }, 500);
+ }
+ });
+ x.observe(jewel, {
+ childList: true,
+ subtree: true
+ });
+ menuA.click();
+}).call(undefined);