From ad9d6ec996e61e11034d712d64eb2277ba33de8b Mon Sep 17 00:00:00 2001 From: Silvano Stralla Date: Wed, 23 Oct 2024 18:16:58 +0200 Subject: [PATCH 1/6] Default to eager component loading --- CHANGELOG.md | 7 + docs/video-player.md | 22 ++- examples/package-lock.json | 174 +++++++++++------- examples/src/App/index.jsx | 20 +- examples/src/LazyVideoExamples/index.jsx | 24 +++ .../{index.js => index.jsx} | 37 ++-- package.json | 8 + src/VideoPlayer/index.tsx | 31 ++-- src/VideoPlayer/lazy.tsx | 26 +++ tsconfig.json | 2 + 10 files changed, 239 insertions(+), 112 deletions(-) create mode 100644 examples/src/LazyVideoExamples/index.jsx rename examples/src/QuerySubscriptionExample/{index.js => index.jsx} (75%) create mode 100644 src/VideoPlayer/lazy.tsx diff --git a/CHANGELOG.md b/CHANGELOG.md index 69089c6..ae898e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed + +- `` component now is eager by default (the lazy version is available via `import VideoPlayer from 'react-datocms/video-player/lazy';`) + ## [2.0.1] - 2022-01-05 ### Added - `layout` property to Image component + ### Changed - Default layout is now `intrinsic`, so the image the image will scale the dimensions down for smaller viewports, but maintain the original dimensions for larger viewports diff --git a/docs/video-player.md b/docs/video-player.md index deb79a7..8da2de5 100644 --- a/docs/video-player.md +++ b/docs/video-player.md @@ -7,6 +7,7 @@ - [Usage](#usage) - [Example](#example) - [Props](#props) + - [Lazy version](#lazy-version) - [Advanced usage: the `useVideoPlayer` hook](#advanced-usage-the-usevideoplayer-hook) - [Example](#example-1) @@ -21,9 +22,9 @@ To stream videos, DatoCMS partners with MUX, a video CDN that serves optimized s ## Out-of-the-box features - Offers optimized streaming so smartphones and tablets don’t request desktop-sized videos -- Lazy loads the video component and the video to be played to speed initial page load and save bandwidth - Holds the video position and size so your page doesn’t jump while the player loads - Uses blur-up technique to show a placeholder of the video while it loads +- Optionally lazy loads the video component and the video to be played to speed initial page load and save bandwidth ## Installation @@ -31,8 +32,6 @@ To stream videos, DatoCMS partners with MUX, a video CDN that serves optimized s npm install --save react-datocms @mux/mux-player-react ``` -`@mux/mux-player-react` is a [peer dependency](https://docs.npmjs.com/cli/v10/configuring-npm/package-json#peerdependencies) for `react-datocms`: so you're expected to add it in your project. - ## Usage 1. Import `VideoPlayer` from `react-datocms` and use it in your app @@ -110,6 +109,23 @@ Compared to the ``, **some prop default values are different** on ` All the other props are forwarded to the `` component that is used internally. +## Lazy version + +For an optimized bundle, we provide a lazy version too. To use it, you need to change +the way to import the component. From: + +```js +import { VideoPlayer } from 'react-datocms'; +```` + +to: + +```js +import VideoPlayer from 'react-datocms/video-player/lazy'; +``` + +The lazy version is based on `React.lazy()` method. + ## Advanced usage: the `useVideoPlayer` hook Even though we try our best to make the `` suitable and easy to use for most normal use cases, there are situations where you may need to leverage the `` directly (let's suppose you wrote your special wrapper component around the `` and you need a bunch of props to pass). If that's the case, fill free to use the hook we provide: `useVideoPlayer`. diff --git a/examples/package-lock.json b/examples/package-lock.json index 401af9f..04bbdaf 100644 --- a/examples/package-lock.json +++ b/examples/package-lock.json @@ -19,9 +19,10 @@ } }, "node_modules/@0no-co/graphql.web": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.6.tgz", - "integrity": "sha512-KZ7TnwMcQJcFgzjoY623AVxtlDQonkqp3rSz0wb15/jHPyU1v5gynUibEpuutDeoyGJ5Tp+FwxjGyDGDwq3vIw==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.9.tgz", + "integrity": "sha512-lXSg4bDHvP8CiMdpQf9f/rca12IIjXHN/p0Rc5mgzgLe4JBlIoA1zFa9NKhfG1bW0OyI2hgaOldFCfkEQwZuEQ==", + "license": "MIT", "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" }, @@ -3789,33 +3790,37 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, "node_modules/@mux/mux-player": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-2.4.1.tgz", - "integrity": "sha512-Lm7KkG/lD1tqqqtL1nacZsCll9JY4gVNGxUw/MPYmgIevYACYtQ/76iaEtaN67DmHYYxep1QUpYEDZPXallkEg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-3.0.0.tgz", + "integrity": "sha512-ZdJGSQ+uoh1A5quo7p6pQXRO7zh9hxcbAaRf21aOZHW7rWEF/SP5hp6ruRGZe5Za2EGVrVbMQpGUpfWSBFBLZA==", + "license": "MIT", "dependencies": { - "@mux/mux-video": "0.17.5", - "@mux/playback-core": "0.22.4", - "media-chrome": "~3.1.1" + "@mux/mux-video": "0.21.0", + "@mux/playback-core": "0.26.0", + "media-chrome": "~4.1.1", + "player.style": "^0.0.8" } }, "node_modules/@mux/mux-video": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.17.5.tgz", - "integrity": "sha512-EMLflDnr/o7XQiWKfwnq9BJmj30kpSszzXwpXE4hmBIgc9JAuF3Hl94qv1kyWQAUhrO5hnnOxwGHgv0FvkJ1GQ==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.21.0.tgz", + "integrity": "sha512-/NUIJBYBAOd5P3oyN8bpUGShuUbVOE+y70MP5De8SqMj2mKG0WuY75biuU8ormoI5Jv474Ps7PWPA/MHyg44TA==", + "license": "MIT", "dependencies": { - "@mux/playback-core": "0.22.4", - "castable-video": "~1.0.6", - "custom-media-element": "~1.2.3", - "media-tracks": "~0.3.0" + "@mux/playback-core": "0.26.0", + "castable-video": "~1.1.0", + "custom-media-element": "~1.3.1", + "media-tracks": "~0.3.2" } }, "node_modules/@mux/playback-core": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.22.4.tgz", - "integrity": "sha512-f/jWcYbFRjXjdFRNq3MK79D1YHTqvwcfchRLYukE384P3cb027dru+bSxMKESrfkhAhnWFy7fdq/llawl7SU9g==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.26.0.tgz", + "integrity": "sha512-Q2M+g6gAC8dwX62YGWiK6R+IT5gc3ArgQ0rI13SY6na3bKcbx8oL/tKRSi2iTnBhl0dcZrlezuVUCN6PE87nNQ==", + "license": "MIT", "dependencies": { - "hls.js": "~1.4.13", - "mux-embed": "~4.30.0" + "hls.js": "~1.5.11", + "mux-embed": "^5.3.0" } }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { @@ -5274,7 +5279,8 @@ "node_modules/array-flatten": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", + "license": "MIT" }, "node_modules/array-includes": { "version": "3.1.7", @@ -6082,9 +6088,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001579", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", - "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", + "version": "1.0.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", "funding": [ { "type": "opencollective", @@ -6098,7 +6104,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", @@ -6109,11 +6116,12 @@ } }, "node_modules/castable-video": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.0.6.tgz", - "integrity": "sha512-Ykw2uL4ZQnqX0j9KF9ksbDpyc8I53mFMswCKW9yV5TrwpWkdNqRHLlcU85W30BIw61fgDjgm0Xh5G0rbcmv23g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.1.0.tgz", + "integrity": "sha512-64/roq+vieXz8aOEvSs5bohHRym1fxhvHQMZXPn8/s8z0oi7XD5B67fnt9gFyCsfzH8RnuYJ0PxMSYjbMPHOtw==", + "license": "MIT", "dependencies": { - "custom-media-element": "~1.2.2" + "custom-media-element": "~1.3.2" } }, "node_modules/chalk": { @@ -6912,9 +6920,10 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" }, "node_modules/custom-media-element": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.2.3.tgz", - "integrity": "sha512-xr9Hbrslkjm1fapJP5hL98pySeZmNepBSefQS/XTxynamqPTfRBK5MnhReMOiAj8xvJApVPrVnlYxIrknay8jg==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.3.2.tgz", + "integrity": "sha512-nDyMobZgoAVqz7mA8rsn7i1/6bjH6N9ab2Ge7LyyNxrvxAq7zQJPg8i3u2VH7wEB+Y1T1+C3/h1G774/D+ZLag==", + "license": "MIT" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -6938,22 +6947,25 @@ "version": "0.1.15", "resolved": "https://registry.npmjs.org/datocms-listen/-/datocms-listen-0.1.15.tgz", "integrity": "sha512-0LcdKYW/ilWdyrRzQ+YbkAk4r2dge63vzHtfv19L8pfbfYurQgXP9/ck703QZL//YqBoc0OKBS4BP4WUQ6JDKA==", + "license": "MIT", "dependencies": { "@0no-co/graphql.web": "^1.0.1" } }, "node_modules/datocms-structured-text-generic-html-renderer": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/datocms-structured-text-generic-html-renderer/-/datocms-structured-text-generic-html-renderer-2.1.12.tgz", - "integrity": "sha512-1Vj/24iaKUcNm3xG9kD09EHz00rIVIQVD6RSGNBvi+BQPPJGdGfFUcPME9xQv3KZrcw/pyNkAkBXO2q4wqEslw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/datocms-structured-text-generic-html-renderer/-/datocms-structured-text-generic-html-renderer-4.0.1.tgz", + "integrity": "sha512-umEWXyBHP3fo1YsOL7AhFxWrmb2LNxiRV26+C8NMkwoBZ/RbF9+dBaGIBv1D/NeasCjq560hBdm7jqChxxIi/A==", + "license": "MIT", "dependencies": { - "datocms-structured-text-utils": "^2.1.12" + "datocms-structured-text-utils": "^4.0.1" } }, "node_modules/datocms-structured-text-utils": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/datocms-structured-text-utils/-/datocms-structured-text-utils-2.1.12.tgz", - "integrity": "sha512-tZtiPN/sEjl+4Z6igojPdap6Miy0Z6VO6Afor3vcyY/8PIwKVGbTsdd5trD+skWPCPRZVNzKpfYoAVziXWTL8Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/datocms-structured-text-utils/-/datocms-structured-text-utils-4.0.1.tgz", + "integrity": "sha512-2rK4bZfzKpdKw2AZhnnD043QkGOUaJDOUGPrQHo5w4hvU4jTBGGxoaTg4KIb3Q5Yo+XUFvreb+U0+86xdh7I+Q==", + "license": "MIT", "dependencies": { "array-flatten": "^3.0.0" } @@ -9177,9 +9189,10 @@ } }, "node_modules/hls.js": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.14.tgz", - "integrity": "sha512-UppQjyvPVclg+6t2KY/Rv03h0+bA5u6zwqVoz4LAC/L0fgYmIaCD7ZCrwe8WI1Gv01be1XL0QFsRbSdIHV/Wbw==" + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.17.tgz", + "integrity": "sha512-wA66nnYFvQa1o4DO/BFgLNRKnBTVXpNeldGRBJ2Y0SvFtdwvFKCbqa9zhHoZLoxHhZ+jYsj3aIBkWQQCPNOhMw==", + "license": "Apache-2.0" }, "node_modules/hoopy": { "version": "0.1.4", @@ -13491,14 +13504,16 @@ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" }, "node_modules/media-chrome": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-3.1.1.tgz", - "integrity": "sha512-EqofPNX7Eq1dv9ixuRo51Wv/Wo3P4PIPjY4iM1jGqu/Jyond8BqdigQKdhxPM2rH9SohdUXZvUWS1OJ1xMO6Ww==" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-4.1.5.tgz", + "integrity": "sha512-wfUUREB+IoDQwB0GAYgCz0aLWiUAJpqEQaMMqAJvf6CX2sUKev8kC6TXuMsH4zj8TgyODD+Uj1FZP2RBtl2vUg==", + "license": "MIT" }, "node_modules/media-tracks": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-tracks/-/media-tracks-0.3.0.tgz", - "integrity": "sha512-kicD8eOFwe6nD7jn7iM/0yuLzWuo6abWHURYwY7NhxL1dBif+lt0on4rLTs6VhKwAEE/BjT3wr+0vn1w8SBpag==" + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/media-tracks/-/media-tracks-0.3.3.tgz", + "integrity": "sha512-9P2FuUHnZZ3iji+2RQk7Zkh5AmZTnOG5fODACnjhCVveX1McY3jmCRHofIEI+yTBqplz7LXy48c7fQ3Uigp88w==", + "license": "MIT" }, "node_modules/media-typer": { "version": "0.3.0", @@ -13723,9 +13738,10 @@ } }, "node_modules/mux-embed": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-4.30.0.tgz", - "integrity": "sha512-XAgAp4CEvsiZL26GbruzeG1g33OWyrzuskDMavXUxDufTxS0/AxAhwoTTRqEzEJS9vnZa/X9R2GV3xRX1XMp2w==" + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-5.3.3.tgz", + "integrity": "sha512-jG+nECEsCQMzXWUkHI4+XfK856AwQPkjxpfi5Rnmc36k8YzjHGxy1GdQcDJpgNHJpz1HoL4Xdrz1bqBZ7t9NCQ==", + "license": "MIT" }, "node_modules/mz": { "version": "2.7.0", @@ -14406,6 +14422,22 @@ "node": ">=4" } }, + "node_modules/player.style": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/player.style/-/player.style-0.0.8.tgz", + "integrity": "sha512-ScmFzio3634eEn+ejpkEw13F5xYvnPghtaZz/Kg7QQP78ECrxdjRVqwVPZhUwbYxmg5OIScByOgHfrHpzTtR1Q==", + "license": "MIT", + "workspaces": [ + ".", + "site", + "examples/*", + "scripts/*", + "themes/*" + ], + "dependencies": { + "media-chrome": "^4.1.0" + } + }, "node_modules/postcss": { "version": "8.4.33", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", @@ -15892,15 +15924,15 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/react-datocms": { - "version": "5.0.3", + "version": "7.0.3", "resolved": "file:../react-datocms.tgz", - "integrity": "sha512-2JoO/u01t274aYSJ/VzSc5zQgORGFknpU1Bo9mewnrD1HxjtVMpGtlX8ON9zMxX0VDwuIaQsA9ckSOkOXZ6WJA==", + "integrity": "sha512-+8h4VXx15ODF3MOZI+AR6DzKUMONBnEPOgyOjaIuWOqBxLo6w8G42hA1Sz3v7ek9dVX7amo3BI6IS8I2uhakew==", "license": "MIT", "dependencies": { "@mux/mux-player-react": "*", "datocms-listen": "^0.1.9", - "datocms-structured-text-generic-html-renderer": "^2.0.1", - "datocms-structured-text-utils": "^2.0.1", + "datocms-structured-text-generic-html-renderer": "^4.0.1", + "datocms-structured-text-utils": "^4.0.1", "react-intersection-observer": "^9.4.3", "react-string-replace": "^1.1.0", "use-deep-compare-effect": "^1.6.1" @@ -15913,18 +15945,19 @@ } }, "node_modules/react-datocms/node_modules/@mux/mux-player-react": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-2.4.1.tgz", - "integrity": "sha512-grM6T847fKnzlK786NG1AxhNS+6A78pEPc5zG4yYvKe3ayGNTOpq/Hnm9pDVkOx5/uMI/yCdSsfiNyytYaw8qA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-3.0.0.tgz", + "integrity": "sha512-W6NCgZ7Syh67HdsPFZGLtw98y9L/et4efqdVaYzgK5vJOMWFhEetLkal49LyoskhhyrFlPgZWsTTBcTQf+YJdg==", + "license": "MIT", "dependencies": { - "@mux/mux-player": "2.4.1", - "@mux/playback-core": "0.22.4", + "@mux/mux-player": "3.0.0", + "@mux/playback-core": "0.26.0", "prop-types": "^15.7.2" }, "peerDependencies": { - "@types/react": "^17.0.0 || ^18", - "react": "^17.0.2 || ^18", - "react-dom": "^17.0.2 || ^18" + "@types/react": "^17.0.0 || ^18 || ^19", + "react": "^17.0.2 || ^18 || ^19", + "react-dom": "^17.0.2 || ^18 || ^19" }, "peerDependenciesMeta": { "@types/react": { @@ -15936,12 +15969,13 @@ } }, "node_modules/react-datocms/node_modules/react-intersection-observer": { - "version": "9.8.1", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.8.1.tgz", - "integrity": "sha512-QzOFdROX8D8MH3wE3OVKH0f3mLjKTtEN1VX/rkNuECCff+aKky0pIjulDhr3Ewqj5el/L+MhBkM3ef0Tbt+qUQ==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.13.1.tgz", + "integrity": "sha512-tSzDaTy0qwNPLJHg8XZhlyHTgGW6drFKTtvjdL+p6um12rcnp8Z5XstE+QNBJ7c64n5o0Lj4ilUleA41bmDoMw==", + "license": "MIT", "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "react-dom": { @@ -16241,6 +16275,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/react-string-replace/-/react-string-replace-1.1.1.tgz", "integrity": "sha512-26TUbLzLfHQ5jO5N7y3Mx88eeKo0Ml0UjCQuX4BMfOd/JX+enQqlKpL1CZnmjeBRvQE8TR+ds9j1rqx9CxhKHQ==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -18327,6 +18362,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/use-deep-compare-effect/-/use-deep-compare-effect-1.8.1.tgz", "integrity": "sha512-kbeNVZ9Zkc0RFGpfMN3MNfaKNvcLNyxOAAd9O4CBZ+kCBXXscn9s/4I+8ytUER4RDpEYs5+O6Rs4PqiZ+rHr5Q==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "dequal": "^2.0.2" diff --git a/examples/src/App/index.jsx b/examples/src/App/index.jsx index 0dfa42c..0b2ee74 100644 --- a/examples/src/App/index.jsx +++ b/examples/src/App/index.jsx @@ -3,6 +3,7 @@ import QuerySubscriptionExample from '../QuerySubscriptionExample'; import SRCImageExamples from '../SRCImageExample'; import SiteSearchExamples from '../SiteSearchExamples'; import VideoExamples from '../VideoExamples'; +import LazyVideoExamples from '../LazyVideoExamples'; import './style.css'; export default function App() { @@ -14,27 +15,26 @@ export default function App() { Query Subscription Site Search Video + Lazy Video - -

