Skip to content
This repository was archived by the owner on Mar 24, 2025. It is now read-only.

Commit f9d2b78

Browse files
committed
feat: add default renderers for audio and video
1 parent 0442f05 commit f9d2b78

File tree

5 files changed

+17
-34
lines changed

5 files changed

+17
-34
lines changed

src/blocksToReactComponents.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ const defaultRenderers: RenderNode = {
2525
),
2626
[BLOCKS.CODE]: (block: IBlock) => <code>{blockToText(block)}</code>,
2727
[BLOCKS.IMAGE]: (block: IBlock) => <img src={block.image.file.url} />,
28+
[BLOCKS.AUDIO]: (block) => (
29+
<audio controls preload='none' src={block.audio.file.url} />
30+
),
31+
[BLOCKS.VIDEO]: (block) => (
32+
<video controls preload='none' src={block.video.file.url} />
33+
),
2834
}
2935

3036
const blocksToReactComponents = (

src/utils/UtilsInterfaces.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ export interface IBlock {
1515
numbered_list_item?: IBlockContent
1616
quote?: IBlockContent
1717
code?: IBlockContent
18-
image?: IImage
18+
image?: IAsset
19+
audio?: IAsset
20+
video?: IAsset
1921
list?: Array<IBlock>
2022
children?: Array<IBlock>
2123
}
2224

23-
interface IImage {
25+
interface IAsset {
2426
file: {
2527
url: string
2628
}

src/utils/blockRenderer.ts

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,9 @@
11
import { appendKeyToElement } from "./appendKeyToElement"
2-
import BLOCKS from "./blocks"
32
import { IBlock, RenderNode } from "./UtilsInterfaces"
43

54
const blockRenderer = (block: IBlock, renderers?: RenderNode) => {
6-
switch (block.type) {
7-
case BLOCKS.PARAGRAPH:
8-
return appendKeyToElement(renderers[BLOCKS.PARAGRAPH](block), block.id)
9-
case BLOCKS.HEADING1:
10-
return appendKeyToElement(renderers[BLOCKS.HEADING1](block), block.id)
11-
case BLOCKS.HEADING2:
12-
return appendKeyToElement(renderers[BLOCKS.HEADING2](block), block.id)
13-
case BLOCKS.HEADING3:
14-
return appendKeyToElement(renderers[BLOCKS.HEADING3](block), block.id)
15-
case BLOCKS.BULLETEDLISTITEM:
16-
return appendKeyToElement(
17-
renderers[BLOCKS.BULLETEDLISTITEM](block),
18-
block.id
19-
)
20-
case BLOCKS.NUMBEREDLISTITEM:
21-
return appendKeyToElement(
22-
renderers[BLOCKS.NUMBEREDLISTITEM](block),
23-
block.id
24-
)
25-
case BLOCKS.BULLETEDLIST:
26-
return appendKeyToElement(renderers[BLOCKS.BULLETEDLIST](block), block.id)
27-
case BLOCKS.NUMBEREDLIST:
28-
return appendKeyToElement(renderers[BLOCKS.NUMBEREDLIST](block), block.id)
29-
case BLOCKS.QUOTE:
30-
return appendKeyToElement(renderers[BLOCKS.QUOTE](block), block.id)
31-
case BLOCKS.CODE:
32-
return appendKeyToElement(renderers[BLOCKS.CODE](block), block.id)
33-
case BLOCKS.IMAGE:
34-
return appendKeyToElement(renderers[BLOCKS.IMAGE](block), block.id)
35-
}
5+
// console.log(block.type)
6+
return appendKeyToElement(renderers[block.type](block), block.id)
367
}
378

389
export default blockRenderer

src/utils/blocks.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ const BLOCKS = {
1010
QUOTE: "quote",
1111
IMAGE: "image",
1212
CODE: "code",
13+
AUDIO: "audio",
14+
VIDEO: "video",
1315
}
1416

1517
export default BLOCKS

src/utils/remapContent.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const remapContent = (content: Array<IBlock>) => {
44
let result: Array<IBlock> = []
55
const isNumberedListItem = (block: IBlock) =>
66
block.type === "numbered_list_item"
7+
78
const isBulletedListItem = (block: IBlock) =>
89
block.type === "bulleted_list_item"
910

@@ -29,8 +30,9 @@ const remapContent = (content: Array<IBlock>) => {
2930
return bulleted.flat()
3031
}
3132

32-
for (let index = 0; index < content.length - 1; index++) {
33+
for (let index = 0; index < content.length; index++) {
3334
const block = content[index]
35+
3436
if (!isBulletedListItem(block) && !isNumberedListItem(block)) {
3537
result.push(block)
3638
}

0 commit comments

Comments
 (0)