Update test and add volumechange event

pull/1148/head
Jacob Mischka 8 years ago
parent 24e5d3c4af
commit fa6998d2bc
No known key found for this signature in database
GPG Key ID: 50A869F8CD9CBB9C

@ -760,5 +760,11 @@ const events = [
filter: (node: Element, name: string) => filter: (node: Element, name: string) =>
node.isMediaNode() && node.isMediaNode() &&
(name === 'buffered' || name === 'seekable') (name === 'buffered' || name === 'seekable')
},
{
eventNames: ['volumechange'],
filter: (node: Element, name: string) =>
node.isMediaNode() &&
name === 'volume'
} }
]; ];

@ -226,6 +226,12 @@ function create_main_fragment(state, component) {
component.set({ buffered: timeRangesToArray(audio.buffered), seekable: timeRangesToArray(audio.seekable) }); component.set({ buffered: timeRangesToArray(audio.buffered), seekable: timeRangesToArray(audio.seekable) });
} }
function audio_volumechange_handler() {
audio_updating = true;
component.set({ volume: audio.volume });
audio_updating = false;
}
return { return {
c: function create() { c: function create() {
audio = createElement("audio"); audio = createElement("audio");
@ -243,6 +249,7 @@ function create_main_fragment(state, component) {
if (!('buffered' in state)) component.root._beforecreate.push(audio_progress_handler); if (!('buffered' in state)) component.root._beforecreate.push(audio_progress_handler);
addListener(audio, "loadedmetadata", audio_loadedmetadata_handler); addListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
if (!('buffered' in state && 'seekable' in state)) component.root._beforecreate.push(audio_loadedmetadata_handler); if (!('buffered' in state && 'seekable' in state)) component.root._beforecreate.push(audio_loadedmetadata_handler);
addListener(audio, "volumechange", audio_volumechange_handler);
}, },
m: function mount(target, anchor) { m: function mount(target, anchor) {
@ -252,6 +259,7 @@ function create_main_fragment(state, component) {
p: function update(changed, state) { p: function update(changed, state) {
if (!audio_updating && !isNaN(state.currentTime )) audio.currentTime = state.currentTime ; if (!audio_updating && !isNaN(state.currentTime )) audio.currentTime = state.currentTime ;
if (!audio_updating && audio_is_paused !== (audio_is_paused = state.paused )) audio[audio_is_paused ? "pause" : "play"](); if (!audio_updating && audio_is_paused !== (audio_is_paused = state.paused )) audio[audio_is_paused ? "pause" : "play"]();
if (!audio_updating && !isNaN(state.volume)) audio.volume = state.volume;
}, },
u: function unmount() { u: function unmount() {
@ -265,6 +273,7 @@ function create_main_fragment(state, component) {
removeListener(audio, "pause", audio_play_pause_handler); removeListener(audio, "pause", audio_play_pause_handler);
removeListener(audio, "progress", audio_progress_handler); removeListener(audio, "progress", audio_progress_handler);
removeListener(audio, "loadedmetadata", audio_loadedmetadata_handler); removeListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
removeListener(audio, "volumechange", audio_volumechange_handler);
} }
}; };
} }

@ -30,6 +30,12 @@ function create_main_fragment(state, component) {
component.set({ buffered: timeRangesToArray(audio.buffered), seekable: timeRangesToArray(audio.seekable) }); component.set({ buffered: timeRangesToArray(audio.buffered), seekable: timeRangesToArray(audio.seekable) });
} }
function audio_volumechange_handler() {
audio_updating = true;
component.set({ volume: audio.volume });
audio_updating = false;
}
return { return {
c: function create() { c: function create() {
audio = createElement("audio"); audio = createElement("audio");
@ -47,6 +53,7 @@ function create_main_fragment(state, component) {
if (!('buffered' in state)) component.root._beforecreate.push(audio_progress_handler); if (!('buffered' in state)) component.root._beforecreate.push(audio_progress_handler);
addListener(audio, "loadedmetadata", audio_loadedmetadata_handler); addListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
if (!('buffered' in state && 'seekable' in state)) component.root._beforecreate.push(audio_loadedmetadata_handler); if (!('buffered' in state && 'seekable' in state)) component.root._beforecreate.push(audio_loadedmetadata_handler);
addListener(audio, "volumechange", audio_volumechange_handler);
}, },
m: function mount(target, anchor) { m: function mount(target, anchor) {
@ -56,6 +63,7 @@ function create_main_fragment(state, component) {
p: function update(changed, state) { p: function update(changed, state) {
if (!audio_updating && !isNaN(state.currentTime )) audio.currentTime = state.currentTime ; if (!audio_updating && !isNaN(state.currentTime )) audio.currentTime = state.currentTime ;
if (!audio_updating && audio_is_paused !== (audio_is_paused = state.paused )) audio[audio_is_paused ? "pause" : "play"](); if (!audio_updating && audio_is_paused !== (audio_is_paused = state.paused )) audio[audio_is_paused ? "pause" : "play"]();
if (!audio_updating && !isNaN(state.volume)) audio.volume = state.volume;
}, },
u: function unmount() { u: function unmount() {
@ -69,6 +77,7 @@ function create_main_fragment(state, component) {
removeListener(audio, "pause", audio_play_pause_handler); removeListener(audio, "pause", audio_play_pause_handler);
removeListener(audio, "progress", audio_progress_handler); removeListener(audio, "progress", audio_progress_handler);
removeListener(audio, "loadedmetadata", audio_loadedmetadata_handler); removeListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
removeListener(audio, "volumechange", audio_volumechange_handler);
} }
}; };
} }

@ -1 +1 @@
<audio bind:buffered bind:seekable bind:played bind:currentTime bind:duration bind:paused/> <audio bind:buffered bind:seekable bind:played bind:currentTime bind:duration bind:paused bind:volume/>

Loading…
Cancel
Save