refactor: simplify head tracking logic

pull/3488/head
Divyansh Singh 6 months ago
parent ba3c6441be
commit 900872769e

@ -17,14 +17,13 @@ export function useUpdateHead(route: Route, siteDataByRouteRef: Ref<SiteData>) {
// skip the first update. // skip the first update.
isFirstUpdate = false isFirstUpdate = false
newTags.forEach((tag) => { newTags.forEach((tag) => {
const selector = toSelector(tag[0], tag[1])
const headEl = createHeadElement(tag) const headEl = createHeadElement(tag)
;[...document.querySelectorAll(selector)].some((el) => { for (const el of document.head.children) {
if (el.isEqualNode(headEl)) { if (el.isEqualNode(headEl)) {
managedHeadElements.push(el as HTMLElement) managedHeadElements.push(el as HTMLElement)
return true return
} }
}) }
}) })
return return
} }
@ -106,9 +105,3 @@ function isMetaDescription(headConfig: HeadConfig) {
function filterOutHeadDescription(head: HeadConfig[]) { function filterOutHeadDescription(head: HeadConfig[]) {
return head.filter((h) => !isMetaDescription(h)) return head.filter((h) => !isMetaDescription(h))
} }
function toSelector(tag: string, attrs: Record<string, string>) {
return `${tag}${Object.keys(attrs)
.map((key) => `[${key}="${attrs[key].replace(/(["'\\])/g, '\\$1')}"]`)
.join('')}`
}

Loading…
Cancel
Save