+ >
+ );
+}
+
+export default MuxVideoPage;
diff --git a/packages/mux-video/package.json b/packages/mux-video/package.json
index 22d8df510..b293fcf93 100644
--- a/packages/mux-video/package.json
+++ b/packages/mux-video/package.json
@@ -18,11 +18,17 @@
"<4.3.5": {
".": [
"./dist/types-ts3.4/index.d.ts"
+ ],
+ "react": [
+ "./dist/types-ts3.4/react.d.ts"
]
},
"*": {
".": [
"./dist/types/index.d.ts"
+ ],
+ "react": [
+ "./dist/types/react.d.ts"
]
}
},
@@ -33,6 +39,12 @@
"types@<4.3.5": "./dist/types-ts3.4/index.d.ts",
"types": "./dist/types/index.d.ts",
"default": "./dist/index.cjs.js"
+ },
+ "./react": {
+ "import": "./dist/react.mjs",
+ "require": "./dist/react.cjs.js",
+ "types": "./dist/types/react.d.ts",
+ "default": "./dist/react.cjs.js"
}
},
"types": "./dist/types/index.d.ts",
@@ -52,16 +64,20 @@
"dev:cjs": "yarn build:cjs --watch=forever",
"dev:esm": "yarn build:esm --watch=forever",
"dev:esm-module": "yarn build:esm-module --watch=forever",
+ "dev:react:cjs": "yarn build:react:cjs --watch=forever",
+ "dev:react:esm": "yarn build:react:esm --watch=forever",
"dev:types": "yarn build:types -w",
- "dev": "npm-run-all --parallel dev:types dev:esm dev:cjs dev:iife",
+ "dev": "npm-run-all --parallel dev:types dev:esm dev:cjs dev:iife dev:react:*",
"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'\"",
"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'\"",
"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'\"",
- "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'\"",
+ "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'\"",
+ "build:react:cjs": "esbuild src/react.ts --target=es2019 --bundle --format=cjs --outdir=dist --out-extension:.js=.cjs.js --external:react --external:.",
+ "build:react:esm": "esbuild src/react.ts --target=es2019 --bundle --format=esm --outdir=dist --out-extension:.js=.mjs --external:react --external:.",
"copypolyfills": "shx mkdir -p src/polyfills && shx cp ../../shared/polyfills/index.ts ./src/polyfills/index.ts",
"build:types": "tsc",
"postbuild:types": "downlevel-dts ./dist/types ./dist/types-ts3.4",
- "build": "npm-run-all --parallel 'build:esm --minify' 'build:iife --minify' 'build:cjs --minify' 'build:esm-module --minify'"
+ "build": "npm-run-all --parallel 'build:esm --minify' 'build:iife --minify' 'build:cjs --minify' 'build:esm-module --minify' 'build:react:cjs --minify' 'build:react:esm --minify'"
},
"dependencies": {
"@mux/playback-core": "0.28.1",
@@ -76,11 +92,13 @@
"@web/dev-server-esbuild": "^1.0.2",
"@web/dev-server-import-maps": "^0.2.1",
"@web/test-runner": "^0.19.0",
+ "ce-la-react": "^0.1.3",
"downlevel-dts": "^0.11.0",
"esbuild": "^0.19.8",
"eslint": "^9.9.1",
"hls.js": "~1.5.11",
"npm-run-all": "^4.1.5",
+ "react": "^18.2.0",
"replace": "^1.2.1",
"shx": "^0.3.4",
"typescript": "^5.5.4"
diff --git a/packages/mux-video/src/react.ts b/packages/mux-video/src/react.ts
new file mode 100644
index 000000000..459fb94da
--- /dev/null
+++ b/packages/mux-video/src/react.ts
@@ -0,0 +1,29 @@
+'use client';
+
+import MuxVideoElement from '.';
+import React from 'react';
+// keep as last import, ce-la-react is bundled.
+import { createComponent } from 'ce-la-react';
+
+export default createComponent({
+ react: React,
+ tagName: 'mux-video',
+ elementClass: MuxVideoElement,
+ toAttributeName,
+});
+
+const ReactPropToAttrNameMap: Record