@@ -49,11 +49,11 @@ function handleEmbeds(dom: HTMLDivElement, view: DatabaseView, depth: number) {
4949 }
5050
5151 if ( MediaExtensions . AUDIO . contains ( target . extension ) ) {
52- // return handleAudio(el, target, view);
52+ return handleAudio ( el , target , view ) ;
5353 }
5454
5555 if ( MediaExtensions . VIDEO . contains ( target . extension ) ) {
56- // return handleVideo(el, target, view);
56+ return handleVideo ( el , target , view ) ;
5757 }
5858
5959 // if (target.extension === "md") {
@@ -88,3 +88,34 @@ function handleImage(el: HTMLElement, file: TFile, view: DatabaseView) {
8888
8989 el . addClasses ( [ "image-embed" , "is-loaded" ] ) ;
9090}
91+
92+ function handleAudio ( el : HTMLElement , file : TFile , view : DatabaseView ) {
93+ el . empty ( ) ;
94+ el . createEl ( "audio" , {
95+ attr : { controls : "" , src : view . app . vault . getResourcePath ( file ) } ,
96+ } ) ;
97+ el . addClasses ( [ "media-embed" , "is-loaded" ] ) ;
98+ }
99+
100+ function handleVideo ( el : HTMLElement , file : TFile , view : DatabaseView ) {
101+ el . empty ( ) ;
102+
103+ el . createEl (
104+ "video" ,
105+ { attr : { controls : "" , src : view . app . vault . getResourcePath ( file ) } } ,
106+ ( video ) => {
107+ const handleLoad = ( ) => {
108+ video . removeEventListener ( "loadedmetadata" , handleLoad ) ;
109+
110+ if ( video . videoWidth === 0 && video . videoHeight === 0 ) {
111+ el . empty ( ) ;
112+ handleAudio ( el , file , view ) ;
113+ }
114+ } ;
115+
116+ video . addEventListener ( "loadedmetadata" , handleLoad ) ;
117+ }
118+ ) ;
119+
120+ el . addClasses ( [ "media-embed" , "is-loaded" ] ) ;
121+ }
0 commit comments