Created
September 15, 2022 06:32
-
-
Save otiai10/1961ce97c5f8aa6f3e3fc51463ff7a3b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // deno-fmt-ignore-file | |
| // deno-lint-ignore-file | |
| // This code was bundled using `deno bundle` and it's not recommended to edit it manually | |
| var PlayerState; | |
| (function(PlayerState) { | |
| PlayerState[PlayerState["UNSTARTED"] = -1] = "UNSTARTED"; | |
| PlayerState[PlayerState["ENDED"] = 0] = "ENDED"; | |
| PlayerState[PlayerState["PLAYING"] = 1] = "PLAYING"; | |
| PlayerState[PlayerState["PAUSED"] = 2] = "PAUSED"; | |
| PlayerState[PlayerState["BUFFERING"] = 3] = "BUFFERING"; | |
| PlayerState[PlayerState["CUED"] = 5] = "CUED"; | |
| })(PlayerState || (PlayerState = {})); | |
| class YouTubePlayerDelegate { | |
| __player__; | |
| __notifier__; | |
| __initialVideoID__; | |
| __onPlayerReadyPromise__; | |
| __onPlayerReadyPromiseResolve___; | |
| constructor(option){ | |
| if (option?.stateUpdater) this.__notifier__ = option.stateUpdater; | |
| if (option?.initialVideoID) this.__initialVideoID__ = option.initialVideoID; | |
| this.__onPlayerReadyPromise__ = new Promise((resolve)=>{ | |
| this.__onPlayerReadyPromiseResolve___ = resolve; | |
| }); | |
| } | |
| onStateChange(ev) { | |
| if (this.__notifier__) this.__notifier__(ev.target.getPlayerState()); | |
| } | |
| onError(ev) { | |
| console.error("[ERROR] fresh-youtube:YouTubePlayerDelegate", ev); | |
| } | |
| onReady(ev) { | |
| this.__onPlayerReadyPromiseResolve___(ev.target); | |
| } | |
| __onPlayerLoaded__(player) { | |
| this.__player__ = player; | |
| } | |
| get ready() { | |
| return this.__onPlayerReadyPromise__; | |
| } | |
| initialVideoID() { | |
| if (this.__initialVideoID__) return this.__initialVideoID__; | |
| return ""; | |
| } | |
| play() { | |
| this.__player__?.playVideo(); | |
| } | |
| stop() { | |
| this.__player__?.stopVideo(); | |
| } | |
| pause() { | |
| this.__player__?.pauseVideo(); | |
| } | |
| load(videoId, startSeconds, suggestedQuality) { | |
| console.log(this.__player__, this.__player__?.loadVideoById); | |
| this.__player__.loadVideoById(videoId, startSeconds, suggestedQuality); | |
| } | |
| cue(videoId, startSeconds, suggestedQuality) { | |
| this.__player__?.cueVideoById(videoId, startSeconds, suggestedQuality); | |
| } | |
| next() { | |
| this.__player__?.nextVideo(); | |
| } | |
| prev() { | |
| this.__player__?.previousVideo(); | |
| } | |
| get muted() { | |
| return this.__player__.isMuted(); | |
| } | |
| set muted(yes) { | |
| yes ? this.__player__?.mute() : this.__player__?.unMute(); | |
| } | |
| set volume(vol) { | |
| this.__player__?.setVolume(vol); | |
| } | |
| get volume() { | |
| return this.__player__.getVolume(); | |
| } | |
| get currentTime() { | |
| return this.__player__.getCurrentTime(); | |
| } | |
| set currentTime(seconds) { | |
| this.__player__?.seekTo(seconds, true); | |
| } | |
| get duration() { | |
| return this.__player__.getDuration(); | |
| } | |
| get state() { | |
| return this.__player__.getPlayerState(); | |
| } | |
| get progress() { | |
| return Math.round(100 * this.currentTime / this.duration); | |
| } | |
| set progress(percentage) { | |
| if (percentage < 0) percentage = 0; | |
| if (percentage > 100) percentage = 100; | |
| const sec = this.duration * (percentage / 100); | |
| this.__player__?.seekTo(Math.round(sec), true); | |
| } | |
| __destroy__() { | |
| this.__player__?.destroy(); | |
| } | |
| } | |
| export { PlayerState as PlayerState }; | |
| export { YouTubePlayerDelegate as YouTubePlayerDelegate }; | |
| var P, d, $, S, F, T = {}, V = [], Z = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; | |
| function k(t, e) { | |
| for(var n in e)t[n] = e[n]; | |
| return t; | |
| } | |
| function j(t) { | |
| var e = t.parentNode; | |
| e && e.removeChild(t); | |
| } | |
| function ee(t, e, n) { | |
| var r, l, o, s = {}; | |
| for(o in e)o == "key" ? r = e[o] : o == "ref" ? l = e[o] : s[o] = e[o]; | |
| if (arguments.length > 2 && (s.children = arguments.length > 3 ? P.call(arguments, 2) : n), typeof t == "function" && t.defaultProps != null) for(o in t.defaultProps)s[o] === void 0 && (s[o] = t.defaultProps[o]); | |
| return w(t, s, r, l, null); | |
| } | |
| function w(t, e, n, r, l) { | |
| var o = { | |
| type: t, | |
| props: e, | |
| key: n, | |
| ref: r, | |
| __k: null, | |
| __: null, | |
| __b: 0, | |
| __e: null, | |
| __d: void 0, | |
| __c: null, | |
| __h: null, | |
| constructor: void 0, | |
| __v: l ?? ++$ | |
| }; | |
| return l == null && d.vnode != null && d.vnode(o), o; | |
| } | |
| function L(t) { | |
| return t.children; | |
| } | |
| function U(t, e) { | |
| this.props = t, this.context = e; | |
| } | |
| function C(t, e) { | |
| if (e == null) return t.__ ? C(t.__, t.__.__k.indexOf(t) + 1) : null; | |
| for(var n; e < t.__k.length; e++)if ((n = t.__k[e]) != null && n.__e != null) return n.__e; | |
| return typeof t.type == "function" ? C(t) : null; | |
| } | |
| function z(t) { | |
| var e, n; | |
| if ((t = t.__) != null && t.__c != null) { | |
| for(t.__e = t.__c.base = null, e = 0; e < t.__k.length; e++)if ((n = t.__k[e]) != null && n.__e != null) { | |
| t.__e = t.__c.base = n.__e; | |
| break; | |
| } | |
| return z(t); | |
| } | |
| } | |
| function M(t) { | |
| (!t.__d && (t.__d = !0) && S.push(t) && !D.__r++ || F !== d.debounceRendering) && ((F = d.debounceRendering) || setTimeout)(D); | |
| } | |
| function D() { | |
| for(var t; D.__r = S.length;)t = S.sort(function(e, n) { | |
| return e.__v.__b - n.__v.__b; | |
| }), S = [], t.some(function(e) { | |
| var n, r, l, o, s, f; | |
| e.__d && (s = (o = (n = e).__v).__e, (f = n.__P) && (r = [], (l = k({}, o)).__v = o.__v + 1, W(f, o, l, n.__n, f.ownerSVGElement !== void 0, o.__h != null ? [ | |
| s | |
| ] : null, r, s ?? C(o), o.__h), K(r, o), o.__e != s && z(o))); | |
| }); | |
| } | |
| function G(t, e, n, r, l, o, s, f, p, a) { | |
| var _, h, c, i, u, b, v, y = r && r.__k || V, g = y.length; | |
| for(n.__k = [], _ = 0; _ < e.length; _++)if ((i = n.__k[_] = (i = e[_]) == null || typeof i == "boolean" ? null : typeof i == "string" || typeof i == "number" || typeof i == "bigint" ? w(null, i, null, null, i) : Array.isArray(i) ? w(L, { | |
| children: i | |
| }, null, null, null) : i.__b > 0 ? w(i.type, i.props, i.key, null, i.__v) : i) != null) { | |
| if (i.__ = n, i.__b = n.__b + 1, (c = y[_]) === null || c && i.key == c.key && i.type === c.type) y[_] = void 0; | |
| else for(h = 0; h < g; h++){ | |
| if ((c = y[h]) && i.key == c.key && i.type === c.type) { | |
| y[h] = void 0; | |
| break; | |
| } | |
| c = null; | |
| } | |
| W(t, i, c = c || T, l, o, s, f, p, a), u = i.__e, (h = i.ref) && c.ref != h && (v || (v = []), c.ref && v.push(c.ref, null, i), v.push(h, i.__c || u, i)), u != null ? (b == null && (b = u), typeof i.type == "function" && i.__k === c.__k ? i.__d = p = q(i, p, t) : p = J(t, i, c, y, u, p), typeof n.type == "function" && (n.__d = p)) : p && c.__e == p && p.parentNode != t && (p = C(c)); | |
| } | |
| for(n.__e = b, _ = g; _--;)y[_] != null && (typeof n.type == "function" && y[_].__e != null && y[_].__e == n.__d && (n.__d = C(r, _ + 1)), X(y[_], y[_])); | |
| if (v) for(_ = 0; _ < v.length; _++)Q(v[_], v[++_], v[++_]); | |
| } | |
| function q(t, e, n) { | |
| for(var r, l = t.__k, o = 0; l && o < l.length; o++)(r = l[o]) && (r.__ = t, e = typeof r.type == "function" ? q(r, e, n) : J(n, r, r, l, r.__e, e)); | |
| return e; | |
| } | |
| function J(t, e, n, r, l, o) { | |
| var s, f, p; | |
| if (e.__d !== void 0) s = e.__d, e.__d = void 0; | |
| else if (n == null || l != o || l.parentNode == null) e: if (o == null || o.parentNode !== t) t.appendChild(l), s = null; | |
| else { | |
| for(f = o, p = 0; (f = f.nextSibling) && p < r.length; p += 2)if (f == l) break e; | |
| t.insertBefore(l, o), s = o; | |
| } | |
| return s !== void 0 ? s : l.nextSibling; | |
| } | |
| function ne(t, e, n, r, l) { | |
| var o; | |
| for(o in n)o === "children" || o === "key" || o in e || N(t, o, null, n[o], r); | |
| for(o in e)l && typeof e[o] != "function" || o === "children" || o === "key" || o === "value" || o === "checked" || n[o] === e[o] || N(t, o, e[o], n[o], r); | |
| } | |
| function I(t, e, n) { | |
| e[0] === "-" ? t.setProperty(e, n) : t[e] = n == null ? "" : typeof n != "number" || Z.test(e) ? n : n + "px"; | |
| } | |
| function N(t, e, n, r, l) { | |
| var o; | |
| e: if (e === "style") if (typeof n == "string") t.style.cssText = n; | |
| else { | |
| if (typeof r == "string" && (t.style.cssText = r = ""), r) for(e in r)n && e in n || I(t.style, e, ""); | |
| if (n) for(e in n)r && n[e] === r[e] || I(t.style, e, n[e]); | |
| } | |
| else if (e[0] === "o" && e[1] === "n") o = e !== (e = e.replace(/Capture$/, "")), e = e.toLowerCase() in t ? e.toLowerCase().slice(2) : e.slice(2), t.l || (t.l = {}), t.l[e + o] = n, n ? r || t.addEventListener(e, o ? R : O, o) : t.removeEventListener(e, o ? R : O, o); | |
| else if (e !== "dangerouslySetInnerHTML") { | |
| if (l) e = e.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s"); | |
| else if (e !== "href" && e !== "list" && e !== "form" && e !== "tabIndex" && e !== "download" && e in t) try { | |
| t[e] = n ?? ""; | |
| break e; | |
| } catch {} | |
| typeof n == "function" || (n != null && (n !== !1 || e[0] === "a" && e[1] === "r") ? t.setAttribute(e, n) : t.removeAttribute(e)); | |
| } | |
| } | |
| function O(t) { | |
| this.l[t.type + !1](d.event ? d.event(t) : t); | |
| } | |
| function R(t) { | |
| this.l[t.type + !0](d.event ? d.event(t) : t); | |
| } | |
| function W(t, e, n, r, l, o, s, f, p) { | |
| var a, _, h, c, i, u, b, v, y, g, x, H, E, m = e.type; | |
| if (e.constructor !== void 0) return null; | |
| n.__h != null && (p = n.__h, f = e.__e = n.__e, e.__h = null, o = [ | |
| f | |
| ]), (a = d.__b) && a(e); | |
| try { | |
| e: if (typeof m == "function") { | |
| if (v = e.props, y = (a = m.contextType) && r[a.__c], g = a ? y ? y.props.value : a.__ : r, n.__c ? b = (_ = e.__c = n.__c).__ = _.__E : ("prototype" in m && m.prototype.render ? e.__c = _ = new m(v, g) : (e.__c = _ = new U(v, g), _.constructor = m, _.render = oe), y && y.sub(_), _.props = v, _.state || (_.state = {}), _.context = g, _.__n = r, h = _.__d = !0, _.__h = []), _.__s == null && (_.__s = _.state), m.getDerivedStateFromProps != null && (_.__s == _.state && (_.__s = k({}, _.__s)), k(_.__s, m.getDerivedStateFromProps(v, _.__s))), c = _.props, i = _.state, h) m.getDerivedStateFromProps == null && _.componentWillMount != null && _.componentWillMount(), _.componentDidMount != null && _.__h.push(_.componentDidMount); | |
| else { | |
| if (m.getDerivedStateFromProps == null && v !== c && _.componentWillReceiveProps != null && _.componentWillReceiveProps(v, g), !_.__e && _.shouldComponentUpdate != null && _.shouldComponentUpdate(v, _.__s, g) === !1 || e.__v === n.__v) { | |
| _.props = v, _.state = _.__s, e.__v !== n.__v && (_.__d = !1), _.__v = e, e.__e = n.__e, e.__k = n.__k, e.__k.forEach(function(A) { | |
| A && (A.__ = e); | |
| }), _.__h.length && s.push(_); | |
| break e; | |
| } | |
| _.componentWillUpdate != null && _.componentWillUpdate(v, _.__s, g), _.componentDidUpdate != null && _.__h.push(function() { | |
| _.componentDidUpdate(c, i, u); | |
| }); | |
| } | |
| if (_.context = g, _.props = v, _.__v = e, _.__P = t, x = d.__r, H = 0, "prototype" in m && m.prototype.render) _.state = _.__s, _.__d = !1, x && x(e), a = _.render(_.props, _.state, _.context); | |
| else do _.__d = !1, x && x(e), a = _.render(_.props, _.state, _.context), _.state = _.__s; | |
| while (_.__d && ++H < 25) | |
| _.state = _.__s, _.getChildContext != null && (r = k(k({}, r), _.getChildContext())), h || _.getSnapshotBeforeUpdate == null || (u = _.getSnapshotBeforeUpdate(c, i)), E = a != null && a.type === L && a.key == null ? a.props.children : a, G(t, Array.isArray(E) ? E : [ | |
| E | |
| ], e, n, r, l, o, s, f, p), _.base = e.__e, e.__h = null, _.__h.length && s.push(_), b && (_.__E = _.__ = null), _.__e = !1; | |
| } else o == null && e.__v === n.__v ? (e.__k = n.__k, e.__e = n.__e) : e.__e = _e(n.__e, e, n, r, l, o, s, p); | |
| (a = d.diffed) && a(e); | |
| } catch (A) { | |
| e.__v = null, (p || o != null) && (e.__e = f, e.__h = !!p, o[o.indexOf(f)] = null), d.__e(A, e, n); | |
| } | |
| } | |
| function K(t, e) { | |
| d.__c && d.__c(e, t), t.some(function(n) { | |
| try { | |
| t = n.__h, n.__h = [], t.some(function(r) { | |
| r.call(n); | |
| }); | |
| } catch (r) { | |
| d.__e(r, n.__v); | |
| } | |
| }); | |
| } | |
| function _e(t, e, n, r, l, o, s, f) { | |
| var p, a, _, h = n.props, c = e.props, i = e.type, u = 0; | |
| if (i === "svg" && (l = !0), o != null) { | |
| for(; u < o.length; u++)if ((p = o[u]) && "setAttribute" in p == !!i && (i ? p.localName === i : p.nodeType === 3)) { | |
| t = p, o[u] = null; | |
| break; | |
| } | |
| } | |
| if (t == null) { | |
| if (i === null) return document.createTextNode(c); | |
| t = l ? document.createElementNS("http://www.w3.org/2000/svg", i) : document.createElement(i, c.is && c), o = null, f = !1; | |
| } | |
| if (i === null) h === c || f && t.data === c || (t.data = c); | |
| else { | |
| if (o = o && P.call(t.childNodes), a = (h = n.props || T).dangerouslySetInnerHTML, _ = c.dangerouslySetInnerHTML, !f) { | |
| if (o != null) for(h = {}, u = 0; u < t.attributes.length; u++)h[t.attributes[u].name] = t.attributes[u].value; | |
| (_ || a) && (_ && (a && _.__html == a.__html || _.__html === t.innerHTML) || (t.innerHTML = _ && _.__html || "")); | |
| } | |
| if (ne(t, c, h, l, f), _) e.__k = []; | |
| else if (u = e.props.children, G(t, Array.isArray(u) ? u : [ | |
| u | |
| ], e, n, r, l && i !== "foreignObject", o, s, o ? o[0] : n.__k && C(n, 0), f), o != null) for(u = o.length; u--;)o[u] != null && j(o[u]); | |
| f || ("value" in c && (u = c.value) !== void 0 && (u !== t.value || i === "progress" && !u || i === "option" && u !== h.value) && N(t, "value", u, h.value, !1), "checked" in c && (u = c.checked) !== void 0 && u !== t.checked && N(t, "checked", u, h.checked, !1)); | |
| } | |
| return t; | |
| } | |
| function Q(t, e, n) { | |
| try { | |
| typeof t == "function" ? t(e) : t.current = e; | |
| } catch (r) { | |
| d.__e(r, n); | |
| } | |
| } | |
| function X(t, e, n) { | |
| var r, l; | |
| if (d.unmount && d.unmount(t), (r = t.ref) && (r.current && r.current !== t.__e || Q(r, null, e)), (r = t.__c) != null) { | |
| if (r.componentWillUnmount) try { | |
| r.componentWillUnmount(); | |
| } catch (o) { | |
| d.__e(o, e); | |
| } | |
| r.base = r.__P = null; | |
| } | |
| if (r = t.__k) for(l = 0; l < r.length; l++)r[l] && X(r[l], e, typeof t.type != "function"); | |
| n || t.__e == null || j(t.__e), t.__e = t.__d = void 0; | |
| } | |
| function oe(t, e, n) { | |
| return this.constructor(t, n); | |
| } | |
| P = V.slice, d = { | |
| __e: function(t, e, n, r) { | |
| for(var l, o, s; e = e.__;)if ((l = e.__c) && !l.__) try { | |
| if ((o = l.constructor) && o.getDerivedStateFromError != null && (l.setState(o.getDerivedStateFromError(t)), s = l.__d), l.componentDidCatch != null && (l.componentDidCatch(t, r || {}), s = l.__d), s) return l.__E = l; | |
| } catch (f) { | |
| t = f; | |
| } | |
| throw t; | |
| } | |
| }, $ = 0, U.prototype.setState = function(t, e) { | |
| var n; | |
| n = this.__s != null && this.__s !== this.state ? this.__s : this.__s = k({}, this.state), typeof t == "function" && (t = t(k({}, n), this.props)), t && k(n, t), t != null && this.__v && (e && this.__h.push(e), M(this)); | |
| }, U.prototype.forceUpdate = function(t) { | |
| this.__v && (this.__e = !0, t && this.__h.push(t), M(this)); | |
| }, U.prototype.render = L, S = [], D.__r = 0, 0; | |
| function YouTubePlayerView(props) { | |
| const onDivLoaded = (ref)=>{ | |
| let { context , eventListener , controller , delegate } = props; | |
| if (!context) context = window; | |
| if (delegate) controller = eventListener = delegate; | |
| if (!eventListener || !controller) { | |
| throw new Error("Both `eventListener` and `controller` are required, or provide `delegate`"); | |
| } | |
| const scriptOnLoad = ()=>{ | |
| const yt = context.YT; | |
| context["onYouTubeIframeAPIReady"] = ()=>{ | |
| const player = new yt.Player(ref, { | |
| width: "100%", | |
| height: "100%", | |
| videoId: controller.initialVideoID ? controller?.initialVideoID() : null, | |
| events: { | |
| onStateChange: (ev)=>eventListener.onStateChange(ev), | |
| onError: (ev)=>eventListener.onError(ev), | |
| onReady: (ev)=>eventListener.onReady ? eventListener.onReady(ev) : null | |
| } | |
| }); | |
| controller.__onPlayerLoaded__(player); | |
| }; | |
| }; | |
| const script = context.document.createElement("script"); | |
| script.src = "https://www.youtube.com/iframe_api"; | |
| script.onload = scriptOnLoad; | |
| context.document.head.appendChild(script); | |
| }; | |
| return ee("div", Object.assign({}, props), ee("div", { | |
| id: "player", | |
| ref: onDivLoaded | |
| })); | |
| } | |
| export { YouTubePlayerView as YouTubePlayerView }; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment