Skip to content

Commit 8da21ba

Browse files
committed
allow target duration to be set
1 parent 261ecf9 commit 8da21ba

File tree

1 file changed

+32
-9
lines changed

1 file changed

+32
-9
lines changed

src/content-handlers/iiif/modules/uv-mediaelementcenterpanel-module/MediaElementCenterPanel.ts

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,32 @@ export class MediaElementCenterPanel extends CenterPanel<
5959
});
6060

6161
this.extensionHost.subscribe(IIIFEvents.SET_TARGET, (target: TFragment) => {
62-
let t = target.t;
62+
let t: number | [number, number] = target.t;
6363
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+
}
6585
}
66-
that.player.setCurrentTime(t);
67-
that.player.play();
86+
this.player.setCurrentTime(t);
87+
this.player.play();
6888
});
6989

7090
this.extensionHost.subscribe(
@@ -107,7 +127,9 @@ export class MediaElementCenterPanel extends CenterPanel<
107127
canvas.getRenderings().forEach((rendering: Rendering) => {
108128
if (this.isTypeMedia(rendering)) {
109129
sources.push({
110-
label: rendering.getLabel().getValue() ?? rendering.getFormat().toString(),
130+
label:
131+
rendering.getLabel().getValue() ??
132+
rendering.getFormat().toString(),
111133
type: rendering.getFormat().toString(),
112134
src: rendering.id,
113135
});
@@ -292,10 +314,11 @@ export class MediaElementCenterPanel extends CenterPanel<
292314
appendTextTracks(subtitles: Array<TextTrackDescriptor>) {
293315
for (const subtitle of subtitles) {
294316
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+
}>
299322
`)
300323
);
301324
}

0 commit comments

Comments
 (0)