notion-renderer
Version:
notion content react renderer
50 lines • 2.63 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importDefault(require("react"));
var TextBlock_1 = __importDefault(require("./TextBlock"));
var BlankBlock_1 = __importDefault(require("./BlankBlock"));
var BulletedList_1 = __importDefault(require("./BulletedList"));
var CodeBlock_1 = __importDefault(require("./CodeBlock"));
var HeadingBlock_1 = require("./HeadingBlock");
var ImageBlock_1 = __importDefault(require("./ImageBlock"));
var NotionContentRenderer = function (props) {
var recordMap = props.recordMap, id = props.id;
var content = recordMap.block["" + id].value.content;
var items = content.map(function (item) {
var data = recordMap.block["" + item];
if (data) {
return data.value;
}
});
var renderedItems = items.map(function (item, index) {
if (!item) {
return undefined;
}
switch (item.type) {
case 'bulleted_list':
return (react_1.default.createElement(BulletedList_1.default, { properties: item.properties, key: index }));
case 'code':
return react_1.default.createElement(CodeBlock_1.default, { properties: item.properties, key: index });
case 'divider':
return react_1.default.createElement("hr", { key: index });
case 'header':
return react_1.default.createElement(HeadingBlock_1.HeaderBlock, { properties: item.properties, key: index });
case 'sub_header':
return (react_1.default.createElement(HeadingBlock_1.SubHeaderBlock, { properties: item.properties, key: index }));
case 'sub_sub_header':
return (react_1.default.createElement(HeadingBlock_1.SubSubHeaderBlock, { properties: item.properties, key: index }));
case 'text':
return react_1.default.createElement(TextBlock_1.default, { properties: item.properties, key: index });
case 'image':
return (react_1.default.createElement(ImageBlock_1.default, { id: item.id, properties: item.properties, format: item.format, imageSource: props.imageSource, key: index }));
default:
return react_1.default.createElement(BlankBlock_1.default, { key: index });
}
});
return react_1.default.createElement("div", null, renderedItems);
};
exports.default = NotionContentRenderer;
//# sourceMappingURL=NotionContentRenderer.js.map