diff options
Diffstat (limited to 'js/navigation.ts')
-rw-r--r-- | js/navigation.ts | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/js/navigation.ts b/js/navigation.ts deleted file mode 100644 index c1af99f..0000000 --- a/js/navigation.ts +++ /dev/null @@ -1,97 +0,0 @@ -namespace Ach { - export async function loadPage(page_name: string, anchor?: string) { - console.log(`loading page \`${page_name}\``); - - window.scrollTo({ - top: 0.0, - left: undefined, - behavior: "smooth", - }); - - let url = `/html/${page_name}.html`; - console.log(`note: page is at "${url}"`); - - window.history.pushState(page_name, "", url); - - let response = await fetch(url); - - if (!response.ok) { - throw new Error(`unable to load page: \"${response.status}\"`); - } - - let markup = await response.text(); - - let parser = new DOMParser(); - let dom = parser.parseFromString(markup, "text/html"); - - let body = Ach.getFirstElement(document, "body"); - - let title = Ach.getFirstElement(document, "title"); - let page = Ach.getOnlyElement(document, "page"); - - let newTitle = Ach.getFirstElement(dom, "title"); - let newPage = Ach.getOnlyElement(dom, "page"); - - title.replaceWith(newTitle); - body.setAttribute("data-page", page_name); - page.replaceWith(newPage); - - initImages(); - initLinks(); - - if (anchor) { - console.log(`going to anchor \`${anchor}\``); - - anchor = `anchor.${anchor}`; - - console.log(`note: anchor has id "${anchor}"`); - - let anchor_element = document.getElementById(anchor); - - if (!anchor_element) { - throw new Error(`unable to find anchor "${anchor}"`); - } - - anchor_element.scrollIntoView({ - behavior: "smooth", - }); - } - } - - export function toggleSideMenu() { - window.scrollTo({ - top: 0.0, - left: undefined, - behavior: "smooth", - }); - - let sideMenu = Ach.getOnlyElement(document, "sideMenu"); - let navBar = Ach.getOnlyElement(document, "navBar"); - let glyph = Ach.getOnlyElement(document, "glyph"); - - sideMenu.classList.toggle("visible"); - glyph.classList.toggle("hidden"); - - for (let link of navBar.getElementsByTagName("a")) { - link.classList.toggle("hidden"); - } - } - - export function parseInternalLink(address: string): [string, string | undefined] | undefined { - let regex = /\/html\/([A-Za-z0-9]+)\.html(?:#([A-Za-z0-9]+)){0,1}/; - let regex_result = regex.exec(address); - - if (!regex_result) { - return; - } - - let page = regex_result[0x1]; - let anchor = regex_result[0x2]; - - if (!page) { - return; - } - - return [page, anchor]; - } -} |