xvai-loi 0.1.147 → 0.1.149

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.
Files changed (3) hide show
  1. package/co.txt +1 -1
  2. package/package.json +1 -1
  3. package/xvai-loi.js +46 -12
package/co.txt CHANGED
@@ -1 +1 @@
1
- xvaiLoi140953
1
+ xvaiLoi141117
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xvai-loi",
3
- "version": "0.1.147",
3
+ "version": "0.1.149",
4
4
  "description": "Loi dung video (Edit Video Tu Dong) nap vao tool Google Flow qua o cam engine/oCam.ts",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
package/xvai-loi.js CHANGED
@@ -1806,12 +1806,13 @@ var TO_MAU = {
1806
1806
  // trọng số hàm điểm (chỉnh 1 lần trên 14 video bài tập, không chỉnh theo từng video)
1807
1807
  };
1808
1808
  var LOP = (x) => x.bo === "card" ? "THE_TREN" : x.bo === "chia" || x.bo === "tron" ? "CHIA_DOI" : x.bo === "phong" ? "NGUOI_ZOOM" : x.bo === "kinh" || x.bo === "sodo" ? "DO_HOA" : x.bo === "anh" ? x.ten && /^(anh|trang|vat):/.test(String(x.ten)) || x.video ? "TRAM" : "DO_HOA" : "NGUOI_TACH";
1809
+ var TM = TO_MAU;
1809
1810
  var pDH = (a, b) => {
1810
- const h = TO_MAU.demDH[a] || {}, n = Object.values(h).reduce((x, y) => x + y, 0);
1811
+ const h = TM.demDH[a] || {}, n = Object.values(h).reduce((x, y) => x + y, 0);
1811
1812
  return ((h[b] || 0) + 0.3) / (n + 1.5);
1812
1813
  };
1813
1814
  var pChuyen = (a, b) => {
1814
- const h = TO_MAU.dem[a] || {}, n = Object.values(h).reduce((x, y) => x + y, 0);
1815
+ const h = TM.dem[a] || {}, n = Object.values(h).reduce((x, y) => x + y, 0);
1815
1816
  return ((h[b] || 0) + 0.5) / (n + 3.5);
1816
1817
  };
1817
1818
  var bd = (x) => x.toLocaleLowerCase("vi").normalize("NFD").replace(/[̀-ͯ]/g, "").replace(/đ/g, "d");
@@ -1829,6 +1830,7 @@ var haiDong = (t) => {
1829
1830
  return w.slice(0, k).join(" ") + String.fromCharCode(10) + w.slice(k).join(" ");
1830
1831
  };
