/* generated by Svelte vX.Y.Z */ import { SvelteComponent as SvelteComponent_1, addListener, add_render_callback, createElement, detachNode, flush, init, insert, run, run_all, safe_not_equal, timeRangesToArray } from "svelte/internal"; function create_fragment(component, ctx) { var audio, audio_is_paused = true, audio_updating = false, audio_animationframe, current, dispose; return { c() { audio = createElement("audio"); if (ctx.played === void 0 || ctx.currentTime === void 0) add_render_callback(() => ctx.audio_timeupdate_handler.call(audio)); if (ctx.duration === void 0) add_render_callback(() => ctx.audio_durationchange_handler.call(audio)); if (ctx.buffered === void 0) add_render_callback(() => ctx.audio_progress_handler.call(audio)); if (ctx.buffered === void 0 || ctx.seekable === void 0) add_render_callback(() => ctx.audio_loadedmetadata_handler.call(audio)); dispose = [ addListener(audio, "timeupdate", ctx.audio_timeupdate_handler), addListener(audio, "durationchange", ctx.audio_durationchange_handler), addListener(audio, "play", ctx.audio_play_pause_handler), addListener(audio, "pause", ctx.audio_play_pause_handler), addListener(audio, "progress", ctx.audio_progress_handler), addListener(audio, "loadedmetadata", ctx.audio_loadedmetadata_handler), addListener(audio, "volumechange", ctx.audio_volumechange_handler) ]; }, m(target, anchor) { insert(target, audio, anchor); audio.volume = ctx.volume; current = true; }, p(changed, ctx) { if (!audio_updating && !isNaN(ctx.currentTime) && changed.currentTime) audio.currentTime = ctx.currentTime; if (!audio_updating && audio_is_paused !== (audio_is_paused = ctx.paused) && changed.paused) audio[audio_is_paused ? "pause" : "play"](); if (!audio_updating && !isNaN(ctx.volume) && changed.volume) audio.volume = ctx.volume; }, i(target, anchor) { if (current) return; this.m(target, anchor); }, o: run, d(detach) { if (detach) { detachNode(audio); } run_all(dispose); } }; } function instance($$self, $$props, $$invalidate) { let { buffered, seekable, played, currentTime, duration, paused, volume } = $$props; function audio_timeupdate_handler() { cancelAnimationFrame(audio_animationframe); if (!audio.paused) audio_animationframe = requestAnimationFrame(audio_timeupdate_handler); played = timeRangesToArray(this.played); currentTime = this.currentTime; $$invalidate('played', played); $$invalidate('currentTime', currentTime); } function audio_durationchange_handler() { duration = this.duration; $$invalidate('duration', duration); } function audio_play_pause_handler() { paused = this.paused; $$invalidate('paused', paused); } function audio_progress_handler() { buffered = timeRangesToArray(this.buffered); $$invalidate('buffered', buffered); } function audio_loadedmetadata_handler() { buffered = timeRangesToArray(this.buffered); seekable = timeRangesToArray(this.seekable); $$invalidate('buffered', buffered); $$invalidate('seekable', seekable); } function audio_volumechange_handler() { volume = this.volume; $$invalidate('volume', volume); } $$self.$$.set = $$props => { if ('buffered' in $$props) buffered = $$props.buffered; if ('seekable' in $$props) seekable = $$props.seekable; if ('played' in $$props) played = $$props.played; if ('currentTime' in $$props) currentTime = $$props.currentTime; if ('duration' in $$props) duration = $$props.duration; if ('paused' in $$props) paused = $$props.paused; if ('volume' in $$props) volume = $$props.volume; }; return { buffered, seekable, played, currentTime, duration, paused, volume, audio_timeupdate_handler, audio_durationchange_handler, audio_play_pause_handler, audio_progress_handler, audio_loadedmetadata_handler, audio_volumechange_handler }; } class SvelteComponent extends SvelteComponent_1 { constructor(options) { super(); init(this, options, instance, create_fragment, safe_not_equal); } get buffered() { return this.$$.ctx.buffered; } set buffered(buffered) { this.$set({ buffered }); flush(); } get seekable() { return this.$$.ctx.seekable; } set seekable(seekable) { this.$set({ seekable }); flush(); } get played() { return this.$$.ctx.played; } set played(played) { this.$set({ played }); flush(); } get currentTime() { return this.$$.ctx.currentTime; } set currentTime(currentTime) { this.$set({ currentTime }); flush(); } get duration() { return this.$$.ctx.duration; } set duration(duration) { this.$set({ duration }); flush(); } get paused() { return this.$$.ctx.paused; } set paused(paused) { this.$set({ paused }); flush(); } get volume() { return this.$$.ctx.volume; } set volume(volume) { this.$set({ volume }); flush(); } } export default SvelteComponent;