+ {/* Playhead (left edge = current time) */}
+
+
+ {/* Video buffer track */}
+
+
Video
+
+ {(range, i) => {
+ const info = () => {
+ const timestamp = context.timestamp();
+ if (timestamp === undefined) return null;
+ return computeRange(range, timestamp, rangeColor(i(), context.buffering()));
+ };
+ return (
+
+ {(rangeInfo) => (
+
+
+ {rangeInfo().overflowSec}s
+
+
+ )}
+
+ );
+ }}
+
+
+
+ {/* Audio buffer track */}
+
+
Audio
+
+ {(range, i) => {
+ const info = () => {
+ const timestamp = context.timestamp();
+ if (timestamp === undefined) return null;
+ return computeRange(range, timestamp, rangeColor(i(), context.buffering()));
+ };
+ return (
+
+ {(rangeInfo) => (
+
+
+ {rangeInfo().overflowSec}s
+
+
+ )}
+
+ );
+ }}
+
+
+
+ {/* Buffer target line (draggable) - wrapped in track-area container */}
+
+
+ {`${Math.round(context.jitter())}ms`}
+
+
+