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.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: () => 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 = __toESM(require("react"));
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: { bulleted: "styles_list_type_bulleted__es8vim1", numbered: "styles_list_type_numbered__es8vim2" } }, defaultVariants: {}, compoundVariants: [] });
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 = __toESM(require("react"));
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.default.memo(
502
- RichTexts_default,
503
- (prev, next) => {
504
- return JSON.stringify(prev.richTexts) === JSON.stringify(next.richTexts);
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.default.memo(
511
- Bookmark_default,
512
- (prev, next) => {
513
- return prev.url === next.url;
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, index }) => {
526
- const blockProps = {
527
- tabIndex: 0
528
- };
516
+ var RecursiveListItem = ({ block }) => {
529
517
  const blockType = block.type;
530
- const richTexts = block[blockType]?.rich_text;
531
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(ListItem, { ...blockProps, children: [
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
- block.children && block.children.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
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 === "numbered" ? "ol" : "ul",
538
+ as: type === "numbered_list_item" ? "ol" : "ul",
552
539
  type,
553
540
  role: "list",
554
- "aria-label": type === "bulleted" ? "Bulleted list" : "Numbered list",
555
- children: listItems.map((block, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RecursiveListItem, { block, index }, block.id))
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 = ({ blocks, startIndex, type }) => {
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 === `${type}_list_item`) {
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 === "numbered" ? "ol" : "ul",
565
+ as: type === "numbered_list_item" ? "ol" : "ul",
575
566
  type,
576
567
  role: "list",
577
- "aria-label": type === "bulleted" ? "Bulleted list" : "Numbered list",
578
- children: listItems.map((block, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
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, onFocus }) => {
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, index) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
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, onFocus }) => {
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, onFocus }, column.id)) });
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 container2 = "styles_container__mra9n0";
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: container2, tabIndex, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MemoizedRichText, { richTexts }) });
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, tabIndex = 0 }) => {
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
- (child) => child.type === "table_row"
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, tabIndex = 0, onFocus }) => {
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, index) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
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/Block/BlockRenderer.tsx
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 BlockRenderer = ({
842
- block,
843
- onFocus,
844
- index,
845
- isColumn = false
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, import_jsx_runtime16.jsx)(MemoizedLinkPreview, { url: block.link_preview.url, ...blockProps });
860
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MemoizedLinkPreview, { url: block.link_preview.url });
855
861
  case "paragraph":
856
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Paragraph, { ...blockProps, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(MemoizedRichText, { richTexts: block.paragraph.rich_text }) });
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, import_jsx_runtime16.jsx)(Heading1, { ...blockProps, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(MemoizedRichText, { richTexts: block.heading_1.rich_text }) });
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, import_jsx_runtime16.jsx)(Heading2, { ...blockProps, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(MemoizedRichText, { richTexts: block.heading_2.rich_text }) });
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, import_jsx_runtime16.jsx)(Heading3, { ...blockProps, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(MemoizedRichText, { richTexts: block.heading_3.rich_text }) });
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, import_jsx_runtime16.jsx)("div", { ...blockProps, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
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].text.content,
873
+ code: block.code.rich_text[0]?.text?.content || "",
868
874
  language: block.code.language,
869
- caption: block.code.caption?.[0]?.plain_text
875
+ caption: block.code.caption
870
876
  }
871
877
  ) });
872
878
  case "image":
873
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("figure", { ...blockProps, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
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, import_jsx_runtime16.jsx)(
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, import_jsx_runtime16.jsx)(ColumnList_default, { block, onFocus });
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, import_jsx_runtime16.jsx)(Quote_default, { richTexts: block.quote.rich_text, ...blockProps });
902
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Quote_default, { richTexts: block.quote.rich_text });
897
903
  case "table":
898
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Table_default2, { block, tabIndex: blockProps.tabIndex });
904
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Table_default2, { block });
899
905
  case "toggle":
900
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
901
- Toggle_default,
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 import_jsx_runtime17 = require("react/jsx-runtime");
916
+ var import_jsx_runtime18 = require("react/jsx-runtime");
920
917
  var Title = ({ title: title3 }) => {
921
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Heading1, { children: title3 });
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 import_jsx_runtime18 = require("react/jsx-runtime");
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, import_jsx_runtime18.jsxs)("div", { className: coverContainer, children: [
939
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: skeletonWrapper2({ isLoaded }), children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Skeleton_default, { variant: "image" }) }),
940
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
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 import_jsx_runtime19 = require("react/jsx-runtime");
956
- var Renderer = import_react7.default.memo(
957
- ({ blocks, isDarkMode = false, title: title3, cover, onBlockFocus }) => {
958
- const theme = isDarkMode ? darkTheme : lightTheme;
959
- const [focusedIndex, setFocusedIndex] = (0, import_react7.useState)(-1);
960
- const handleBlockFocus = (0, import_react7.useCallback)(
961
- (index) => {
962
- setFocusedIndex(index);
963
- onBlockFocus?.(index);
964
- },
965
- [onBlockFocus]
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, import_jsx_runtime19.jsx)(
998
- BlockRenderer_default,
971
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
972
+ ListBlocksRenderer_default,
999
973
  {
1000
- block,
1001
- index: i,
1002
- onFocus: () => handleBlockFocus(i)
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
- return result;
1010
- }, [blocks, handleBlockFocus]);
1011
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
1012
- cover && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Cover_default, { src: cover, alt: title3 || "Notion page content" }),
1013
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1014
- "article",
1015
- {
1016
- className: `${theme} ${container}`,
1017
- "aria-label": title3 || "Notion page content",
1018
- children: [
1019
- title3 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Title_default, { title: title3 }),
1020
- renderedBlocks
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