Files
2026-07-27 22:57:03 +02:00

65 lines
2.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.usePlayer = exports.VideoPlayer = exports.OmniProvider = void 0;
var _react = require("@videojs/react");
var _video = require("@videojs/react/video");
var _react2 = require("react");
var _player = require("./player.web");
var _lazyRef = require("./utils/lazy-ref");
var _jsxRuntime = require("react/jsx-runtime");
const VideoPlayer = exports.VideoPlayer = (0, _react.createPlayer)({
features: _video.videoFeatures
});
const PlayerCtx = /*#__PURE__*/(0, _react2.createContext)(null);
const OmniProvider = ({
children,
source,
cast,
// Web always uses video.js; accepted for API parity with native.
backend: _backend,
showNotification = false
}) => {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(VideoPlayer.Provider, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PlayerInitializer, {
source: source,
cast: cast,
showNotification: showNotification,
children: children
})
});
};
exports.OmniProvider = OmniProvider;
const PlayerInitializer = ({
children,
source,
cast,
showNotification
}) => {
const store = VideoPlayer.usePlayer();
const player = (0, _lazyRef.useLazyRef)(() => new _player.WebOmniPlayer(store));
const seekedForSrc = (0, _react2.useRef)(undefined);
(0, _react2.useEffect)(() => {
player.source = source;
const uri = source?.src?.uri;
if (uri !== seekedForSrc.current) {
seekedForSrc.current = uri;
if (source?.startTime) store.seek(source.startTime);
}
}, [source, store]);
(0, _react2.useEffect)(() => {
player.castOptions = cast ?? null;
}, [cast]);
(0, _react2.useEffect)(() => {
player.showNotification = showNotification;
}, [showNotification]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(PlayerCtx.Provider, {
value: player,
children: children
});
};
const usePlayer = () => (0, _react2.useContext)(PlayerCtx);
exports.usePlayer = usePlayer;
//# sourceMappingURL=provider.web.js.map