libaribhtml5 0.1.10 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -39,54 +39,54 @@ function uq(A) {
|
|
|
39
39
|
A.__ARIB_HTML5_ROMSOUND__ = !0;
|
|
40
40
|
const q = A.HTMLMediaElement?.prototype, e = A.Element?.prototype;
|
|
41
41
|
if (!q || !e) return;
|
|
42
|
-
const t = cq(A.navigator), i = (c) => R(c) ?? String(c), r = (c) => c instanceof A.HTMLMediaElement || !!(A.HTMLSourceElement && c instanceof A.HTMLSourceElement),
|
|
42
|
+
const t = cq(A.navigator), i = (c) => R(c) ?? String(c), r = (c) => c instanceof A.HTMLMediaElement || !!(A.HTMLSourceElement && c instanceof A.HTMLSourceElement), o = "data-arib-romsound", n = e.getAttribute, l = e.setAttribute, s = e.removeAttribute, p = (c) => n.call(c, o), E = (c, d) => {
|
|
43
43
|
const u = String(d), B = R(u);
|
|
44
|
-
return B ? l.call(c,
|
|
45
|
-
},
|
|
44
|
+
return B ? l.call(c, o, u) : s.call(c, o), B ?? u;
|
|
45
|
+
}, m = (c, d) => !t || !R(d) ? !1 : (E(c, d), s.call(c, "src"), !0);
|
|
46
46
|
e.getAttribute = function(c) {
|
|
47
47
|
if (c.toLowerCase() === "src" && r(this)) {
|
|
48
|
-
const d =
|
|
48
|
+
const d = p(this);
|
|
49
49
|
if (d !== null) return d;
|
|
50
50
|
}
|
|
51
51
|
return n.call(this, c);
|
|
52
52
|
}, e.setAttribute = function(c, d) {
|
|
53
|
-
if (c.toLowerCase() === "src" && r(this) &&
|
|
53
|
+
if (c.toLowerCase() === "src" && r(this) && m(this, d))
|
|
54
54
|
return;
|
|
55
55
|
const u = c.toLowerCase() === "src" && r(this) ? E(this, d) : String(d);
|
|
56
56
|
l.call(this, c, String(u));
|
|
57
57
|
};
|
|
58
58
|
const v = e.setAttributeNS;
|
|
59
59
|
e.setAttributeNS = function(c, d, u) {
|
|
60
|
-
if (d.toLowerCase() === "src" && r(this) &&
|
|
60
|
+
if (d.toLowerCase() === "src" && r(this) && m(this, u))
|
|
61
61
|
return;
|
|
62
62
|
const B = d.toLowerCase() === "src" && r(this) ? E(this, u) : String(u);
|
|
63
63
|
v.call(this, c, d, String(B));
|
|
64
64
|
}, e.removeAttribute = function(c) {
|
|
65
|
-
c.toLowerCase() === "src" && r(this) && s.call(this,
|
|
65
|
+
c.toLowerCase() === "src" && r(this) && s.call(this, o), s.call(this, c);
|
|
66
66
|
};
|
|
67
|
-
const
|
|
67
|
+
const b = (c) => {
|
|
68
68
|
if (!c) return;
|
|
69
69
|
const d = Object.getOwnPropertyDescriptor(c, "src");
|
|
70
70
|
return !d?.get || !d.set || Object.defineProperty(c, "src", {
|
|
71
71
|
configurable: !0,
|
|
72
72
|
enumerable: d.enumerable,
|
|
73
73
|
get() {
|
|
74
|
-
return r(this) ?
|
|
74
|
+
return r(this) ? p(this) ?? d.get.call(this) : d.get.call(this);
|
|
75
75
|
},
|
|
76
76
|
set(u) {
|
|
77
|
-
r(this) &&
|
|
77
|
+
r(this) && m(this, u) || d.set.call(this, r(this) ? E(this, u) : i(u));
|
|
78
78
|
}
|
|
79
79
|
}), d;
|
|
80
|
-
}, V =
|
|
81
|
-
|
|
82
|
-
const
|
|
80
|
+
}, V = b(q);
|
|
81
|
+
b(A.HTMLSourceElement?.prototype);
|
|
82
|
+
const y = q.play;
|
|
83
83
|
q.play = function() {
|
|
84
|
-
const c =
|
|
84
|
+
const c = p(this) ?? n.call(this, "src"), d = R(c);
|
|
85
85
|
if (t) {
|
|
86
|
-
const u = this.querySelector?.(`source[${
|
|
86
|
+
const u = this.querySelector?.(`source[${o}]`), B = u ? R(p(u)) : null;
|
|
87
87
|
if (d || B) return Promise.resolve();
|
|
88
88
|
}
|
|
89
|
-
return d && V?.set?.call(this, d),
|
|
89
|
+
return d && V?.set?.call(this, d), y.call(this);
|
|
90
90
|
};
|
|
91
91
|
const g = (c, d) => {
|
|
92
92
|
if (!c) return;
|
|
@@ -101,9 +101,9 @@ function uq(A) {
|
|
|
101
101
|
});
|
|
102
102
|
};
|
|
103
103
|
g(e, "innerHTML"), g(e, "outerHTML"), g(A.ShadowRoot?.prototype, "innerHTML");
|
|
104
|
-
const
|
|
104
|
+
const a = e.insertAdjacentHTML;
|
|
105
105
|
e.insertAdjacentHTML = function(c, d) {
|
|
106
|
-
|
|
106
|
+
a.call(this, c, C(String(d)));
|
|
107
107
|
};
|
|
108
108
|
const h = A.Range?.prototype;
|
|
109
109
|
if (h) {
|
|
@@ -134,7 +134,7 @@ function uq(A) {
|
|
|
134
134
|
'audio[src^="romsound://"], video[src^="romsound://"], source[src^="romsound://"], audio[data-arib-romsound], video[data-arib-romsound], source[data-arib-romsound]'
|
|
135
135
|
));
|
|
136
136
|
for (const u of d) {
|
|
137
|
-
const X =
|
|
137
|
+
const X = p(u) ?? n.call(u, "src"), Q = R(X);
|
|
138
138
|
if (Q) {
|
|
139
139
|
if (t) {
|
|
140
140
|
s.call(u, "src"), u instanceof A.HTMLMediaElement && (s.call(u, "autoplay"), u.pause());
|
|
@@ -157,7 +157,7 @@ function uq(A) {
|
|
|
157
157
|
}), w(A.document);
|
|
158
158
|
}
|
|
159
159
|
const gq = "data:font/woff;base64,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", pq = "data:font/woff;base64,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", yq = "U+1F19B-1F1AC", Eq = "U+1F200-1F202, U+1F210-1F23B, U+1F240-1F248, U+1F250-1F251";
|
|
160
|
-
function
|
|
160
|
+
function fq(A) {
|
|
161
161
|
if (A.__ARIB_HTML5_SYMBOL_FONT__) return;
|
|
162
162
|
A.__ARIB_HTML5_SYMBOL_FONT__ = !0;
|
|
163
163
|
const q = A.document.createElement("style");
|
|
@@ -182,7 +182,7 @@ function mq(A) {
|
|
|
182
182
|
:root { --arib-symbol-font: "ARIB Symbols"; }
|
|
183
183
|
`, (A.document.head ?? A.document.documentElement).append(q);
|
|
184
184
|
}
|
|
185
|
-
function
|
|
185
|
+
function mq(A, q) {
|
|
186
186
|
if (!q || A.__ARIB_HTML5_BROADCAST_CLOCK__) return;
|
|
187
187
|
A.__ARIB_HTML5_BROADCAST_CLOCK__ = !0;
|
|
188
188
|
const e = A.Date, t = () => {
|
|
@@ -193,8 +193,8 @@ function fq(A, q) {
|
|
|
193
193
|
return e.now();
|
|
194
194
|
}
|
|
195
195
|
}, i = function(...r) {
|
|
196
|
-
const
|
|
197
|
-
return new.target ? Reflect.construct(e,
|
|
196
|
+
const o = r.length === 0 ? [t()] : r;
|
|
197
|
+
return new.target ? Reflect.construct(e, o, new.target) : new e(t()).toString();
|
|
198
198
|
};
|
|
199
199
|
Object.setPrototypeOf(i, e), Object.defineProperty(i, "prototype", {
|
|
200
200
|
value: e.prototype
|
|
@@ -227,83 +227,83 @@ function H(A, q, e = q) {
|
|
|
227
227
|
const t = new URL(A, q);
|
|
228
228
|
if (t.origin !== q.origin || !/^https?:$/.test(t.protocol)) return t;
|
|
229
229
|
if (!t.pathname.startsWith(q.pathname)) {
|
|
230
|
-
const i = t.pathname.replace(/^\/+/, ""), r = e.pathname.startsWith(q.pathname) ? e.pathname.slice(q.pathname.length).replace(/^\/+|\/+$/g, "") : "",
|
|
231
|
-
t.pathname = `${
|
|
230
|
+
const i = t.pathname.replace(/^\/+/, ""), r = e.pathname.startsWith(q.pathname) ? e.pathname.slice(q.pathname.length).replace(/^\/+|\/+$/g, "") : "", o = r && (i === r || i.startsWith(`${r}/`));
|
|
231
|
+
t.pathname = `${o ? q.pathname : e.pathname}${i}`;
|
|
232
232
|
}
|
|
233
233
|
return t;
|
|
234
234
|
}
|
|
235
235
|
function vq(A, q, e) {
|
|
236
236
|
const t = e ?? {
|
|
237
|
-
async store(V,
|
|
237
|
+
async store(V, y) {
|
|
238
238
|
const g = await A.fetch(V, {
|
|
239
239
|
cache: "reload",
|
|
240
240
|
credentials: "same-origin",
|
|
241
|
-
signal:
|
|
241
|
+
signal: y.signal
|
|
242
242
|
});
|
|
243
243
|
if (!g.ok) throw new Error(`Broadcast resource returned HTTP ${g.status}`);
|
|
244
244
|
await g.arrayBuffer();
|
|
245
245
|
}
|
|
246
246
|
}, i = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
|
|
247
|
-
let
|
|
248
|
-
const n = (V) => q(V).href, l = (V,
|
|
247
|
+
let o = !1;
|
|
248
|
+
const n = (V) => q(V).href, l = (V, y, g) => A.queueMicrotask(() => y(V, g)), s = (V, y) => {
|
|
249
249
|
for (const g of V.paths)
|
|
250
|
-
for (const
|
|
251
|
-
},
|
|
250
|
+
for (const a of i.get(g) ?? []) l(g, a, y);
|
|
251
|
+
}, p = (V) => {
|
|
252
252
|
try {
|
|
253
253
|
Promise.resolve(t.release?.(V)).catch(() => {
|
|
254
254
|
});
|
|
255
255
|
} catch {
|
|
256
256
|
}
|
|
257
257
|
}, E = (V) => {
|
|
258
|
-
V.generation += 1, V.controller?.abort(), V.controller = void 0, r.delete(V.url),
|
|
259
|
-
},
|
|
258
|
+
V.generation += 1, V.controller?.abort(), V.controller = void 0, r.delete(V.url), p(V.url);
|
|
259
|
+
}, m = (V, y) => {
|
|
260
260
|
V.controller?.abort();
|
|
261
|
-
const g = new A.AbortController(),
|
|
261
|
+
const g = new A.AbortController(), a = ++V.generation;
|
|
262
262
|
V.controller = g, V.state = "loading", Promise.resolve(t.store(V.url, { signal: g.signal })).then(
|
|
263
263
|
() => {
|
|
264
|
-
|
|
264
|
+
o || g.signal.aborted || V.generation !== a || (V.controller = void 0, V.state = "stored", s(V, y));
|
|
265
265
|
},
|
|
266
266
|
() => {
|
|
267
|
-
|
|
267
|
+
o || g.signal.aborted || V.generation !== a || (V.controller = void 0, V.state = "failed", s(V, "store_failed"));
|
|
268
268
|
}
|
|
269
269
|
);
|
|
270
|
-
}, v = (V,
|
|
270
|
+
}, v = (V, y) => typeof y != "function" || o ? !1 : (i.has(V) || i.set(V, /* @__PURE__ */ new Set()), i.get(V)?.add(y), r.get(n(V))?.state === "stored" && l(V, y, "store_finished"), !0), b = (V) => {
|
|
271
271
|
if (V === void 0) {
|
|
272
272
|
for (const g of [...r.values()]) E(g);
|
|
273
273
|
return !0;
|
|
274
274
|
}
|
|
275
|
-
const
|
|
276
|
-
return
|
|
275
|
+
const y = r.get(n(V));
|
|
276
|
+
return y && E(y), !0;
|
|
277
277
|
};
|
|
278
278
|
return {
|
|
279
279
|
addListener: v,
|
|
280
|
-
removeListener(V,
|
|
281
|
-
return
|
|
280
|
+
removeListener(V, y) {
|
|
281
|
+
return y ? (i.get(V)?.delete(y), i.get(V)?.size === 0 && i.delete(V)) : i.delete(V), !0;
|
|
282
282
|
},
|
|
283
|
-
store(V,
|
|
284
|
-
if (
|
|
283
|
+
store(V, y) {
|
|
284
|
+
if (o) return !1;
|
|
285
285
|
const g = n(V);
|
|
286
|
-
let
|
|
287
|
-
return
|
|
286
|
+
let a = r.get(g);
|
|
287
|
+
return a || (a = {
|
|
288
288
|
url: g,
|
|
289
289
|
paths: /* @__PURE__ */ new Set(),
|
|
290
290
|
state: "failed",
|
|
291
291
|
generation: 0
|
|
292
|
-
}, r.set(g,
|
|
292
|
+
}, r.set(g, a)), a.paths.add(V), y && v(V, y), a.state === "stored" || a.state !== "loading" && m(a, "store_finished"), !0;
|
|
293
293
|
},
|
|
294
|
-
release:
|
|
295
|
-
change(V,
|
|
294
|
+
release: b,
|
|
295
|
+
change(V, y) {
|
|
296
296
|
const g = r.get(n(V));
|
|
297
|
-
g && (
|
|
297
|
+
g && (y === "deleted" ? (s(g, "deleted"), E(g)) : m(g, "updated"));
|
|
298
298
|
},
|
|
299
299
|
dispose() {
|
|
300
|
-
|
|
300
|
+
o || (b(), o = !0, i.clear());
|
|
301
301
|
}
|
|
302
302
|
};
|
|
303
303
|
}
|
|
304
|
-
const
|
|
305
|
-
name:
|
|
306
|
-
version:
|
|
304
|
+
const bq = "libaribhtml5", Mq = "0.2.0", kq = { name: "huggy" }, wq = { modelName: "Huggy ARIB HTML5 Receiver" }, I = {
|
|
305
|
+
name: bq,
|
|
306
|
+
version: Mq,
|
|
307
307
|
author: kq,
|
|
308
308
|
aribReceiver: wq
|
|
309
309
|
}, Cq = /* @__PURE__ */ new Set(["zipcode", "prefecture", "regioncode"]), Rq = Object.freeze({
|
|
@@ -395,7 +395,7 @@ function Jq(A, q) {
|
|
|
395
395
|
"event_message_tag"
|
|
396
396
|
].every((t) => A.source?.[t] === q.source?.[t]) && A.message_group_id === q.message_group_id && A.message_id === q.message_id && A.message_version === q.message_version;
|
|
397
397
|
}
|
|
398
|
-
const
|
|
398
|
+
const f = {
|
|
399
399
|
broadcastMedia: 12,
|
|
400
400
|
monomediaOverBroadcastVideo: 11,
|
|
401
401
|
currentEventInformation: 10,
|
|
@@ -407,7 +407,7 @@ const m = {
|
|
|
407
407
|
scheduling: 4,
|
|
408
408
|
cas: 3
|
|
409
409
|
}, S = 8191, J = 16, j = 160;
|
|
410
|
-
function
|
|
410
|
+
function M(A) {
|
|
411
411
|
const q = new TypeError(A);
|
|
412
412
|
return q.code = "INVALID_PARAM_ERR", q;
|
|
413
413
|
}
|
|
@@ -417,19 +417,19 @@ function jq(A) {
|
|
|
417
417
|
}
|
|
418
418
|
function x(A) {
|
|
419
419
|
if (!A || typeof A != "object")
|
|
420
|
-
throw
|
|
420
|
+
throw M("Permission managed area must be an object");
|
|
421
421
|
const q = A;
|
|
422
422
|
if (q.permissionBitmaps !== null && !Array.isArray(q.permissionBitmaps))
|
|
423
|
-
throw
|
|
423
|
+
throw M("permissionBitmaps must be an array or null");
|
|
424
424
|
if (q.managedUrls !== null && !Array.isArray(q.managedUrls))
|
|
425
|
-
throw
|
|
425
|
+
throw M("managedUrls must be an array or null");
|
|
426
426
|
const e = q.permissionBitmaps === null ? null : [...q.permissionBitmaps], t = q.managedUrls === null ? null : [...q.managedUrls];
|
|
427
427
|
for (const i of e ?? [])
|
|
428
428
|
if (!Number.isInteger(i) || i < 0 || i > 65535)
|
|
429
|
-
throw
|
|
429
|
+
throw M("permission_bitmap must be a 16-bit integer");
|
|
430
430
|
for (const i of t ?? [])
|
|
431
431
|
if (typeof i != "string" || new TextEncoder().encode(i).length > 255)
|
|
432
|
-
throw
|
|
432
|
+
throw M("managed_URL must be a string");
|
|
433
433
|
return { permissionBitmaps: e, managedUrls: t };
|
|
434
434
|
}
|
|
435
435
|
function O(A) {
|
|
@@ -441,9 +441,9 @@ function O(A) {
|
|
|
441
441
|
0
|
|
442
442
|
);
|
|
443
443
|
if (q > J)
|
|
444
|
-
throw
|
|
444
|
+
throw M(`At most ${J} permission bitmaps are supported`);
|
|
445
445
|
if (e > j)
|
|
446
|
-
throw
|
|
446
|
+
throw M(`At most ${j} managed URLs are supported`);
|
|
447
447
|
}
|
|
448
448
|
function L(A) {
|
|
449
449
|
if (A === null || A.length === 0) return S;
|
|
@@ -492,12 +492,12 @@ class Nq {
|
|
|
492
492
|
}
|
|
493
493
|
addPermissionManagedArea(q) {
|
|
494
494
|
if (!q || typeof q != "object")
|
|
495
|
-
throw
|
|
495
|
+
throw M("Permission managed area must be an object");
|
|
496
496
|
const e = q;
|
|
497
497
|
if (e.permission !== null && !Array.isArray(e.permission))
|
|
498
|
-
throw
|
|
498
|
+
throw M("permission must be an array or null");
|
|
499
499
|
if (e.urls !== null && !Array.isArray(e.urls))
|
|
500
|
-
throw
|
|
500
|
+
throw M("urls must be an array or null");
|
|
501
501
|
const t = x({
|
|
502
502
|
permissionBitmaps: e.permission === null || e.permission.length === 0 ? null : e.permission,
|
|
503
503
|
managedUrls: e.urls === null || e.urls.length === 0 ? null : e.urls
|
|
@@ -517,17 +517,17 @@ class Nq {
|
|
|
517
517
|
if (this.baseAreas === void 0 && this.addedAreas.length === 0)
|
|
518
518
|
return { withinBoundary: !0, permissionBits: S };
|
|
519
519
|
let i = -1, r = 0;
|
|
520
|
-
for (const
|
|
521
|
-
const n =
|
|
520
|
+
for (const o of t) {
|
|
521
|
+
const n = o.managedUrls;
|
|
522
522
|
if (n === null || n.length === 0) {
|
|
523
|
-
i < 0 ? (i = 0, r = L(
|
|
523
|
+
i < 0 ? (i = 0, r = L(o.permissionBitmaps)) : i === 0 && (r &= L(o.permissionBitmaps));
|
|
524
524
|
continue;
|
|
525
525
|
}
|
|
526
526
|
for (const l of n) {
|
|
527
527
|
const s = Oq(l, e, this.documentUrl);
|
|
528
528
|
if (s === null || s < i) continue;
|
|
529
|
-
const
|
|
530
|
-
s > i ? (i = s, r =
|
|
529
|
+
const p = L(o.permissionBitmaps);
|
|
530
|
+
s > i ? (i = s, r = p) : r &= p;
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
533
|
return i < 0 ? { withinBoundary: !1, permissionBits: 0 } : { withinBoundary: !0, permissionBits: r };
|
|
@@ -541,19 +541,19 @@ function Zq(A, q) {
|
|
|
541
541
|
if (q) return;
|
|
542
542
|
const e = (r) => {
|
|
543
543
|
try {
|
|
544
|
-
const
|
|
545
|
-
return /^https?:$/.test(
|
|
544
|
+
const o = new URL(String(r), A.location.href);
|
|
545
|
+
return /^https?:$/.test(o.protocol) && o.origin !== A.location.origin;
|
|
546
546
|
} catch {
|
|
547
547
|
return !1;
|
|
548
548
|
}
|
|
549
549
|
}, t = A.XMLHttpRequest?.prototype;
|
|
550
550
|
if (t) {
|
|
551
|
-
const r = /* @__PURE__ */ new WeakSet(),
|
|
551
|
+
const r = /* @__PURE__ */ new WeakSet(), o = t.open, n = t.send;
|
|
552
552
|
Object.defineProperty(t, "open", {
|
|
553
553
|
configurable: !0,
|
|
554
554
|
writable: !0,
|
|
555
|
-
value: function(l, s, ...
|
|
556
|
-
return e(s) ? r.add(this) : r.delete(this), Reflect.apply(
|
|
555
|
+
value: function(l, s, ...p) {
|
|
556
|
+
return e(s) ? r.add(this) : r.delete(this), Reflect.apply(o, this, [l, s, ...p]);
|
|
557
557
|
}
|
|
558
558
|
}), Object.defineProperty(t, "send", {
|
|
559
559
|
configurable: !0,
|
|
@@ -565,24 +565,24 @@ function Zq(A, q) {
|
|
|
565
565
|
});
|
|
566
566
|
}
|
|
567
567
|
const i = A.fetch?.bind(A);
|
|
568
|
-
if (i && (A.fetch = (r,
|
|
568
|
+
if (i && (A.fetch = (r, o) => {
|
|
569
569
|
const n = r instanceof A.Request ? r.url : r;
|
|
570
|
-
return e(n) ? Promise.reject(new TypeError("External network is offline")) : i(r,
|
|
570
|
+
return e(n) ? Promise.reject(new TypeError("External network is offline")) : i(r, o);
|
|
571
571
|
}), typeof A.navigator.sendBeacon == "function") {
|
|
572
572
|
const r = A.navigator.sendBeacon.bind(A.navigator);
|
|
573
573
|
Object.defineProperty(A.navigator, "sendBeacon", {
|
|
574
574
|
configurable: !0,
|
|
575
|
-
value: (
|
|
575
|
+
value: (o, n) => e(o) ? !1 : r(o, n)
|
|
576
576
|
});
|
|
577
577
|
}
|
|
578
578
|
}
|
|
579
579
|
const Kq = (A, q, e = 1) => Math.abs(A.left - q.left) <= e && Math.abs(A.top - q.top) <= e && Math.abs(A.width - q.width) <= e && Math.abs(A.height - q.height) <= e, zq = (A) => A.hasAttribute("width") || A.hasAttribute("height") || A.style.getPropertyValue("width") !== "" || A.style.getPropertyValue("height") !== "", F = (A) => {
|
|
580
580
|
const q = A.ownerDocument;
|
|
581
581
|
let e = A, t = A.getBoundingClientRect(), i = A, r = !zq(A) && (t.width <= 0 || t.height <= 0 || Math.abs(t.width - 300) <= 1 && Math.abs(t.height - 150) <= 1);
|
|
582
|
-
for (let
|
|
583
|
-
const n =
|
|
582
|
+
for (let o = A.parentElement; o && o !== q.body && o !== q.documentElement; o = o.parentElement) {
|
|
583
|
+
const n = o.getBoundingClientRect(), l = o.children.length === 1 && o.firstElementChild === i, s = Kq(n, t);
|
|
584
584
|
if (!l || n.width <= 0 || n.height <= 0 || !s && !r) break;
|
|
585
|
-
e =
|
|
585
|
+
e = o, t = n, i = o, r = !1;
|
|
586
586
|
}
|
|
587
587
|
return { element: e, rect: t };
|
|
588
588
|
};
|
|
@@ -603,14 +603,14 @@ class Hq {
|
|
|
603
603
|
const l = this.target.getComputedStyle(n);
|
|
604
604
|
!this.backgrounds.has(n) && this.hasTransparentBackground(l) || i.add(n);
|
|
605
605
|
}
|
|
606
|
-
const r = F(q).rect,
|
|
606
|
+
const r = F(q).rect, o = (n) => {
|
|
607
607
|
const l = n.getBoundingClientRect(), s = 1;
|
|
608
608
|
return l.width > 0 && l.height > 0 && l.left <= r.left + s && l.top <= r.top + s && l.right >= r.right - s && l.bottom >= r.bottom - s;
|
|
609
609
|
};
|
|
610
610
|
for (const n of this.target.document.querySelectorAll("body *")) {
|
|
611
611
|
if (n === q || n.contains(q) || q.contains(n)) continue;
|
|
612
612
|
const l = this.target.getComputedStyle(n);
|
|
613
|
-
!this.backgrounds.has(n) && this.hasTransparentBackground(l) ||
|
|
613
|
+
!this.backgrounds.has(n) && this.hasTransparentBackground(l) || o(n) && i.add(n);
|
|
614
614
|
}
|
|
615
615
|
for (const n of [...this.backgrounds.keys()])
|
|
616
616
|
i.has(n) || this.restoreBackground(n);
|
|
@@ -669,11 +669,11 @@ class Hq {
|
|
|
669
669
|
}
|
|
670
670
|
placeholderElements(q) {
|
|
671
671
|
const e = [q], t = F(q), i = t.rect, r = 1;
|
|
672
|
-
let
|
|
672
|
+
let o = q;
|
|
673
673
|
for (let n = q.parentElement; n && n !== this.target.document.body && n !== this.target.document.documentElement; n = n.parentElement) {
|
|
674
674
|
const l = n.getBoundingClientRect();
|
|
675
|
-
if (!(n.children.length === 1 && n.firstElementChild ===
|
|
676
|
-
e.push(n),
|
|
675
|
+
if (!(n.children.length === 1 && n.firstElementChild === o && (n === t.element || Math.abs(l.left - i.left) <= r && Math.abs(l.top - i.top) <= r && Math.abs(l.width - i.width) <= r && Math.abs(l.height - i.height) <= r))) break;
|
|
676
|
+
e.push(n), o = n;
|
|
677
677
|
}
|
|
678
678
|
return e;
|
|
679
679
|
}
|
|
@@ -864,8 +864,8 @@ class Xq {
|
|
|
864
864
|
const q = this.target.document.querySelector('meta[name="viewport"]')?.content ?? "", e = (n) => {
|
|
865
865
|
const l = Number(q.match(new RegExp(`(?:^|[,;])\\s*${n}\\s*=\\s*(\\d+)`, "i"))?.[1]);
|
|
866
866
|
return Number.isSafeInteger(l) && l > 0 ? l : null;
|
|
867
|
-
}, t = e("width"), i = e("height"), r = t ?? (i === null ? 3840 : Math.round(i * 16 / 9)),
|
|
868
|
-
return { width: r, height:
|
|
867
|
+
}, t = e("width"), i = e("height"), r = t ?? (i === null ? 3840 : Math.round(i * 16 / 9)), o = i ?? (t === null ? 2160 : Math.round(t * 9 / 16));
|
|
868
|
+
return { width: r, height: o };
|
|
869
869
|
}
|
|
870
870
|
reportScreenSize() {
|
|
871
871
|
const q = this.logicalViewport(), e = JSON.stringify(q);
|
|
@@ -889,6 +889,30 @@ class Xq {
|
|
|
889
889
|
unmountMediaPlane(q) {
|
|
890
890
|
this.activeMediaObject ? this.externalMediaHole.set(this.activeMediaObject, !1) : this.externalMediaHole.restore(), this.adapter && this.callMediaPlaneAdapter(() => this.adapter?.unmountMediaPlane(q)), this.activeMediaObject = null;
|
|
891
891
|
}
|
|
892
|
+
/** A foreground surface must not cover opaque application dialogs above its slot. */
|
|
893
|
+
isCoveredByApplication(q, e) {
|
|
894
|
+
const t = this.target.document;
|
|
895
|
+
if (typeof t.elementsFromPoint != "function") return !1;
|
|
896
|
+
const i = t.elementsFromPoint(e.x + e.width / 2, e.y + e.height / 2), r = i.indexOf(q);
|
|
897
|
+
if (r < 0) return !1;
|
|
898
|
+
for (const o of i.slice(0, r)) {
|
|
899
|
+
if (o.contains(q) || q.contains(o)) continue;
|
|
900
|
+
const n = this.target.getComputedStyle(o);
|
|
901
|
+
if (!n.backgroundColor.startsWith("rgb(") || n.clipPath !== "none" || n.borderRadius !== "0px") continue;
|
|
902
|
+
let l = !0;
|
|
903
|
+
for (let p = o; p; p = p.parentElement) {
|
|
904
|
+
const E = this.target.getComputedStyle(p);
|
|
905
|
+
if (Number(E.opacity) < 1 || E.visibility !== "visible") {
|
|
906
|
+
l = !1;
|
|
907
|
+
break;
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
if (!l) continue;
|
|
911
|
+
const s = o.getBoundingClientRect();
|
|
912
|
+
if (s.left <= e.left && s.top <= e.top && s.right >= e.right && s.bottom >= e.bottom) return !0;
|
|
913
|
+
}
|
|
914
|
+
return !1;
|
|
915
|
+
}
|
|
892
916
|
reportMediaPlane() {
|
|
893
917
|
this.reportScreenSize(), this.target.document.readyState !== "loading" && this.reportStageStyle();
|
|
894
918
|
const q = this.findMediaObject();
|
|
@@ -896,22 +920,22 @@ class Xq {
|
|
|
896
920
|
this.observeMediaObject(null);
|
|
897
921
|
const E = this.activeMediaObject ? this.slotIdFor(this.activeMediaObject) : "";
|
|
898
922
|
this.activeMediaObject && this.unmountMediaPlane("slot-removed");
|
|
899
|
-
const
|
|
923
|
+
const m = this.logicalViewport(), v = {
|
|
900
924
|
slotId: E,
|
|
901
925
|
visible: !1,
|
|
902
926
|
x: 0,
|
|
903
927
|
y: 0,
|
|
904
928
|
width: 0,
|
|
905
929
|
height: 0,
|
|
906
|
-
screenWidth:
|
|
907
|
-
screenHeight:
|
|
930
|
+
screenWidth: m.width,
|
|
931
|
+
screenHeight: m.height,
|
|
908
932
|
layer: { documentOrder: -1, stackingPath: [] }
|
|
909
|
-
},
|
|
910
|
-
|
|
933
|
+
}, b = JSON.stringify(v);
|
|
934
|
+
b !== this.lastMediaPlane && (this.lastMediaPlane = b, this.postRuntime("media-plane", v));
|
|
911
935
|
return;
|
|
912
936
|
}
|
|
913
937
|
this.observeMediaObject(q), this.installBroadcastObjectApi(q);
|
|
914
|
-
const e = F(q), t = e.rect, i = this.target.getComputedStyle(q), r = q.querySelector('param[name="video_src"]')?.value,
|
|
938
|
+
const e = F(q), t = e.rect, i = this.target.getComputedStyle(q), r = q.querySelector('param[name="video_src"]')?.value, o = q.querySelector('param[name="audio_src"]')?.value, n = this.logicalViewport(), l = this.externalMediaHole.describeStackingPath(q), s = {
|
|
915
939
|
slotId: this.slotIdFor(q),
|
|
916
940
|
visible: i.display !== "none" && i.visibility !== "hidden" && t.width > 0 && t.height > 0 && l.every((E) => E.display !== "none" && E.visibility !== "hidden" && E.opacity > 0),
|
|
917
941
|
x: t.x,
|
|
@@ -921,18 +945,20 @@ class Xq {
|
|
|
921
945
|
screenWidth: n.width,
|
|
922
946
|
screenHeight: n.height,
|
|
923
947
|
videoSource: r,
|
|
924
|
-
audioSource:
|
|
948
|
+
audioSource: o,
|
|
925
949
|
layer: {
|
|
926
950
|
documentOrder: Array.from(this.target.document.querySelectorAll("*")).indexOf(q),
|
|
927
951
|
stackingPath: l,
|
|
928
952
|
externalPlacement: e.element !== q && Number.parseInt(this.target.getComputedStyle(e.element).zIndex, 10) > 0 ? "above-application" : "behind-application"
|
|
929
953
|
}
|
|
930
|
-
}
|
|
931
|
-
|
|
954
|
+
};
|
|
955
|
+
this.adapter?.renderMode === "external" && s.visible && s.layer.externalPlacement === "above-application" && this.isCoveredByApplication(q, t) && (s.visible = !1);
|
|
956
|
+
const p = JSON.stringify(s);
|
|
957
|
+
q !== this.activeMediaObject ? (this.activeMediaObject && this.unmountMediaPlane("slot-removed"), this.activeMediaObject = q, this.adapter && this.callMediaPlaneAdapter(() => this.adapter?.mountMediaPlane(q, s))) : p !== this.lastMediaPlane && this.adapter && this.callMediaPlaneAdapter(() => this.adapter?.updateMediaPlane(q, s)), this.externalMediaHole.set(
|
|
932
958
|
q,
|
|
933
959
|
(this.adapter?.renderMode ?? "external") === "external",
|
|
934
960
|
s.layer.externalPlacement !== "above-application"
|
|
935
|
-
),
|
|
961
|
+
), p !== this.lastMediaPlane && (this.lastMediaPlane = p, this.postRuntime("media-plane", s));
|
|
936
962
|
}
|
|
937
963
|
}
|
|
938
964
|
class _q {
|
|
@@ -1016,9 +1042,9 @@ class $q {
|
|
|
1016
1042
|
}
|
|
1017
1043
|
};
|
|
1018
1044
|
boundaryDescriptor = {
|
|
1019
|
-
getCurrentBoundary: () => (this.requirePermission(
|
|
1045
|
+
getCurrentBoundary: () => (this.requirePermission(f.broadcastResources), this.boundary.getCurrentBoundary()),
|
|
1020
1046
|
addPermissionManagedArea: (q) => {
|
|
1021
|
-
this.requirePermission(
|
|
1047
|
+
this.requirePermission(f.boundaryExtension), this.boundary.addPermissionManagedArea(q);
|
|
1022
1048
|
}
|
|
1023
1049
|
};
|
|
1024
1050
|
ownerApplication;
|
|
@@ -1046,7 +1072,7 @@ class $q {
|
|
|
1046
1072
|
this.postRuntime("destroy");
|
|
1047
1073
|
},
|
|
1048
1074
|
replaceApplication: (e, t, i = null) => {
|
|
1049
|
-
if (this.requirePermission(
|
|
1075
|
+
if (this.requirePermission(f.broadcastResources), !Number.isSafeInteger(e) || e < 0 || !Number.isSafeInteger(t) || t < 0) {
|
|
1050
1076
|
this.postRuntime("error", {
|
|
1051
1077
|
message: "Invalid replaceApplication application identifier"
|
|
1052
1078
|
});
|
|
@@ -1059,9 +1085,9 @@ class $q {
|
|
|
1059
1085
|
});
|
|
1060
1086
|
},
|
|
1061
1087
|
exitFromManagedState: (e) => {
|
|
1062
|
-
this.requirePermission(
|
|
1088
|
+
this.requirePermission(f.broadcastResources), this.postRuntime("exit-managed-state", { url: String(e ?? "") });
|
|
1063
1089
|
},
|
|
1064
|
-
getApplicationBoundaryAndPermissionDescriptor: () => (this.requirePermission(
|
|
1090
|
+
getApplicationBoundaryAndPermissionDescriptor: () => (this.requirePermission(f.broadcastResources), this.boundary.hasDescriptor() ? this.boundaryDescriptor : null)
|
|
1065
1091
|
}, Object.defineProperty(this.target.navigator, "applicationManager", {
|
|
1066
1092
|
configurable: !0,
|
|
1067
1093
|
enumerable: !0,
|
|
@@ -1070,7 +1096,7 @@ class $q {
|
|
|
1070
1096
|
// Hybridcast HTML applications use this receiver operation to return
|
|
1071
1097
|
// to the BML data-broadcasting browser that launched them.
|
|
1072
1098
|
launchDataBroadcastingBrowser: () => {
|
|
1073
|
-
this.requirePermission(
|
|
1099
|
+
this.requirePermission(f.broadcastResources), this.postRuntime("launch-data-broadcasting-browser");
|
|
1074
1100
|
}
|
|
1075
1101
|
}
|
|
1076
1102
|
});
|
|
@@ -1204,21 +1230,21 @@ function Ae(A, q = {}) {
|
|
|
1204
1230
|
}
|
|
1205
1231
|
function ie(A, q) {
|
|
1206
1232
|
const e = q.userAgent === void 0 ? null : ee(A.navigator, q.userAgent);
|
|
1207
|
-
|
|
1233
|
+
mq(A, q.now), uq(A), fq(A);
|
|
1208
1234
|
const t = z(
|
|
1209
1235
|
q.broadcastBaseUrl,
|
|
1210
1236
|
A.location.href
|
|
1211
1237
|
);
|
|
1212
1238
|
if (t.origin !== A.location.origin)
|
|
1213
1239
|
throw new Error(`Broadcast base URL must be same-origin: ${t.href}`);
|
|
1214
|
-
const i = Bq(A.location.href, t), r = (
|
|
1215
|
-
const h = new URL(String(
|
|
1240
|
+
const i = Bq(A.location.href, t), r = (a) => {
|
|
1241
|
+
const h = new URL(String(a ?? ""), A.location.href);
|
|
1216
1242
|
return H(h, t, i);
|
|
1217
|
-
},
|
|
1243
|
+
}, o = A.crypto.randomUUID?.() ?? `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`, n = (a, h = {}) => {
|
|
1218
1244
|
A.parent?.postMessage({
|
|
1219
1245
|
type: "arib-runtime",
|
|
1220
|
-
runtimeId:
|
|
1221
|
-
event:
|
|
1246
|
+
runtimeId: o,
|
|
1247
|
+
event: a,
|
|
1222
1248
|
...h
|
|
1223
1249
|
}, "*");
|
|
1224
1250
|
}, l = new $q({
|
|
@@ -1228,27 +1254,27 @@ function ie(A, q) {
|
|
|
1228
1254
|
allowExternalNetwork: q.allowExternalNetwork ?? !1,
|
|
1229
1255
|
application: q.application,
|
|
1230
1256
|
postRuntime: n
|
|
1231
|
-
}), s = (
|
|
1232
|
-
l.requirePermission(
|
|
1257
|
+
}), s = (a) => {
|
|
1258
|
+
l.requirePermission(a);
|
|
1233
1259
|
};
|
|
1234
1260
|
Zq(A, q.allowExternalNetwork);
|
|
1235
|
-
for (const [
|
|
1236
|
-
const
|
|
1261
|
+
for (const [a, h] of Object.entries(qe)) A[a] = h;
|
|
1262
|
+
const p = /* @__PURE__ */ new Set(), E = /* @__PURE__ */ new Set(), m = vq(
|
|
1237
1263
|
A,
|
|
1238
|
-
(
|
|
1264
|
+
(a) => r(a),
|
|
1239
1265
|
q.resourceStore
|
|
1240
1266
|
);
|
|
1241
1267
|
let v = null;
|
|
1242
|
-
const
|
|
1243
|
-
requirePermission: () => s(
|
|
1268
|
+
const b = new _q({
|
|
1269
|
+
requirePermission: () => s(f.broadcastMedia),
|
|
1244
1270
|
postRuntime: n
|
|
1245
1271
|
});
|
|
1246
1272
|
let V;
|
|
1247
|
-
A.addEventListener("message", (
|
|
1248
|
-
if (!(
|
|
1249
|
-
if (
|
|
1273
|
+
A.addEventListener("message", (a) => {
|
|
1274
|
+
if (!(a.source !== A.parent || a.origin !== A.location.origin) && !(a.data?.type !== "arib-host" || a.data.runtimeId !== o) && !b.handleHostMessage(a.data)) {
|
|
1275
|
+
if (a.data.event === "program-info") {
|
|
1250
1276
|
try {
|
|
1251
|
-
v =
|
|
1277
|
+
v = a.data.value === null ? null : D(a.data.value);
|
|
1252
1278
|
} catch (h) {
|
|
1253
1279
|
n("error", { message: `Invalid program information: ${String(h)}` });
|
|
1254
1280
|
return;
|
|
@@ -1256,10 +1282,10 @@ function ie(A, q) {
|
|
|
1256
1282
|
for (const h of E) queueMicrotask(h);
|
|
1257
1283
|
return;
|
|
1258
1284
|
}
|
|
1259
|
-
if (
|
|
1285
|
+
if (a.data.event === "application-information") {
|
|
1260
1286
|
try {
|
|
1261
1287
|
const h = l.updateApplicationInformation(
|
|
1262
|
-
|
|
1288
|
+
a.data.value ?? {}
|
|
1263
1289
|
);
|
|
1264
1290
|
V.schedule(), h || n("application-boundary-exit", { url: A.location.href });
|
|
1265
1291
|
} catch (h) {
|
|
@@ -1267,57 +1293,57 @@ function ie(A, q) {
|
|
|
1267
1293
|
}
|
|
1268
1294
|
return;
|
|
1269
1295
|
}
|
|
1270
|
-
if (
|
|
1271
|
-
l.setHostInputActive(!!
|
|
1296
|
+
if (a.data.event === "receiver-input-state") {
|
|
1297
|
+
l.setHostInputActive(!!a.data.active);
|
|
1272
1298
|
return;
|
|
1273
1299
|
}
|
|
1274
|
-
if (
|
|
1275
|
-
const h =
|
|
1276
|
-
(h === "updated" || h === "deleted") &&
|
|
1300
|
+
if (a.data.event === "resource-change") {
|
|
1301
|
+
const h = a.data.change;
|
|
1302
|
+
(h === "updated" || h === "deleted") && m.change(String(a.data.path ?? ""), h);
|
|
1277
1303
|
return;
|
|
1278
1304
|
}
|
|
1279
|
-
if (
|
|
1280
|
-
const h =
|
|
1281
|
-
for (const T of [...
|
|
1305
|
+
if (a.data.event === "stream-event") {
|
|
1306
|
+
const h = a.data.value;
|
|
1307
|
+
for (const T of [...p])
|
|
1282
1308
|
Wq(h, T.selector) && T.callback(h);
|
|
1283
1309
|
}
|
|
1284
1310
|
}
|
|
1285
1311
|
});
|
|
1286
|
-
const
|
|
1312
|
+
const y = Sq(
|
|
1287
1313
|
t.href,
|
|
1288
1314
|
q.systemInformation
|
|
1289
1315
|
);
|
|
1290
|
-
Qq(A.localStorage,
|
|
1316
|
+
Qq(A.localStorage, y), P(A.navigator, "receiverDevice", {
|
|
1291
1317
|
confirmIPNetwork: () => q.allowExternalNetwork ?? !1,
|
|
1292
|
-
getSystemInformation: () => (s(
|
|
1293
|
-
getDeviceIdentifier: (
|
|
1294
|
-
s(
|
|
1295
|
-
Gq(
|
|
1318
|
+
getSystemInformation: () => (s(f.broadcastResources), { ...y }),
|
|
1319
|
+
getDeviceIdentifier: (a, h) => {
|
|
1320
|
+
s(f.deviceIdentifier), queueMicrotask(() => {
|
|
1321
|
+
Gq(a, q.getDeviceIdentifier).then(
|
|
1296
1322
|
h,
|
|
1297
1323
|
() => h("")
|
|
1298
1324
|
);
|
|
1299
1325
|
});
|
|
1300
1326
|
},
|
|
1301
|
-
getCurrentEventInformation: (
|
|
1302
|
-
s(
|
|
1327
|
+
getCurrentEventInformation: (a) => {
|
|
1328
|
+
s(f.currentEventInformation), queueMicrotask(() => a(v ? D(v) : null));
|
|
1303
1329
|
},
|
|
1304
1330
|
cacheEvent: {
|
|
1305
|
-
addCacheEventListener: (
|
|
1306
|
-
storeDataResource: (
|
|
1307
|
-
releaseDataResource: (
|
|
1308
|
-
removeCacheEventListener: (
|
|
1331
|
+
addCacheEventListener: (a, h) => (s(f.broadcastResources), m.addListener(a, h)),
|
|
1332
|
+
storeDataResource: (a, h) => (s(f.broadcastResources), m.store(a, h)),
|
|
1333
|
+
releaseDataResource: (a) => (s(f.broadcastResources), m.release(a)),
|
|
1334
|
+
removeCacheEventListener: (a, h) => (s(f.broadcastResources), m.removeListener(a, h))
|
|
1309
1335
|
},
|
|
1310
1336
|
streamEvent: {
|
|
1311
|
-
addGeneralEventMessageListener: (
|
|
1312
|
-
removeGeneralEventMessageListener: (
|
|
1313
|
-
if (s(
|
|
1314
|
-
return
|
|
1315
|
-
for (const T of [...
|
|
1316
|
-
Jq(T.selector,
|
|
1337
|
+
addGeneralEventMessageListener: (a, h) => (s(f.broadcastResources), typeof h != "function" ? !1 : (p.add({ selector: a, callback: h }), !0)),
|
|
1338
|
+
removeGeneralEventMessageListener: (a, h) => {
|
|
1339
|
+
if (s(f.broadcastResources), !a)
|
|
1340
|
+
return p.clear(), !0;
|
|
1341
|
+
for (const T of [...p])
|
|
1342
|
+
Jq(T.selector, a) && (!h || h === T.callback) && p.delete(T);
|
|
1317
1343
|
return !0;
|
|
1318
1344
|
},
|
|
1319
|
-
addEventIDUpdateListener: (
|
|
1320
|
-
removeEventIDUpdateListener: (
|
|
1345
|
+
addEventIDUpdateListener: (a) => (s(f.broadcastResources), typeof a != "function" ? !1 : (E.add(a), !0)),
|
|
1346
|
+
removeEventIDUpdateListener: (a) => (s(f.broadcastResources), a ? E.delete(a) : E.clear(), !0)
|
|
1321
1347
|
}
|
|
1322
1348
|
}), P(A.navigator, "bmlCompat", {
|
|
1323
1349
|
browserPseudo: {
|
|
@@ -1328,48 +1354,48 @@ function ie(A, q) {
|
|
|
1328
1354
|
// Older broadcaster applications use the synchronous BML API instead
|
|
1329
1355
|
// of receiverDevice.getDeviceIdentifier(). Keep both paths on the same
|
|
1330
1356
|
// stable demo ACAS identifier.
|
|
1331
|
-
getIRDID: (
|
|
1332
|
-
readPersistentArray: (
|
|
1333
|
-
s(
|
|
1334
|
-
const T = A.localStorage.getItem(`arib:nvram:${
|
|
1357
|
+
getIRDID: (a) => (s(f.deviceIdentifier), Pq(a)),
|
|
1358
|
+
readPersistentArray: (a, h) => {
|
|
1359
|
+
s(f.persistentStorage);
|
|
1360
|
+
const T = A.localStorage.getItem(`arib:nvram:${a}`);
|
|
1335
1361
|
if (T) {
|
|
1336
1362
|
const k = JSON.parse(T);
|
|
1337
1363
|
return h.split(",").map((w) => k[w] ?? null);
|
|
1338
1364
|
}
|
|
1339
|
-
return Iq(
|
|
1365
|
+
return Iq(a, h, y);
|
|
1340
1366
|
},
|
|
1341
|
-
writePersistentArray: (
|
|
1342
|
-
s(
|
|
1367
|
+
writePersistentArray: (a, h, T) => {
|
|
1368
|
+
s(f.persistentStorage);
|
|
1343
1369
|
const k = Object.fromEntries(
|
|
1344
1370
|
h.split(",").map((w, W) => [w, T[W]])
|
|
1345
1371
|
);
|
|
1346
|
-
return A.localStorage.setItem(`arib:nvram:${
|
|
1372
|
+
return A.localStorage.setItem(`arib:nvram:${a}`, JSON.stringify(k)), T.length;
|
|
1347
1373
|
}
|
|
1348
1374
|
}
|
|
1349
1375
|
}), V = new Xq({
|
|
1350
1376
|
target: A,
|
|
1351
1377
|
adapter: q.mediaPlaneAdapter,
|
|
1352
1378
|
canUseBroadcastMedia: () => l.permits(
|
|
1353
|
-
|
|
1379
|
+
f.broadcastMedia
|
|
1354
1380
|
),
|
|
1355
|
-
installBroadcastObjectApi:
|
|
1381
|
+
installBroadcastObjectApi: b.installBroadcastObjectApi,
|
|
1356
1382
|
postRuntime: n
|
|
1357
1383
|
});
|
|
1358
1384
|
const g = () => {
|
|
1359
1385
|
te(A), l.startDocument(), V.startDocument();
|
|
1360
1386
|
};
|
|
1361
1387
|
n("installed", { url: A.location.href }), A.document.readyState === "loading" ? A.document.addEventListener("DOMContentLoaded", g, { once: !0 }) : queueMicrotask(g), l.startNavigationCapture(), V.startObserving(), A.addEventListener("pagehide", () => {
|
|
1362
|
-
V.dispose("document-unload", () =>
|
|
1363
|
-
}), A.addEventListener("error", (
|
|
1388
|
+
V.dispose("document-unload", () => m.dispose()), l.dispose(), e?.(), n("unloading", { url: A.location.href });
|
|
1389
|
+
}), A.addEventListener("error", (a) => {
|
|
1364
1390
|
n("error", {
|
|
1365
|
-
message:
|
|
1391
|
+
message: a.message
|
|
1366
1392
|
});
|
|
1367
1393
|
});
|
|
1368
1394
|
}
|
|
1369
1395
|
function Z(A) {
|
|
1370
1396
|
A.inert = !0, A.style.setProperty("pointer-events", "none", "important"), A.tabIndex = -1;
|
|
1371
1397
|
}
|
|
1372
|
-
class
|
|
1398
|
+
class me {
|
|
1373
1399
|
renderMode = "in-object";
|
|
1374
1400
|
media;
|
|
1375
1401
|
normalPlayerContainer;
|
|
@@ -1453,8 +1479,8 @@ function ne(A, q) {
|
|
|
1453
1479
|
if (!e || !Number.isInteger(q)) return !1;
|
|
1454
1480
|
try {
|
|
1455
1481
|
const t = e, i = e.document, r = i.activeElement ?? i.body ?? i.documentElement ?? i;
|
|
1456
|
-
for (const
|
|
1457
|
-
const n = new t.KeyboardEvent(
|
|
1482
|
+
for (const o of ["keydown", "keyup"]) {
|
|
1483
|
+
const n = new t.KeyboardEvent(o, {
|
|
1458
1484
|
bubbles: !0,
|
|
1459
1485
|
cancelable: !0,
|
|
1460
1486
|
view: e
|
|
@@ -2097,11 +2123,11 @@ function Ee(A, q, e) {
|
|
|
2097
2123
|
const t = U(q), i = U(e ?? q);
|
|
2098
2124
|
return A.replace(
|
|
2099
2125
|
/(\b(?:href|src|action|poster)\s*=\s*)(?:(['"])(\/[^/][^"']*)\2|(\/[^\s>]*))/gi,
|
|
2100
|
-
(r,
|
|
2101
|
-
const
|
|
2102
|
-
if (!
|
|
2103
|
-
const E = G(
|
|
2104
|
-
return n ? `${
|
|
2126
|
+
(r, o, n, l, s) => {
|
|
2127
|
+
const p = l ?? s;
|
|
2128
|
+
if (!p || p.startsWith(t)) return r;
|
|
2129
|
+
const E = G(p, t, i);
|
|
2130
|
+
return n ? `${o}${n}${E}${n}` : `${o}${E}`;
|
|
2105
2131
|
}
|
|
2106
2132
|
);
|
|
2107
2133
|
}
|
|
@@ -2109,13 +2135,13 @@ function ve(A, q = {}) {
|
|
|
2109
2135
|
const e = U(q.basePath), t = U(q.scopePath ?? q.basePath);
|
|
2110
2136
|
return A.replace(
|
|
2111
2137
|
/url\(\s*(["']?)(\/[^/)][^)]*)\1\s*\)/gi,
|
|
2112
|
-
(i, r,
|
|
2138
|
+
(i, r, o) => o.startsWith(e) ? i : `url(${r}${G(o, e, t)}${r})`
|
|
2113
2139
|
).replace(
|
|
2114
2140
|
/(@import\s+)(["'])(\/[^/][^"']*)\2/gi,
|
|
2115
|
-
(i, r,
|
|
2141
|
+
(i, r, o, n) => n.startsWith(e) ? i : `${r}${o}${G(n, e, t)}${o}`
|
|
2116
2142
|
);
|
|
2117
2143
|
}
|
|
2118
|
-
function
|
|
2144
|
+
function be(A, q = {}) {
|
|
2119
2145
|
const e = Ee(
|
|
2120
2146
|
C(A),
|
|
2121
2147
|
q.basePath,
|
|
@@ -2127,7 +2153,7 @@ function Me(A, q = {}) {
|
|
|
2127
2153
|
const i = t.index + t[0].length;
|
|
2128
2154
|
return `${e.slice(0, i)}${q.bootstrap}${e.slice(i)}`;
|
|
2129
2155
|
}
|
|
2130
|
-
function
|
|
2156
|
+
function fe(A) {
|
|
2131
2157
|
const q = A.data instanceof Uint8Array ? A.data : new Uint8Array(A.data);
|
|
2132
2158
|
return {
|
|
2133
2159
|
path: String(A.path).replace(/^\/+/, ""),
|
|
@@ -2135,7 +2161,7 @@ function me(A) {
|
|
|
2135
2161
|
data: q.slice()
|
|
2136
2162
|
};
|
|
2137
2163
|
}
|
|
2138
|
-
class
|
|
2164
|
+
class Me {
|
|
2139
2165
|
backend;
|
|
2140
2166
|
onError;
|
|
2141
2167
|
scheduleTask;
|
|
@@ -2160,7 +2186,7 @@ class be {
|
|
|
2160
2186
|
}
|
|
2161
2187
|
enqueue(q) {
|
|
2162
2188
|
if (this.disposed) throw new Error("Broadcast VFS session is disposed");
|
|
2163
|
-
const e =
|
|
2189
|
+
const e = fe(q), t = ++this.nextRevision;
|
|
2164
2190
|
return this.mirror.set(e.path, e), this.queue.push({ revision: t, generation: this.generation, resource: e }), this.scheduleDrain(), t;
|
|
2165
2191
|
}
|
|
2166
2192
|
waitFor(q) {
|
|
@@ -2297,12 +2323,12 @@ class ke {
|
|
|
2297
2323
|
async performRequestWithRegistration(q, e, t = []) {
|
|
2298
2324
|
const i = q.active ?? q.waiting ?? q.installing;
|
|
2299
2325
|
if (!i) throw new Error("Broadcast VFS worker is unavailable");
|
|
2300
|
-
return new Promise((r,
|
|
2326
|
+
return new Promise((r, o) => {
|
|
2301
2327
|
const n = new MessageChannel(), l = window.setTimeout(() => {
|
|
2302
|
-
n.port1.close(),
|
|
2328
|
+
n.port1.close(), o(new Error("Broadcast VFS worker did not respond"));
|
|
2303
2329
|
}, 5e3);
|
|
2304
2330
|
n.port1.onmessage = (s) => {
|
|
2305
|
-
window.clearTimeout(l), n.port1.close(), s.data?.ok ? r(s.data) :
|
|
2331
|
+
window.clearTimeout(l), n.port1.close(), s.data?.ok ? r(s.data) : o(new Error(s.data?.error || "Broadcast VFS worker error"));
|
|
2306
2332
|
}, i.postMessage(e, [n.port2, ...t]);
|
|
2307
2333
|
});
|
|
2308
2334
|
}
|
|
@@ -2318,14 +2344,14 @@ class ke {
|
|
|
2318
2344
|
}
|
|
2319
2345
|
}
|
|
2320
2346
|
export {
|
|
2321
|
-
|
|
2347
|
+
f as ARIB_PERMISSION_BITS,
|
|
2322
2348
|
Nq as AribApplicationBoundaryPolicy,
|
|
2323
2349
|
Te as AribReceiverHost,
|
|
2324
2350
|
re as BehindIframeMediaPlaneAdapter,
|
|
2325
|
-
|
|
2351
|
+
Me as BroadcastVfsSession,
|
|
2326
2352
|
Tq as DEFAULT_BROADCAST_BASE_PATH,
|
|
2327
2353
|
Y as DEFAULT_RECEIVER_DEVICE_IDENTIFIER,
|
|
2328
|
-
|
|
2354
|
+
me as DomObjectMediaPlaneAdapter,
|
|
2329
2355
|
Fq as RECEIVER_IRD_ID_TYPE,
|
|
2330
2356
|
Rq as RECEIVER_SYSTEM_IDENTITY,
|
|
2331
2357
|
ke as ServiceWorkerBroadcastVfs,
|
|
@@ -2334,14 +2360,14 @@ export {
|
|
|
2334
2360
|
C as deferRomSoundMarkup,
|
|
2335
2361
|
Bq as deriveBroadcastRootUrl,
|
|
2336
2362
|
Pq as getDefaultReceiverIrdId,
|
|
2337
|
-
|
|
2338
|
-
|
|
2363
|
+
fq as installAribSymbolFont,
|
|
2364
|
+
mq as installBroadcastClock,
|
|
2339
2365
|
uq as installRomSoundProtocol,
|
|
2340
2366
|
Ae as installRuntime,
|
|
2341
2367
|
z as normalizeBroadcastBaseUrl,
|
|
2342
2368
|
ue as normalizeLctBackgroundColor,
|
|
2343
2369
|
Ee as prefixBroadcastRootAttributes,
|
|
2344
|
-
|
|
2370
|
+
be as prepareBroadcastHtml,
|
|
2345
2371
|
ve as prepareBroadcastStylesheet,
|
|
2346
2372
|
Iq as readReceiverInformationArray,
|
|
2347
2373
|
H as resolveBroadcastUrl,
|