|
1 | 1 | import * as React from "react"; |
2 | 2 | import { CSSProperties } from "react"; |
3 | | -import { BlockType } from "types"; |
| 3 | +import { BlockType, ContentValueType } from "../types"; |
4 | 4 |
|
5 | | -const Asset: React.FC<{ block: BlockType }> = ({ block }) => { |
6 | | - const { value } = block; |
| 5 | +const types = ["video", "image", "embed"]; |
7 | 6 |
|
8 | | - if (block.value.type === "embed") { |
| 7 | +const Asset: React.FC<{ block: BlockType }> = ({ block }) => { |
| 8 | + const value = block.value as ContentValueType; |
| 9 | + const type = block.value.type; |
| 10 | + if (types.includes(type)) { |
9 | 11 | const { id } = value; |
10 | | - const format = block.value.format; |
| 12 | + const format = (block.value as any).format; |
11 | 13 | const { |
12 | 14 | block_width, |
13 | 15 | block_height, |
14 | 16 | display_source, |
15 | 17 | block_aspect_ratio |
16 | 18 | } = format; |
17 | 19 |
|
18 | | - const isImage = value.type === "image"; |
| 20 | + const isImage = type === "image"; |
19 | 21 | const Comp = isImage ? "img" : "video"; |
20 | 22 |
|
21 | 23 | const useWrapper = block_aspect_ratio && !block_height; |
@@ -46,7 +48,7 @@ const Asset: React.FC<{ block: BlockType }> = ({ block }) => { |
46 | 48 | <Comp |
47 | 49 | key={!useWrapper ? id : undefined} |
48 | 50 | src={`https://notion.so/image/${encodeURIComponent( |
49 | | - block.value.properties.source[0][0] |
| 51 | + value.properties.source[0][0] |
50 | 52 | )}`} |
51 | 53 | controls={!isImage} |
52 | 54 | alt={`An ${isImage ? "image" : "video"} from Splitbee`} |
|
0 commit comments