impl apis: play, pause, goto

This commit is contained in:
Yanzhen Yu
2026-04-01 12:00:00 +08:00
parent f3e96622de
commit fa185e9a87
3 changed files with 44 additions and 14 deletions

View File

@@ -112,21 +112,45 @@
export const toggle = () => {
switch (playerState) {
case 'playing':
replayer.pause();
pause();
break;
case 'paused':
if (finished) {
replayer.play();
finished = false;
} else {
replayer.play(currentTime);
}
play();
break;
default:
break;
}
};
export const play = () => {
if (playerState !== 'paused') {
return;
}
if (finished) {
replayer.play();
finished = false;
} else {
replayer.play(currentTime);
}
};
export const pause = () => {
if (playerState !== 'playing') {
return;
}
replayer.pause();
};
export const goto = (timeOffset: number) => {
currentTime = timeOffset;
const isPlaying = playerState === 'playing';
replayer.pause();
replayer.play(timeOffset);
if (!isPlaying) {
replayer.pause();
}
};
const handleProgressClick = (event: MouseEvent) => {
if (speedState === 'skipping') {
return;
@@ -140,13 +164,7 @@
percent = 1;
}
const timeOffset = meta.totalTime * percent;
currentTime = timeOffset;
const isPlaying = playerState === 'playing';
replayer.pause();
replayer.play(timeOffset);
if (!isPlaying) {
replayer.pause();
}
goto(timeOffset);
};
export const setSpeed = (newSpeed: number) => {

View File

@@ -99,6 +99,15 @@
export const toggleSkipInactive = () => {
controller.toggleSkipInactive();
};
export const play = () => {
controller.play();
};
export const pause = () => {
controller.pause();
};
export const goto = (timeOffset: number) => {
controller.goto(timeOffset);
};
onMount(() => {
// runtime type check

3
typings/index.d.ts vendored
View File

@@ -29,4 +29,7 @@ export default class rrwebPlayer {
toggle: () => void;
setSpeed: (speed: number) => void;
toggleSkipInactive: () => void;
play: () => void;
pause: () => void;
goto: (timeOffset: number) => void;
}