1831
1832
  function cachTrinhBay(x, f2, d, nc) {
1833
+ if (TM.theMuc === "depth" && x.bo === "card" && x.tieu) return [{ ...x, bo: "depth", giant: haiDong(String(x.tieu)) }];
1832
1834
  const r = x.bo === "kinh" && Array.isArray(x.dong) && x.dong.length === 1 && String(x.dong[0]).trim().split(/\s+/).length < 3 ? [] : [x], dong = Array.isArray(x.dong) ? x.dong.filter(Boolean) : [];
1833
1835
  const chu1 = x.bo === "kinh" && dong.length === 1 ? String(dong[0]) : (x.bo === "depth" || x.bo === "cut") && x.giant && !x.vat && !x.logoTo && !x.cam && (x.uuTien || 0) < 90 ? String(x.giant).split(String.fromCharCode(10)).join(" ") : "";
1834
1836
  if (chu1) {
@@ -1848,7 +1850,9 @@ function gioNoi(x, f0, nc) {
1848
1850
  return -1;
1849
1851
  }
1850
1852
  function giaiBoCuc(ung, tong, nc = {}) {
1851
- const T = TO_MAU, pa = [];
1853
+ const o = nc.toMau;
1854
+ TM = o ? { ...TO_MAU, ...o, lop: { ...TO_MAU.lop, ...o.lop || {} }, zoom: { ...TO_MAU.zoom, ...o.zoom || {} }, diem: { ...TO_MAU.diem, ...o.diem || {} } } : TO_MAU;
1855
+ const T = TM, pa = [];
1852
1856
  globalThis.__giaiUng = ung.map((c) => [+c[0].toFixed(2), +c[1].toFixed(2), c[2].bo, c[2].giant || "", c[2].chu || "", (c[2].dong || []).join("|"), c[2].ten || "", c[2].uuTien, c[4]]);
1853
1857
  ung.forEach((c, i) => {
1854
1858
  const [f0, d0, x0, doi] = c, batBuoc = (x0.uuTien || 0) >= 90, W3 = T.diem;
@@ -6021,7 +6025,7 @@ function lapCuongMe(o) {
6021
6025
  });
6022
6026
  if (GIAI) {
6023
6027
  bc = "B4b giai";
6024
- const r = giaiBoCuc(ung, tong, { W2: W22, matOn: (a, b) => tyLeMat(a, b) >= 0.7 && yenMat(a, b) });
6028
+ const r = giaiBoCuc(ung, tong, { W2: W22, matOn: (a, b) => tyLeMat(a, b) >= 0.7 && yenMat(a, b), toMau: o.kieu.toMau });
6025
6029
  sp.push(...r.sp);
6026
6030
  sp.forEach((s) => {
6027
6031
  if (s.m) giu.add(s.m);
@@ -7495,8 +7499,35 @@ var mau = (HO2) => {
7495
7499
  }];
7496
7500
  };
7497
7501
 
7502
+ // flow-src/engine/mauMucDich.ts
7503
+ var SACH = { id: "giong-sach", ten: "Ph\u1EE5 \u0111\u1EC1 s\u1EA1ch", nhacSan: 1, sach: 1, doan: void 0 };
7504
+ var CHUYEN_GIA = { id: "giong-cuongme-cg", ten: "Chuy\xEAn gia chia s\u1EBB", to: {
7505
+ lop: { NGUOI_TACH: { d: 4, mat: 1 }, THE_TREN: { d: 3, mat: 1 }, CHIA_DOI: { d: 4, mat: 1 }, TRAM: { d: 2.5, mat: 0 }, DO_HOA: { d: 3, mat: 0 } },
7506
+ // NGUOI_TACH = chữ sau đầu (người to nguyên khung) là chính; THE_TREN/CHIA_DOI thu nhỏ người → hiếm; TRAM/DO_HOA mất mặt → hiếm.
7507
+ dem: {
7508
+ NGUOI: { NGUOI_TACH: 12, NGUOI_ZOOM: 6, THE_TREN: 2, CHIA_DOI: 2, TRAM: 2, DO_HOA: 1 },
7509
+ NGUOI_TACH: { NGUOI: 10, NGUOI_ZOOM: 2, THE_TREN: 1, CHIA_DOI: 1, TRAM: 1, DO_HOA: 1 },
7510
+ NGUOI_ZOOM: { NGUOI: 6, NGUOI_TACH: 4, THE_TREN: 1 },
7511
+ THE_TREN: { NGUOI: 8, NGUOI_TACH: 3, NGUOI_ZOOM: 2 },
7512
+ CHIA_DOI: { NGUOI: 8, NGUOI_TACH: 3, NGUOI_ZOOM: 1 },
7513
+ TRAM: { NGUOI: 8, NGUOI_TACH: 3, NGUOI_ZOOM: 1 },
7514
+ DO_HOA: { NGUOI: 8, NGUOI_TACH: 3, NGUOI_ZOOM: 1 }
7515
+ },
7516
+ demDH: {
7517
+ NGUOI_TACH: { NGUOI_TACH: 3, THE_TREN: 1, CHIA_DOI: 1, TRAM: 1, DO_HOA: 1 },
7518
+ THE_TREN: { NGUOI_TACH: 4, TRAM: 1 },
7519
+ CHIA_DOI: { NGUOI_TACH: 4, TRAM: 1 },
7520
+ TRAM: { NGUOI_TACH: 4, THE_TREN: 1 },
7521
+ DO_HOA: { NGUOI_TACH: 4, THE_TREN: 1 }
7522
+ },
7523
+ theMuc: "depth",
7524
+ nguoiNganS: 0.8,
7525
+ zoomMoiPhut: 3,
7526
+ diem: { cat: 8, phu: 3, chop: 20, coAnh: 0 }
7527
+ } };
7528
+
7498
7529
  // flow-src/engine/mauThem.ts
7499
- var mauThem = (HO2) => [khoiCuongMe_exports].flatMap((m) => m.mau(HO2)).flatMap((m) => m.id === "giong-cuongme" ? [m, { ...m, id: "giong-cuongme-goc", ten: "CUONGME g\u1ED1c (b\u1ED9 gi\u1EA3i, \u0111ang th\u1EED)", doan: { ...m.doan, giai: 1 } }] : [m]);
7530
+ var mauThem = (HO2) => [khoiCuongMe_exports].flatMap((m) => m.mau(HO2)).flatMap((m) => m.id === "giong-cuongme" ? [m, { ...m, id: "giong-cuongme-goc", ten: "CUONGME g\u1ED1c (b\u1ED9 gi\u1EA3i, \u0111ang th\u1EED)", doan: { ...m.doan, giai: 1 } }, { ...m, ...SACH, nhac: m.doan.nhac }, { ...m, id: CHUYEN_GIA.id, ten: CHUYEN_GIA.ten, doan: { ...m.doan, giai: 1, toMau: CHUYEN_GIA.to } }] : [m]);
7500
7531
 
7501
7532
  // flow-src/engine/mauPhuDe.ts
7502
7533
  var P2 = { ...mauPrism_default, mau: [...new Map(mauPrism_default.mau.concat(mauHo_default, mauKhoi(mauHo_default), mauThem(mauHo_default)).map((m) => [m.id, m])).values()] };
@@ -8531,8 +8562,11 @@ var MAU_STUDIO = [
8531
8562
  { id: "giong-paper-ii", thu: 1, ten: "Gi\u1EA5y X\xE9", mo: "Gi\u1EA5y x\xE9, b\u0103ng keo, h\u1ED9p tr\u1EAFng" },
8532
8563
  { id: "giong-sketch", thu: 1, ten: "B\u1EA3ng Ph\u1EA5n", mo: "Ti\xEAu \u0111\u1EC1 v\xF2ng b\xFAt ch\xEC, ch\u1EEF vi\u1EBFt tay" },
8533
8564
  { id: "giong-story", thu: 1, ten: "Story", mo: "Serif nghi\xEAng, t\u1EEB nh\u1EA5n v\xE0ng chanh" },
8534
- { id: "giong-cuongme", ten: "Top N chi\u1EC1u s\xE2u", mo: "Th\u1EBB bo g\xF3c + \u0111\u1EA7u nh\xF4, ch\u1EEF sau \u0111\u1EA7u, n\u1EC1n cam (CUONGME)" },
8565
+ { id: "giong-cuongme", dat: 1, ten: "Top N chi\u1EC1u s\xE2u", mo: "Th\u1EBB bo g\xF3c + \u0111\u1EA7u nh\xF4, ch\u1EEF sau \u0111\u1EA7u, n\u1EC1n cam (CUONGME)", hop: "Ki\u1EBFn th\u1EE9c d\u1EA1ng danh s\xE1ch, chia s\u1EBB kinh nghi\u1EC7m" },
8535
8566
  { id: "giong-cuongme-goc", ten: "CUONGME g\u1ED1c", mo: "B\u1ED9 gi\u1EA3i theo t\u1EDD m\u1EABu C\u01B0\u1EDDng M\xEA AI (\u0111ang th\u1EED, L\xE1t 3a)", thu: 1 },
8567
+ { id: "giong-sach", thu: 1, ten: "Ph\u1EE5 \u0111\u1EC1 s\u1EA1ch", mo: "Ch\u1EC9 ph\u1EE5 \u0111\u1EC1 + c\u1EAFt l\u1EB7ng + nh\u1EA1c nh\u1EB9 \xB7 nhanh, 0 \u1EA3nh", hop: "M\u1ECDi video: nhanh, an to\xE0n" },
8568
+ { id: "giong-cuongme-cg", thu: 1, ten: "Chuy\xEAn gia chia s\u1EBB", mo: "Ng\u01B0\u1EDDi n\xF3i l\xE0 ch\xEDnh, \xEDt th\u1EBB, nh\u1ECBp ch\u1EADm", hop: "Coach, gi\xE1o vi\xEAn, chuy\xEAn gia" },
8569
+ // 14/10 phiếu 013: ẩn tới khi Tú Đạt
8536
8570
  { id: "giong-paper-ii-v2", thu: 1, ten: "Gi\u1EA5y X\xE9 v2", mo: "Gi\u1EA5y x\xE9 theo t\u1EEBng c\xE2u, v\u1EADt th\u1EADt" },
8537
8571
  { id: "giong-story-v2", thu: 1, ten: "Story v2", mo: "Ti\xEAu \u0111\u1EC1 nghi\xEAng, c\u1EAFt sang \u1EA3nh m\u1ED7i ~3 s" }
8538
8572
  ];
@@ -8620,7 +8654,7 @@ var KhoMauStudio = ({ chon, sua, nen: nen2, dung, onChon }) => {
8620
8654
  }, [san, dung, nv, bo4]);
8621
8655
  return /* @__PURE__ */ shim_react_default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ shim_react_default.createElement("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-3" }, MAU_STUDIO.map((x, i) => x.thu && !thu2 && chon !== x.id ? null : /* @__PURE__ */ shim_react_default.createElement("button", { key: x.id || "goc", onClick: () => onChon(x.id), className: "group text-left rounded-xl overflow-hidden border transition-all " + (chon === x.id ? "border-[#F6D178] ring-2 ring-[#F6D178]/60 shadow-[0_0_24px_rgba(246,209,120,.25)]" : "border-[#2C4A73] hover:border-[#F6D178]/60") }, /* @__PURE__ */ shim_react_default.createElement("canvas", { ref: (el) => {
8622
8656
  cvs.current[i] = el;
8623
- }, width: W, height: H, className: "w-full aspect-[9/16] block bg-[#0B1A2C]" }), /* @__PURE__ */ shim_react_default.createElement("div", { className: "px-3 py-2 bg-[#142A47]" }, /* @__PURE__ */ shim_react_default.createElement("div", { className: "text-[12px] font-black text-[#F4F1E8]" }, x.ten), /* @__PURE__ */ shim_react_default.createElement("div", { className: "text-[10px] text-[#A2B2C9]" }, x.mo))))), /* @__PURE__ */ shim_react_default.createElement("button", { onClick: () => setThu((v) => !v), className: "text-[11px] text-[#A2B2C9] underline" }, thu2 ? "\u1EA8n m\u1EABu \u0111ang th\u1EED" : "Hi\u1EC7n c\u1EA3 m\u1EABu \u0111ang th\u1EED (" + MAU_STUDIO.filter((x) => x.thu).length + ", ch\u01B0a \u0111\u1EA1t chu\u1EA9n)"));
8657
+ }, width: W, height: H, className: "w-full aspect-[9/16] block bg-[#0B1A2C]" }), /* @__PURE__ */ shim_react_default.createElement("div", { className: "px-3 py-2 bg-[#142A47]" }, /* @__PURE__ */ shim_react_default.createElement("div", { className: "text-[12px] font-black text-[#F4F1E8]" }, x.dat ? /* @__PURE__ */ shim_react_default.createElement("span", { className: "mr-1 text-emerald-300" }, "\u2713") : null, x.ten), /* @__PURE__ */ shim_react_default.createElement("div", { className: "text-[10px] text-[#A2B2C9]" }, x.mo), x.hop && /* @__PURE__ */ shim_react_default.createElement("div", { className: "text-[10px] text-[#F6D178]/90 mt-0.5" }, "H\u1EE3p: ", x.hop))))), /* @__PURE__ */ shim_react_default.createElement("button", { onClick: () => setThu((v) => !v), className: "text-[11px] text-[#A2B2C9] underline" }, thu2 ? "\u1EA8n m\u1EABu \u0111ang th\u1EED" : "Hi\u1EC7n c\u1EA3 m\u1EABu \u0111ang th\u1EED (" + MAU_STUDIO.filter((x) => x.thu).length + ", ch\u01B0a \u0111\u1EA1t chu\u1EA9n)"));
8624
8658
  };
