| | |
| | | // scroll into place and add history |
| | | if (!isBack) { |
| | | if (url.hash) { |
| | | const el = document.getElementById(url.hash.substring(1)) |
| | | const el = document.getElementById(decodeURIComponent(url.hash.substring(1))) |
| | | el?.scrollIntoView() |
| | | } else { |
| | | window.scrollTo({ top: 0 }) |
| | |
| | | |
| | | // delay setting the url until now |
| | | // at this point everything is loaded so changing the url should resolve to the correct addresses |
| | | history.pushState({}, "", url) |
| | | if (!isBack) { |
| | | history.pushState({}, "", url) |
| | | } |
| | | notifyNav(getFullSlug(window)) |
| | | delete announcer.dataset.persist |
| | | } |
| | |
| | | if (typeof window !== "undefined") { |
| | | window.addEventListener("click", async (event) => { |
| | | const { url } = getOpts(event) ?? {} |
| | | if (!url) return |
| | | if (!url || event.ctrlKey || event.metaKey) return |
| | | event.preventDefault() |
| | | try { |
| | | navigate(url, false) |