@@ -59,12 +59,32 @@ export class MediaElementCenterPanel extends CenterPanel<
59
59
} ) ;
60
60
61
61
this . extensionHost . subscribe ( IIIFEvents . SET_TARGET , ( target : TFragment ) => {
62
- let t = target . t ;
62
+ let t : number | [ number , number ] = target . t ;
63
63
if ( Array . isArray ( t ) ) {
64
- t = t [ 0 ] ;
64
+ if ( ( t as [ number ] | [ number , number ] ) . length === 1 ) {
65
+ t = t [ 0 ] ;
66
+ } else {
67
+ const [ startTime , endTime ] = t ;
68
+
69
+ if ( endTime <= startTime ) {
70
+ console . error ( "endTime must be greater than startTime" ) ;
71
+ return ;
72
+ }
73
+
74
+ this . player . setCurrentTime ( startTime ) ;
75
+ this . player . play ( ) ;
76
+
77
+ const duration = ( endTime - startTime ) * 1000 ;
78
+
79
+ setTimeout ( ( ) => {
80
+ this . player . pause ( ) ;
81
+ } , duration ) ;
82
+
83
+ return ;
84
+ }
65
85
}
66
- that . player . setCurrentTime ( t ) ;
67
- that . player . play ( ) ;
86
+ this . player . setCurrentTime ( t ) ;
87
+ this . player . play ( ) ;
68
88
} ) ;
69
89
70
90
this . extensionHost . subscribe (
@@ -107,7 +127,9 @@ export class MediaElementCenterPanel extends CenterPanel<
107
127
canvas . getRenderings ( ) . forEach ( ( rendering : Rendering ) => {
108
128
if ( this . isTypeMedia ( rendering ) ) {
109
129
sources . push ( {
110
- label : rendering . getLabel ( ) . getValue ( ) ?? rendering . getFormat ( ) . toString ( ) ,
130
+ label :
131
+ rendering . getLabel ( ) . getValue ( ) ??
132
+ rendering . getFormat ( ) . toString ( ) ,
111
133
type : rendering . getFormat ( ) . toString ( ) ,
112
134
src : rendering . id ,
113
135
} ) ;
@@ -292,10 +314,11 @@ export class MediaElementCenterPanel extends CenterPanel<
292
314
appendTextTracks ( subtitles : Array < TextTrackDescriptor > ) {
293
315
for ( const subtitle of subtitles ) {
294
316
this . $media . append (
295
- $ ( `<track label="${ subtitle . label } " kind="subtitles" srclang="${ subtitle . language
296
- } " src="${ subtitle . id } " ${
297
- subtitles . indexOf ( subtitle ) === 0 ? "default" : ""
298
- } >
317
+ $ ( `<track label="${ subtitle . label } " kind="subtitles" srclang="${
318
+ subtitle . language
319
+ } " src="${ subtitle . id } " ${
320
+ subtitles . indexOf ( subtitle ) === 0 ? "default" : ""
321
+ } >
299
322
` )
300
323
) ;
301
324
}
0 commit comments