@@ -27,7 +27,11 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
27
27
> = {
28
28
paragraph : ( block , exporter ) => {
29
29
// const style = blocknoteDefaultPropsToReactPDFStyle(block.props);
30
- return < Text > { exporter . transformInlineContent ( block . content ) } </ Text > ;
30
+ return (
31
+ < Text key = { "paragraph" + block . id } >
32
+ { exporter . transformInlineContent ( block . content ) }
33
+ </ Text >
34
+ ) ;
31
35
} ,
32
36
toggleListItem : ( block , exporter ) => {
33
37
return (
@@ -39,7 +43,7 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
39
43
bulletListItem : ( block , exporter ) => {
40
44
// const style = t(block.props);
41
45
return (
42
- < ListItem listMarker = { BULLET_MARKER } >
46
+ < ListItem listMarker = { BULLET_MARKER } key = { "bulletListItem" + block . id } >
43
47
< Text > { exporter . transformInlineContent ( block . content ) } </ Text >
44
48
</ ListItem >
45
49
) ;
@@ -48,7 +52,10 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
48
52
// const style = blocknoteDefaultPropsToReactPDFStyle(block.props);
49
53
// console.log("NUMBERED LIST ITEM", block.props.textAlignment, style);
50
54
return (
51
- < ListItem listMarker = { `${ numberedListIndex } .` } >
55
+ < ListItem
56
+ listMarker = { `${ numberedListIndex } .` }
57
+ key = { "numberedListItem" + block . id }
58
+ >
52
59
< Text > { exporter . transformInlineContent ( block . content ) } </ Text >
53
60
</ ListItem >
54
61
) ;
@@ -61,6 +68,7 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
61
68
listMarker = {
62
69
block . props . checked ? CHECK_MARKER_CHECKED : CHECK_MARKER_UNCHECKED
63
70
}
71
+ key = { "checkListItem" + block . id }
64
72
>
65
73
< Text > { exporter . transformInlineContent ( block . content ) } </ Text >
66
74
</ ListItem >
@@ -77,6 +85,7 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
77
85
} [ block . props . level ] ;
78
86
return (
79
87
< Text
88
+ key = { "heading" + block . id }
80
89
style = { {
81
90
fontSize : levelFontSizeEM * FONT_SIZE * PIXELS_PER_POINT ,
82
91
fontWeight : 700 ,
@@ -89,6 +98,7 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
89
98
quote : ( block , exporter ) => {
90
99
return (
91
100
< Text
101
+ key = { "quote" + block . id }
92
102
style = { {
93
103
borderLeft : "#7D797A" ,
94
104
color : "#7D797A" ,
@@ -106,7 +116,7 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
106
116
107
117
return (
108
118
< Text
109
- key = { `line_${ index } ` }
119
+ key = { `line_${ index } ` + block . id }
110
120
style = { {
111
121
marginLeft : indent * 9.5 * PIXELS_PER_POINT ,
112
122
} }
@@ -127,17 +137,18 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
127
137
fontSize : FONT_SIZE * PIXELS_PER_POINT ,
128
138
fontFamily : "GeistMono" ,
129
139
} }
140
+ key = { "codeBlock" + block . id }
130
141
>
131
142
{ lines }
132
143
</ View >
133
144
) ;
134
145
} ,
135
146
pageBreak : ( ) => {
136
- return < View break /> ;
147
+ return < View break key = { "pageBreak" } /> ;
137
148
} ,
138
149
audio : ( block , exporter ) => {
139
150
return (
140
- < View wrap = { false } >
151
+ < View wrap = { false } key = { "audio" + block . id } >
141
152
{ file (
142
153
block . props ,
143
154
"Open audio file" ,
@@ -152,7 +163,7 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
152
163
} ,
153
164
video : ( block , exporter ) => {
154
165
return (
155
- < View wrap = { false } >
166
+ < View wrap = { false } key = { "video" + block . id } >
156
167
{ file (
157
168
block . props ,
158
169
"Open video file" ,
@@ -167,7 +178,7 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
167
178
} ,
168
179
file : ( block , exporter ) => {
169
180
return (
170
- < View wrap = { false } >
181
+ < View wrap = { false } key = { "file" + block . id } >
171
182
{ file (
172
183
block . props ,
173
184
"Open file" ,
@@ -182,7 +193,7 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
182
193
} ,
183
194
image : async ( block , t ) => {
184
195
return (
185
- < View wrap = { false } >
196
+ < View wrap = { false } key = { "image" + block . id } >
186
197
< Image
187
198
src = { await t . resolveFile ( block . props . url ) }
188
199
style = { {
@@ -196,7 +207,9 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping<
196
207
) ;
197
208
} ,
198
209
table : ( block , t ) => {
199
- return < Table data = { block . content } transformer = { t } /> ;
210
+ return (
211
+ < Table data = { block . content } transformer = { t } key = { "table" + block . id } />
212
+ ) ;
200
213
} ,
201
214
} ;
202
215
@@ -208,7 +221,7 @@ function file(
208
221
) {
209
222
const PIXELS_PER_POINT = 0.75 ;
210
223
return (
211
- < Link src = { props . url } >
224
+ < Link src = { props . url } key = { "file" + props . url } >
212
225
< View
213
226
style = { {
214
227
display : "flex" ,
@@ -232,6 +245,7 @@ function caption(
232
245
}
233
246
return (
234
247
< Text
248
+ key = { "caption" + props . caption }
235
249
style = { {
236
250
width : props . previewWidth
237
251
? props . previewWidth * PIXELS_PER_POINT
0 commit comments