diff --git a/lib/notion/getPageTableOfContents.js b/lib/notion/getPageTableOfContents.js index a23be7cb..738c2203 100644 --- a/lib/notion/getPageTableOfContents.js +++ b/lib/notion/getPageTableOfContents.js @@ -12,7 +12,7 @@ const indentLevels = { * H1, H2, and H3 elements. */ export const getPageTableOfContents = (page, recordMap) => { - const contents = (page.content ?? []) + const contents = page.content ?? [] const toc = getBlockHeader(contents, recordMap) const indentLevelStack = [ { @@ -69,20 +69,28 @@ function getBlockHeader(contents, recordMap, toc) { continue } const { type } = block - if (type.indexOf('header') >= 0) { - const existed = toc.find(e => e.id === blockId) - if (!existed) { - toc.push({ - id: blockId, - type, - text: getTextContent(block.properties?.title), - indentLevel: indentLevels[type] - }) - } - } - if (block.content?.length > 0) { getBlockHeader(block.content, recordMap, toc) + } else { + if (type.indexOf('header') >= 0) { + const existed = toc.find(e => e.id === blockId) + if (!existed) { + toc.push({ + id: blockId, + type, + text: getTextContent(block.properties?.title), + indentLevel: indentLevels[type] + }) + } + } else if (type === 'transclusion_reference') { + getBlockHeader( + [block.format.transclusion_reference_pointer.id], + recordMap, + toc + ) + } else if (type === 'transclusion_container') { + getBlockHeader(block.content, recordMap, toc) + } } }