SRCImage examples

+

SRCImage examples

-
-

Image examples

+

Image examples

-
-

Query subscription example

+

Query subscription example

-
-

Site Search example

+

Site Search example

-
-

Video examples

+

Video examples

+ +

Lazy Video examples

+ ); } diff --git a/examples/src/LazyVideoExamples/index.jsx b/examples/src/LazyVideoExamples/index.jsx new file mode 100644 index 0000000..a8833be --- /dev/null +++ b/examples/src/LazyVideoExamples/index.jsx @@ -0,0 +1,24 @@ +import { useRef } from 'react'; + +import VideoPlayer from 'react-datocms/video-player/lazy'; + +const data = { + muxPlaybackId: 'ip028MAXF026dU900bKiyNDttjonw7A1dFY', + title: 'Title', + width: 1080, + height: 1920, + blurUpThumb: + 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLDhAWDhYQDg0NDhUVFg0OFxUZGBYfFiEaHysjHR0oHRUWJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OEA4QEC8dFhwvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABkADgMBIgACEQEDEQH/xAAYAAEAAwEAAAAAAAAAAAAAAAADBAUGAf/EABwQAAICAgMAAAAAAAAAAAAAAAEDAAIEEQUGIf/EABUBAQEAAAAAAAAAAAAAAAAAAAIB/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAIBITH/2gAMAwEAAhEDEQA/AByuKdRJlXTiXWJkfI7bkOprUJPYnAHcSzQXizNl9teCCXuB8EWckUjaf//Z', +}; + +export default function Video() { + const ref = useRef(); + + return ( + <> +
+ +
+ + ); +} diff --git a/examples/src/QuerySubscriptionExample/index.js b/examples/src/QuerySubscriptionExample/index.jsx similarity index 75% rename from examples/src/QuerySubscriptionExample/index.js rename to examples/src/QuerySubscriptionExample/index.jsx index 95fef3d..0546be4 100644 --- a/examples/src/QuerySubscriptionExample/index.js +++ b/examples/src/QuerySubscriptionExample/index.jsx @@ -3,9 +3,9 @@ import { StructuredText, renderMetaTags, useQuerySubscription, -} from 'react-datocms'; -import { Helmet } from 'react-helmet'; -import './style.css'; +} from "react-datocms"; +import { Helmet } from "react-helmet"; +import "./style.css"; const RESPONSIVE_IMAGE_FRAGMENT = ` aspectRatio @@ -66,22 +66,22 @@ export default function QuerySubscriptionExample() { const { status, error, data } = useQuerySubscription({ query, variables: { first: 4 }, - token: 'faeb9172e232a75339242faafb9e56de8c8f13b735f7090964', + token: "faeb9172e232a75339242faafb9e56de8c8f13b735f7090964", }); const metaTags = data ? [...data.page.seo, ...data.site.favicon] : []; const statusMessage = { - connecting: 'Connecting to DatoCMS...', - connected: 'Connected to DatoCMS, receiving live updates!', - closed: 'Connection closed', + connecting: "Connecting to DatoCMS...", + connected: "Connected to DatoCMS, receiving live updates!", + closed: "Connection closed", }; return (
{renderMetaTags(metaTags)}
- {status === 'connected' &&
} + {status === "connected" &&
} {statusMessage[status]}
{error && ( @@ -96,10 +96,13 @@ export default function QuerySubscriptionExample() {
diff --git a/package.json b/package.json index 461f2db..21c5216 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,11 @@ "import": "./dist/esm/Image/index.js", "types": "./dist/types/Image/index.d.ts" }, + "./video-player/lazy": { + "require": "./dist/cjs/VideoPlayer/lazy.js", + "import": "./dist/esm/VideoPlayer/lazy.js", + "types": "./dist/types/VideoPlayer/lazy.d.ts" + }, "./video-player": { "require": "./dist/cjs/VideoPlayer/index.js", "import": "./dist/esm/VideoPlayer/index.js", @@ -64,6 +69,9 @@ "video-player": [ "./dist/types/VideoPlayer/index.d.ts" ], + "video-player/lazy": [ + "./dist/types/VideoPlayer/lazy.d.ts" + ], "structured-text": [ "./dist/types/StructuredText/index.d.ts" ], diff --git a/src/VideoPlayer/index.tsx b/src/VideoPlayer/index.tsx index fa89c29..975dd45 100644 --- a/src/VideoPlayer/index.tsx +++ b/src/VideoPlayer/index.tsx @@ -1,4 +1,4 @@ -'use client'; +"use client"; // This file defines a React component that easily displays a video player using // data stored on DatoCMS and retrieved via DatoCMS GraphQL API. The component @@ -8,25 +8,24 @@ // // [1]: https://www.mux.com/player -import React, { forwardRef } from 'react'; +import React, { forwardRef } from "react"; // We use and extend Typescript types defined in the MUX player. -import type MuxPlayerElement from '@mux/mux-player'; -import type { MuxPlayerProps } from '@mux/mux-player-react'; +import type MuxPlayerElement from "@mux/mux-player"; +import type { MuxPlayerProps } from "@mux/mux-player-react"; // React MUX player is made available in two flavours: eager and lazy loaded. We -// choose to use the lazy version to avoid loading the web component uselessly. -// MUX player lazy version loads internally the eager version using -// `React.lazy()`. +// choose to use the eager loading version as the default approch, but +// we also provide a lazy loading version.. -import MuxPlayer from '@mux/mux-player-react/lazy'; +import MuxPlayer from "@mux/mux-player-react"; // The core of this component is the `useVideoPlayer` hook: it takes // data from DatoCMS GraphQL API and returns props as expected by the // `` component. -import { useVideoPlayer } from '../useVideoPlayer/index.js'; +import { useVideoPlayer } from "../useVideoPlayer/index.js"; type Maybe = T | null; type Possibly = Maybe | undefined; @@ -63,16 +62,18 @@ export type VideoPlayerProps = MuxPlayerProps & { data?: Video; }; -export const VideoPlayer: ( - props: VideoPlayerProps, -) => ReturnType = forwardRef< +type VideoPlayerType = React.ForwardRefExoticComponent< + VideoPlayerProps & React.RefAttributes +>; + +export const VideoPlayer: VideoPlayerType = forwardRef< MuxPlayerElement, VideoPlayerProps ->((props, ref) => { +>((props: VideoPlayerProps, ref) => { const { data = {}, disableCookies = true, - preload = 'metadata', + preload = "metadata", style: styleFromProps, ...rest } = props; @@ -105,3 +106,5 @@ export const VideoPlayer: ( /> ); }); + +export default VideoPlayer; diff --git a/src/VideoPlayer/lazy.tsx b/src/VideoPlayer/lazy.tsx new file mode 100644 index 0000000..25d8910 --- /dev/null +++ b/src/VideoPlayer/lazy.tsx @@ -0,0 +1,26 @@ +import React, { Suspense, forwardRef } from "react"; +import type MuxPlayerElement from "@mux/mux-player"; +import type MuxPlayer from "@mux/mux-player-react/."; + +import type { VideoPlayerProps } from "./index"; + +const LazyLoadedVideoPlayer = React.lazy(() => import("./index.js")); + +type VideoPlayerType = React.ForwardRefExoticComponent< + VideoPlayerProps & React.RefAttributes +>; + +export const VideoPlayer: VideoPlayerType = forwardRef< + MuxPlayerElement, + VideoPlayerProps +>((props: VideoPlayerProps, ref) => { + const { className, style } = props; + + return ( + }> + + + ); +}); + +export default VideoPlayer; diff --git a/tsconfig.json b/tsconfig.json index 74dc997..9386421 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -29,6 +29,8 @@ // TypeScript and JavaScript Compatibility "target": "ES2016", + "module": "ESNext", + // Module resolution "moduleResolution": "Node", "esModuleInterop": true, From 7a0edab5c69c27daa8d6a32ac771de21b66226eb Mon Sep 17 00:00:00 2001 From: Silvano Stralla Date: Thu, 24 Oct 2024 10:11:55 +0200 Subject: [PATCH 2/6] Add a note to the README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5a03cdf..3f788d2 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ This package offers different components and hooks. Please refer to one of the f * [`` and `` components for responsive/progressive images](./docs/image.md) * [`` component](./docs/structured-text.md) -* [`` component](./docs/video-player.md) +* [`` component](./docs/video-player.md) (lazy version available) * [`useQuerySubscription()` hook for live, real-time updates of content](./docs/live-real-time-updates.md) * [`useSiteSearch()` hook to render a DatoCMS Site Search form widget](./docs/site-search.md) * [`renderMetaTags()` and other helpers to render social share, SEO and Favicon meta tags](./docs/meta-tags.md) From 8e7af29fb64967529cfe81d17a041a3354720170 Mon Sep 17 00:00:00 2001 From: Silvano Stralla Date: Thu, 24 Oct 2024 10:16:41 +0200 Subject: [PATCH 3/6] 8.0.0-0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6d759e4..e953813 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "react-datocms", - "version": "7.0.3", + "version": "8.0.0-0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "react-datocms", - "version": "7.0.3", + "version": "8.0.0-0", "license": "MIT", "dependencies": { "@mux/mux-player-react": "*", diff --git a/package.json b/package.json index 21c5216..2feb391 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-datocms", - "version": "7.0.3", + "version": "8.0.0-0", "engines": { "node": ">=8.0.0" }, From 8b423e9b3260cd9b3ee38d6e1addab034b283190 Mon Sep 17 00:00:00 2001 From: Silvano Stralla Date: Thu, 24 Oct 2024 12:41:21 +0200 Subject: [PATCH 4/6] Update package lock file --- examples/package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/package-lock.json b/examples/package-lock.json index 04bbdaf..e28b672 100644 --- a/examples/package-lock.json +++ b/examples/package-lock.json @@ -15924,9 +15924,9 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/react-datocms": { - "version": "7.0.3", + "version": "8.0.0-0", "resolved": "file:../react-datocms.tgz", - "integrity": "sha512-+8h4VXx15ODF3MOZI+AR6DzKUMONBnEPOgyOjaIuWOqBxLo6w8G42hA1Sz3v7ek9dVX7amo3BI6IS8I2uhakew==", + "integrity": "sha512-kwIM1oXAFpAlkDpCrxvL8Tcj0YBLb3+J5Mqn98axi+AmXeMh5zh1BnUtWe1+gRhbz2FxIbz0SENFLU5dAVa41g==", "license": "MIT", "dependencies": { "@mux/mux-player-react": "*", From 6a1ec3866438e25538d0415678c66a1c8222cdb7 Mon Sep 17 00:00:00 2001 From: Silvano Stralla Date: Thu, 24 Oct 2024 16:41:15 +0200 Subject: [PATCH 5/6] Disable tracking by default --- examples/package-lock.json | 79 ++++++--------- package-lock.json | 199 +++++++++++++++++++++---------------- package.json | 4 +- src/VideoPlayer/index.tsx | 2 + 4 files changed, 147 insertions(+), 137 deletions(-) diff --git a/examples/package-lock.json b/examples/package-lock.json index e28b672..dd7cfda 100644 --- a/examples/package-lock.json +++ b/examples/package-lock.json @@ -3790,37 +3790,36 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, "node_modules/@mux/mux-player": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-3.0.0.tgz", - "integrity": "sha512-ZdJGSQ+uoh1A5quo7p6pQXRO7zh9hxcbAaRf21aOZHW7rWEF/SP5hp6ruRGZe5Za2EGVrVbMQpGUpfWSBFBLZA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-2.9.1.tgz", + "integrity": "sha512-TAyoUSPTV0IXWGMOknL6O+IeGSEJ8aS154DzyzqZgdd3zDJHM8JpkyNHgtowatMHT2lB6h+qMtWfp4u3ijpo2A==", "license": "MIT", "dependencies": { - "@mux/mux-video": "0.21.0", - "@mux/playback-core": "0.26.0", - "media-chrome": "~4.1.1", - "player.style": "^0.0.8" + "@mux/mux-video": "0.20.2", + "@mux/playback-core": "0.25.2", + "media-chrome": "~3.2.5" } }, "node_modules/@mux/mux-video": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.21.0.tgz", - "integrity": "sha512-/NUIJBYBAOd5P3oyN8bpUGShuUbVOE+y70MP5De8SqMj2mKG0WuY75biuU8ormoI5Jv474Ps7PWPA/MHyg44TA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.20.2.tgz", + "integrity": "sha512-CqkK9EZZWdQE4U62JKlmWDskirT+D9C4suh2tSqKb2CA/0S4ybbbrVWcCKF7xfadUacfKO1yPsOKbe46F6phVQ==", "license": "MIT", "dependencies": { - "@mux/playback-core": "0.26.0", - "castable-video": "~1.1.0", + "@mux/playback-core": "0.25.2", + "castable-video": "~1.0.9", "custom-media-element": "~1.3.1", "media-tracks": "~0.3.2" } }, "node_modules/@mux/playback-core": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.26.0.tgz", - "integrity": "sha512-Q2M+g6gAC8dwX62YGWiK6R+IT5gc3ArgQ0rI13SY6na3bKcbx8oL/tKRSi2iTnBhl0dcZrlezuVUCN6PE87nNQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.25.2.tgz", + "integrity": "sha512-vrBbCgLHwmPpVxF0QGj+sXHUVXSxgDJJhVm8pxPXEkbw0vjPNHTXgAd/Ty6JA0vZ0ZjoQuAa17AxJ+c02JYeWQ==", "license": "MIT", "dependencies": { "hls.js": "~1.5.11", - "mux-embed": "^5.3.0" + "mux-embed": "~5.2.0" } }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { @@ -6116,9 +6115,9 @@ } }, "node_modules/castable-video": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.1.0.tgz", - "integrity": "sha512-64/roq+vieXz8aOEvSs5bohHRym1fxhvHQMZXPn8/s8z0oi7XD5B67fnt9gFyCsfzH8RnuYJ0PxMSYjbMPHOtw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.0.10.tgz", + "integrity": "sha512-tJgUv+8/zE191y8EKojvB0eKIyKA9obIttd6Wpdm6x2qBmuwZ7wDgzVCSmf5cN2v9jBiuu0s7O5poz8a8cFX/w==", "license": "MIT", "dependencies": { "custom-media-element": "~1.3.2" @@ -13504,9 +13503,9 @@ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" }, "node_modules/media-chrome": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-4.1.5.tgz", - "integrity": "sha512-wfUUREB+IoDQwB0GAYgCz0aLWiUAJpqEQaMMqAJvf6CX2sUKev8kC6TXuMsH4zj8TgyODD+Uj1FZP2RBtl2vUg==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-3.2.5.tgz", + "integrity": "sha512-tTsgS7x77Bn4p/wca/Si/7A+Q3z9DzKq0SOkroQvrNMXBVyQasMayDcsKg5Ur5NGsymZfttnJi7tXvVr/tPj8g==", "license": "MIT" }, "node_modules/media-tracks": { @@ -13738,9 +13737,9 @@ } }, "node_modules/mux-embed": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-5.3.3.tgz", - "integrity": "sha512-jG+nECEsCQMzXWUkHI4+XfK856AwQPkjxpfi5Rnmc36k8YzjHGxy1GdQcDJpgNHJpz1HoL4Xdrz1bqBZ7t9NCQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-5.2.1.tgz", + "integrity": "sha512-NukHw91xeEVDBeXVDBpi2BvXNix7gSuvdtyvOph5yR/ROn1hHbTlcYWoKQyCyJX9frsF00UROEul+S8wPzU3aQ==", "license": "MIT" }, "node_modules/mz": { @@ -14422,22 +14421,6 @@ "node": ">=4" } }, - "node_modules/player.style": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/player.style/-/player.style-0.0.8.tgz", - "integrity": "sha512-ScmFzio3634eEn+ejpkEw13F5xYvnPghtaZz/Kg7QQP78ECrxdjRVqwVPZhUwbYxmg5OIScByOgHfrHpzTtR1Q==", - "license": "MIT", - "workspaces": [ - ".", - "site", - "examples/*", - "scripts/*", - "themes/*" - ], - "dependencies": { - "media-chrome": "^4.1.0" - } - }, "node_modules/postcss": { "version": "8.4.33", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", @@ -15926,10 +15909,10 @@ "node_modules/react-datocms": { "version": "8.0.0-0", "resolved": "file:../react-datocms.tgz", - "integrity": "sha512-kwIM1oXAFpAlkDpCrxvL8Tcj0YBLb3+J5Mqn98axi+AmXeMh5zh1BnUtWe1+gRhbz2FxIbz0SENFLU5dAVa41g==", + "integrity": "sha512-X5N5jZbUU0Hm6ZBF3p5Xz228AUtBNhNKGoluXR+UauUOCsvsjmPGi4YBWcg/NlHsR5sRW7FfiS+XjTETYzhAYw==", "license": "MIT", "dependencies": { - "@mux/mux-player-react": "*", + "@mux/mux-player-react": "^2.0.0", "datocms-listen": "^0.1.9", "datocms-structured-text-generic-html-renderer": "^4.0.1", "datocms-structured-text-utils": "^4.0.1", @@ -15945,13 +15928,13 @@ } }, "node_modules/react-datocms/node_modules/@mux/mux-player-react": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-3.0.0.tgz", - "integrity": "sha512-W6NCgZ7Syh67HdsPFZGLtw98y9L/et4efqdVaYzgK5vJOMWFhEetLkal49LyoskhhyrFlPgZWsTTBcTQf+YJdg==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-2.9.1.tgz", + "integrity": "sha512-1BpMs1J7P+d+/QCf9/mkTk/NPYR6sOskR4Ih0uFZjDAqNUN7/C9Q0FEJ6hF3sFXwAXo50RhnfCzsC5uYx3QHbA==", "license": "MIT", "dependencies": { - "@mux/mux-player": "3.0.0", - "@mux/playback-core": "0.26.0", + "@mux/mux-player": "2.9.1", + "@mux/playback-core": "0.25.2", "prop-types": "^15.7.2" }, "peerDependencies": { diff --git a/package-lock.json b/package-lock.json index e953813..d97ea34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "8.0.0-0", "license": "MIT", "dependencies": { - "@mux/mux-player-react": "*", + "@mux/mux-player-react": "^2.0.0", "datocms-listen": "^0.1.9", "datocms-structured-text-generic-html-renderer": "^4.0.1", "datocms-structured-text-utils": "^4.0.1", @@ -19,7 +19,7 @@ }, "devDependencies": { "@biomejs/biome": "^1.6.3", - "@mux/mux-player-react": "*", + "@mux/mux-player-react": "^2.0.0", "@types/enzyme": "^3.10.8", "@types/enzyme-to-json": "^1.5.4", "@types/jest": "^29.5.11", @@ -1277,24 +1277,26 @@ } }, "node_modules/@mux/mux-player": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-2.3.2.tgz", - "integrity": "sha512-ar58+vNGHCytUDM9+Q+yasFCRayqvw5UwyqUVibPR4k0yRML7PTqejAZNzi9obqgUW/yKsZEbV7foKDYcJL6uw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-2.5.0.tgz", + "integrity": "sha512-Tps+GsWlUuzJHwZpHHb/47OGKF7MXr6ca2RRL/S/7TRX5Y45qROoZiqZ859AxZW2UPcy7chFR6LROd4X7PSMQQ==", "dev": true, + "license": "MIT", "dependencies": { - "@mux/mux-video": "0.17.2", - "@mux/playback-core": "0.22.1", - "media-chrome": "~2.1.0" + "@mux/mux-video": "0.18.0", + "@mux/playback-core": "0.23.0", + "media-chrome": "~3.2.1" } }, "node_modules/@mux/mux-player-react": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-2.3.2.tgz", - "integrity": "sha512-WpxFRM6C617sOw4MdyjtPP2GXl2QISCKaYuFTBps9E6E8pSdGeg4sVybPESMfPPTnelUWbcYPf4DpIb8OQOeEA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-2.5.0.tgz", + "integrity": "sha512-HTJ55X+ngrR2tVgvCEc6edihyHGYkB4C8TqPNM+tbHeQqIevvyatJAMlZHZbpFEdOLUeL3I/PwsDQ6FOV7csKw==", "dev": true, + "license": "MIT", "dependencies": { - "@mux/mux-player": "2.3.2", - "@mux/playback-core": "0.22.1", + "@mux/mux-player": "2.5.0", + "@mux/playback-core": "0.23.0", "prop-types": "^15.7.2" }, "peerDependencies": { @@ -1312,25 +1314,27 @@ } }, "node_modules/@mux/mux-video": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.17.2.tgz", - "integrity": "sha512-IIGZhUYPClUIOQ/VZZ7kjYcxTcSSSvm+yiv/+c4hHlreO1XLly8Oe1Dzq2xx12t1b+UUupIzx2Cnc8bzVEQTKA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.18.0.tgz", + "integrity": "sha512-uRheOAEe47k4nadoH/q/5/sfgd1amr6OSesh1yTQPDtAICIy8zCOHyLLOCaJl7vVZxw9/JRQuwO6MwjzjHhdng==", "dev": true, + "license": "MIT", "dependencies": { - "@mux/playback-core": "0.22.1", + "@mux/playback-core": "0.23.0", "castable-video": "~1.0.6", - "custom-media-element": "~1.2.2", + "custom-media-element": "~1.2.3", "media-tracks": "~0.3.0" } }, "node_modules/@mux/playback-core": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.22.1.tgz", - "integrity": "sha512-tsPMpcu/xYHQtO6USZwg80CDaXyc7UbyJGoqMU9P1o0e15X/KDcz179nhr6k0CXafg/yiwAlxPNGXnpwToWJ4w==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.23.0.tgz", + "integrity": "sha512-7MX5xnJ+rFReVDAWKEwHqnfOyQkX+dzYysrTLAy0L1xJMsIhMhAD+wwvkDC/rRgtha5jHF863GCwrJAHmnxSCA==", "dev": true, + "license": "MIT", "dependencies": { - "hls.js": "~1.4.13", - "mux-embed": "~4.30.0" + "hls.js": "~1.5.8", + "mux-embed": "~5.2.0" } }, "node_modules/@nodelib/fs.scandir": { @@ -2551,14 +2555,22 @@ "peer": true }, "node_modules/castable-video": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.0.6.tgz", - "integrity": "sha512-Ykw2uL4ZQnqX0j9KF9ksbDpyc8I53mFMswCKW9yV5TrwpWkdNqRHLlcU85W30BIw61fgDjgm0Xh5G0rbcmv23g==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.0.10.tgz", + "integrity": "sha512-tJgUv+8/zE191y8EKojvB0eKIyKA9obIttd6Wpdm6x2qBmuwZ7wDgzVCSmf5cN2v9jBiuu0s7O5poz8a8cFX/w==", "dev": true, + "license": "MIT", "dependencies": { - "custom-media-element": "~1.2.2" + "custom-media-element": "~1.3.2" } }, + "node_modules/castable-video/node_modules/custom-media-element": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.3.2.tgz", + "integrity": "sha512-nDyMobZgoAVqz7mA8rsn7i1/6bjH6N9ab2Ge7LyyNxrvxAq7zQJPg8i3u2VH7wEB+Y1T1+C3/h1G774/D+ZLag==", + "dev": true, + "license": "MIT" + }, "node_modules/ccount": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", @@ -3180,10 +3192,11 @@ "dev": true }, "node_modules/custom-media-element": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.2.2.tgz", - "integrity": "sha512-tI+NjVRS485QlSxHeM3JIjdEZSJMLOZVp41/vvWukDmIkZSoYG9gLYl9GFZGBpY42UbRVo1eMlF7XkI/IiDHzQ==", - "dev": true + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.2.3.tgz", + "integrity": "sha512-xr9Hbrslkjm1fapJP5hL98pySeZmNepBSefQS/XTxynamqPTfRBK5MnhReMOiAj8xvJApVPrVnlYxIrknay8jg==", + "dev": true, + "license": "MIT" }, "node_modules/data-urls": { "version": "3.0.2", @@ -4523,10 +4536,11 @@ } }, "node_modules/hls.js": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.14.tgz", - "integrity": "sha512-UppQjyvPVclg+6t2KY/Rv03h0+bA5u6zwqVoz4LAC/L0fgYmIaCD7ZCrwe8WI1Gv01be1XL0QFsRbSdIHV/Wbw==", - "dev": true + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.17.tgz", + "integrity": "sha512-wA66nnYFvQa1o4DO/BFgLNRKnBTVXpNeldGRBJ2Y0SvFtdwvFKCbqa9zhHoZLoxHhZ+jYsj3aIBkWQQCPNOhMw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/hosted-git-info": { "version": "7.0.2", @@ -7445,16 +7459,18 @@ } }, "node_modules/media-chrome": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-2.1.0.tgz", - "integrity": "sha512-ceUEE9tHVIe7KNmjtWq4oCOx1oYq09VyL3A9EP1MDGnFot0eOoLuDfaye/koe8+4tzhB4/yGyn8pIGuvzF85lg==", - "dev": true + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-3.2.5.tgz", + "integrity": "sha512-tTsgS7x77Bn4p/wca/Si/7A+Q3z9DzKq0SOkroQvrNMXBVyQasMayDcsKg5Ur5NGsymZfttnJi7tXvVr/tPj8g==", + "dev": true, + "license": "MIT" }, "node_modules/media-tracks": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-tracks/-/media-tracks-0.3.0.tgz", - "integrity": "sha512-kicD8eOFwe6nD7jn7iM/0yuLzWuo6abWHURYwY7NhxL1dBif+lt0on4rLTs6VhKwAEE/BjT3wr+0vn1w8SBpag==", - "dev": true + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/media-tracks/-/media-tracks-0.3.3.tgz", + "integrity": "sha512-9P2FuUHnZZ3iji+2RQk7Zkh5AmZTnOG5fODACnjhCVveX1McY3jmCRHofIEI+yTBqplz7LXy48c7fQ3Uigp88w==", + "dev": true, + "license": "MIT" }, "node_modules/meow": { "version": "13.2.0", @@ -7707,10 +7723,11 @@ "dev": true }, "node_modules/mux-embed": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-4.30.0.tgz", - "integrity": "sha512-XAgAp4CEvsiZL26GbruzeG1g33OWyrzuskDMavXUxDufTxS0/AxAhwoTTRqEzEJS9vnZa/X9R2GV3xRX1XMp2w==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-5.2.1.tgz", + "integrity": "sha512-NukHw91xeEVDBeXVDBpi2BvXNix7gSuvdtyvOph5yR/ROn1hHbTlcYWoKQyCyJX9frsF00UROEul+S8wPzU3aQ==", + "dev": true, + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -11866,47 +11883,47 @@ } }, "@mux/mux-player": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-2.3.2.tgz", - "integrity": "sha512-ar58+vNGHCytUDM9+Q+yasFCRayqvw5UwyqUVibPR4k0yRML7PTqejAZNzi9obqgUW/yKsZEbV7foKDYcJL6uw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-2.5.0.tgz", + "integrity": "sha512-Tps+GsWlUuzJHwZpHHb/47OGKF7MXr6ca2RRL/S/7TRX5Y45qROoZiqZ859AxZW2UPcy7chFR6LROd4X7PSMQQ==", "dev": true, "requires": { - "@mux/mux-video": "0.17.2", - "@mux/playback-core": "0.22.1", - "media-chrome": "~2.1.0" + "@mux/mux-video": "0.18.0", + "@mux/playback-core": "0.23.0", + "media-chrome": "~3.2.1" } }, "@mux/mux-player-react": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-2.3.2.tgz", - "integrity": "sha512-WpxFRM6C617sOw4MdyjtPP2GXl2QISCKaYuFTBps9E6E8pSdGeg4sVybPESMfPPTnelUWbcYPf4DpIb8OQOeEA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-2.5.0.tgz", + "integrity": "sha512-HTJ55X+ngrR2tVgvCEc6edihyHGYkB4C8TqPNM+tbHeQqIevvyatJAMlZHZbpFEdOLUeL3I/PwsDQ6FOV7csKw==", "dev": true, "requires": { - "@mux/mux-player": "2.3.2", - "@mux/playback-core": "0.22.1", + "@mux/mux-player": "2.5.0", + "@mux/playback-core": "0.23.0", "prop-types": "^15.7.2" } }, "@mux/mux-video": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.17.2.tgz", - "integrity": "sha512-IIGZhUYPClUIOQ/VZZ7kjYcxTcSSSvm+yiv/+c4hHlreO1XLly8Oe1Dzq2xx12t1b+UUupIzx2Cnc8bzVEQTKA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.18.0.tgz", + "integrity": "sha512-uRheOAEe47k4nadoH/q/5/sfgd1amr6OSesh1yTQPDtAICIy8zCOHyLLOCaJl7vVZxw9/JRQuwO6MwjzjHhdng==", "dev": true, "requires": { - "@mux/playback-core": "0.22.1", + "@mux/playback-core": "0.23.0", "castable-video": "~1.0.6", - "custom-media-element": "~1.2.2", + "custom-media-element": "~1.2.3", "media-tracks": "~0.3.0" } }, "@mux/playback-core": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.22.1.tgz", - "integrity": "sha512-tsPMpcu/xYHQtO6USZwg80CDaXyc7UbyJGoqMU9P1o0e15X/KDcz179nhr6k0CXafg/yiwAlxPNGXnpwToWJ4w==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.23.0.tgz", + "integrity": "sha512-7MX5xnJ+rFReVDAWKEwHqnfOyQkX+dzYysrTLAy0L1xJMsIhMhAD+wwvkDC/rRgtha5jHF863GCwrJAHmnxSCA==", "dev": true, "requires": { - "hls.js": "~1.4.13", - "mux-embed": "~4.30.0" + "hls.js": "~1.5.8", + "mux-embed": "~5.2.0" } }, "@nodelib/fs.scandir": { @@ -12832,12 +12849,20 @@ "peer": true }, "castable-video": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.0.6.tgz", - "integrity": "sha512-Ykw2uL4ZQnqX0j9KF9ksbDpyc8I53mFMswCKW9yV5TrwpWkdNqRHLlcU85W30BIw61fgDjgm0Xh5G0rbcmv23g==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.0.10.tgz", + "integrity": "sha512-tJgUv+8/zE191y8EKojvB0eKIyKA9obIttd6Wpdm6x2qBmuwZ7wDgzVCSmf5cN2v9jBiuu0s7O5poz8a8cFX/w==", "dev": true, "requires": { - "custom-media-element": "~1.2.2" + "custom-media-element": "~1.3.2" + }, + "dependencies": { + "custom-media-element": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.3.2.tgz", + "integrity": "sha512-nDyMobZgoAVqz7mA8rsn7i1/6bjH6N9ab2Ge7LyyNxrvxAq7zQJPg8i3u2VH7wEB+Y1T1+C3/h1G774/D+ZLag==", + "dev": true + } } }, "ccount": { @@ -13289,9 +13314,9 @@ "dev": true }, "custom-media-element": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.2.2.tgz", - "integrity": "sha512-tI+NjVRS485QlSxHeM3JIjdEZSJMLOZVp41/vvWukDmIkZSoYG9gLYl9GFZGBpY42UbRVo1eMlF7XkI/IiDHzQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.2.3.tgz", + "integrity": "sha512-xr9Hbrslkjm1fapJP5hL98pySeZmNepBSefQS/XTxynamqPTfRBK5MnhReMOiAj8xvJApVPrVnlYxIrknay8jg==", "dev": true }, "data-urls": { @@ -14240,9 +14265,9 @@ } }, "hls.js": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.14.tgz", - "integrity": "sha512-UppQjyvPVclg+6t2KY/Rv03h0+bA5u6zwqVoz4LAC/L0fgYmIaCD7ZCrwe8WI1Gv01be1XL0QFsRbSdIHV/Wbw==", + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.17.tgz", + "integrity": "sha512-wA66nnYFvQa1o4DO/BFgLNRKnBTVXpNeldGRBJ2Y0SvFtdwvFKCbqa9zhHoZLoxHhZ+jYsj3aIBkWQQCPNOhMw==", "dev": true }, "hosted-git-info": { @@ -16367,15 +16392,15 @@ "dev": true }, "media-chrome": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-2.1.0.tgz", - "integrity": "sha512-ceUEE9tHVIe7KNmjtWq4oCOx1oYq09VyL3A9EP1MDGnFot0eOoLuDfaye/koe8+4tzhB4/yGyn8pIGuvzF85lg==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-3.2.5.tgz", + "integrity": "sha512-tTsgS7x77Bn4p/wca/Si/7A+Q3z9DzKq0SOkroQvrNMXBVyQasMayDcsKg5Ur5NGsymZfttnJi7tXvVr/tPj8g==", "dev": true }, "media-tracks": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-tracks/-/media-tracks-0.3.0.tgz", - "integrity": "sha512-kicD8eOFwe6nD7jn7iM/0yuLzWuo6abWHURYwY7NhxL1dBif+lt0on4rLTs6VhKwAEE/BjT3wr+0vn1w8SBpag==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/media-tracks/-/media-tracks-0.3.3.tgz", + "integrity": "sha512-9P2FuUHnZZ3iji+2RQk7Zkh5AmZTnOG5fODACnjhCVveX1McY3jmCRHofIEI+yTBqplz7LXy48c7fQ3Uigp88w==", "dev": true }, "meow": { @@ -16551,9 +16576,9 @@ "dev": true }, "mux-embed": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-4.30.0.tgz", - "integrity": "sha512-XAgAp4CEvsiZL26GbruzeG1g33OWyrzuskDMavXUxDufTxS0/AxAhwoTTRqEzEJS9vnZa/X9R2GV3xRX1XMp2w==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-5.2.1.tgz", + "integrity": "sha512-NukHw91xeEVDBeXVDBpi2BvXNix7gSuvdtyvOph5yR/ROn1hHbTlcYWoKQyCyJX9frsF00UROEul+S8wPzU3aQ==", "dev": true }, "natural-compare": { diff --git a/package.json b/package.json index 2feb391..a7e501e 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,7 @@ "homepage": "https://github.com/datocms/react-datocms", "devDependencies": { "@biomejs/biome": "^1.6.3", - "@mux/mux-player-react": "*", + "@mux/mux-player-react": "^2.0.0", "@types/enzyme": "^3.10.8", "@types/enzyme-to-json": "^1.5.4", "@types/jest": "^29.5.11", @@ -147,6 +147,6 @@ "react-intersection-observer": "^9.4.3", "react-string-replace": "^1.1.0", "use-deep-compare-effect": "^1.6.1", - "@mux/mux-player-react": "*" + "@mux/mux-player-react": "^2.0.0" } } diff --git a/src/VideoPlayer/index.tsx b/src/VideoPlayer/index.tsx index 975dd45..e963e97 100644 --- a/src/VideoPlayer/index.tsx +++ b/src/VideoPlayer/index.tsx @@ -73,6 +73,7 @@ export const VideoPlayer: VideoPlayerType = forwardRef< const { data = {}, disableCookies = true, + disableTracking = true, preload = "metadata", style: styleFromProps, ...rest @@ -99,6 +100,7 @@ export const VideoPlayer: VideoPlayerType = forwardRef< preload={preload} title={title} disableCookies={disableCookies} + disableTracking={disableTracking} playbackId={playbackId} style={style} placeholder={placeholder} From 948ab80224a6285e3518bdb1e585f3eeaced6333 Mon Sep 17 00:00:00 2001 From: Silvano Stralla Date: Thu, 24 Oct 2024 16:43:43 +0200 Subject: [PATCH 6/6] Remove gitignored file --- react-datocms.tgz | Bin 53715 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 react-datocms.tgz diff --git a/react-datocms.tgz b/react-datocms.tgz deleted file mode 100644 index 2dc38f86089494424c9f85b48b77a99b1a57bf22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53715 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�m=H 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 YRf$ZhPxYxjpW^fX0TD#nKLE}K0NA$Y_5c6?