mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-11 02:31:45 +00:00
36 lines
938 B
TypeScript
36 lines
938 B
TypeScript
import { render } from 'solid-js/web';
|
|
|
|
import { waitForElement } from '@/utils/wait-for-element';
|
|
import { LyricsRenderer, setIsVisible } from './renderer';
|
|
|
|
export const selectors = {
|
|
head: '#tabsContent > .tab-header:nth-of-type(2)',
|
|
body: {
|
|
tabRenderer: '#tab-renderer[page-type="MUSIC_PAGE_TYPE_TRACK_LYRICS"]',
|
|
root: 'ytmusic-description-shelf-renderer',
|
|
},
|
|
};
|
|
|
|
export const tabStates: Record<string, () => void> = {
|
|
true: async () => {
|
|
setIsVisible(true);
|
|
|
|
let container = document.querySelector('#synced-lyrics-container');
|
|
if (container) return;
|
|
|
|
const tabRenderer = await waitForElement<HTMLElement>(
|
|
selectors.body.tabRenderer,
|
|
);
|
|
|
|
container = Object.assign(document.createElement('div'), {
|
|
id: 'synced-lyrics-container',
|
|
});
|
|
|
|
tabRenderer.appendChild(container);
|
|
render(() => <LyricsRenderer />, container);
|
|
},
|
|
false: () => {
|
|
setIsVisible(false);
|
|
},
|
|
};
|