react-tv-player
Version:
A React media player component for TV devices. With custom UI and arrow-key navigation, it can play a variety of URLs like file paths, HLS/DASH streams and even YouTube & Vimeo links directly. Packaged as an npm library for easy integration.
128 lines (127 loc) • 5.22 kB
JavaScript
import { r as I, a as M, g as x } from "./index-r8XrYpcu.js";
import A from "react";
function L(p, i) {
for (var u = 0; u < i.length; u++) {
const n = i[u];
if (typeof n != "string" && !Array.isArray(n)) {
for (const o in n)
if (o !== "default" && !(o in p)) {
const c = Object.getOwnPropertyDescriptor(n, o);
c && Object.defineProperty(p, o, c.get ? c : {
enumerable: !0,
get: () => n[o]
});
}
}
}
return Object.freeze(Object.defineProperty(p, Symbol.toStringTag, { value: "Module" }));
}
var P, v;
function N() {
if (v) return P;
v = 1;
var p = Object.create, i = Object.defineProperty, u = Object.getOwnPropertyDescriptor, n = Object.getOwnPropertyNames, o = Object.getPrototypeOf, c = Object.prototype.hasOwnProperty, O = (t, e, a) => e in t ? i(t, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : t[e] = a, C = (t, e) => {
for (var a in e)
i(t, a, { get: e[a], enumerable: !0 });
}, b = (t, e, a, l) => {
if (e && typeof e == "object" || typeof e == "function")
for (let r of n(e))
!c.call(t, r) && r !== a && i(t, r, { get: () => e[r], enumerable: !(l = u(e, r)) || l.enumerable });
return t;
}, k = (t, e, a) => (a = t != null ? p(o(t)) : {}, b(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
!t || !t.__esModule ? i(a, "default", { value: t, enumerable: !0 }) : a,
t
)), D = (t) => b(i({}, "__esModule", { value: !0 }), t), s = (t, e, a) => (O(t, typeof e != "symbol" ? e + "" : e, a), a), f = {};
C(f, {
default: () => h
}), P = D(f);
var m = k(A), y = /* @__PURE__ */ I(), g = /* @__PURE__ */ M();
const E = "https://fast.wistia.com/assets/external/E-v1.js", R = "Wistia", S = "wistia-player-";
class h extends m.Component {
constructor() {
super(...arguments), s(this, "callPlayer", y.callPlayer), s(this, "playerID", this.props.config.playerId || `${S}${(0, y.randomString)()}`), s(this, "onPlay", (...e) => this.props.onPlay(...e)), s(this, "onPause", (...e) => this.props.onPause(...e)), s(this, "onSeek", (...e) => this.props.onSeek(...e)), s(this, "onEnded", (...e) => this.props.onEnded(...e)), s(this, "onPlaybackRateChange", (...e) => this.props.onPlaybackRateChange(...e)), s(this, "mute", () => {
this.callPlayer("mute");
}), s(this, "unmute", () => {
this.callPlayer("unmute");
});
}
componentDidMount() {
this.props.onMount && this.props.onMount(this);
}
load(e) {
const { playing: a, muted: l, controls: r, onReady: W, config: d, onError: j } = this.props;
(0, y.getSDK)(E, R).then((q) => {
d.customControls && d.customControls.forEach((_) => q.defineControl(_)), window._wq = window._wq || [], window._wq.push({
id: this.playerID,
options: {
autoPlay: a,
silentAutoPlay: "allow",
muted: l,
controlsVisibleOnLoad: r,
fullscreenButton: r,
playbar: r,
playbackRateControl: r,
qualityControl: r,
volumeControl: r,
settingsControl: r,
smallPlayButton: r,
...d.options
},
onReady: (_) => {
this.player = _, this.unbind(), this.player.bind("play", this.onPlay), this.player.bind("pause", this.onPause), this.player.bind("seek", this.onSeek), this.player.bind("end", this.onEnded), this.player.bind("playbackratechange", this.onPlaybackRateChange), W();
}
});
}, j);
}
unbind() {
this.player.unbind("play", this.onPlay), this.player.unbind("pause", this.onPause), this.player.unbind("seek", this.onSeek), this.player.unbind("end", this.onEnded), this.player.unbind("playbackratechange", this.onPlaybackRateChange);
}
play() {
this.callPlayer("play");
}
pause() {
this.callPlayer("pause");
}
stop() {
this.unbind(), this.callPlayer("remove");
}
seekTo(e, a = !0) {
this.callPlayer("time", e), a || this.pause();
}
setVolume(e) {
this.callPlayer("volume", e);
}
setPlaybackRate(e) {
this.callPlayer("playbackRate", e);
}
getDuration() {
return this.callPlayer("duration");
}
getCurrentTime() {
return this.callPlayer("time");
}
getSecondsLoaded() {
return null;
}
render() {
const { url: e } = this.props, a = e && e.match(g.MATCH_URL_WISTIA)[1], l = `wistia_embed wistia_async_${a}`, r = {
width: "100%",
height: "100%"
};
return /* @__PURE__ */ m.default.createElement("div", { id: this.playerID, key: a, className: l, style: r });
}
}
return s(h, "displayName", "Wistia"), s(h, "canPlay", g.canPlay.wistia), s(h, "loopOnEnded", !0), P;
}
var w = /* @__PURE__ */ N();
const $ = /* @__PURE__ */ x(w), F = /* @__PURE__ */ L({
__proto__: null,
default: $
}, [w]);
export {
F as W
};