notion-page-tree
Version:
Recursively fetch nested Notion pages from the root page/database/block node.
61 lines (60 loc) • 2.79 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractPlainTextFromBlock = exports.flattenRichText = void 0;
var flattenRichText = function (richTextItemResponse) {
return richTextItemResponse.reduce(function (flatText, richTextObject) { return "".concat(flatText, " ").concat(richTextObject.plain_text, " "); }, '');
};
exports.flattenRichText = flattenRichText;
var extractPlainTextFromBlock = function (block) {
switch (block.type) {
case 'audio':
return (0, exports.flattenRichText)(block.audio.caption);
case 'bookmark':
return (0, exports.flattenRichText)(block.bookmark.caption);
case 'bulleted_list_item':
return (0, exports.flattenRichText)(block.bulleted_list_item.rich_text);
case 'callout':
return (0, exports.flattenRichText)(block.callout.rich_text);
case 'child_database':
return block.child_database.title;
case 'child_page':
return block.child_page.title;
case 'code':
return (0, exports.flattenRichText)(block.code.rich_text);
case 'embed':
return (0, exports.flattenRichText)(block.embed.caption);
case 'equation':
return block.equation.expression;
case 'file':
return (0, exports.flattenRichText)(block.file.caption);
case 'heading_1':
return (0, exports.flattenRichText)(block.heading_1.rich_text);
case 'heading_2':
return (0, exports.flattenRichText)(block.heading_2.rich_text);
case 'heading_3':
return (0, exports.flattenRichText)(block.heading_3.rich_text);
case 'image':
return (0, exports.flattenRichText)(block.image.caption);
case 'numbered_list_item':
return (0, exports.flattenRichText)(block.numbered_list_item.rich_text);
case 'paragraph':
return (0, exports.flattenRichText)(block.paragraph.rich_text);
case 'pdf':
return (0, exports.flattenRichText)(block.pdf.caption);
case 'quote':
return (0, exports.flattenRichText)(block.quote.rich_text);
case 'table_row':
return (0, exports.flattenRichText)(block.table_row.cells.flat());
case 'template':
return (0, exports.flattenRichText)(block.template.rich_text);
case 'to_do':
return (0, exports.flattenRichText)(block.to_do.rich_text);
case 'toggle':
return (0, exports.flattenRichText)(block.toggle.rich_text);
case 'video':
return (0, exports.flattenRichText)(block.video.caption);
default:
return '';
}
};
exports.extractPlainTextFromBlock = extractPlainTextFromBlock;