Skip to content

Commit 7a3c03d

Browse files
Expose page delimiter (#25)
* expose page delimiter * checkpoint * move some deps to dev deps
1 parent e2791a4 commit 7a3c03d

File tree

8 files changed

+10682
-594
lines changed

8 files changed

+10682
-594
lines changed

typescript/examples/vite_basic/public/test_document.json

Lines changed: 10535 additions & 570 deletions
Large diffs are not rendered by default.

typescript/examples/vite_basic/src/App.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { JsonDocRenderer } from "@textcortex/jsondoc";
1+
import { JsonDocRenderer, PageDelimiter } from "@textcortex/jsondoc";
22
import "@textcortex/jsondoc/dist/index.css";
33
import { useState, useEffect } from "react";
44

@@ -37,7 +37,16 @@ const App = () => {
3737
>
3838
<div>
3939
<h1>JSON-DOC Renderer Development</h1>
40-
<JsonDocRenderer page={testPage} theme="dark" devMode={true} />
40+
<JsonDocRenderer
41+
page={testPage}
42+
theme="dark"
43+
devMode={true}
44+
components={{
45+
page_delimiter: (props) => {
46+
return <PageDelimiter {...props} />;
47+
},
48+
}}
49+
/>
4150
</div>
4251
</div>
4352
);

typescript/package-lock.json

Lines changed: 103 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

typescript/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,16 @@
5757
"ts-jest": "^29.3.4",
5858
"ts-node": "^10.9.2",
5959
"tsup": "^8.5.0",
60-
"typescript": "^5.8.3"
60+
"typescript": "^5.8.3",
61+
"puppeteer": "^24.9.0",
62+
"strip-json-comments": "^5.0.2",
63+
"json5": "^2.2.3"
6164
},
6265
"dependencies": {
6366
"ajv": "^8.17.1",
6467
"ajv-formats": "^3.0.1",
65-
"json5": "^2.2.3",
6668
"katex": "^0.16.22",
67-
"puppeteer": "^24.9.0",
68-
"react-intersection-observer": "^9.13.0",
69-
"strip-json-comments": "^5.0.2"
69+
"react-intersection-observer": "^9.13.0"
7070
},
7171
"peerDependencies": {
7272
"react": "^18.2.0",

typescript/src/index.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,21 @@ export {
1111
} from "./utils/json";
1212

1313
// Export React renderer components
14-
export { JsonDocRenderer, BlockRenderer } from "./renderer";
14+
export {
15+
JsonDocRenderer,
16+
PageDelimiter,
17+
ParagraphBlockRenderer,
18+
HeadingBlockRenderer,
19+
ListItemBlockRenderer,
20+
CodeBlockRenderer,
21+
ImageBlockRenderer,
22+
TableBlockRenderer,
23+
QuoteBlockRenderer,
24+
DividerBlockRenderer,
25+
ToDoBlockRenderer,
26+
ToggleBlockRenderer,
27+
ColumnListBlockRenderer,
28+
EquationBlockRenderer,
29+
} from "./renderer";
1530

1631
export type { JsonDocRendererProps, BlockRendererProps } from "./renderer";

typescript/src/renderer/JsonDocRenderer.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ import { RendererProvider } from "./context/RendererContext";
1212
interface JsonDocRendererProps {
1313
page: Page;
1414
className?: string;
15-
components?: React.ComponentProps<typeof BlockRenderer>["components"];
15+
components?: React.ComponentProps<typeof BlockRenderer>["components"] & {
16+
page_delimiter: React.ComponentType<{
17+
pageNumber: number;
18+
}>;
19+
};
1620
theme?: "light" | "dark";
1721
resolveImageUrl?: (url: string) => Promise<string>;
1822
devMode?: boolean;
@@ -27,6 +31,7 @@ export const JsonDocRenderer = ({
2731
resolveImageUrl,
2832
devMode = false,
2933
viewJson = false,
34+
// PageDelimiterComponent = PageDelimiter,
3035
}: JsonDocRendererProps) => {
3136
console.log("page: ", page);
3237

@@ -47,7 +52,6 @@ export const JsonDocRenderer = ({
4752
// return null;
4853
const renderedContent = (
4954
<div className="json-doc-page">
50-
hello
5155
{/* Page icon */}
5256
{page.icon && (
5357
<div className="json-doc-page-icon">
@@ -83,9 +87,13 @@ export const JsonDocRenderer = ({
8387
depth={0}
8488
components={components}
8589
/>
86-
{showPageDelimiter && (
90+
91+
{showPageDelimiter && !components?.page_delimiter && (
8792
<PageDelimiter pageNumber={currentPageNum} />
8893
)}
94+
{showPageDelimiter && components?.page_delimiter && (
95+
<components.page_delimiter pageNumber={currentPageNum} />
96+
)}
8997
</React.Fragment>
9098
);
9199
})}
@@ -96,7 +104,6 @@ export const JsonDocRenderer = ({
96104

97105
return (
98106
<RendererProvider value={{ devMode, resolveImageUrl }}>
99-
hello and hello
100107
<div className={`json-doc-renderer jsondoc-theme-${theme} ${className}`}>
101108
{viewJson ? (
102109
<div className="flex h-screen">

typescript/src/renderer/components/BlockRenderer.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import React from "react";
22

33
import {
44
Block,
5-
BlockBase,
65
Heading1Block,
76
Heading2Block,
87
Heading3Block,

typescript/src/renderer/index.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,14 @@ export { CodeBlockRenderer } from "./components/blocks/CodeBlockRenderer";
99
export { ImageBlockRenderer } from "./components/blocks/ImageBlockRenderer";
1010
export { TableBlockRenderer } from "./components/blocks/TableBlockRenderer";
1111
export { JsonDocRenderer } from "./JsonDocRenderer";
12+
export { PageDelimiter } from "./components/PageDelimiter";
1213
export { QuoteBlockRenderer } from "./components/blocks/QuoteBlockRenderer";
1314
export { DividerBlockRenderer } from "./components/blocks/DividerBlockRenderer";
1415
export { ToDoBlockRenderer } from "./components/blocks/ToDoBlockRenderer";
1516
export { ToggleBlockRenderer } from "./components/blocks/ToggleBlockRenderer";
1617
export { ColumnListBlockRenderer } from "./components/blocks/ColumnListBlockRenderer";
1718
export { EquationBlockRenderer } from "./components/blocks/EquationBlockRenderer";
1819

19-
// Export context
20-
export { RendererProvider, useRenderer } from "./context";
21-
2220
// Export types
2321
export type { BlockComponents } from "./components/BlockRenderer";
2422
export type { JsonDocRendererProps, BlockRendererProps } from "./types";

0 commit comments

Comments
 (0)