expose APIs as public API
This commit is contained in:
@@ -26,6 +26,7 @@
|
|||||||
autoPlay: false,
|
autoPlay: false,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
window.$c = component;
|
||||||
component.addEventListener('finish', () => console.log('finish'));
|
component.addEventListener('finish', () => console.log('finish'));
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -102,7 +102,7 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggle = () => {
|
export const toggle = () => {
|
||||||
switch (playerState) {
|
switch (playerState) {
|
||||||
case 'playing':
|
case 'playing':
|
||||||
replayer.pause();
|
replayer.pause();
|
||||||
@@ -142,7 +142,7 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const setSpeed = (newSpeed: number) => {
|
export const setSpeed = (newSpeed: number) => {
|
||||||
let needFreeze = playerState === 'playing';
|
let needFreeze = playerState === 'playing';
|
||||||
speed = newSpeed;
|
speed = newSpeed;
|
||||||
if (needFreeze) {
|
if (needFreeze) {
|
||||||
@@ -154,6 +154,10 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const toggleSkipInactive = () => {
|
||||||
|
skipInactive = !skipInactive;
|
||||||
|
};
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
playerState = replayer.service.state.value as typeof playerState;
|
playerState = replayer.service.state.value as typeof playerState;
|
||||||
speedState = replayer.speedService.state.value as typeof speedState;
|
speedState = replayer.speedService.state.value as typeof speedState;
|
||||||
@@ -320,7 +324,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="rr-controller__btns">
|
<div class="rr-controller__btns">
|
||||||
<button on:click={toggle}>
|
<button on:click={toggle}>
|
||||||
{#if ['playing', 'skipping'].includes(playerState)}
|
{#if playerState === 'playing'}
|
||||||
<svg
|
<svg
|
||||||
class="icon"
|
class="icon"
|
||||||
viewBox="0 0 1024 1024"
|
viewBox="0 0 1024 1024"
|
||||||
|
|||||||
@@ -32,6 +32,11 @@
|
|||||||
let fullscreenListener: undefined | (() => void);
|
let fullscreenListener: undefined | (() => void);
|
||||||
let _width: number = width;
|
let _width: number = width;
|
||||||
let _height: number = height;
|
let _height: number = height;
|
||||||
|
let controller: {
|
||||||
|
toggle: () => void;
|
||||||
|
setSpeed: (speed: number) => void;
|
||||||
|
toggleSkipInactive: () => void;
|
||||||
|
};
|
||||||
|
|
||||||
let style: string;
|
let style: string;
|
||||||
$: style = inlineCss({
|
$: style = inlineCss({
|
||||||
@@ -54,7 +59,7 @@
|
|||||||
`scale(${Math.min(widthScale, heightScale)})` + 'translate(-50%, -50%)';
|
`scale(${Math.min(widthScale, heightScale)})` + 'translate(-50%, -50%)';
|
||||||
};
|
};
|
||||||
|
|
||||||
const fullscreen = () => {
|
export const toggleFullscreen = () => {
|
||||||
if (player) {
|
if (player) {
|
||||||
isFullscreen() ? exitFullscreen() : openFullscreen(player);
|
isFullscreen() ? exitFullscreen() : openFullscreen(player);
|
||||||
}
|
}
|
||||||
@@ -68,6 +73,17 @@
|
|||||||
replayer.addEvent(event);
|
replayer.addEvent(event);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// by pass controller methods as public API
|
||||||
|
export const toggle = () => {
|
||||||
|
controller.toggle();
|
||||||
|
};
|
||||||
|
export const setSpeed = (speed: number) => {
|
||||||
|
controller.setSpeed(speed);
|
||||||
|
};
|
||||||
|
export const toggleSkipInactive = () => {
|
||||||
|
controller.toggleSkipInactive();
|
||||||
|
};
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
// runtime type check
|
// runtime type check
|
||||||
if (speedOption !== undefined && typeOf(speedOption) !== 'array') {
|
if (speedOption !== undefined && typeOf(speedOption) !== 'array') {
|
||||||
@@ -167,12 +183,13 @@
|
|||||||
<div class="rr-player__frame" bind:this={frame} {style} />
|
<div class="rr-player__frame" bind:this={frame} {style} />
|
||||||
{#if replayer}
|
{#if replayer}
|
||||||
<Controller
|
<Controller
|
||||||
|
bind:this={controller}
|
||||||
{replayer}
|
{replayer}
|
||||||
{showController}
|
{showController}
|
||||||
{autoPlay}
|
{autoPlay}
|
||||||
{speedOption}
|
{speedOption}
|
||||||
{skipInactive}
|
{skipInactive}
|
||||||
{tags}
|
{tags}
|
||||||
on:fullscreen={() => fullscreen()} />
|
on:fullscreen={() => toggleFullscreen()} />
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
3
typings/index.d.ts
vendored
3
typings/index.d.ts
vendored
@@ -20,4 +20,7 @@ export default class rrwebPlayer {
|
|||||||
addEventListener(event: string, handler: () => unknown): void;
|
addEventListener(event: string, handler: () => unknown): void;
|
||||||
|
|
||||||
addEvent(event: eventWithTime): void;
|
addEvent(event: eventWithTime): void;
|
||||||
|
toggle: () => void;
|
||||||
|
setSpeed: (speed: number) => void;
|
||||||
|
toggleSkipInactive: () => void;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user