Skip to content

Commit cdf4df9

Browse files
committed
feat: add @mux/mux-player-react/news package
1 parent 8768d84 commit cdf4df9

File tree

8 files changed

+34
-37
lines changed

8 files changed

+34
-37
lines changed

examples/nextjs-with-typescript/pages/playlist-page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Head from 'next/head';
2-
import { MuxNewsPlayer } from "@mux/mux-player-react"
2+
import MuxNewsPlayer from "@mux/mux-player-react/news"
33
import { useEffect, useState } from 'react';
44

55
function MuxVideoPage() {

packages/mux-player-react/package.json

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
],
2323
"lazy": [
2424
"./dist/types-ts3.4/lazy.d.ts"
25+
],
26+
"news": [
27+
"./dist/types-ts3.4/news.d.ts"
2528
]
2629
},
2730
"*": {
@@ -33,6 +36,9 @@
3336
],
3437
"lazy": [
3538
"./dist/types/lazy.d.ts"
39+
],
40+
"news": [
41+
"./dist/types/news.d.ts"
3642
]
3743
}
3844
},
@@ -50,6 +56,13 @@
5056
"import": "./dist/lazy.mjs",
5157
"default": "./dist/lazy.mjs"
5258
},
59+
"./news": {
60+
"types@<4.3.5": "./dist/types-ts3.4/news/index.d.ts",
61+
"types": "./dist/types/news/index.d.ts",
62+
"import": "./dist/news/index.mjs",
63+
"require": "./dist/news/index.cjs.js",
64+
"default": "./dist/news/index.cjs.js"
65+
},
5366
"./themes/*": {
5467
"types@<4.3.5": "./dist/types-ts3.4/themes/*.d.ts",
5568
"types": "./dist/types/themes/*.d.ts",
@@ -76,11 +89,13 @@
7689
"dev": "npm-run-all --parallel dev:types dev:cjs dev:esm dev:esm:lazy",
7790
"build:cjs": "esbuild src/index.tsx src/themes/*.ts src/themes/*.tsx --target=es2019 --bundle --sourcemap --metafile=./dist/cjs.json --format=cjs --loader:.css=text --outdir=dist --out-extension:.js=.cjs.js --external:react --external:@mux/* --external:prop-types --define:PLAYER_VERSION=\"'$npm_package_version'\"",
7891
"build:esm": "esbuild src/index.tsx src/themes/*.ts src/themes/*.tsx --target=es2019 --bundle --sourcemap --metafile=./dist/esm.json --format=esm --loader:.css=text --outdir=dist --out-extension:.js=.mjs --external:react --external:@mux/* --external:prop-types --define:PLAYER_VERSION=\"'$npm_package_version'\"",
92+
"build:news:esm": "esbuild src/news/index.tsx --target=es2019 --bundle --sourcemap --metafile=./dist/news/esm.json --format=esm --loader:.css=text --outdir=dist/news --out-extension:.js=.mjs --external:react --external:@mux/* --external:prop-types --define:PLAYER_VERSION=\"'$npm_package_version'\"",
93+
"build:news:cjs": "esbuild src/news/index.tsx --target=es2019 --bundle --sourcemap --metafile=./dist/news/cjs.json --format=cjs --loader:.css=text --outdir=dist/news --out-extension:.js=.cjs.js --external:react --external:@mux/* --external:prop-types --define:PLAYER_VERSION=\"'$npm_package_version'\"",
7994
"build:cjs:lazy": "echo 'esbuild cjs does not support code-splitting. See https://esbuild.github.io/api/#splitting for details'",
8095
"build:esm:lazy": "esbuild src/lazy.tsx --splitting --target=es2019 --bundle --sourcemap --metafile=./dist/esm.lazy.json --format=esm --loader:.css=text --outdir=dist --out-extension:.js=.mjs --external:react --external:@mux/* --external:prop-types --define:PLAYER_VERSION=\"'$npm_package_version'\"",
8196
"build:types": "tsc",
8297
"postbuild:types": "downlevel-dts ./dist/types ./dist/types-ts3.4",
83-
"build": "npm-run-all --parallel 'build:cjs -- --minify' 'build:esm -- --minify' 'build:esm:lazy -- --minify'"
98+
"build": "npm-run-all --parallel 'build:cjs -- --minify' 'build:esm -- --minify' 'build:esm:lazy -- --minify' 'build:news:cjs -- --minify' 'build:news:esm -- --minify'"
8499
},
85100
"peerDependencies": {
86101
"@types/react": "^17.0.0 || ^17.0.0-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0",

packages/mux-player-react/src/index.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ import useObjectPropEffect, { defaultHasChanged } from './useObjectPropEffect';
2020
import { getPlayerVersion } from './env';
2121

2222
export { MediaError, MaxResolution, MinResolution, RenditionOrder, generatePlayerInitTime };
23-
export { MuxNewsPlayer } from './mux-news-player';
24-
import PlaylistEndScreen from './playlist-end-screen';
25-
export { PlaylistEndScreen };
2623

2724
type ValueOf<T> = T[keyof T];
2825
interface GenericEventListener<T extends Event = CustomEvent> {
@@ -91,7 +88,6 @@ export type MuxPlayerProps = {
9188
programStartTime?: number;
9289
programEndTime?: number;
9390
proudlyDisplayMuxBadge?: boolean;
94-
muxVideoElement?: string;
9591
adTagUrl?: string;
9692
assetStartTime?: number;
9793
assetEndTime?: number;
@@ -281,7 +277,6 @@ const MuxPlayer = React.forwardRef<
281277
<MuxPlayerInternal
282278
/** @TODO Fix types relationships (CJP) */
283279
ref={playerRef as typeof innerPlayerRef}
284-
muxVideoElement={props.muxVideoElement}
285280
defaultHiddenCaptions={props.defaultHiddenCaptions}
286281
playerSoftwareName={playerSoftwareName}
287282
playerSoftwareVersion={playerSoftwareVersion}

packages/mux-player-react/MuxNewsPlayer.md renamed to packages/mux-player-react/src/news/README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ You must use the specific custom build through gitpkg as shown in the example be
2121

2222
You can execute
2323

24-
```
25-
npm install 'https://gitpkg.vercel.app/muxinc/elements/packages/mux-player-react?release-news-player'
24+
```bash
25+
npm install @mux/mux-player-react
2626
```
2727

2828
or manually add it as a dependency in your package.json
29+
2930
```json
3031
"dependencies": {
31-
"@mux/mux-player-react": "https://gitpkg.vercel.app/muxinc/elements/packages/mux-player-react?release-news-player",
32+
"@mux/mux-player-react": "^3.5.0",
3233
}
3334
```
3435

@@ -40,7 +41,7 @@ In your React component:
4041

4142
```jsx
4243
'use client';
43-
import { MuxNewsPlayer } from "@mux/mux-player-react";
44+
import MuxNewsPlayer from "@mux/mux-player-react/news";
4445
```
4546

4647
### 2. Load the Google IMA SDK

packages/mux-player-react/src/mux-news-player.tsx renamed to packages/mux-player-react/src/news/index.tsx

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
/* eslint @typescript-eslint/triple-slash-reference: "off" */
22
/// <reference types="google_interactive_media_ads_types" preserve="true"/>
33
import React, { useRef, useState } from 'react';
4-
import PlaylistEndScreen from './playlist-end-screen';
54
import '@mux/mux-video/ads';
65
import MuxPlayer from '@mux/mux-player-react';
7-
import NewsTheme from './themes/news-theme';
8-
9-
const INITIAL_AUTOPLAY = false;
10-
const INITIAL_MUTED = false;
6+
import NewsTheme from '../themes/news-theme';
7+
import PlaylistEndScreen from './playlist-end-screen';
118

129
export interface VideoItem {
1310
imageUrl: string;
@@ -22,12 +19,8 @@ export interface PlaylistProps {
2219
videoList: PlaylistVideos;
2320
}
2421

25-
export const MuxNewsPlayer = ({ videoList }: PlaylistProps) => {
22+
const MuxNewsPlayer = ({ videoList, ...props }: PlaylistProps) => {
2623
const mediaElRef = useRef<any>(null);
27-
const [autoplay, setAutoplay] = useState<'muted' | boolean>(INITIAL_AUTOPLAY);
28-
const [muted, setMuted] = useState(INITIAL_MUTED);
29-
const [paused, setPaused] = useState<boolean | undefined>(true);
30-
const [sdkLoaded, setSdkLoaded] = useState(false);
3124
const [currentIndex, setCurrentIndex] = useState(0);
3225
const [isEndScreenVisible, setIsEndScreenVisible] = useState(false);
3326
const [playerKey, setPlayerKey] = useState(0);
@@ -54,32 +47,23 @@ export const MuxNewsPlayer = ({ videoList }: PlaylistProps) => {
5447
<MuxPlayer
5548
ref={mediaElRef}
5649
theme="news-theme"
57-
themeProps={{ controlBarVertical: true, controlBarPlace: 'start start' }}
5850
key={`player-${playerKey}`}
5951
playbackId={videoList[currentIndex].playbackId}
6052
style={{ aspectRatio: '16/9' }}
61-
autoPlay={autoplay}
62-
muted={muted}
6353
maxResolution="2160p"
6454
minResolution="540p"
6555
renditionOrder="desc"
6656
preferPlayback="mse"
6757
adTagUrl={videoList[currentIndex].adTagUrl}
68-
onPlay={() => {
69-
setPaused(false);
70-
}}
71-
onPause={() => {
72-
setPaused(true);
73-
}}
7458
onEnded={(_event) => {
75-
console.log('ONENDED');
7659
if (currentIndex < videoList.length - 1) {
7760
setIsEndScreenVisible(true);
7861
} else {
7962
setCurrentIndex(0);
8063
setPlayerKey((prev) => prev + 1);
8164
}
8265
}}
66+
{...props}
8367
>
8468
<PlaylistEndScreen
8569
video={currentIndex < videoList.length - 1 ? videoList[currentIndex + 1] : videoList[0]}
@@ -92,3 +76,5 @@ export const MuxNewsPlayer = ({ videoList }: PlaylistProps) => {
9276
</div>
9377
);
9478
};
79+
80+
export default MuxNewsPlayer;
File renamed without changes.

packages/mux-player-react/src/playlist-end-screen.tsx renamed to packages/mux-player-react/src/news/playlist-end-screen.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useEffect, useState } from 'react';
2-
import { VideoItem, PlaylistVideos } from './mux-news-player';
3-
import style from './end-screen.css';
2+
import { VideoItem, PlaylistVideos } from '.';
3+
import style from './playlist-end-screen.css';
44

55
interface PlaylistEndScreenProps {
66
video: VideoItem;

packages/mux-video/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,12 @@
106106
"dev:ads:react:cjs": "npm run build:ads:react:cjs -- --watch=forever",
107107
"dev:types": "npm run build:types -- -w",
108108
"dev": "npm-run-all --parallel dev:types dev:esm dev:cjs dev:iife dev:base:* dev:react:* dev:ads:*",
109-
"build:esm": "esbuild src/index.ts --target=es2019 --external:@mux/* --bundle --sourcemap --metafile=./dist/esm.json --format=esm --outdir=dist --out-extension:.js=.mjs --define:PLAYER_VERSION=\"'$npm_package_version'\"",
109+
"build:esm": "esbuild src/index.ts --target=es2019 --external:@mux/* --external:castable-video --external:custom-media-element --external:media-tracks --bundle --sourcemap --metafile=./dist/esm.json --format=esm --outdir=dist --out-extension:.js=.mjs --define:PLAYER_VERSION=\"'$npm_package_version'\"",
110110
"build:esm-module": "esbuild src/index.ts --target=es2019 --bundle --sourcemap --metafile=./dist/module.json --format=esm --outfile=./dist/mux-video.mjs --define:PLAYER_VERSION=\"'$npm_package_version'\"",
111-
"build:cjs": "esbuild src/index.ts --target=es2019 --external:@mux/* --bundle --sourcemap --metafile=./dist/cjs.json --format=cjs --outdir=dist --out-extension:.js=.cjs.js --define:PLAYER_VERSION=\"'$npm_package_version'\"",
111+
"build:cjs": "esbuild src/index.ts --target=es2019 --external:@mux/* --external:castable-video --external:custom-media-element --external:media-tracks --bundle --sourcemap --metafile=./dist/cjs.json --format=cjs --outdir=dist --out-extension:.js=.cjs.js --define:PLAYER_VERSION=\"'$npm_package_version'\"",
112112
"build:iife": "esbuild src/index.ts --target=es2019 --bundle --sourcemap --metafile=./dist/iife.json --format=iife --outfile=./dist/mux-video.js --define:PLAYER_VERSION=\"'$npm_package_version'\"",
113-
"build:base:esm": "esbuild src/base.ts --target=es2019 --bundle --sourcemap --metafile=./dist/base/esm.json --format=esm --outdir=dist --out-extension:.js=.mjs --define:PLAYER_VERSION=\"'$npm_package_version'\"",
114-
"build:base:cjs": "esbuild src/base.ts --target=es2019 --bundle --sourcemap --metafile=./dist/base/cjs.json --format=cjs --outdir=dist --out-extension:.js=.cjs.js --define:PLAYER_VERSION=\"'$npm_package_version'\"",
113+
"build:base:esm": "esbuild src/base.ts --target=es2019 --external:@mux/* --external:custom-media-element --bundle --sourcemap --metafile=./dist/base/esm.json --format=esm --outdir=dist --out-extension:.js=.mjs --define:PLAYER_VERSION=\"'$npm_package_version'\"",
114+
"build:base:cjs": "esbuild src/base.ts --target=es2019 --external:@mux/* --external:custom-media-element --bundle --sourcemap --metafile=./dist/base/cjs.json --format=cjs --outdir=dist --out-extension:.js=.cjs.js --define:PLAYER_VERSION=\"'$npm_package_version'\"",
115115
"build:react:cjs": "esbuild src/react.ts --target=es2019 --bundle --format=cjs --outdir=dist --out-extension:.js=.cjs.js --external:react --external:@mux/mux-video",
116116
"build:react:esm": "esbuild src/react.ts --target=es2019 --bundle --format=esm --outdir=dist --out-extension:.js=.mjs --external:react --external:@mux/mux-video",
117117
"build:ads:esm": "esbuild src/ads/index.ts --target=es2019 --external:@mux/* --bundle --sourcemap --metafile=./dist/ads/esm.json --format=esm --outdir=dist/ads --out-extension:.js=.mjs --define:PLAYER_VERSION=\"'$npm_package_version'\"",

0 commit comments

Comments
 (0)