From 8cb2244f377eab559914c7f2834144817356f8ec Mon Sep 17 00:00:00 2001 From: anime Date: Wed, 4 Dec 2024 02:45:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=94=AF=E6=8C=81=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=9D=97=E6=A0=BC=E5=BC=8F=E7=9A=84=E7=9B=AE=E5=BD=95=E8=AF=86?= =?UTF-8?q?=E5=88=AB):?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 079515a157f3d0ba5cc1a92272fc16e74537f25f) feat(支持同步块格式的目录识别): 修复额外的多余目录识别问题 (cherry picked from commit c2d8ed211c16413aec37fd2438d93a7525afc03d) feat(支持同步块格式的目录识别): 去除多余的判断逻辑 (cherry picked from commit bacbe55bea13c4d3c6e79a11afcde4ba5139c67b) --- lib/notion/getPageTableOfContents.js | 34 +++++++++++++++++----------- 1 file changed, 21 insertions(+), 13 deletions(-) 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) + } } }