| | |
| | | footer: QuartzComponent |
| | | } |
| | | |
| | | const headerRegex = new RegExp(/h[1-6]/) |
| | | export function pageResources( |
| | | baseDir: FullSlug | RelativeURL, |
| | | staticResources: StaticResources, |
| | |
| | | // header transclude |
| | | blockRef = blockRef.slice(1) |
| | | let startIdx = undefined |
| | | let startDepth = undefined |
| | | let endIdx = undefined |
| | | let headerRegex = /h[1-6]/ |
| | | for (const [i, el] of page.htmlAst.children.entries()) { |
| | | if (el.type === "element" && el.tagName.match(headerRegex)) { |
| | | if (endIdx) { |
| | | break |
| | | } |
| | | // skip non-headers |
| | | if (!(el.type === "element" && el.tagName.match(headerRegex))) continue |
| | | const depth = Number(el.tagName.substring(1)) |
| | | |
| | | if (startIdx !== undefined) { |
| | | endIdx = i |
| | | } else if (el.properties?.id === blockRef) { |
| | | // lookin for our blockref |
| | | if (startIdx === undefined || startDepth === undefined) { |
| | | // skip until we find the blockref that matches |
| | | if (el.properties?.id === blockRef) { |
| | | startIdx = i |
| | | headerRegex = new RegExp(`h[1-${el.tagName.slice(-1)}]`) |
| | | startDepth = Number(el.tagName.substring(1)) |
| | | } |
| | | } else if (depth <= startDepth) { |
| | | // looking for new header that is same level or higher |
| | | endIdx = i |
| | | } |
| | | } |
| | | |