xvai-loi 0.1.76 → 0.1.78
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.
- package/co.txt +1 -1
- package/package.json +1 -1
- package/xvai-loi.js +67 -23
package/co.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
xvaiLoi112357
|
package/package.json
CHANGED
package/xvai-loi.js
CHANGED
|
@@ -6037,7 +6037,7 @@ function catNen(im, buoc = 7, tol = 40) {
|
|
|
6037
6037
|
return o;
|
|
6038
6038
|
}
|
|
6039
6039
|
var ts = /* @__PURE__ */ new Map();
|
|
6040
|
-
var dsTenTaiSan = () => [...ts.keys()].filter((k) => /^(trang|anh|vat|story|logo):|\.(png|jpg)$/i.test(k)).sort();
|
|
6040
|
+
var dsTenTaiSan = () => [...ts.keys(), ...globalThis.__dsTaiSanThu?.() || []].filter((k) => /^(trang|anh|vat|story|logo):|\.(png|jpg)$/i.test(k)).sort();
|
|
6041
6041
|
var moTaTaiSan = () => [...ts.entries()].filter(([, v]) => v).map(([k, v]) => [k, v.laVideo ? 1 : 0, +(v.dai || 0), v.width || 0, v.height || 0]);
|
|
6042
6042
|
var taiSan = (ten) => ten ? ts.get(ten) || globalThis.__taiSanThu?.(ten) || null : null;
|
|
6043
6043
|
var nhanTaiSan = (ten, im) => {
|
|
@@ -9822,11 +9822,12 @@ var KHUON_TOPN = {
|
|
|
9822
9822
|
ten: "Top N chi\u1EC1u s\xE2u (Captions)",
|
|
9823
9823
|
tram: { phut: 18.3, tyLe: 0.7, phan: [0.83, 0.81, 0.46], daiTV: 2.1, video: 0.33, nhanVat: ["Vietnamese people in a real everyday setting.", "Close-up of an object, hands or a place that shows the idea, no faces."] },
|
|
9824
9824
|
// cảnh trám / phút, % thời lượng, 3 phần đầu/giữa/cuối, độ dài trung vị (s), tỉ lệ clip động; nhanVat: xen kẽ ảnh có người / cận vật-tay-nơi (đối thủ trộn web, stock, 3D — B06-1027: toàn ảnh người → 'không thấy mặt' 12 % < 15)
|
|
9825
|
-
chu: { phut: [8, 18] },
|
|
9826
|
-
icon: { phut: 11.5 },
|
|
9827
|
-
cat: { moi10s: [4, 6] },
|
|
9825
|
+
chu: { phut: [8, 18], caoMin: 0.042 },
|
|
9826
|
+
// caoMin: nét chữ nhấn (kể cả dấu) / H — đối thủ trung vị 0,042 (đo tay 23 dòng); chữ bị ép ngang thấp hơn → 2 dòng icon: { phut: 11.5 }, cat: { moi10s: [4, 6], manhNguoi: 1.2, heChu: 0 }, // manhNguoi: mẩu người nói kẹp giữa 2 cảnh ngắn hơn thì lấp (trước 0,6 — VD-236); heChu: khe giữa 2 cảnh liền cùng có chữ (trước 0,06 → chớp 2 khung người nói = 2 cú cắt thừa; bàn thử 13 video 12/10 00:0x: 0,06 → 0 cắt TB 5,44 → 4,39/10 s, chồng chữ 0/13 — cảnh trước đã hết theo giờ PHIM nhờ bT)
|
|
9828
9827
|
nguoi: { phongToiDa: 1.8, matToiDa: 0.55 },
|
|
9829
9828
|
// matToiDa: hộp đầu (tóc→cằm) cao hơn 0,55 H thì KHÔNG dùng ô người / chia (không vừa ô) // MỌI ô người (PIP, thẻ, chia) phóng khung gốc tối đa 1,8× (độ nét) — trước: PIP 1,6, thẻ 1,3 (B05-1027: thẻ hiện cả người nhỏ)
|
|
9829
|
+
lietKe: { xenKe: 2 },
|
|
9830
|
+
// video liệt kê: cứ thẻ bước thứ 2 → ảnh toàn khung + tiêu đề (đối thủ đổi kiểu, không lặp 1 khuôn thẻ)
|
|
9830
9831
|
soTrenAnh: { phanDau: 1 / 3, toiDa: 2 },
|
|
9831
9832
|
// cảnh CON SỐ ở 1/3 đầu → số đè lên ẢNH minh hoạ (đối thủ 1/3 đầu 83 % trám; số trên người nói không tính trám)
|
|
9832
9833
|
bien: { dau: 1.5, cuoi: 2.5, ctaAnh: true }
|
|
@@ -9989,6 +9990,27 @@ function kieuChu() {
|
|
|
9989
9990
|
kcCache = k || {};
|
|
9990
9991
|
return kcCache;
|
|
9991
9992
|
}
|
|
9993
|
+
function haiDong4(g, txt, px, maxW, pxMin, pxMax) {
|
|
9994
|
+
const t = txt.normalize("NFC"), ws = t.split(/\s+/).filter(Boolean);
|
|
9995
|
+
if (t.indexOf(String.fromCharCode(10)) >= 0 || ws.length < 3) return [t, px, t.indexOf(String.fromCharCode(10)) >= 0];
|
|
9996
|
+
g.save();
|
|
9997
|
+
g.font = "900 " + px.toFixed(1) + "px " + FB;
|
|
9998
|
+
const w = g.measureText(t).width;
|
|
9999
|
+
if (px * Math.min(1, maxW / w) >= pxMin) {
|
|
10000
|
+
g.restore();
|
|
10001
|
+
return [t, px, false];
|
|
10002
|
+
}
|
|
10003
|
+
let tot = "", m = 1e9;
|
|
10004
|
+
for (let i = 1; i < ws.length; i++) {
|
|
10005
|
+
const a = ws.slice(0, i).join(" "), b = ws.slice(i).join(" "), x = Math.max(g.measureText(a).width, g.measureText(b).width);
|
|
10006
|
+
if (x < m) {
|
|
10007
|
+
m = x;
|
|
10008
|
+
tot = a + String.fromCharCode(10) + b;
|
|
10009
|
+
}
|
|
10010
|
+
}
|
|
10011
|
+
g.restore();
|
|
10012
|
+
return [tot, Math.min(pxMax, px * Math.min(1, maxW / m)), true];
|
|
10013
|
+
}
|
|
9992
10014
|
function chu2(g, txt, x, y, px, kieu, a = 1, maxW = 0) {
|
|
9993
10015
|
if (!txt || a <= 0) return;
|
|
9994
10016
|
txt = String(txt).normalize("NFC");
|
|
@@ -10803,19 +10825,21 @@ dangKy("cmNen", (g, d, tuoi, W4, H2, nen2, _s, dai2) => {
|
|
|
10803
10825
|
if (hv2 > 0) g.drawImage(vt, W4 / 2 - wv / 2, yv - hv2 / 2, wv, hv2);
|
|
10804
10826
|
g.restore();
|
|
10805
10827
|
}
|
|
10806
|
-
|
|
10828
|
+
const t2 = d.tieu ? haiDong4(g, String(d.tieu), 122 * H2 / 1920, 0.76 * W4, KHUON_TOPN.chu.caoMin / 0.92 * H2, 0.05 * H2) : null;
|
|
10829
|
+
if (t2) chu2(g, t2[0], W4 / 2, (t2[2] ? 0.118 : 0.135) * H2 + (1 - ka) * 70 * H2 / 1920, t2[1], "brand", kep12(tuoi / 0.15), 0.76 * W4);
|
|
10807
10830
|
if (d.so) {
|
|
10808
10831
|
g.save();
|
|
10809
10832
|
g.globalAlpha = a * kep12((tuoi - 0.15) / 0.2);
|
|
10810
10833
|
g.font = "900 " + (0.02 * H2).toFixed(1) + "px " + FB;
|
|
10811
10834
|
const t = (d.nhom || "M\u1EE4C") + " " + d.so + "/" + d.N, tw = g.measureText(t).width + 0.05 * W4;
|
|
10812
|
-
|
|
10835
|
+
const dy = t2 && t2[2] ? 0.01 * H2 : 0;
|
|
10836
|
+
bo(g, W4 / 2 - tw / 2, 0.172 * H2 + dy, tw, 0.034 * H2, 0.017 * H2);
|
|
10813
10837
|
g.fillStyle = "rgba(20,20,26,0.85)";
|
|
10814
10838
|
g.fill();
|
|
10815
10839
|
g.fillStyle = VANG;
|
|
10816
10840
|
g.textAlign = "center";
|
|
10817
10841
|
g.textBaseline = "middle";
|
|
10818
|
-
g.fillText(t, W4 / 2, 0.189 * H2);
|
|
10842
|
+
g.fillText(t, W4 / 2, 0.189 * H2 + dy);
|
|
10819
10843
|
g.restore();
|
|
10820
10844
|
}
|
|
10821
10845
|
if (d.ui) theUI(g, d.ui, tuoi, W4, H2, 1);
|
|
@@ -11409,7 +11433,7 @@ function cum2(ws) {
|
|
|
11409
11433
|
for (let i = w.length - 2; i >= 0; i--) if (!hu(w[i]) && !hu(w[i + 1])) return w[i] + " " + w[i + 1];
|
|
11410
11434
|
return w.slice(-2).join(" ");
|
|
11411
11435
|
}
|
|
11412
|
-
var
|
|
11436
|
+
var haiDong5 = (s, n = 10) => {
|
|
11413
11437
|
const w = s.split(" ");
|
|
11414
11438
|
if (s.length <= n || w.length < 2) return s;
|
|
11415
11439
|
let best = 1, d = 99;
|
|
@@ -11778,7 +11802,7 @@ function lapCuongMe(o) {
|
|
|
11778
11802
|
})(sach3(kb?.moc || layMoc(ws, kb)).split(" "))) || hoa3(cum2(cs[0] ? cs[0].chu : []));
|
|
11779
11803
|
const Lm = Math.min(Math.max(2.4, docGiay(moc) + 0.4), Math.max(1.2, f1 - 0.3));
|
|
11780
11804
|
bc = "B2 moc";
|
|
11781
|
-
de(0, Lm, { uuTien: UT.moc, bo: "depth", giant:
|
|
11805
|
+
de(0, Lm, { uuTien: UT.moc, bo: "depth", giant: haiDong5(moc, 11), chu2: coBuoc ? N + " " + LOAI2 : "", yChu: 0.165, vao: 1e-3, z: 1.3, keu: "whoosh" });
|
|
11782
11806
|
if (coBuoc && f1 - Lm > 3.4) de(Lm + 0.3, Math.min(3.2, f1 - Lm - 0.6), { uuTien: UT.moc, bo: "cut", tieu: N + " " + LOAI2, hang: muc.map((m) => m.ten).slice(0, 8), keu: "pop", st: "chuot", stX: 0.43, stY: 0.188, stR: 0.042, stTre: 1.2 });
|
|
11783
11807
|
else if (N >= 2) ghiL("bo", { bo: "cut", f: Lm + 0.3, d: 3.2 }, "moc ngan (f1 - Lm <= 3,4 s) \u2192 bo hang N muc");
|
|
11784
11808
|
const gonTen = (x) => {
|
|
@@ -11797,7 +11821,7 @@ function lapCuongMe(o) {
|
|
|
11797
11821
|
const c = cs.filter((x) => x.f >= m.f + Lc + 2 && x.f + 2.4 <= m.b - 1).sort((p, q) => Math.abs(p.f - (m.f + L * 0.6)) - Math.abs(q.f - (m.f + L * 0.6)))[0];
|
|
11798
11822
|
if (c) {
|
|
11799
11823
|
const t = hoa3(cum2(c.chu));
|
|
11800
|
-
de(c.f, Math.max(2.2, docGiay(t) + 0.6), { uuTien: UT.chu, bo: "depth", giant:
|
|
11824
|
+
de(c.f, Math.max(2.2, docGiay(t) + 0.6), { uuTien: UT.chu, bo: "depth", giant: haiDong5(t, 9), keu: "pop" });
|
|
11801
11825
|
}
|
|
11802
11826
|
}
|
|
11803
11827
|
});
|
|
@@ -11813,7 +11837,7 @@ function lapCuongMe(o) {
|
|
|
11813
11837
|
if (iN >= 0 && ws[iN + 2] && /^[A-ZÀ-Ỹ]/.test(String(ws[iN + 2].text || "").trim())) {
|
|
11814
11838
|
const nm = [];
|
|
11815
11839
|
for (let k = iN + 2; k < W22.length && nm.length < 4 && !DUNG.test(W22[k].t) && !/^(nhớ|hãy|bấm)$/.test(W22[k].t); k++) nm.push(W22[k].t);
|
|
11816
|
-
if (nm.length) de(W22[iN].f, 1.8, { uuTien: UT.cta, bo: "depth", giant:
|
|
11840
|
+
if (nm.length) de(W22[iN].f, 1.8, { uuTien: UT.cta, bo: "depth", giant: haiDong5(hoa3(suaChu(nm.join(" "))), 9), keu: "pop" }, 0.5);
|
|
11817
11841
|
}
|
|
11818
11842
|
if (iC >= 0) de(fC, 2.4, { uuTien: UT.cta, bo: "depth", giant: W22[iC].t === "comment" ? "COMMENT" : "B\xCCNH LU\u1EACN", yChu: 0.17, chu2: kw.length ? '"' + hoa3(kw.filter((w, i) => i === 0 || String(w).toLocaleLowerCase("vi") !== String(kw[i - 1]).toLocaleLowerCase("vi")).join(" ")) + '"' : "", keu: "pop" }, 1);
|
|
11819
11843
|
if (iL >= 0) de(W22[iL].f, 2, { uuTien: UT.cta, bo: "cut", giant: "L\u01AFU VIDEO", st: "luu", keu: "pop" }, 1);
|
|
@@ -11903,7 +11927,7 @@ function lapCuongMe(o) {
|
|
|
11903
11927
|
else if (x.kieu === "vat") {
|
|
11904
11928
|
const LG = timLogo(suaChu(chuK + " " + sach3(String(x.tu || ""))))[0];
|
|
11905
11929
|
if (LG) napHinhLogo(LG.slug);
|
|
11906
|
-
de(f2, 2.3, { uuTien: UT.vat, bo: "cut", vat: co && !LG ? ten2 : "", logoTo: LG, giant:
|
|
11930
|
+
de(f2, 2.3, { uuTien: UT.vat, bo: "cut", vat: co && !LG ? ten2 : "", logoTo: LG, giant: haiDong5(chuK, 11), chu2: co || LG ? "" : chu22, keu: "pop" }, 3);
|
|
11907
11931
|
} else if (x.kieu === "ds" && Array.isArray(x.dong) && x.dong.length >= 2) {
|
|
11908
11932
|
const dg = x.dong.slice(0, 3).map((v) => hoa3(suaChu(sach3(String(v || "")))).split(" ").slice(0, 6).join(" ")).filter(Boolean);
|
|
11909
11933
|
const qs = dg.map((v) => {
|
|
@@ -11913,7 +11937,7 @@ function lapCuongMe(o) {
|
|
|
11913
11937
|
dg.splice(0, 9, ...dg2);
|
|
11914
11938
|
de(f2, Math.max(2.4, Math.min(3.4, (moc2.filter((v) => v != null).pop() || 1) + 1.3)), { uuTien: UT.ds, bo: "kinh", dong: dg, moc: moc2, ten: co ? ten2 : "", keu: "whoosh" }, 3);
|
|
11915
11939
|
} else if (x.kieu === "so") de(f2, 2.2, { uuTien: UT.so, bo: "cut", giant: chuK, cam: 1, chu2: chu22, keu: "pop" }, 3);
|
|
11916
|
-
else if (chuK) de(f2, Math.max(2, docGiay(chuK) + 0.6), { uuTien: UT.chu, bo: "depth", giant:
|
|
11940
|
+
else if (chuK) de(f2, Math.max(2, docGiay(chuK) + 0.6), { uuTien: UT.chu, bo: "depth", giant: haiDong5(chuK, 9), keu: "pop" }, 3);
|
|
11917
11941
|
if (ung.length === n0 && x.kieu !== "anh") {
|
|
11918
11942
|
boC.push([chuK || x.tu, +f2.toFixed(2), "khong-dat", x.kieu]);
|
|
11919
11943
|
if (loai.length === n1) ghiL("bo", { bo: x.kieu || "chu", f: f2, d: 0 }, "khong goi dat(): ds < 2 dong hoac khong co chu: " + String(x.tu || ""));
|
|
@@ -11991,7 +12015,7 @@ function lapCuongMe(o) {
|
|
|
11991
12015
|
if (k < 2) k = kc;
|
|
11992
12016
|
if (k < 2) return;
|
|
11993
12017
|
const t3 = hoa3(suaChu([k - 2, k - 1, k].map((q) => sach3(ws[q].text)).join(" "))), f32 = Math.max(a + 0.3, Math.min(W22[k - 2].f - 0.1, b - 1.9));
|
|
11994
|
-
if (t3) dat(f32, Math.max(1.3, Math.min(2.1, b - f32 - 0.16)), { bo: "depth", giant:
|
|
12018
|
+
if (t3) dat(f32, Math.max(1.3, Math.min(2.1, b - f32 - 0.16)), { bo: "depth", giant: haiDong5(t3, 11), keu: "pop" }, 0.5);
|
|
11995
12019
|
});
|
|
11996
12020
|
}
|
|
11997
12021
|
sp.sort((p, q) => p.f - q.f).forEach((s, k) => {
|
|
@@ -12032,7 +12056,7 @@ function lapCuongMe(o) {
|
|
|
12032
12056
|
const p = sp[k - 1], q = sp[k], cl = (s) => !!(s.giant || s.tieu || s.dong || s.ui || s.doc || s.chu);
|
|
12033
12057
|
if (p.bo === "kinh" && q.bo === "kinh" && q.f - p.f - p.d < 1) {
|
|
12034
12058
|
ghiL("rut-dong", q, "2 the kinh lien < 1 s \u2192 khung tron, mat dong 2-3");
|
|
12035
|
-
q.bo = "tron", q.giant =
|
|
12059
|
+
q.bo = "tron", q.giant = haiDong5(String((q.dong || [])[0] || ""), 11);
|
|
12036
12060
|
}
|
|
12037
12061
|
if (cl(p) && cl(q) && q.f - p.f - p.d < 1 && q.f - p.f - 1 >= 1.2) {
|
|
12038
12062
|
ghiL("rut", p, "2 canh chu lien < 1 s \u2192 ve mat + phu de >= 1 s", [p.f, q.f - 1]);
|
|
@@ -12440,7 +12464,7 @@ function lapCuongMe(o) {
|
|
|
12440
12464
|
}
|
|
12441
12465
|
if (dg.length >= 3) ghiL("rut-dong", s, "qua 3 the kinh \u2192 chu sau dau / nen toi, mat dong 3");
|
|
12442
12466
|
s.bo = xen++ % 2 ? "cut" : "depth";
|
|
12443
|
-
s.giant =
|
|
12467
|
+
s.giant = haiDong5(String(dg[0] || ""), 9);
|
|
12444
12468
|
s.chu2 = dg[1] || "";
|
|
12445
12469
|
if (s.bo === "cut") s.toiNen = 1;
|
|
12446
12470
|
s.dong = void 0;
|
|
@@ -12505,7 +12529,7 @@ function lapCuongMe(o) {
|
|
|
12505
12529
|
v.vat = v.ten;
|
|
12506
12530
|
v.ten = "";
|
|
12507
12531
|
v.vatChia = 0;
|
|
12508
|
-
v.giant =
|
|
12532
|
+
v.giant = haiDong5(String(v.chu || ""), 11);
|
|
12509
12533
|
v.chu = "";
|
|
12510
12534
|
v.st = v.st0;
|
|
12511
12535
|
return true;
|
|
@@ -12879,7 +12903,7 @@ function lapCuongMe(o) {
|
|
|
12879
12903
|
}
|
|
12880
12904
|
}
|
|
12881
12905
|
{
|
|
12882
|
-
const nt = (x) => String(x || "").replace(/\s+/g, " ").trim().toLocaleLowerCase("vi");
|
|
12906
|
+
const SOC = { "m\u1ED9t": "1", "hai": "2", "ba": "3", "b\u1ED1n": "4", "n\u0103m": "5", "s\xE1u": "6", "b\u1EA3y": "7", "t\xE1m": "8", "ch\xEDn": "9", "m\u01B0\u1EDDi": "10" }, nt = (x) => String(x || "").normalize("NFC").replace(/\s+/g, " ").trim().toLocaleLowerCase("vi").split(" ").map((w) => SOC[w] ?? w).join(" ");
|
|
12883
12907
|
sp.sort((p, q) => p.f - q.f);
|
|
12884
12908
|
for (let i = sp.length - 1; i > 0; i--) {
|
|
12885
12909
|
const x = sp[i];
|
|
@@ -12908,7 +12932,7 @@ function lapCuongMe(o) {
|
|
|
12908
12932
|
const ch = sp.filter((x) => x.bo !== "phong");
|
|
12909
12933
|
for (let i = 0; i + 1 < ch.length; i++) {
|
|
12910
12934
|
const x = ch[i], y = ch[i + 1], g = y.f - (x.f + x.d);
|
|
12911
|
-
if (g > 0.02 && g <
|
|
12935
|
+
if (g > 0.02 && g < +(globalThis.__manhNguoi ?? KHUON_TOPN.cat.manhNguoi) && !x.khoa) {
|
|
12912
12936
|
ghiL("doi", x, "VD-236 lap khe mat " + g.toFixed(2) + " s");
|
|
12913
12937
|
x.d = +(y.f - x.f).toFixed(2);
|
|
12914
12938
|
nL++;
|
|
@@ -12935,6 +12959,20 @@ function lapCuongMe(o) {
|
|
|
12935
12959
|
daTren.add(ten2);
|
|
12936
12960
|
}
|
|
12937
12961
|
});
|
|
12962
|
+
{
|
|
12963
|
+
let n2 = 0;
|
|
12964
|
+
the2.forEach((s) => {
|
|
12965
|
+
if (s.so == null || !s.anhTren || s.ui || s.doc) return;
|
|
12966
|
+
const XK = +(globalThis.__lkXenKe ?? KHUON_TOPN.lietKe.xenKe);
|
|
12967
|
+
if (!(XK > 0) || n2++ % XK !== XK - 1) return;
|
|
12968
|
+
s.bo = "anh";
|
|
12969
|
+
s.ten = s.anhTren;
|
|
12970
|
+
s.chu = s.tieu;
|
|
12971
|
+
s.chu2 = "";
|
|
12972
|
+
s.theAnh = 1;
|
|
12973
|
+
ghiL("doi", s, "khuon liet ke: the buoc " + s.so + " \u2192 anh toan khung + tieu de (xen ke " + KHUON_TOPN.lietKe.xenKe + ")");
|
|
12974
|
+
});
|
|
12975
|
+
}
|
|
12938
12976
|
}
|
|
12939
12977
|
G4.__lichSp = sp.map((s, i) => ({ i, id: s.id, yChu: s.yChu, coChu: s.coChu, fx: s.fx, stX: s.stX, stY: s.stY, f: +s.f.toFixed(2), d: +s.d.toFixed(2), bo: s.bo, giant: s.giant || "", chu: s.chu || "", chu2: s.chu2 || "", st: s.st || "", ten: s.ten || "", tieu: s.tieu || "", khoa: s.khoa ? 1 : 0 }));
|
|
12940
12978
|
}
|
|
@@ -12950,9 +12988,10 @@ function lapCuongMe(o) {
|
|
|
12950
12988
|
const cc = sp.filter((x) => x.bo !== "phong").sort((p, q) => p.f - q.f);
|
|
12951
12989
|
for (let i = 0; i + 1 < cc.length; i++) {
|
|
12952
12990
|
const x = cc[i], y = cc[i + 1];
|
|
12953
|
-
|
|
12954
|
-
|
|
12955
|
-
x
|
|
12991
|
+
const coChu = (z) => !!String(z.giant || z.chu || z.tieu || "").trim(), he = coChu(x) && coChu(y) ? globalThis.__heChu ?? KHUON_TOPN.cat.heChu : 0;
|
|
12992
|
+
if (x.f + x.d > y.f - he && y.f > x.f + 0.3 && !x.khoa) {
|
|
12993
|
+
if (he) ghiL("doi", x, "N8: cat duoi " + (x.f + x.d - y.f + he).toFixed(2) + " s chong canh sau (2 chu cung hien)");
|
|
12994
|
+
x.d = +(y.f - x.f - he).toFixed(2);
|
|
12956
12995
|
}
|
|
12957
12996
|
}
|
|
12958
12997
|
}
|
|
@@ -19035,6 +19074,11 @@ async function handleExport(currentProject, setExporting, setExportedBlob, addLo
|
|
|
19035
19074
|
});
|
|
19036
19075
|
} catch (e) {
|
|
19037
19076
|
}
|
|
19077
|
+
try {
|
|
19078
|
+
const G3 = globalThis;
|
|
19079
|
+
if (G3.__kbNguon === "loi") window.__canhBaoAI = /hạn mức|quota|limit/i.test(String(G3.__kbLoi || "")) ? "AI c\u1EE7a Flow \u0111\xE3 h\u1EBFt h\u1EA1n m\u1EE9c h\xF4m nay \u2014 b\u1EA3n n\xE0y d\u1EF1ng kh\xF4ng c\xF3 k\u1ECBch b\u1EA3n AI (\xEDt c\u1EA3nh minh ho\u1EA1). Th\u1EED l\u1EA1i ng\xE0y mai \u0111\u1EC3 c\xF3 b\u1EA3n \u0111\u1EA7y \u0111\u1EE7." : "AI so\u1EA1n k\u1ECBch b\u1EA3n l\u1ED7i (" + String(G3.__kbLoi || "").slice(0, 60) + ") \u2014 b\u1EA3n d\u1EF1ng \u0111\u01A1n gi\u1EA3n. B\u1EA5m L\xE0m pro l\u1EA1i \u0111\u1EC3 th\u1EED l\u1EA7n n\u1EEFa.";
|
|
19080
|
+
} catch (e) {
|
|
19081
|
+
}
|
|
19038
19082
|
try {
|
|
19039
19083
|
window.__anhBu = lapAnhTheoKhuon(kb, window.__wsGocKB || currentProject.speechDraft?.analysis?.words || []);
|
|
19040
19084
|
} catch (e) {
|
|
@@ -20816,7 +20860,7 @@ function datCauLenh(a) {
|
|
|
20816
20860
|
on2 = true;
|
|
20817
20861
|
window.addEventListener("message", async (ev) => {
|
|
20818
20862
|
const d = ev.data;
|
|
20819
|
-
if (!d || d.
|
|
20863
|
+
if (!d || d.xvaiLoi112357 !== true) return;
|
|
20820
20864
|
const o = String(ev.origin || "");
|
|
20821
20865
|
if (!(o.indexOf("https://flow.google.com") === 0 || o.indexOf("https://labs.google") === 0)) return;
|
|
20822
20866
|
const tra = (kq) => {
|