Aplayer port in Svelte with Custom element (WebComponent) build
This is a Aplayer port in Svelte.
Thanks to Svelte, It is framework agnostic and no runtime required with prebuild custom element bundle.
It should be a good alternative to hexo-tag-aplayer
as well as any environment in which you can customise your HTML by using custom element.
Drawback: Due to the limitaion of custom element, Instead of use object in the props of custom element, You need to pass a strict json string. And all props are snake case style naming.
npm i svelte-aplayer
Using in webcomponent Example
Using in Svelte
import Aplayer from 'svelte-aplayer/dist/svelte/svelte-aplayer.es.js'
import 'svelte-aplayer/dist/svelte/style.css'
...
<Aplayer audio={
{name:'君の知らない物語',
artist: 'supercell',
cover: 'https://blog-static.fengkx.top/svelte-aplayer/bakemonogatari-ed.jpg',
url: "https://blog-static.fengkx.top/svelte-aplayer/bakemonogatari-ed.mp3"}} />
Name | Default | Description |
---|---|---|
mini | false | enable mini mode, see more details |
autoplay | false | audio autoplay |
theme | '#b7daff' | main color |
loop | 'all' | player loop play, values: 'all', 'one', 'none' |
order | 'list' | player play order, values: 'list', 'random' |
volume | 0.7 | default volume, notice that player will remember user setting, default volume will not work after user set volume themselves |
audio | - | audio info, should be an object or object array strict json string is required in custom element |
audio.name | - | audio name |
audio.artist | - | audio artist |
audio.url | - | audio url |
audio.cover | - | audio cover |
audio.lrc | - | URL or string of lrc file |
audio.theme | - | main color when switching to this audio, it has priority over the above theme |
mutex | true | prevent to play multiple player at the same time, pause other players when this player start play |
list_folded | false | indicate whether list should folded at first |
list_max_height | - | list max height |
base_font_size | 12 | base font size to adjust the whole size of the player as well as lrc font size |
Audio Events
For svelte compatibility native events are wrapped in the detail
property of the CustomEvent.
document.querySelector("s-aplayer").addEventListener("play", (ev) => {
console.log(ev); // CustomEvent object
console.log(ev.detail); // audio element play event object
});
Player Events