notion-to-jsx 1.2.9 → 1.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +86 -65
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +106 -28
- package/dist/index.d.ts +106 -28
- package/dist/index.js +180 -195
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +180 -195
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -30,19 +30,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var index_exports = {};
|
|
32
32
|
__export(index_exports, {
|
|
33
|
-
Renderer: () =>
|
|
33
|
+
Renderer: () => Renderer_default
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(index_exports);
|
|
36
36
|
|
|
37
37
|
// src/components/Renderer/index.tsx
|
|
38
|
-
var import_react7 =
|
|
39
|
-
|
|
40
|
-
// src/components/Renderer/styles.css.ts
|
|
41
|
-
var container = "styles_container__epva5u0";
|
|
38
|
+
var import_react7 = require("react");
|
|
42
39
|
|
|
43
40
|
// src/components/Renderer/components/List/styles.css.ts
|
|
44
41
|
var import_createRuntimeFn = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
45
|
-
var list = (0, import_createRuntimeFn.createRuntimeFn)({ defaultClassName: "styles_list__es8vim0", variantClassNames: { type: {
|
|
42
|
+
var list = (0, import_createRuntimeFn.createRuntimeFn)({ defaultClassName: "styles_list__es8vim0", variantClassNames: { type: { bulleted_list_item: "styles_list_type_bulleted_list_item__es8vim1", numbered_list_item: "styles_list_type_numbered_list_item__es8vim2" } }, defaultVariants: {}, compoundVariants: [] });
|
|
46
43
|
var listItem = "styles_listItem__es8vim3";
|
|
47
44
|
|
|
48
45
|
// src/components/Renderer/components/List/List.tsx
|
|
@@ -65,7 +62,7 @@ var ListItem = ({
|
|
|
65
62
|
};
|
|
66
63
|
|
|
67
64
|
// src/components/Renderer/components/MemoizedComponents.tsx
|
|
68
|
-
var import_react3 =
|
|
65
|
+
var import_react3 = require("react");
|
|
69
66
|
|
|
70
67
|
// src/components/Renderer/components/RichText/styles.css.ts
|
|
71
68
|
var import_createRuntimeFn2 = require("@vanilla-extract/recipes/createRuntimeFn");
|
|
@@ -498,22 +495,16 @@ var LinkPreview = ({ url }) => {
|
|
|
498
495
|
var LinkPreview_default = LinkPreview;
|
|
499
496
|
|
|
500
497
|
// src/components/Renderer/components/MemoizedComponents.tsx
|
|
501
|
-
var MemoizedRichText = import_react3.
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
}
|
|
506
|
-
);
|
|
507
|
-
var MemoizedImage = import_react3.default.memo(Image_default, (prev, next) => {
|
|
498
|
+
var MemoizedRichText = (0, import_react3.memo)(RichTexts_default, (prev, next) => {
|
|
499
|
+
return JSON.stringify(prev.richTexts) === JSON.stringify(next.richTexts);
|
|
500
|
+
});
|
|
501
|
+
var MemoizedImage = (0, import_react3.memo)(Image_default, (prev, next) => {
|
|
508
502
|
return prev.src === next.src && prev.alt === next.alt && JSON.stringify(prev.caption) === JSON.stringify(next.caption);
|
|
509
503
|
});
|
|
510
|
-
var MemoizedBookmark = import_react3.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
}
|
|
515
|
-
);
|
|
516
|
-
var MemoizedLinkPreview = import_react3.default.memo(
|
|
504
|
+
var MemoizedBookmark = (0, import_react3.memo)(Bookmark_default, (prev, next) => {
|
|
505
|
+
return prev.url === next.url;
|
|
506
|
+
});
|
|
507
|
+
var MemoizedLinkPreview = (0, import_react3.memo)(
|
|
517
508
|
LinkPreview_default,
|
|
518
509
|
(prev, next) => {
|
|
519
510
|
return prev.url === next.url;
|
|
@@ -522,46 +513,46 @@ var MemoizedLinkPreview = import_react3.default.memo(
|
|
|
522
513
|
|
|
523
514
|
// src/components/Renderer/components/List/ListBlocksRenderer.tsx
|
|
524
515
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
525
|
-
var RecursiveListItem = ({ block
|
|
526
|
-
const blockProps = {
|
|
527
|
-
tabIndex: 0
|
|
528
|
-
};
|
|
516
|
+
var RecursiveListItem = ({ block }) => {
|
|
529
517
|
const blockType = block.type;
|
|
530
|
-
|
|
531
|
-
|
|
518
|
+
let content3;
|
|
519
|
+
if (blockType === "bulleted_list_item") {
|
|
520
|
+
content3 = block.bulleted_list_item;
|
|
521
|
+
} else {
|
|
522
|
+
content3 = block.numbered_list_item;
|
|
523
|
+
}
|
|
524
|
+
const richTexts = content3.rich_text;
|
|
525
|
+
const filteredChildren = block.children?.filter(
|
|
526
|
+
(child) => child.type === blockType
|
|
527
|
+
);
|
|
528
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(ListItem, { children: [
|
|
532
529
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(MemoizedRichText, { richTexts }),
|
|
533
|
-
|
|
534
|
-
RecursiveListGroup,
|
|
535
|
-
{
|
|
536
|
-
blocks: block.children,
|
|
537
|
-
type: blockType.split("_")[0]
|
|
538
|
-
}
|
|
539
|
-
)
|
|
530
|
+
filteredChildren && filteredChildren.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RecursiveListGroup, { blocks: filteredChildren, type: blockType })
|
|
540
531
|
] });
|
|
541
532
|
};
|
|
542
533
|
var RecursiveListGroup = ({ blocks, type }) => {
|
|
543
534
|
if (!blocks || blocks.length === 0) return null;
|
|
544
|
-
const listItems = blocks.filter(
|
|
545
|
-
(block) => block.type === `${type}_list_item`
|
|
546
|
-
);
|
|
547
|
-
if (listItems.length === 0) return null;
|
|
548
535
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
549
536
|
List,
|
|
550
537
|
{
|
|
551
|
-
as: type === "
|
|
538
|
+
as: type === "numbered_list_item" ? "ol" : "ul",
|
|
552
539
|
type,
|
|
553
540
|
role: "list",
|
|
554
|
-
"aria-label": type
|
|
555
|
-
children:
|
|
541
|
+
"aria-label": type,
|
|
542
|
+
children: blocks.map((block) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RecursiveListItem, { block }, block.id))
|
|
556
543
|
}
|
|
557
544
|
);
|
|
558
545
|
};
|
|
559
|
-
var ListBlocksRenderer = ({
|
|
546
|
+
var ListBlocksRenderer = ({
|
|
547
|
+
blocks,
|
|
548
|
+
startIndex,
|
|
549
|
+
type
|
|
550
|
+
}) => {
|
|
560
551
|
let consecutiveItems = 0;
|
|
561
552
|
for (let i = startIndex; i < blocks.length; i++) {
|
|
562
553
|
const block = blocks[i];
|
|
563
554
|
if (!block) break;
|
|
564
|
-
if (block.type ===
|
|
555
|
+
if (block.type === type) {
|
|
565
556
|
consecutiveItems++;
|
|
566
557
|
} else {
|
|
567
558
|
break;
|
|
@@ -571,18 +562,11 @@ var ListBlocksRenderer = ({ blocks, startIndex, type }) => {
|
|
|
571
562
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
572
563
|
List,
|
|
573
564
|
{
|
|
574
|
-
as: type === "
|
|
565
|
+
as: type === "numbered_list_item" ? "ol" : "ul",
|
|
575
566
|
type,
|
|
576
567
|
role: "list",
|
|
577
|
-
"aria-label": type
|
|
578
|
-
children: listItems.map((block
|
|
579
|
-
RecursiveListItem,
|
|
580
|
-
{
|
|
581
|
-
block,
|
|
582
|
-
index: startIndex + index
|
|
583
|
-
},
|
|
584
|
-
block.id
|
|
585
|
-
))
|
|
568
|
+
"aria-label": type,
|
|
569
|
+
children: listItems.map((block) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RecursiveListItem, { block }, block.id))
|
|
586
570
|
}
|
|
587
571
|
);
|
|
588
572
|
};
|
|
@@ -673,36 +657,27 @@ var columnListContainer = "styles_columnListContainer__wle6we1";
|
|
|
673
657
|
|
|
674
658
|
// src/components/Renderer/components/Column/Column.tsx
|
|
675
659
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
676
|
-
var Column = ({ block
|
|
660
|
+
var Column = ({ block }) => {
|
|
677
661
|
if (!block || !block.children) return null;
|
|
678
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: columnContainer, children: block.children.map((childBlock
|
|
679
|
-
BlockRenderer_default,
|
|
680
|
-
{
|
|
681
|
-
block: childBlock,
|
|
682
|
-
onFocus,
|
|
683
|
-
index,
|
|
684
|
-
isColumn: true
|
|
685
|
-
},
|
|
686
|
-
childBlock.id
|
|
687
|
-
)) });
|
|
662
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: columnContainer, children: block.children.map((childBlock) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(BlockRenderer_default, { block: childBlock, isColumn: true }, childBlock.id)) });
|
|
688
663
|
};
|
|
689
664
|
var Column_default = Column;
|
|
690
665
|
|
|
691
666
|
// src/components/Renderer/components/Column/ColumnList.tsx
|
|
692
667
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
693
|
-
var ColumnList = ({ block
|
|
668
|
+
var ColumnList = ({ block }) => {
|
|
694
669
|
if (!block || !block.children) return null;
|
|
695
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: columnListContainer, children: block.children.map((column) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Column_default, { block: column
|
|
670
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: columnListContainer, children: block.children.map((column) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Column_default, { block: column }, column.id)) });
|
|
696
671
|
};
|
|
697
672
|
var ColumnList_default = ColumnList;
|
|
698
673
|
|
|
699
674
|
// src/components/Renderer/components/Quote/styles.css.ts
|
|
700
|
-
var
|
|
675
|
+
var container = "styles_container__mra9n0";
|
|
701
676
|
|
|
702
677
|
// src/components/Renderer/components/Quote/Quote.tsx
|
|
703
678
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
704
679
|
var Quote = ({ richTexts, tabIndex }) => {
|
|
705
|
-
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("blockquote", { className:
|
|
680
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("blockquote", { className: container, tabIndex, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MemoizedRichText, { richTexts }) });
|
|
706
681
|
};
|
|
707
682
|
var Quote_default = Quote;
|
|
708
683
|
|
|
@@ -748,23 +723,18 @@ var TableRow_default = TableRow;
|
|
|
748
723
|
|
|
749
724
|
// src/components/Renderer/components/Table/Table.tsx
|
|
750
725
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
751
|
-
var Table = ({ block
|
|
726
|
+
var Table = ({ block }) => {
|
|
752
727
|
if (!block.table || !block.children) {
|
|
753
728
|
return null;
|
|
754
729
|
}
|
|
755
730
|
const { table_width, has_column_header, has_row_header } = block.table;
|
|
756
|
-
const rows = block.children?.filter(
|
|
757
|
-
|
|
758
|
-
) || [];
|
|
759
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: tableContainer, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("table", { className: table, tabIndex, children: rows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
731
|
+
const rows = block.children?.filter((child) => child.type === "table_row") || [];
|
|
732
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: tableContainer, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("table", { className: table, children: rows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
760
733
|
has_column_header && rows[0] && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(TableRow_default, { rowBlock: rows[0], cellClassName: headerCell }) }),
|
|
761
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("tbody", { children: rows.filter(
|
|
762
|
-
(row) => row !== void 0 && row.type === "table_row"
|
|
763
|
-
).map((row, rowIndex) => {
|
|
734
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("tbody", { children: rows.filter((row) => row !== void 0 && row.type === "table_row").map((row, rowIndex) => {
|
|
764
735
|
if (has_column_header && rowIndex === 0) {
|
|
765
736
|
return null;
|
|
766
737
|
}
|
|
767
|
-
const actualRowIndex = has_column_header ? rowIndex - 1 : rowIndex;
|
|
768
738
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
769
739
|
TableRow_default,
|
|
770
740
|
{
|
|
@@ -793,7 +763,7 @@ var toggleIconOpen = "styles_toggleIconOpen__p7ue1z3";
|
|
|
793
763
|
|
|
794
764
|
// src/components/Renderer/components/Toggle/Toggle.tsx
|
|
795
765
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
796
|
-
var Toggle = ({ block
|
|
766
|
+
var Toggle = ({ block }) => {
|
|
797
767
|
const [isOpen, setIsOpen] = (0, import_react5.useState)(false);
|
|
798
768
|
if (!block.toggle || !block.children) {
|
|
799
769
|
return null;
|
|
@@ -814,8 +784,6 @@ var Toggle = ({ block, tabIndex = 0, onFocus }) => {
|
|
|
814
784
|
className: toggleHeader,
|
|
815
785
|
onClick: handleToggle,
|
|
816
786
|
onKeyDown: handleKeyDown,
|
|
817
|
-
tabIndex,
|
|
818
|
-
onFocus,
|
|
819
787
|
role: "button",
|
|
820
788
|
"aria-expanded": isOpen,
|
|
821
789
|
children: [
|
|
@@ -824,56 +792,94 @@ var Toggle = ({ block, tabIndex = 0, onFocus }) => {
|
|
|
824
792
|
]
|
|
825
793
|
}
|
|
826
794
|
),
|
|
827
|
-
isOpen && block.children && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: toggleContent, children: block.children.map((childBlock
|
|
828
|
-
BlockRenderer_default,
|
|
829
|
-
{
|
|
830
|
-
block: childBlock,
|
|
831
|
-
index
|
|
832
|
-
},
|
|
833
|
-
childBlock.id
|
|
834
|
-
)) })
|
|
795
|
+
isOpen && block.children && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: toggleContent, children: block.children.map((childBlock) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(BlockRenderer_default, { block: childBlock }, childBlock.id)) })
|
|
835
796
|
] });
|
|
836
797
|
};
|
|
837
798
|
var Toggle_default = Toggle;
|
|
838
799
|
|
|
839
|
-
// src/components/Renderer/components/
|
|
800
|
+
// src/components/Renderer/components/Video/styles.css.ts
|
|
801
|
+
var videoCaption = "styles_videoCaption__15b9vkb2";
|
|
802
|
+
var videoContainer = "styles_videoContainer__15b9vkb0";
|
|
803
|
+
var videoPlayer = "styles_videoPlayer__15b9vkb1";
|
|
804
|
+
|
|
805
|
+
// src/components/Renderer/components/Video/Video.tsx
|
|
840
806
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
841
|
-
var
|
|
842
|
-
block
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
807
|
+
var Video = ({ block }) => {
|
|
808
|
+
if (block.type !== "video" || !block.video) {
|
|
809
|
+
return null;
|
|
810
|
+
}
|
|
811
|
+
const { type, external, caption: caption2 } = block.video;
|
|
812
|
+
let videoUrl = "";
|
|
813
|
+
if (type === "external") {
|
|
814
|
+
videoUrl = getVideoEmbedUrl(external?.url);
|
|
815
|
+
}
|
|
816
|
+
if (!videoUrl) {
|
|
817
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { children: "\uBE44\uB514\uC624\uB97C \uBD88\uB7EC\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4." });
|
|
818
|
+
}
|
|
819
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: videoContainer, children: [
|
|
820
|
+
videoUrl.includes("youtube.com/embed/") ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
821
|
+
"iframe",
|
|
822
|
+
{
|
|
823
|
+
className: videoPlayer,
|
|
824
|
+
src: videoUrl,
|
|
825
|
+
title: "YouTube video player",
|
|
826
|
+
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
|
|
827
|
+
allowFullScreen: true
|
|
828
|
+
}
|
|
829
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("p", { children: [
|
|
830
|
+
"\uC678\uBD80 \uBE44\uB514\uC624 \uB9C1\uD06C:",
|
|
831
|
+
" ",
|
|
832
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("a", { href: videoUrl, target: "_blank", rel: "noopener noreferrer", children: videoUrl })
|
|
833
|
+
] }),
|
|
834
|
+
caption2 && caption2.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("figcaption", { className: videoCaption, children: caption2.map((c, i) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: c.plain_text }, i)) })
|
|
835
|
+
] });
|
|
836
|
+
};
|
|
837
|
+
var getVideoEmbedUrl = (url) => {
|
|
838
|
+
if (!url) return "";
|
|
839
|
+
if (url.includes("youtu.be/")) {
|
|
840
|
+
const videoId = url.split("youtu.be/")[1]?.split("?")[0];
|
|
841
|
+
if (videoId) {
|
|
842
|
+
return `https://www.youtube.com/embed/${videoId}`;
|
|
843
|
+
}
|
|
844
|
+
} else if (url.includes("youtube.com/watch?v=")) {
|
|
845
|
+
const videoId = url.split("watch?v=")[1]?.split("&")[0];
|
|
846
|
+
if (videoId) {
|
|
847
|
+
return `https://www.youtube.com/embed/${videoId}`;
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
return url;
|
|
851
|
+
};
|
|
852
|
+
var Video_default = Video;
|
|
853
|
+
|
|
854
|
+
// src/components/Renderer/components/Block/BlockRenderer.tsx
|
|
855
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
856
|
+
var BlockRenderer = ({ block, isColumn = false }) => {
|
|
847
857
|
if (!block) return null;
|
|
848
|
-
const blockProps = {
|
|
849
|
-
tabIndex: 0,
|
|
850
|
-
onFocus
|
|
851
|
-
};
|
|
852
858
|
switch (block.type) {
|
|
853
859
|
case "link_preview":
|
|
854
|
-
return /* @__PURE__ */ (0,
|
|
860
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MemoizedLinkPreview, { url: block.link_preview.url });
|
|
855
861
|
case "paragraph":
|
|
856
|
-
return /* @__PURE__ */ (0,
|
|
862
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Paragraph, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MemoizedRichText, { richTexts: block.paragraph.rich_text }) });
|
|
857
863
|
case "heading_1":
|
|
858
|
-
return /* @__PURE__ */ (0,
|
|
864
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Heading1, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MemoizedRichText, { richTexts: block.heading_1.rich_text }) });
|
|
859
865
|
case "heading_2":
|
|
860
|
-
return /* @__PURE__ */ (0,
|
|
866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Heading2, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MemoizedRichText, { richTexts: block.heading_2.rich_text }) });
|
|
861
867
|
case "heading_3":
|
|
862
|
-
return /* @__PURE__ */ (0,
|
|
868
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Heading3, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MemoizedRichText, { richTexts: block.heading_3.rich_text }) });
|
|
863
869
|
case "code":
|
|
864
|
-
return /* @__PURE__ */ (0,
|
|
870
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
865
871
|
CodeBlock_default,
|
|
866
872
|
{
|
|
867
|
-
code: block.code.rich_text[0]
|
|
873
|
+
code: block.code.rich_text[0]?.text?.content || "",
|
|
868
874
|
language: block.code.language,
|
|
869
|
-
caption: block.code.caption
|
|
875
|
+
caption: block.code.caption
|
|
870
876
|
}
|
|
871
877
|
) });
|
|
872
878
|
case "image":
|
|
873
|
-
return /* @__PURE__ */ (0,
|
|
879
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("figure", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
874
880
|
MemoizedImage,
|
|
875
881
|
{
|
|
876
|
-
src: block.image.file?.url || block.image.external?.url,
|
|
882
|
+
src: block.image.file?.url || block.image.external?.url || "",
|
|
877
883
|
alt: block.image.caption?.[0]?.plain_text || "",
|
|
878
884
|
caption: block.image.caption,
|
|
879
885
|
format: block.image.format,
|
|
@@ -881,7 +887,7 @@ var BlockRenderer = ({
|
|
|
881
887
|
}
|
|
882
888
|
) });
|
|
883
889
|
case "bookmark":
|
|
884
|
-
return /* @__PURE__ */ (0,
|
|
890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
885
891
|
MemoizedBookmark,
|
|
886
892
|
{
|
|
887
893
|
url: block.bookmark.url,
|
|
@@ -889,36 +895,27 @@ var BlockRenderer = ({
|
|
|
889
895
|
}
|
|
890
896
|
);
|
|
891
897
|
case "column_list":
|
|
892
|
-
return /* @__PURE__ */ (0,
|
|
898
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ColumnList_default, { block });
|
|
893
899
|
case "column":
|
|
894
900
|
return null;
|
|
895
901
|
case "quote":
|
|
896
|
-
return /* @__PURE__ */ (0,
|
|
902
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Quote_default, { richTexts: block.quote.rich_text });
|
|
897
903
|
case "table":
|
|
898
|
-
return /* @__PURE__ */ (0,
|
|
904
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Table_default2, { block });
|
|
899
905
|
case "toggle":
|
|
900
|
-
return /* @__PURE__ */ (0,
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
block,
|
|
904
|
-
tabIndex: blockProps.tabIndex,
|
|
905
|
-
onFocus
|
|
906
|
-
}
|
|
907
|
-
);
|
|
906
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Toggle_default, { block });
|
|
907
|
+
case "video":
|
|
908
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Video_default, { block });
|
|
908
909
|
default:
|
|
909
910
|
return null;
|
|
910
911
|
}
|
|
911
912
|
};
|
|
912
913
|
var BlockRenderer_default = BlockRenderer;
|
|
913
914
|
|
|
914
|
-
// src/styles/theme.css.ts
|
|
915
|
-
var darkTheme = "theme_darkTheme__sq3jkb1n";
|
|
916
|
-
var lightTheme = "theme_lightTheme__sq3jkb1m";
|
|
917
|
-
|
|
918
915
|
// src/components/Title/index.tsx
|
|
919
|
-
var
|
|
916
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
920
917
|
var Title = ({ title: title3 }) => {
|
|
921
|
-
return /* @__PURE__ */ (0,
|
|
918
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Heading1, { children: title3 });
|
|
922
919
|
};
|
|
923
920
|
var Title_default = Title;
|
|
924
921
|
|
|
@@ -932,12 +929,12 @@ var imageStyle2 = (0, import_createRuntimeFn4.createRuntimeFn)({ defaultClassNam
|
|
|
932
929
|
var skeletonWrapper2 = (0, import_createRuntimeFn4.createRuntimeFn)({ defaultClassName: "styles_skeletonWrapper__p0cp8d1", variantClassNames: { isLoaded: { true: "styles_skeletonWrapper_isLoaded_true__p0cp8d2", false: "styles_skeletonWrapper_isLoaded_false__p0cp8d3" } }, defaultVariants: { isLoaded: false }, compoundVariants: [] });
|
|
933
930
|
|
|
934
931
|
// src/components/Cover/index.tsx
|
|
935
|
-
var
|
|
932
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
936
933
|
var Cover = ({ src, alt }) => {
|
|
937
934
|
const [isLoaded, setIsLoaded] = (0, import_react6.useState)(false);
|
|
938
|
-
return /* @__PURE__ */ (0,
|
|
939
|
-
/* @__PURE__ */ (0,
|
|
940
|
-
/* @__PURE__ */ (0,
|
|
935
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: coverContainer, children: [
|
|
936
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: skeletonWrapper2({ isLoaded }), children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Skeleton_default, { variant: "image" }) }),
|
|
937
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
941
938
|
"img",
|
|
942
939
|
{
|
|
943
940
|
src,
|
|
@@ -951,80 +948,68 @@ var Cover = ({ src, alt }) => {
|
|
|
951
948
|
};
|
|
952
949
|
var Cover_default = Cover;
|
|
953
950
|
|
|
951
|
+
// src/components/Renderer/styles.css.ts
|
|
952
|
+
var container2 = "styles_container__epva5u0";
|
|
953
|
+
|
|
954
|
+
// src/styles/theme.css.ts
|
|
955
|
+
var darkTheme = "theme_darkTheme__sq3jkb1n";
|
|
956
|
+
var lightTheme = "theme_lightTheme__sq3jkb1m";
|
|
957
|
+
|
|
954
958
|
// src/components/Renderer/index.tsx
|
|
955
|
-
var
|
|
956
|
-
var Renderer = import_react7.
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
const
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
);
|
|
967
|
-
const renderedBlocks = (0, import_react7.useMemo)(() => {
|
|
968
|
-
const result = [];
|
|
969
|
-
for (let i = 0; i < blocks.length; i++) {
|
|
970
|
-
const block = blocks[i];
|
|
971
|
-
if (!block) break;
|
|
972
|
-
const handleListItem = (listType) => {
|
|
973
|
-
const listItemType = `${listType}_list_item`;
|
|
974
|
-
if (block.type === listItemType && (i === 0 || blocks[i - 1]?.type !== listItemType)) {
|
|
975
|
-
result.push(
|
|
976
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
977
|
-
ListBlocksRenderer_default,
|
|
978
|
-
{
|
|
979
|
-
blocks,
|
|
980
|
-
startIndex: i,
|
|
981
|
-
type: listType
|
|
982
|
-
},
|
|
983
|
-
block.id
|
|
984
|
-
)
|
|
985
|
-
);
|
|
986
|
-
while (i + 1 < blocks.length && blocks[i + 1] && blocks[i + 1]?.type === listItemType) {
|
|
987
|
-
i++;
|
|
988
|
-
}
|
|
989
|
-
return true;
|
|
990
|
-
}
|
|
991
|
-
return false;
|
|
992
|
-
};
|
|
993
|
-
if (handleListItem("bulleted") || handleListItem("numbered")) {
|
|
994
|
-
continue;
|
|
995
|
-
} else {
|
|
959
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
960
|
+
var Renderer = (0, import_react7.memo)(({ blocks, isDarkMode = false, title: title3, cover }) => {
|
|
961
|
+
const theme = isDarkMode ? darkTheme : lightTheme;
|
|
962
|
+
const renderedBlocks = (0, import_react7.useMemo)(() => {
|
|
963
|
+
const result = [];
|
|
964
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
965
|
+
const block = blocks[i];
|
|
966
|
+
if (!block) break;
|
|
967
|
+
const handleListItem = (listType) => {
|
|
968
|
+
const listItemType = `${listType}_list_item`;
|
|
969
|
+
if (block.type === listItemType && (i === 0 || blocks[i - 1]?.type !== listItemType)) {
|
|
996
970
|
result.push(
|
|
997
|
-
/* @__PURE__ */ (0,
|
|
998
|
-
|
|
971
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
972
|
+
ListBlocksRenderer_default,
|
|
999
973
|
{
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
974
|
+
blocks,
|
|
975
|
+
startIndex: i,
|
|
976
|
+
type: listItemType
|
|
1003
977
|
},
|
|
1004
978
|
block.id
|
|
1005
979
|
)
|
|
1006
980
|
);
|
|
981
|
+
while (i + 1 < blocks.length && blocks[i + 1] && blocks[i + 1]?.type === listItemType) {
|
|
982
|
+
i++;
|
|
983
|
+
}
|
|
984
|
+
return true;
|
|
1007
985
|
}
|
|
986
|
+
return false;
|
|
987
|
+
};
|
|
988
|
+
if (handleListItem("bulleted") || handleListItem("numbered")) {
|
|
989
|
+
continue;
|
|
990
|
+
} else {
|
|
991
|
+
result.push(/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(BlockRenderer_default, { block }, block.id));
|
|
1008
992
|
}
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
}
|
|
1026
|
-
);
|
|
993
|
+
}
|
|
994
|
+
return result;
|
|
995
|
+
}, [blocks]);
|
|
996
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
|
|
997
|
+
cover && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Cover_default, { src: cover, alt: title3 || "Notion page content" }),
|
|
998
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
999
|
+
"article",
|
|
1000
|
+
{
|
|
1001
|
+
className: `${theme} ${container2}`,
|
|
1002
|
+
"aria-label": title3 || "Notion page content",
|
|
1003
|
+
children: [
|
|
1004
|
+
title3 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Title_default, { title: title3 }),
|
|
1005
|
+
renderedBlocks
|
|
1006
|
+
]
|
|
1007
|
+
}
|
|
1008
|
+
)
|
|
1009
|
+
] });
|
|
1010
|
+
});
|
|
1027
1011
|
Renderer.displayName = "Renderer";
|
|
1012
|
+
var Renderer_default = Renderer;
|
|
1028
1013
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1029
1014
|
0 && (module.exports = {
|
|
1030
1015
|
Renderer
|