From bee5d558803d0e1703d1acee92cf98bf3132bdd4 Mon Sep 17 00:00:00 2001
From: Christian Pillsbury
Date: Wed, 30 Jul 2025 11:30:43 -0700
Subject: [PATCH] chore: Chapters examples to demonstrate functionality with
native playback.
---
.../pages/MuxPlayerChapters.tsx | 27 +++--
.../public/mux-player-chapters.html | 109 +++++++-----------
2 files changed, 57 insertions(+), 79 deletions(-)
diff --git a/examples/nextjs-with-typescript/pages/MuxPlayerChapters.tsx b/examples/nextjs-with-typescript/pages/MuxPlayerChapters.tsx
index 7a97e7db5..5ab4b4d13 100644
--- a/examples/nextjs-with-typescript/pages/MuxPlayerChapters.tsx
+++ b/examples/nextjs-with-typescript/pages/MuxPlayerChapters.tsx
@@ -1,33 +1,40 @@
import Link from "next/link";
import Head from 'next/head';
-import { useState } from "react";
+import { useCallback, useState } from "react";
import MuxPlayer from "@mux/mux-player-react";
import type MuxPlayerElement from "@mux/mux-player";
type Chapter = { startTime: number; endTime: number; value: string; };
-const chapters: Chapter[] = [
- { startTime: 0, endTime: 3, value: 'Chapter 1' },
- { startTime: 3, endTime: 6, value: 'Chapter 2' },
- { startTime: 6, endTime: 9, value: 'Chapter 3' }
+const exampleChapters: Chapter[] = [
+ { startTime: 0, endTime: 3, value: 'A beginning chapter' },
+ { startTime: 3, endTime: 6, value: 'In the middle' },
+ { startTime: 6, endTime: 9, value: 'Is this the end? (No)' }
];
-function MuxPlayerPage() {
+function MuxPlayerPage({ chapters = exampleChapters }: { chapters: Chapter[] }) {
const [activeChapter, setActiveChapter] = useState(undefined);
- function addChaptersToPlayer(playerEl: MuxPlayerElement) {
+ const addChaptersToPlayer = useCallback((playerEl: MuxPlayerElement) => {
+ // Not ready for chapters yet!
+ if (!playerEl || !playerEl.readyState) return;
+ // Already added chapters!
+ if (!!playerEl.chapters?.length) return;
playerEl.addChapters(chapters);
- }
+ }, [chapters]);
return (
<>
- <MuxPlayer/> (CuePoints) Demo
+ <MuxPlayer/> (Chapters) Demo
{
addChaptersToPlayer(target as MuxPlayerElement);
}}
diff --git a/examples/vanilla-ts-esm/public/mux-player-chapters.html b/examples/vanilla-ts-esm/public/mux-player-chapters.html
index 3339f040c..17e704571 100644
--- a/examples/vanilla-ts-esm/public/mux-player-chapters.html
+++ b/examples/vanilla-ts-esm/public/mux-player-chapters.html
@@ -42,85 +42,56 @@
+ <MuxPlayer/> (Chapters) Demo
Chapters with explicit end times (with gaps)
-
- Active Chapter:
Unset
-
-
-
-
-
-
- Chapters with implicit end times (no gaps, audio UI)
-
-
-
-
-
-
+
+
Browse Elements