import '@app/styles.css'; import '@videojs/html/video/player'; import { createHtmlSandboxState, createLatestLoader } from '@app/shared/html/sandbox-state'; import { loadVideoSkinTag } from '@app/shared/html/skins'; import { renderStoryboard } from '@app/shared/html/storyboard'; import { onSkinChange, onSourceChange } from '@app/shared/sandbox-listener'; import { getPosterSrc, getStoryboardSrc, SOURCES } from '@app/shared/sources'; const html = String.raw; const state = createHtmlSandboxState(); const loadLatest = createLatestLoader(); async function render() { const tag = await loadLatest(() => loadVideoSkinTag(state.skin, state.styling)); if (!tag) return; const storyboard = getStoryboardSrc(state.source); const poster = getPosterSrc(state.source); document.getElementById('root')!.innerHTML = html` <${tag} class="aspect-video max-w-4xl mx-auto"> ${poster ? html`Video poster` : ''} `; } render(); onSkinChange((skin) => { state.skin = skin; render(); }); onSourceChange((source) => { state.source = source; render(); });