8625
8659
 
8626
8660
  // flow-src/components/KeHoachStudio.tsx
@@ -11450,7 +11484,7 @@ var StudioEdit = ({ project, setProject, exporting, blob, onExport, onDownload,
11450
11484
  const [fx, setFx] = useState({ rung: true, dep: true, tieng: true, rang: true, cat: true, nhac: false, anh: false });
11451
11485
  useEffect(() => {
11452
11486
  const m = mau2 && layMau(mau2);
11453
- if (m?.doan?.khoi && m.doan.nhac) setFx((f2) => ({ ...f2, nhac: true }));
11487
+ if (m?.doan?.khoi && m.doan.nhac || m?.nhacSan) setFx((f2) => ({ ...f2, nhac: true }));
11454
11488
  }, [mau2]);
11455
11489
  const [nen2, setNen] = useState(null), [pro, setPro] = useState(null), [loi2, setLoi] = useState(""), [doc4, setDoc] = useState(""), [giay, setGiay] = useState(0);
11456
11490
  const t0 = useRef(0), vao = useRef(null), raXuat = useRef(onExport);
@@ -11521,7 +11555,7 @@ var StudioEdit = ({ project, setProject, exporting, blob, onExport, onDownload,
11521
11555
  };
11522
11556
  const datMau = () => {
11523
11557
  W2.__mauPhuDe = mau2 ? sua ? mau2 + "-sua" : mau2 : "";
11524
- W2.__theoMauKhoi = !!(mau2 && layMau(mau2)?.doan?.khoi);
11558
+ W2.__theoMauKhoi = !!(mau2 && (layMau(mau2)?.doan?.khoi || layMau(mau2)?.sach));
11525
11559
  W2.__xuatNhanh = nhanh;
11526
11560
  setProject((c) => c ? { ...c, studioFx: { ...c.studioFx || {}, stabilize: fx.rung ? 3 : 0, beauty: fx.dep ? 2 : 0, voice: fx.tieng ? 1 : 0, teeth: fx.rang ? 1 : 0 } } : c);
11527
11561
  };
@@ -15510,7 +15544,7 @@ function vanTayNguon(p) {
15510
15544
  }
15511
15545
  function keHoachKhop(p, mau2) {
15512
15546
  const van = vanTayNguon(p);
15513
- const ho = (m) => String(m || "").replace(/-sua$/, "").replace(/-goc$/, "");
15547
+ const ho = (m) => String(m || "").replace(/-sua$/, "").replace(/-(goc|cg)$/, "");
15514
15548
  for (const k of [p && p.keHoach, G3.__keHoachMoi]) if (k && k.pb === PB_KE_HOACH && ho(k.mau) === ho(mau2) && k.van && k.van === van && k.kb) return k;
15515
15549
  return null;
15516
15550
  }
@@ -15703,7 +15737,7 @@ async function handleExport(currentProject, setExporting, setExportedBlob, addLo
15703
15737
  }
15704
15738
  currentProject = apDungDoan(currentProject, mauPd, kb);
15705
15739
  }
15706
- const nhM = mauPd && window.__xuatNhanh ? mauPd.doan?.nhac : null;
15740
+ const nhM = mauPd && window.__xuatNhanh ? mauPd.doan?.nhac || mauPd.nhac : null;
15707
15741
  if (nhM && !currentProject.musicBed && currentProject.musicMode === void 0) {
15708
15742
  setExporting({ percent: 1, step: "T\u1EA1o nh\u1EA1c n\u1EC1n c\u1EE7a m\u1EABu..." });
15709
15743
  const L = currentProject.timeline.reduce((s, c) => s + c.trimEnd - c.trimStart, 0);
@@ -16071,7 +16105,7 @@ function datCauLenh(a) {
16071
16105
  on2 = true;
16072
16106
  window.addEventListener("message", async (ev) => {
16073
16107
  const d = ev.data;
16074
- if (!d || d.xvaiLoi140953 !== true) return;
16108
+ if (!d || d.xvaiLoi141117 !== true) return;
16075
16109
  const o = String(ev.origin || "");
16076
16110
  if (!(o.indexOf("https://flow.google.com") === 0 || o.indexOf("https://labs.google") === 0)) return;
16077
16111
  const tra = (kq) => {