| | |
| | | import micromorph from "micromorph" |
| | | import { FullSlug, RelativeURL, getFullSlug } from "../../util/path" |
| | | import { normalizeRelativeURLs } from "./popover.inline" |
| | | |
| | | // adapted from `micromorph` |
| | | // https://github.com/natemoo-re/micromorph |
| | |
| | | if (window.location.origin === url.origin) { |
| | | return true |
| | | } |
| | | } catch (e) {} |
| | | } catch (e) { } |
| | | return false |
| | | } |
| | | |
| | |
| | | if (!contents) return |
| | | |
| | | const html = p.parseFromString(contents, "text/html") |
| | | normalizeRelativeURLs(html, url) |
| | | |
| | | let title = html.querySelector("title")?.textContent |
| | | if (title) { |
| | | document.title = title |
| | |
| | | if (isSamePage(url) && url.hash) { |
| | | const el = document.getElementById(decodeURIComponent(url.hash.substring(1))) |
| | | el?.scrollIntoView() |
| | | history.pushState({}, "", url) |
| | | return |
| | | } |
| | | |
| | |
| | | style: |
| | | "position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px", |
| | | } |
| | | |
| | | customElements.define( |
| | | "route-announcer", |
| | | class RouteAnnouncer extends HTMLElement { |