/* 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 define($$self, $$props, $$make_dirty) { 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; $$make_dirty('played'); $$make_dirty('currentTime'); } function audio_durationchange_handler() { duration = this.duration; $$make_dirty('duration'); } function audio_play_pause_handler() { paused = this.paused; $$make_dirty('paused'); } function audio_progress_handler() { buffered = timeRangesToArray(this.buffered); $$make_dirty('buffered'); } function audio_loadedmetadata_handler() { buffered = timeRangesToArray(this.buffered); seekable = timeRangesToArray(this.seekable); $$make_dirty('buffered'); $$make_dirty('seekable'); } function audio_volumechange_handler() { volume = this.volume; $$make_dirty('volume'); } $$self.$$.get = () => ({ 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 }); $$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; }; } class SvelteComponent extends SvelteComponent_1 { constructor(options) { super(); init(this, options, define, create_fragment, safe_not_equal); } get buffered() { return this.$$.get().buffered; } set buffered(value) { this.$set({ buffered: value }); flush(); } get seekable() { return this.$$.get().seekable; } set seekable(value) { this.$set({ seekable: value }); flush(); } get played() { return this.$$.get().played; } set played(value) { this.$set({ played: value }); flush(); } get currentTime() { return this.$$.get().currentTime; } set currentTime(value) { this.$set({ currentTime: value }); flush(); } get duration() { return this.$$.get().duration; } set duration(value) { this.$set({ duration: value }); flush(); } get paused() { return this.$$.get().paused; } set paused(value) { this.$set({ paused: value }); flush(); } get volume() { return this.$$.get().volume; } set volume(value) { this.$set({ volume: value }); flush(); } } export default SvelteComponent;