Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
// Auto fix all Biome issues on save.
"source.fixAll.biome": "always",
"source.organizeImports.biome": "always",
"source.action.useSortedProperties.biome": "always",
// Disable built-in organize imports to avoid conflicts with Biome.
"source.organizeImports": "never"
},
Expand Down
36 changes: 18 additions & 18 deletions apps/sandbox/templates/firefox-mse-repro/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Firefox MSE Init Order Repro</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: monospace; font-size: 13px; background: #1a1a1a; color: #e0e0e0; padding: 16px; }
h1 { font-size: 15px; margin-bottom: 4px; color: #fff; }
.subtitle { color: #888; font-size: 11px; margin-bottom: 14px; }
h2 { font-size: 11px; font-weight: bold; margin: 12px 0 5px; color: #aaa; text-transform: uppercase; letter-spacing: 0.05em; }
* { box-sizing: border-box; padding: 0; margin: 0; }
body { padding: 16px; font-family: monospace; font-size: 13px; color: #e0e0e0; background: #1a1a1a; }
h1 { margin-bottom: 4px; font-size: 15px; color: #fff; }
.subtitle { margin-bottom: 14px; font-size: 11px; color: #888; }
h2 { margin: 12px 0 5px; font-size: 11px; font-weight: bold; color: #aaa; text-transform: uppercase; letter-spacing: 0.05em; }
.layout { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
video { width: 100%; aspect-ratio: 16/9; background: #000; display: block; }
.state { background: #222; border-radius: 3px; padding: 6px 8px; margin-top: 8px; display: grid; grid-template-columns: 1fr 1fr; gap: 2px 16px; }
video { display: block; width: 100%; aspect-ratio: 16/9; background: #000; }
.state { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 16px; padding: 6px 8px; margin-top: 8px; background: #222; border-radius: 3px; }
.state-row { display: flex; justify-content: space-between; font-size: 11px; }
.state-key { color: #777; }
.val { color: #6cf; }
Expand All @@ -21,23 +21,23 @@
.val-none { color: #666; }
.btns { display: flex; flex-wrap: wrap; gap: 5px; margin: 5px 0; }
button {
background: #2a2a2a; color: #ccc; border: 1px solid #444; border-radius: 3px;
padding: 4px 10px; cursor: pointer; font-family: monospace; font-size: 11px;
padding: 4px 10px; font-family: monospace; font-size: 11px;color: #ccc; cursor: pointer;
background: #2a2a2a; border: 1px solid #444; border-radius: 3px;
}
button:hover:not(:disabled) { background: #383838; border-color: #666; }
button:disabled { opacity: 0.35; cursor: default; }
button.ok { background: #162516; border-color: #3a6a3a; color: #8f8; }
button.bad { background: #251616; border-color: #6a3a3a; color: #f88; }
.log { background: #111; border-radius: 3px; padding: 6px 8px; height: 500px; overflow-y: auto; font-size: 11px; line-height: 1.7; }
button:disabled { cursor: default; opacity: 0.35; }
button.ok { color: #8f8; background: #162516; border-color: #3a6a3a; }
button.bad { color: #f88; background: #251616; border-color: #6a3a3a; }
.log { height: 500px; padding: 6px 8px; overflow-y: auto; font-size: 11px; line-height: 1.7; background: #111; border-radius: 3px; }
.info { color: #6cf; }
.ok { color: #6f6; }
.err { color: #f66; }
.warn { color: #fa6; }
.sep { color: #555; border-top: 1px solid #2a2a2a; margin-top: 2px; padding-top: 4px; }
input { background: #222; border: 1px solid #444; color: #e0e0e0; padding: 4px 8px; border-radius: 3px; font-family: monospace; font-size: 11px; width: 100%; }
.scenario { background: #1e1e1e; border: 1px solid #333; border-radius: 3px; padding: 8px; margin: 5px 0; }
.scenario p { color: #888; font-size: 11px; margin-bottom: 5px; line-height: 1.4; }
.codec-info { background: #1a2a1a; border: 1px solid #2a4a2a; border-radius: 3px; padding: 6px 8px; margin: 5px 0; font-size: 11px; color: #8a8; display: none; }
.sep { padding-top: 4px; margin-top: 2px; color: #555; border-top: 1px solid #2a2a2a; }
input { width: 100%; padding: 4px 8px; font-family: monospace; font-size: 11px; color: #e0e0e0; background: #222; border: 1px solid #444; border-radius: 3px; }
.scenario { padding: 8px; margin: 5px 0; background: #1e1e1e; border: 1px solid #333; border-radius: 3px; }
.scenario p { margin-bottom: 5px; font-size: 11px; line-height: 1.4; color: #888; }
.codec-info { display: none; padding: 6px 8px; margin: 5px 0; font-size: 11px; color: #8a8; background: #1a2a1a; border: 1px solid #2a4a2a; border-radius: 3px; }
.codec-info.visible { display: block; }
</style>
</head>
Expand Down
90 changes: 46 additions & 44 deletions apps/sandbox/templates/spf-segment-loading/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,28 @@
<title>Sandbox — SPF Segment Loading POC</title>
<style>
body {
padding: 20px;
max-width: 1200px;
padding: 20px;
margin: 0 auto;
font-family: monospace;
}
h1 { margin-bottom: 6px; }
p { margin: 0 0 12px; }

video {
margin: 12px 0 4px;
border: 2px solid #333;
display: block;
width: 100%;
max-width: 640px;
margin: 12px 0 4px;
border: 2px solid #333;
}

/* ── Src controls ── */
#src-controls {
display: flex;
gap: 8px;
margin-bottom: 10px;
align-items: center;
margin-bottom: 10px;
}
#src-input {
flex: 1;
Expand All @@ -48,31 +48,31 @@
margin-bottom: 10px;
font-size: 12px;
}
#playback-config label { display: flex; align-items: center; gap: 4px; cursor: pointer; }
#playback-config label { display: flex; gap: 4px; align-items: center; cursor: pointer; }
#playback-config select {
padding: 2px 6px;
font-family: monospace;
font-size: 12px;
padding: 2px 6px;
border: 1px solid #999;
border-radius: 4px;
}

/* ── Share URL ── */
#share-url-section {
display: flex;
align-items: center;
gap: 8px;
align-items: center;
margin-bottom: 10px;
font-size: 11px;
font-family: monospace;
font-size: 11px;
}
#share-link {
color: #0070f3;
text-decoration: none;
max-width: 520px;
overflow: hidden;
text-overflow: ellipsis;
color: #0070f3;
white-space: nowrap;
max-width: 520px;
text-decoration: none;
}
#share-link:hover { text-decoration: underline; }

Expand All @@ -81,97 +81,99 @@
button {
padding: 8px 16px;
margin-right: 8px;
font-family: monospace;
font-size: 12px;
cursor: pointer;
border: 1px solid #333;
background: #f0f0f0;
border: 1px solid #333;
border-radius: 4px;
font-family: monospace;
font-size: 12px;
}
button:hover { background: #e0e0e0; }

/* ── Video info strip ── */
#now-playing-quality {
font-size: 12px;
margin-bottom: 2px;
font-family: monospace;
font-size: 12px;
color: #555;
margin-bottom: 2px;
}
#now-playing-quality.has-quality { color: #0070f3; font-weight: bold; }
#now-playing-quality.has-quality { font-weight: bold; color: #0070f3; }
#throughput-display {
font-size: 12px;
margin-bottom: 12px;
font-family: monospace;
font-size: 12px;
color: #555;
margin-bottom: 12px;
}
#throughput-display.has-data { color: #16a34a; }
#throughput-display.warming { color: #d97706; }

/* ── Rendition / resolution panels ── */
#rendition-picker,
#resolution-status {
margin: 16px 0;
padding: 12px 15px;
margin: 16px 0;
font-size: 12px;
background: #f5f5f5;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 12px;
}
#rendition-picker h2, #resolution-status h2 { margin-top: 0; font-size: 14px; }

#rendition-buttons { display: flex; flex-wrap: wrap; gap: 8px; }
.rendition-btn {
padding: 6px 12px;
font-family: monospace;
font-size: 11px;
cursor: pointer;
border: 2px solid #999;
background: #fff;
border: 2px solid #999;
border-radius: 4px;
font-family: monospace;
font-size: 11px;
}
.rendition-btn:hover { border-color: #555; background: #eee; }
.rendition-btn.selected-abr { border-color: #0070f3; background: #e6f0ff; font-weight: bold; }
.rendition-btn.selected-manual { border-color: #d97706; background: #fef3c7; font-weight: bold; }
.rendition-btn:hover { background: #eee; border-color: #555; }
.rendition-btn.selected-abr { font-weight: bold; background: #e6f0ff; border-color: #0070f3; }
.rendition-btn.selected-manual { font-weight: bold; background: #fef3c7; border-color: #d97706; }

.abr-status { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.mode-abr { color: #0070f3; font-weight: bold; }
.mode-manual { color: #d97706; font-weight: bold; }
.abr-status { display: flex; gap: 10px; align-items: center; margin-bottom: 10px; }
.mode-abr { font-weight: bold; color: #0070f3; }
.mode-manual { font-weight: bold; color: #d97706; }
.enable-abr-btn {
padding: 4px 10px; font-size: 11px; cursor: pointer;
border: 1px solid #0070f3; background: #e6f0ff; color: #0070f3; border-radius: 4px;
padding: 4px 10px; font-size: 11px; color: #0070f3; cursor: pointer;background: #e6f0ff;
border: 1px solid #0070f3; border-radius: 4px;
}
.enable-abr-btn:hover { background: #cce0ff; }

#resolution-list { display: flex; flex-wrap: wrap; gap: 8px; }
.resolution-item {
padding: 4px 10px; border: 1px solid #ccc; border-radius: 4px;
font-family: monospace; font-size: 11px;
padding: 4px 10px;
font-family: monospace; font-size: 11px;border: 1px solid #ccc; border-radius: 4px;
}
.resolution-item.resolved { border-color: green; color: green; }
.resolution-item.unresolved { border-color: #aaa; color: #888; }
.resolution-item.resolved { color: green; border-color: green; }
.resolution-item.unresolved { color: #888; border-color: #aaa; }

/* ── Logs ── */
#logs-section { margin: 16px 0; }
#logs-section h2 { font-size: 14px; margin-bottom: 6px; }
#logs-section h2 { margin-bottom: 6px; font-size: 14px; }
#logs {
background: #f5f5f5; padding: 10px; border: 1px solid #ddd; border-radius: 4px;
max-height: 400px; overflow-y: auto; font-size: 12px;
max-height: 400px; padding: 10px; overflow-y: auto; font-size: 12px;
background: #f5f5f5; border: 1px solid #ddd; border-radius: 4px;
}
#logs div { padding: 2px 0; border-bottom: 1px solid #eee; }

/* ── State inspector ── */
#state {
background: #f5f5f5; padding: 15px; margin: 16px 0;
border: 1px solid #ddd; border-radius: 4px; font-size: 12px;
padding: 15px; margin: 16px 0;font-size: 12px;
background: #f5f5f5;
border: 1px solid #ddd; border-radius: 4px;
}
#state h2 { margin-top: 0; font-size: 14px; }
#state pre {
margin: 10px 0; padding: 10px; background: #fff;
border: 1px solid #ddd; border-radius: 4px; overflow-x: auto;
padding: 10px;
margin: 10px 0; overflow-x: auto;background: #fff;
border: 1px solid #ddd; border-radius: 4px;
}

/* ── Log colours ── */
.error { color: red; font-weight: bold; }
.error { font-weight: bold; color: red; }
.success { color: green; }
.warning { color: orange; }
</style>
Expand Down
9 changes: 8 additions & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
},
"assist": {
"actions": {
"source": { "organizeImports": "on" }
"source": {
"organizeImports": "on",
"useSortedProperties": "on"
}
}
},
"formatter": {
Expand Down Expand Up @@ -140,13 +143,17 @@
"**",
"!**/.astro",
"!**/.netlify",
"!**/.pnpm-store",
"!**/.vercel",
"!**/.turbo",
"!**/.next",
"!**/.opencode",
"!**/.github",
"!**/build/AGENTS.md",
"!**/build/agents",
"!**/dist",
"!**/examples",
"!**/packages/html/cdn",
"!**/styles/vjs.css",
"!**/packages/*/types"
]
Expand Down
4 changes: 2 additions & 2 deletions packages/html/src/define/background/skin.css
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ background-video-player {
}

background-video-skin {
display: block;
--media-object-fit: cover;
position: relative;
display: block;
width: 100%;
height: 100%;
--media-object-fit: cover;
object-fit: var(--media-object-fit);
}

Expand Down
8 changes: 4 additions & 4 deletions packages/html/src/define/base.css
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ video-player [slot="poster"] {
}

video-player video::-webkit-media-text-track-container {
transition: translate var(--media-caption-track-duration, 0) ease-out;
transition-delay: var(--media-caption-track-delay, 0);
translate: 0 var(--media-caption-track-y, 0);
scale: 0.98;
z-index: 1;
font-family: inherit;
scale: 0.98;
translate: 0 var(--media-caption-track-y, 0);
transition: translate var(--media-caption-track-duration, 0) ease-out;
transition-delay: var(--media-caption-track-delay, 0);
}
16 changes: 8 additions & 8 deletions packages/skins/src/default/css/audio.css
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,17 @@
inset: 0;
z-index: 20;
display: flex;
align-items: center;
gap: 0.75rem;
align-items: center;
padding-inline: 1.25rem 0.125rem;
transition-property: opacity, filter;
transition-duration: var(--media-error-dialog-transition-duration);
transition-delay: var(--media-error-dialog-transition-delay);
transition-timing-function: ease-out;
border-radius: calc(infinity * 1px);
color: var(--media-text-color);
background-color: var(--media-surface-background-color);
border-radius: calc(infinity * 1px);
backdrop-filter: var(--media-surface-backdrop-filter);
color: var(--media-text-color);
transition-delay: var(--media-error-dialog-transition-delay);
transition-timing-function: ease-out;
transition-duration: var(--media-error-dialog-transition-duration);
transition-property: opacity, filter;
}

.media-default-skin .media-error[data-starting-style] .media-error__dialog,
Expand All @@ -85,8 +85,8 @@
}

.media-default-skin--audio .media-error__content {
flex: 1;
display: flex;
flex: 1;
gap: 0.5rem;
align-items: center;
}
Expand Down
2 changes: 1 addition & 1 deletion packages/skins/src/default/css/components/button-group.css
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

.media-default-skin .media-button-group {
display: flex;
align-items: center;
gap: 0.075rem;
align-items: center;

@container media-root (width > 42rem) {
gap: 0.125rem;
Expand Down
Loading
Loading