dispatch ui events

This commit is contained in:
Yanzhen Yu
2020-08-21 18:33:24 +08:00
parent a24e376271
commit 6c9a48919b
3 changed files with 17 additions and 2 deletions

View File

@@ -28,5 +28,6 @@
}); });
window.$c = component; window.$c = component;
component.addEventListener('finish', () => console.log('finish')); component.addEventListener('finish', () => console.log('finish'));
// component.addEventListener('ui-update-progress', console.log);
</script> </script>
</html> </html>

View File

@@ -26,6 +26,9 @@
export let tags: Record<string, string> = {}; export let tags: Record<string, string> = {};
let currentTime = 0; let currentTime = 0;
$: {
dispatch('ui-update-current-time', { payload: currentTime });
}
let timer: number | null = null; let timer: number | null = null;
let playerState: 'playing' | 'paused' | 'live'; let playerState: 'playing' | 'paused' | 'live';
let speedState: 'normal' | 'skipping'; let speedState: 'normal' | 'skipping';
@@ -39,6 +42,7 @@
$: { $: {
const percent = Math.min(1, currentTime / meta.totalTime); const percent = Math.min(1, currentTime / meta.totalTime);
percentage = `${100 * percent}%`; percentage = `${100 * percent}%`;
dispatch('ui-update-progress', { payload: percent });
} }
type CustomEvent = { type CustomEvent = {
name: string; name: string;

View File

@@ -36,7 +36,7 @@
toggle: () => void; toggle: () => void;
setSpeed: (speed: number) => void; setSpeed: (speed: number) => void;
toggleSkipInactive: () => void; toggleSkipInactive: () => void;
}; } & Controller;
let style: string; let style: string;
$: style = inlineCss({ $: style = inlineCss({
@@ -65,8 +65,18 @@
} }
}; };
export const addEventListener = (event: string, handler: () => unknown) => { export const addEventListener = (
event: string,
handler: (detail: unknown) => unknown,
) => {
replayer.on(event, handler); replayer.on(event, handler);
switch (event) {
case 'ui-update-current-time':
case 'ui-update-progress':
controller.$on(event, ({ detail }) => handler(detail));
default:
break;
}
}; };
export const addEvent = (event: eventWithTime) => { export const addEvent = (event: eventWithTime) => {