@@ -170,6 +170,7 @@ function serializeBlock<
170170 serializer : DOMSerializer ,
171171 orderedListItemBlockTypes : Set < string > ,
172172 unorderedListItemBlockTypes : Set < string > ,
173+ nestingLevel : number ,
173174 options ?: { document ?: Document } ,
174175) {
175176 const doc = options ?. document ?? document ;
@@ -236,9 +237,21 @@ function serializeBlock<
236237 }
237238
238239 addAttributesAndRemoveClasses ( ret . dom . firstChild ! as HTMLElement ) ;
240+ if ( nestingLevel > 0 ) {
241+ ( ret . dom . firstChild ! as HTMLElement ) . setAttribute (
242+ "data-nesting-level" ,
243+ nestingLevel . toString ( ) ,
244+ ) ;
245+ }
239246 elementFragment . append ( ...Array . from ( ret . dom . childNodes ) ) ;
240247 } else {
241248 elementFragment . append ( ret . dom ) ;
249+ if ( nestingLevel > 0 ) {
250+ ( ret . dom as HTMLElement ) . setAttribute (
251+ "data-nesting-level" ,
252+ nestingLevel . toString ( ) ,
253+ ) ;
254+ }
242255 }
243256
244257 if ( ret . contentDOM && block . content ) {
@@ -287,6 +300,7 @@ function serializeBlock<
287300 serializer ,
288301 orderedListItemBlockTypes ,
289302 unorderedListItemBlockTypes ,
303+ nestingLevel + 1 ,
290304 options ,
291305 ) ;
292306 if (
@@ -323,6 +337,7 @@ const serializeBlocksToFragment = <
323337 serializer : DOMSerializer ,
324338 orderedListItemBlockTypes : Set < string > ,
325339 unorderedListItemBlockTypes : Set < string > ,
340+ nestingLevel = 0 ,
326341 options ?: { document ?: Document } ,
327342) => {
328343 for ( const block of blocks ) {
@@ -333,6 +348,7 @@ const serializeBlocksToFragment = <
333348 serializer ,
334349 orderedListItemBlockTypes ,
335350 unorderedListItemBlockTypes ,
351+ nestingLevel ,
336352 options ,
337353 ) ;
338354 }
@@ -360,6 +376,7 @@ export const serializeBlocksExternalHTML = <
360376 serializer ,
361377 orderedListItemBlockTypes ,
362378 unorderedListItemBlockTypes ,
379+ 0 ,
363380 options ,
364381 ) ;
365382 return fragment ;
0 commit comments