@@ -836,6 +836,40 @@ describe('Media Utilities', () => {
836836 const result = hydrateImageBlocks ( blocks , mediaFiles ) ;
837837 expect ( result [ 0 ] . src ) . toBe ( 'data:image/png;base64,iVBORw0KGgoAAAANS' ) ;
838838 } ) ;
839+
840+ it ( 'handles Uint8Array media values from persistence layers' , ( ) => {
841+ const blocks : FlowBlock [ ] = [
842+ {
843+ kind : 'image' ,
844+ id : '1' ,
845+ src : 'media/image.png' ,
846+ runs : [ ] ,
847+ } ,
848+ ] ;
849+ // Persistence layers (e.g., Y.js binary encoding) may return Uint8Array
850+ const base64String = 'iVBORw0KGgoAAAANS' ;
851+ const mediaFiles = { 'media/image.png' : new TextEncoder ( ) . encode ( base64String ) } ;
852+
853+ const result = hydrateImageBlocks ( blocks , mediaFiles ) ;
854+ expect ( result [ 0 ] . src ) . toBe ( 'data:image/png;base64,iVBORw0KGgoAAAANS' ) ;
855+ } ) ;
856+
857+ it ( 'handles Uint8Array data URI values from persistence layers' , ( ) => {
858+ const blocks : FlowBlock [ ] = [
859+ {
860+ kind : 'image' ,
861+ id : '1' ,
862+ src : 'media/image.png' ,
863+ runs : [ ] ,
864+ } ,
865+ ] ;
866+ // Data URI stored as Uint8Array
867+ const dataUri = 'data:image/png;base64,iVBORw0KGgoAAAANS' ;
868+ const mediaFiles = { 'media/image.png' : new TextEncoder ( ) . encode ( dataUri ) } ;
869+
870+ const result = hydrateImageBlocks ( blocks , mediaFiles ) ;
871+ expect ( result [ 0 ] . src ) . toBe ( 'data:image/png;base64,iVBORw0KGgoAAAANS' ) ;
872+ } ) ;
839873 } ) ;
840874
841875 describe ( 'hydrateImageBlocks - ShapeGroup image hydration' , ( ) => {
0 commit comments