You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
for_you/src/webserver/static/hand/control_utils.js

1295 lines
40 KiB

(function() {
/*
Copyright The Closure Library Authors.
SPDX-License-Identifier: Apache-2.0
*/
'use strict';
function aa(a) {
var b = 0;
return function() {
return b < a.length ? {
done: !1,
value: a[b++]
} : {
done: !0
}
}
}
var p = "function" == typeof Object.defineProperties ? Object.defineProperty : function(a, b, c) {
if (a == Array.prototype || a == Object.prototype) return a;
a[b] = c.value;
return a
};
function ba(a) {
a = ["object" == typeof globalThis && globalThis, a, "object" == typeof window && window, "object" == typeof self && self, "object" == typeof global && global];
for (var b = 0; b < a.length; ++b) {
var c = a[b];
if (c && c.Math == Math) return c
}
throw Error("Cannot find global object");
}
var r = ba(this);
function t(a, b) {
if (b) a: {
var c = r;a = a.split(".");
for (var d = 0; d < a.length - 1; d++) {
var f = a[d];
if (!(f in c)) break a;
c = c[f]
}
a = a[a.length - 1];d = c[a];b = b(d);b != d && null != b && p(c, a, {
configurable: !0,
writable: !0,
value: b
})
}
}
t("Symbol", function(a) {
function b(g) {
if (this instanceof b) throw new TypeError("Symbol is not a constructor");
return new c(d + (g || "") + "_" + f++, g)
}
function c(g, e) {
this.g = g;
p(this, "description", {
configurable: !0,
writable: !0,
value: e
})
}
if (a) return a;
c.prototype.toString = function() {
return this.g
};
var d = "jscomp_symbol_" + (1E9 * Math.random() >>> 0) + "_",
f = 0;
return b
});
t("Symbol.iterator", function(a) {
if (a) return a;
a = Symbol("Symbol.iterator");
for (var b = "Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "), c = 0; c < b.length; c++) {
var d = r[b[c]];
"function" === typeof d && "function" != typeof d.prototype[a] && p(d.prototype, a, {
configurable: !0,
writable: !0,
value: function() {
return ca(aa(this))
}
})
}
return a
});
function ca(a) {
a = {
next: a
};
a[Symbol.iterator] = function() {
return this
};
return a
}
function v(a) {
var b = "undefined" != typeof Symbol && Symbol.iterator && a[Symbol.iterator];
return b ? b.call(a) : {
next: aa(a)
}
}
function w(a) {
if (!(a instanceof Array)) {
a = v(a);
for (var b, c = []; !(b = a.next()).done;) c.push(b.value);
a = c
}
return a
}
var da = "function" == typeof Object.create ? Object.create : function(a) {
function b() {}
b.prototype = a;
return new b
},
x;
if ("function" == typeof Object.setPrototypeOf) x = Object.setPrototypeOf;
else {
var y;
a: {
var ea = {
a: !0
},
fa = {};
try {
fa.__proto__ = ea;
y = fa.a;
break a
} catch (a) {}
y = !1
}
x = y ? function(a, b) {
a.__proto__ = b;
if (a.__proto__ !== b) throw new TypeError(a + " is not extensible");
return a
} : null
}
var z = x;
function B() {
this.j = !1;
this.h = null;
this.l = void 0;
this.g = 1;
this.o = 0;
this.i = null
}
function C(a) {
if (a.j) throw new TypeError("Generator is already running");
a.j = !0
}
B.prototype.m = function(a) {
this.l = a
};
function D(a, b) {
a.i = {
L: b,
M: !0
};
a.g = a.o
}
B.prototype.return = function(a) {
this.i = {
return: a
};
this.g = this.o
};
function F(a, b, c) {
a.g = c;
return {
value: b
}
}
function ha(a) {
this.g = new B;
this.h = a
}
function ia(a, b) {
C(a.g);
var c = a.g.h;
if (c) return G(a, "return" in c ? c["return"] : function(d) {
return {
value: d,
done: !0
}
}, b, a.g.return);
a.g.return(b);
return H(a)
}
function G(a, b, c, d) {
try {
var f = b.call(a.g.h, c);
if (!(f instanceof Object)) throw new TypeError("Iterator result " + f + " is not an object");
if (!f.done) return a.g.j = !1, f;
var g = f.value
} catch (e) {
return a.g.h = null, D(a.g, e), H(a)
}
a.g.h = null;
d.call(a.g, g);
return H(a)
}
function H(a) {
for (; a.g.g;) try {
var b = a.h(a.g);
if (b) return a.g.j = !1, {
value: b.value,
done: !1
}
} catch (c) {
a.g.l = void 0, D(a.g, c)
}
a.g.j = !1;
if (a.g.i) {
b = a.g.i;
a.g.i = null;
if (b.M) throw b.L;
return {
value: b.return,
done: !0
}
}
return {
value: void 0,
done: !0
}
}
function ja(a) {
this.next = function(b) {
C(a.g);
a.g.h ? b = G(a, a.g.h.next, b, a.g.m) : (a.g.m(b), b = H(a));
return b
};
this.throw = function(b) {
C(a.g);
a.g.h ? b = G(a, a.g.h["throw"], b, a.g.m) : (D(a.g, b), b = H(a));
return b
};
this.return = function(b) {
return ia(a, b)
};
this[Symbol.iterator] = function() {
return this
}
}
function I(a, b) {
b = new ja(new ha(b));
z && a.prototype && z(b, a.prototype);
return b
}
var ka = "function" == typeof Object.assign ? Object.assign : function(a, b) {
for (var c = 1; c < arguments.length; c++) {
var d = arguments[c];
if (d)
for (var f in d) Object.prototype.hasOwnProperty.call(d, f) && (a[f] = d[f])
}
return a
};
t("Object.assign", function(a) {
return a || ka
});
t("Promise", function(a) {
function b(e) {
this.h = 0;
this.i = void 0;
this.g = [];
this.o = !1;
var h = this.j();
try {
e(h.resolve, h.reject)
} catch (k) {
h.reject(k)
}
}
function c() {
this.g = null
}
function d(e) {
return e instanceof b ? e : new b(function(h) {
h(e)
})
}
if (a) return a;
c.prototype.h = function(e) {
if (null == this.g) {
this.g = [];
var h = this;
this.i(function() {
h.l()
})
}
this.g.push(e)
};
var f = r.setTimeout;
c.prototype.i = function(e) {
f(e, 0)
};
c.prototype.l = function() {
for (; this.g && this.g.length;) {
var e = this.g;
this.g = [];
for (var h = 0; h < e.length; ++h) {
var k =
e[h];
e[h] = null;
try {
k()
} catch (l) {
this.j(l)
}
}
}
this.g = null
};
c.prototype.j = function(e) {
this.i(function() {
throw e;
})
};
b.prototype.j = function() {
function e(l) {
return function(n) {
k || (k = !0, l.call(h, n))
}
}
var h = this,
k = !1;
return {
resolve: e(this.G),
reject: e(this.l)
}
};
b.prototype.G = function(e) {
if (e === this) this.l(new TypeError("A Promise cannot resolve to itself"));
else if (e instanceof b) this.I(e);
else {
a: switch (typeof e) {
case "object":
var h = null != e;
break a;
case "function":
h = !0;
break a;
default:
h = !1
}
h ? this.F(e) : this.m(e)
}
};
b.prototype.F = function(e) {
var h = void 0;
try {
h = e.then
} catch (k) {
this.l(k);
return
}
"function" == typeof h ? this.J(h, e) : this.m(e)
};
b.prototype.l = function(e) {
this.u(2, e)
};
b.prototype.m = function(e) {
this.u(1, e)
};
b.prototype.u = function(e, h) {
if (0 != this.h) throw Error("Cannot settle(" + e + ", " + h + "): Promise already settled in state" + this.h);
this.h = e;
this.i = h;
2 === this.h && this.H();
this.A()
};
b.prototype.H = function() {
var e = this;
f(function() {
if (e.D()) {
var h = r.console;
"undefined" !== typeof h && h.error(e.i)
}
}, 1)
};
b.prototype.D =
function() {
if (this.o) return !1;
var e = r.CustomEvent,
h = r.Event,
k = r.dispatchEvent;
if ("undefined" === typeof k) return !0;
"function" === typeof e ? e = new e("unhandledrejection", {
cancelable: !0
}) : "function" === typeof h ? e = new h("unhandledrejection", {
cancelable: !0
}) : (e = r.document.createEvent("CustomEvent"), e.initCustomEvent("unhandledrejection", !1, !0, e));
e.promise = this;
e.reason = this.i;
return k(e)
};
b.prototype.A = function() {
if (null != this.g) {
for (var e = 0; e < this.g.length; ++e) g.h(this.g[e]);
this.g = null
}
};
var g = new c;
b.prototype.I =
function(e) {
var h = this.j();
e.v(h.resolve, h.reject)
};
b.prototype.J = function(e, h) {
var k = this.j();
try {
e.call(h, k.resolve, k.reject)
} catch (l) {
k.reject(l)
}
};
b.prototype.then = function(e, h) {
function k(m, q) {
return "function" == typeof m ? function(E) {
try {
l(m(E))
} catch (A) {
n(A)
}
} : q
}
var l, n, u = new b(function(m, q) {
l = m;
n = q
});
this.v(k(e, l), k(h, n));
return u
};
b.prototype.catch = function(e) {
return this.then(void 0, e)
};
b.prototype.v = function(e, h) {
function k() {
switch (l.h) {
case 1:
e(l.i);
break;
case 2:
h(l.i);
break;
default:
throw Error("Unexpected state: " +
l.h);
}
}
var l = this;
null == this.g ? g.h(k) : this.g.push(k);
this.o = !0
};
b.resolve = d;
b.reject = function(e) {
return new b(function(h, k) {
k(e)
})
};
b.race = function(e) {
return new b(function(h, k) {
for (var l = v(e), n = l.next(); !n.done; n = l.next()) d(n.value).v(h, k)
})
};
b.all = function(e) {
var h = v(e),
k = h.next();
return k.done ? d([]) : new b(function(l, n) {
function u(E) {
return function(A) {
m[E] = A;
q--;
0 == q && l(m)
}
}
var m = [],
q = 0;
do m.push(void 0), q++, d(k.value).v(u(m.length - 1), n), k = h.next(); while (!k.done)
})
};
return b
});
t("Array.from", function(a) {
return a ? a : function(b, c, d) {
c = null != c ? c : function(h) {
return h
};
var f = [],
g = "undefined" != typeof Symbol && Symbol.iterator && b[Symbol.iterator];
if ("function" == typeof g) {
b = g.call(b);
for (var e = 0; !(g = b.next()).done;) f.push(c.call(d, g.value, e++))
} else
for (g = b.length, e = 0; e < g; e++) f.push(c.call(d, b[e], e));
return f
}
});
t("Array.prototype.fill", function(a) {
return a ? a : function(b, c, d) {
var f = this.length || 0;
0 > c && (c = Math.max(0, f + c));
if (null == d || d > f) d = f;
d = Number(d);
0 > d && (d = Math.max(0, f + d));
for (c = Number(c || 0); c < d; c++) this[c] = b;
return this
}
});
function J(a) {
return a ? a : Array.prototype.fill
}
t("Int8Array.prototype.fill", J);
t("Uint8Array.prototype.fill", J);
t("Uint8ClampedArray.prototype.fill", J);
t("Int16Array.prototype.fill", J);
t("Uint16Array.prototype.fill", J);
t("Int32Array.prototype.fill", J);
t("Uint32Array.prototype.fill", J);
t("Float32Array.prototype.fill", J);
t("Float64Array.prototype.fill", J);
function la(a, b) {
a instanceof String && (a += "");
var c = 0,
d = !1,
f = {
next: function() {
if (!d && c < a.length) {
var g = c++;
return {
value: b(g, a[g]),
done: !1
}
}
d = !0;
return {
done: !0,
value: void 0
}
}
};
f[Symbol.iterator] = function() {
return f
};
return f
}
t("Array.prototype.keys", function(a) {
return a ? a : function() {
return la(this, function(b) {
return b
})
}
});
t("Object.values", function(a) {
return a ? a : function(b) {
var c = [],
d;
for (d in b) Object.prototype.hasOwnProperty.call(b, d) && c.push(b[d]);
return c
}
});
var ma = this || self;
function K(a, b) {
a = a.split(".");
var c = ma;
a[0] in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]);
for (var d; a.length && (d = a.shift());) a.length || void 0 === b ? c[d] && c[d] !== Object.prototype[d] ? c = c[d] : c = c[d] = {} : c[d] = b
};
function L(a, b) {
var c = void 0;
return new(c || (c = Promise))(function(d, f) {
function g(k) {
try {
h(b.next(k))
} catch (l) {
f(l)
}
}
function e(k) {
try {
h(b["throw"](k))
} catch (l) {
f(l)
}
}
function h(k) {
k.done ? d(k.value) : (new c(function(l) {
l(k.value)
})).then(g, e)
}
h((b = b.apply(a, void 0)).next())
})
};
var na = {};
function M(a, b) {
if (b !== na) throw Error("Bad secret");
this.g = a
}
function N() {}
M.prototype = da(N.prototype);
M.prototype.constructor = M;
if (z) z(M, N);
else
for (var O in N)
if ("prototype" != O)
if (Object.defineProperties) {
var oa = Object.getOwnPropertyDescriptor(N, O);
oa && Object.defineProperty(M, O, oa)
} else M[O] = N[O];
M.prototype.toString = function() {
return this.g
};
function P(a, b, c) {
a = document.createElement(a);
b && a.classList.add(b);
if (c)
for (b = v(c), c = b.next(); !c.done; c = b.next()) a.appendChild(c.value);
return a
}
function Q(a, b) {
return P("div", a, b)
}
function R(a, b) {
return P("span", a, b)
}
function S(a) {
var b = P("img", "", void 0);
b.src = a || "";
return b
};
function pa(a, b) {
var c = this;
this.g = a;
this.i = {};
var d, f = Q("dropdown-wrapper", [d = Q("dropdown", [Q("dropdown-trigger", [this.h = R(), Q("arrow")]), this.options = Q("dropdown-options")])]);
f.onclick = function() {
a.C && a.C();
d.classList.toggle("open");
d.g = function() {
a.B && a.B()
}
};
for (var g = {}, e = v(a.options), h = e.next(); !h.done; g = {
s: g.s
}, h = e.next()) g.s = h.value, h = void 0, this.options.appendChild(h = R("dropdown-option")), this.i[g.s.value] = h, h.textContent = g.s.name, g.s.prefix && h.prepend(g.s.prefix), h.setAttribute("data-value",
g.s.value), h.onclick = function(k) {
return function() {
T(c, k.s.value)
}
}(g);
window.addEventListener("click", function(k) {
d.contains(k.target) || d.classList.remove("open")
});
b.appendChild(f)
}
function T(a, b) {
for (var c = v(a.g.options), d = c.next(); !d.done; d = c.next()) {
d = d.value;
var f = a.i[d.value];
if (d.value === b && !f.classList.contains("selected")) return (b = a.options.querySelector(".selected")) && b.classList.remove("selected"), f.classList.add("selected"), a.h.textContent = f.textContent, a.g.onclick(d), !0
}
return !1
}
function qa(a, b) {
var c = a.options.querySelector(".selected");
c && (c.classList.remove("selected"), a.h.textContent = void 0 === b ? "" : b)
};
function U(a) {
this.g = a
}
U.prototype.create = function(a, b, c) {
var d = this,
f = c.appendChild(document.createElement("div"));
f.classList.add("control-panel-entry");
f.classList.add("control-panel-slider");
c = f.appendChild(document.createElement("span"));
c.classList.add("label");
c.textContent = this.g.title;
c = new pa({
options: this.g.options.map(function(g) {
return Object.assign(Object.assign({}, g), {
data: null
})
}),
C: function() {
f.style.zIndex = "1000"
},
onclick: function(g) {
b[d.g.field] = g.value;
a();
if (d.g.onselectionchanged) d.g.onselectionchanged(g)
},
B: function() {
f.style.zIndex =
"100"
}
}, f);
0 < this.g.options.length && T(c, this.g.options[0].value)
};
U.prototype.update = function() {};
function V() {
this.i = this.counter = 0;
this.g = Array.from({
length: 10
}).fill(0)
}
V.prototype.create = function(a, b, c) {
b = c.appendChild(document.createElement("div"));
b.classList.add("control-panel-entry");
b.classList.add("control-panel-fps");
a = b.appendChild(document.createElement("canvas"));
this.h = b.appendChild(document.createElement("div"));
this.h.classList.add("fps-text");
c = b.appendChild(document.createElement("div"));
c.classList.add("fps-30");
c.textContent = "30";
b = b.appendChild(document.createElement("div"));
b.classList.add("fps-60");
b.textContent = "60";
a.width = 100;
a.height = 100;
this.j = a.getContext("2d");
ra(this, 0)
};
V.prototype.update = function() {};
V.prototype.tick = function() {
var a = Math.floor(performance.now() / 1E3);
1 <= a - this.i && (ra(this, this.counter), this.i = a, this.counter = 0);
++this.counter
};
function ra(a, b) {
a.g.shift();
a.g.push(b);
var c = a.j;
c.fillStyle = "green";
c.clearRect(0, 0, c.canvas.width, c.canvas.height);
for (var d = 0; 10 > d; ++d) {
var f = Math.min(100, Math.max(0, a.g[d]));
c.fillRect(10 * d + 1, 100 - f + 1, 8, f)
}
c.setLineDash([2, 2]);
c.strokeStyle = "#a0a0a0a0";
c.lineWidth = 2;
c.beginPath();
c.moveTo(0, 30);
c.lineTo(100, 30);
c.stroke();
c.beginPath();
c.moveTo(0, 60);
c.lineTo(100, 60);
c.stroke();
a.h.textContent = b.toFixed(0) + " fps"
};
function W(a) {
this.g = a
}
W.prototype.create = function(a, b, c) {
var d = this;
this.options = b;
b = this.g;
c = c.appendChild(document.createElement("div"));
c.classList.add("control-panel-entry");
c.classList.add("control-panel-slider");
var f = c.appendChild(document.createElement("span"));
f.classList.add("label");
(this.h = c.appendChild(document.createElement("span"))).classList.add("callout");
var g = this.i = c.appendChild(document.createElement("input"));
g.classList.add("value");
g.type = "range";
b.range ? (g.min = "" + b.range[0], g.max = "" + b.range[1],
g.step = void 0 === b.step ? "any" : "" + b.step) : b.discrete && (g.min = "0", g.max = "" + (Object.keys(b.discrete).length - 1), g.step = "1");
g.oninput = function() {
sa(d, Number(g.value))
};
g.onchange = function() {
var e = Number(g.value);
d.g.discrete && (e = Object.keys(d.g.discrete)[e], Array.isArray(d.g.discrete) && (e = Number(e)));
d.options[d.g.field] = e;
a()
};
f.textContent = b.title
};
W.prototype.update = function() {
var a = this.options[this.g.field];
a = this.g.discrete && !Array.isArray(this.g.discrete) ? Object.keys(this.g.discrete).indexOf(a) : a;
this.i.value = "" + a;
sa(this, a)
};
function sa(a, b) {
b = a.g.discrete ? Object.values(a.g.discrete)[b] : b;
a.h.textContent = "" + b
};
var ta = {
facingMode: "user",
width: 640,
height: 480
},
ua = {
allowVideo: !0,
allowImage: !0,
examples: {
videos: [],
images: []
}
};
function X(a) {
return "https://fonts.gstatic.com/s/i/googlematerialicons/" + a + "/v8/white-24dp/1x/gm_" + a + "_white_24dp.png"
}
function Y(a) {
this.l = [];
this.A = 0;
this.j = !1;
this.g = Object.assign(Object.assign({}, ua), a);
this.g.cameraOptions = Object.assign(Object.assign({}, this.g.cameraOptions || {}), ta)
}
function va(a) {
return L(a, function c() {
var d, f, g, e, h;
return I(c, function(k) {
if (1 == k.g) return F(k, navigator.mediaDevices.getUserMedia({
video: !0
}), 2);
if (3 != k.g) return F(k, navigator.mediaDevices.enumerateDevices(), 3);
d = k.l;
f = [];
g = v(d);
for (e = g.next(); !e.done; e = g.next()) h = e.value, "" !== h.label && "videoinput" === h.kind && f.push({
label: h.label,
deviceId: h.deviceId
});
return k.return(f)
})
})
}
function Z(a) {
window.requestAnimationFrame(function() {
a.tick()
})
}
Y.prototype.tick = function() {
var a = this,
b = null;
this.j && (this.video.paused || this.video.currentTime === this.A || (this.m || (wa(this, this.video.currentTime / this.video.duration), this.i.time.textContent = xa(this.video.currentTime)), this.A = this.video.currentTime, b = this.g.onFrame ? this.g.onFrame(this.video, {
width: this.video.videoWidth,
height: this.video.videoHeight
}) : null), b ? b.then(function() {
Z(a)
}) : Z(this))
};
function ya(a, b) {
a.video.srcObject = b;
a.video.onloadedmetadata = function() {
a.video.play();
a.j = !0;
Z(a)
}
}
function za(a) {
return L(a, function c() {
var d = this,
f, g, e, h;
return I(c, function(k) {
d.i.parent.style.display = "none";
d.j = !1;
if (d.m) {
f = d.m.getTracks();
g = v(f);
for (e = g.next(); !e.done; e = g.next()) h = e.value, h.stop();
d.m = void 0
}
k.g = 0
})
})
}
function Aa(a) {
return L(a, function c() {
var d = this,
f, g, e, h;
return I(c, function(k) {
if (1 == k.g) return f = d, F(k, va(d), 2);
g = k.l.map(function(l) {
return {
label: l.label,
type: "webcam",
N: l,
start: function() {
return Ba(f, l)
}
}
});
e = d.g.examples.videos.map(function(l) {
return {
label: l.name,
type: "video",
video: f.video,
start: function() {
Ca(f, l.src)
}
}
});
h = d.g.examples.images.map(function(l) {
return {
label: l.name,
type: "image",
image: f.h,
start: function() {
Da(f, l.src)
}
}
});
return k.return([].concat(w(g), w(e), w(h)))
})
})
}
function Ea(a, b) {
return L(a, function d() {
var f = this;
return I(d, function(g) {
1 == g.g ? g = F(g, za(f), 2) : 3 != g.g ? f.g.onSourceChanged ? g = F(g, f.g.onSourceChanged(b.label, b.type), 3) : (g.g = 3, g = void 0) : g = F(g, b.start(), 0);
return g
})
})
}
function Fa(a, b) {
return L(a, function d() {
var f = this;
return I(d, function(g) {
f.g && f.g.onFrame ? g = F(g, f.g.onFrame(b, {
width: b.naturalWidth,
height: b.naturalHeight
}), 0) : (g.g = 0, g = void 0);
return g
})
})
}
function Ga(a) {
return L(a, function c() {
var d = this;
return I(c, function(f) {
if (1 == f.g) {
if (!d.g || !d.g.onFrame) {
f.g = 0;
return
}
d.i.parent.style.display = "flex";
wa(d, 0);
return F(f, d.video.play(), 3)
}
d.D();
d.j = !0;
Z(d);
f.g = 0
})
})
}
function Ba(a, b) {
return L(a, function d() {
var f = this,
g, e;
return I(d, function(h) {
g = f;
e = Object.assign({
video: {
deviceId: b.deviceId
}
}, f.g.cameraOptions ? {
facingMode: f.g.cameraOptions.facingMode,
width: f.g.cameraOptions.width,
height: f.g.cameraOptions.height
} : {});
return h.return(navigator.mediaDevices.getUserMedia(e).then(function(k) {
g.m = k;
ya(g, k)
}).catch(function(k) {
console.error("Failed to acquire camera feed: " + k);
alert("Failed to acquire camera feed: " + k);
throw k;
}))
})
})
}
function Ha(a, b) {
a.o = new pa({
options: a.l.map(function(c) {
var d = void 0;
"image" === c.type ? d = S("https://fonts.gstatic.com/s/i/googlematerialicons/image/v12/gm_grey-24dp/1x/gm_image_gm_grey_24dp.png") : "video" === c.type && (d = S("https://fonts.gstatic.com/s/i/googlematerialicons/videocam/v12/gm_grey-24dp/1x/gm_videocam_gm_grey_24dp.png"));
return {
name: c.label,
value: c.label,
data: c,
prefix: d
}
}),
onclick: function(c) {
a.i.parent.style.display = "none";
c.data.start()
},
C: function() {
a.u.style.zIndex = "2000"
},
B: function() {
a.u.style.zIndex =
"100"
}
}, b)
}
function Ia(a, b) {
var c = b.appendChild(document.createElement("input"));
c.type = "file";
c.style.display = "none";
b.appendChild(R("file-selection", [b = Q("", [S(X("file_upload"))])]));
b.onclick = function() {
c.click()
};
c.onchange = function() {
return L(a, function f() {
var g, e, h, k, l = this;
return I(f, function(n) {
if ((g = c.files) && 0 < g.length) {
e = g[0].type.toLowerCase();
h = e.substring(0, e.indexOf("/"));
var u = g[0];
var m = u.type.match(/^([^;]+)(?:;\w+=(?:\w+|"[\w;,= ]+"))*$/i);
if (2 !== (null === m || void 0 === m ? void 0 : m.length) || !(/^image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)$/i.test(m[1]) ||
/^video\/(?:mpeg|mp4|ogg|webm|x-matroska|quicktime|x-ms-wmv)$/i.test(m[1]) || /^audio\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)$/i.test(m[1]))) throw Error("unsafe blob MIME type: " + u.type);
if (URL && URL.createObjectURL) u = new M(URL.createObjectURL(u), na);
else throw Error("cannot find createObjectURL");
k = u.toString();
"image" === h ? (qa(l.o, g[0].name), Da(l, k)) : "video" === h && Ca(l, k)
}
n.g = 0
})
})
}
}
function Da(a, b) {
a.h.onload = function() {
return L(a, function d() {
var f = this,
g;
return I(d, function(e) {
g = f;
f.g.onFrame ? e = F(e, Ea(f, {
label: "file",
type: "image",
image: f.h,
start: function() {
return L(g, function k() {
var l = this;
return I(k, function(n) {
return F(n, Fa(l, l.h), 0)
})
})
}
}), 0) : (e.g = 0, e = void 0);
return e
})
})
};
a.h.src = b
}
function Ca(a, b) {
a.video.onloadedmetadata = function() {
return L(a, function d() {
var f = this,
g;
return I(d, function(e) {
g = f;
f.video.loop = !0;
f.g.onFrame ? e = F(e, Ea(f, {
label: "file",
type: "video",
video: f.video,
start: function() {
return Ga(g)
}
}), 0) : (e.g = 0, e = void 0);
return e
})
})
};
a.video.srcObject = null;
a.video.src = b
}
Y.prototype.create = function(a, b, c) {
var d = this,
f = this.u = c.appendChild(document.createElement("div"));
f.classList.add("control-panel-entry");
f.classList.add("control-panel-source-picker");
var g = Q("source-selection");
f.append(g);
Aa(this).then(function(e) {
d.l = e;
Ha(d, g);
Ia(d, g);
e = g.appendChild(document.createElement("div"));
e.classList.add("inputs");
d.video = e.appendChild(document.createElement("video"));
d.video.setAttribute("crossorigin", "anonymous");
d.video.setAttribute("playsinline", "true");
d.h = e.appendChild(document.createElement("img"));
d.h.setAttribute("crossorigin", "anonymous");
Ja(d, f);
0 < d.l.length && (e = d.l[0], T(d.o, e.label) || qa(d.o), e.start())
})
};
function Ja(a, b) {
var c = X("pause"),
d = X("play_arrow"),
f, g, e, h;
b.append(e = Q("video-controls", [h = S(c), g = Q("video-track"), f = Q("video-slider-ball"), b = R("video-time")]));
a.i = {
parent: e,
K: f,
track: g,
time: b
};
b.textContent = "00:00";
f.style.display = "inline-block";
f.onmousedown = function(k) {
function l() {
k.preventDefault();
document.removeEventListener("mousemove", n);
u || a.video.play();
document.removeEventListener("mouseup", l)
}
function n(m) {
k.preventDefault();
var q = e.getBoundingClientRect(),
E = f.getBoundingClientRect(),
A = g.getBoundingClientRect();
m = m.clientX - q.left - E.width / 2;
q = A.left - q.left;
m < q ? m = q : m > q + A.width && (m = q + A.width);
f.style.left = m + "px";
a.video.currentTime = (m - q) / A.width * a.video.duration
}
k.preventDefault();
var u = a.video.paused;
a.video.pause();
document.addEventListener("mousemove", n);
document.addEventListener("mouseup", l)
};
h.onclick = function() {
a.video.paused ? (a.video.play(), h.src = c) : (a.video.pause(), h.src = d)
};
a.D = function() {
a.video.paused && (h.src = d);
h.src = c
}
}
function wa(a, b) {
var c = a.i.K,
d = a.i.track.getBoundingClientRect();
a = a.i.parent.getBoundingClientRect();
c.style.left = d.left - a.left + d.width * b + "px"
}
function xa(a) {
var b = Math.floor(a % 60).toString();
b = 1 === b.length ? "0" + b : b;
a = Math.floor(a / 60).toString();
a = 1 === a.length ? "0" + a : a;
return a + ":" + b
}
Y.prototype.update = function() {
if (this.h && !this.j && this.g.onFrame) this.g.onFrame(this.h, {
width: this.h.naturalWidth,
height: this.h.naturalHeight
})
};
function Ka(a) {
this.g = a
}
Ka.prototype.create = function(a, b, c) {
a = c.appendChild(document.createElement("div"));
a.classList.add("control-panel-entry");
a.classList.add("control-panel-text");
a.textContent = this.g.title
};
Ka.prototype.update = function() {};
function La(a) {
this.h = a
}
La.prototype.create = function(a, b, c) {
var d = this;
this.i = a;
this.options = b;
this.g = c.appendChild(document.createElement("div"));
this.g.classList.add("control-panel-entry");
this.g.classList.add("control-panel-toggle");
this.g.onclick = function() {
d.options[d.h.field] = !d.options[d.h.field];
d.i()
};
a = this.g.appendChild(document.createElement("span"));
a.classList.add("label");
this.value = this.g.appendChild(document.createElement("span"));
this.value.classList.add("value");
a.textContent = this.h.title
};
La.prototype.update = function() {
this.options[this.h.field] ? (this.value.textContent = "Yes", this.g.classList.add("yes"), this.g.classList.remove("no")) : (this.value.textContent = "No", this.g.classList.add("no"), this.g.classList.remove("yes"))
};
function Ma(a, b) {
this.parent = a;
this.options = b;
this.g = [];
this.h = this.parent.appendChild(document.createElement("div"));
this.h.classList.add("control-panel")
}
Ma.prototype.add = function(a) {
var b = this;
a = v(a);
for (var c = a.next(); !c.done; c = a.next()) c = c.value, this.g.push(c), c.create(function() {
Na(b)
}, this.options, this.h);
Na(this);
return this
};
Ma.prototype.on = function(a) {
this.i = a;
Na(this);
return this
};
function Na(a) {
for (var b = v(a.g), c = b.next(); !c.done; c = b.next()) c.value.update();
a.i && a.i(a.options)
}
K("ControlPanel", Ma);
K("Slider", W);
K("StaticText", Ka);
K("Toggle", La);
K("SourcePicker", Y);
K("FPS", V);
K("DropDownControl", U);
}).call(this);