[+] Links
This commit is contained in:
@@ -5,6 +5,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<button class="cbox size-48px relative rounded-8px" {...rest}>
|
<button class="cbox size-48px relative rounded-8px" {...rest}>
|
||||||
<Layer/>
|
<!-- <Layer/> -->
|
||||||
<span class="size-24px {icon}"></span>
|
<span class="size-24px {icon}"></span>
|
||||||
</button>
|
</button>
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
{icon: "i-material-symbols:settings-rounded", onclick: () => alert('Settings clicked')}
|
{icon: "i-material-symbols:settings-rounded", onclick: () => alert('Settings clicked')}
|
||||||
]} />
|
]} />
|
||||||
|
|
||||||
<div class="vbox gap-16px">
|
<div class="vbox gap-16px overflow-y-auto">
|
||||||
{#if data.last}
|
{#if data.last}
|
||||||
<div>
|
<div>
|
||||||
<TitleHeader title="从暂停的位置继续"/>
|
<TitleHeader title="从暂停的位置继续"/>
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<TitleHeader title="我的歌单"/>
|
<a href="/playlists/my"><TitleHeader title="我的歌单"/></a>
|
||||||
<div class="p-content hbox gap-8px w-auto overflow-x-auto py-8px">
|
<div class="p-content hbox gap-8px w-auto overflow-x-auto py-8px">
|
||||||
{#each data.myPlaylists as playlist}
|
{#each data.myPlaylists as playlist}
|
||||||
<a class="vbox flex-shrink-0 gap-4px w-96px relative" href="/playlist/{playlist.id}">
|
<a class="vbox flex-shrink-0 gap-4px w-96px relative" href="/playlist/{playlist.id}">
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<TitleHeader title="推荐歌单"/>
|
<a href="/playlists/rec"><TitleHeader title="推荐歌单"/></a>
|
||||||
<div class="p-content hbox gap-8px w-auto overflow-x-auto py-8px">
|
<div class="p-content hbox gap-8px w-auto overflow-x-auto py-8px">
|
||||||
{#each data.recPlaylists as playlist}
|
{#each data.recPlaylists as playlist}
|
||||||
<a class="vbox flex-shrink-0 p-8px gap-8px rounded-12px mbg-surface-container-high relative" href="/playlist/{playlist.id}">
|
<a class="vbox flex-shrink-0 p-8px gap-8px rounded-12px mbg-surface-container-high relative" href="/playlist/{playlist.id}">
|
||||||
|
|||||||
@@ -127,6 +127,22 @@
|
|||||||
let caret: HTMLDivElement
|
let caret: HTMLDivElement
|
||||||
$effect(() => { li; wi; animateCaret(caret) })
|
$effect(() => { li; wi; animateCaret(caret) })
|
||||||
|
|
||||||
|
// Auto scroll to active line
|
||||||
|
let lrcWrapper: HTMLDivElement
|
||||||
|
$effect(() => {
|
||||||
|
li
|
||||||
|
if (!lrcWrapper) return
|
||||||
|
tick().then(() => {
|
||||||
|
const activeEl = lrcWrapper.querySelector('.active') as HTMLElement
|
||||||
|
if (activeEl) {
|
||||||
|
lrcWrapper.scrollTo({
|
||||||
|
top: activeEl.offsetTop - lrcWrapper.clientHeight / 2 + activeEl.clientHeight / 2,
|
||||||
|
behavior: 'smooth'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
// Result is stored on the server and is fetched from a separate results page
|
// Result is stored on the server and is fetched from a separate results page
|
||||||
async function submitResult() {
|
async function submitResult() {
|
||||||
const res = await API.saveResult({
|
const res = await API.saveResult({
|
||||||
@@ -166,7 +182,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Lines -->
|
<!-- Lines -->
|
||||||
<div class="lrc-wrapper flex-1 overflow-y-auto" lang="ja-JP">
|
<div bind:this={lrcWrapper} class="lrc-wrapper flex-1 overflow-y-auto" lang="ja-JP">
|
||||||
<div class="vbox gap-12px py-32px relative min-h-full lrc-content">
|
<div class="vbox gap-12px py-32px relative min-h-full lrc-content">
|
||||||
<div bind:this={caret} class="absolute bg-amber w-2px h-24px transition-all duration-75 z-10"></div>
|
<div bind:this={caret} class="absolute bg-amber w-2px h-24px transition-all duration-75 z-10"></div>
|
||||||
{#each processedLrc as line, l}
|
{#each processedLrc as line, l}
|
||||||
|
|||||||
Reference in New Issue
Block a user