448 lines
16 KiB
JavaScript
448 lines
16 KiB
JavaScript
/*
|
|
* Extracted from browser-delivered Turbopack chunk: cde068e14ffee6a8.f8b5a2ab76.js
|
|
* Module id: 772000
|
|
* For reading/searching only; this factory depends on the original Turbopack runtime.
|
|
*/
|
|
|
|
const moduleFactory = (e) => {
|
|
"use strict";
|
|
var t = e.i(197895),
|
|
i = e.i(876722),
|
|
n = e.i(469850),
|
|
r = e.i(459812);
|
|
function a(e, t = 400) {
|
|
let i = Math.round(e?.width ?? 0),
|
|
n = Math.round(e?.height ?? 0);
|
|
return {
|
|
displayW: t,
|
|
displayH: i && n ? Math.round((t * n) / i) : 0,
|
|
srcW: i,
|
|
srcH: n,
|
|
};
|
|
}
|
|
function o(e, t) {
|
|
return { x: 0, y: 0, w: e, h: t };
|
|
}
|
|
async function u(e, t) {
|
|
let i = await fetch(e),
|
|
n = await i.blob(),
|
|
r = n.type || "image/png",
|
|
a =
|
|
"image/png" === r
|
|
? ".png"
|
|
: "image/jpeg" === r
|
|
? ".jpg"
|
|
: "image/webp" === r
|
|
? ".webp"
|
|
: "";
|
|
return new File([n], `${t}-${Date.now()}${a}`, { type: r });
|
|
}
|
|
async function l(e, t, i, n) {
|
|
let r = document.createElement("canvas");
|
|
(r.width = i), (r.height = n);
|
|
let a = r.getContext("2d");
|
|
if (!a) throw Error("无法创建 canvas context");
|
|
let o = new Image();
|
|
(o.crossOrigin = "anonymous"),
|
|
await new Promise((t, i) => {
|
|
(o.onload = () => t()),
|
|
(o.onerror = () => i(Error("原图加载失败"))),
|
|
(o.src = e);
|
|
});
|
|
let u = new Image();
|
|
await new Promise((e, i) => {
|
|
(u.onload = () => e()),
|
|
(u.onerror = () => i(Error("遮罩加载失败"))),
|
|
(u.src = t);
|
|
}),
|
|
a.drawImage(o, 0, 0, i, n);
|
|
let l = document.createElement("canvas");
|
|
(l.width = i), (l.height = n);
|
|
let s = l.getContext("2d");
|
|
if (!s) throw Error("无法创建临时 canvas context");
|
|
s.drawImage(u, 0, 0, i, n);
|
|
let d = s.getImageData(0, 0, i, n).data,
|
|
c = a.getImageData(0, 0, i, n),
|
|
m = c.data;
|
|
for (let e = 0; e < d.length; e += 4)
|
|
d[e + 3] < 128 &&
|
|
((m[e] = 0), (m[e + 1] = 0), (m[e + 2] = 0), (m[e + 3] = 0));
|
|
return a.putImageData(c, 0, 0), r.toDataURL("image/png");
|
|
}
|
|
async function s(e, t, i, n) {
|
|
let r = Math.round(i + t.left + t.right),
|
|
a = Math.round(n + t.top + t.bottom);
|
|
if (r <= 0 || a <= 0) throw Error("扩图尺寸无效");
|
|
let o = document.createElement("canvas");
|
|
(o.width = r), (o.height = a);
|
|
let u = o.getContext("2d");
|
|
if (!u) throw Error("无法创建 canvas context");
|
|
(u.fillStyle = "#ffffff"), u.fillRect(0, 0, r, a);
|
|
let l = new Image();
|
|
return (
|
|
(l.crossOrigin = "anonymous"),
|
|
await new Promise((t, i) => {
|
|
(l.onload = () => t()),
|
|
(l.onerror = () => i(Error("原图加载失败"))),
|
|
(l.src = e);
|
|
}),
|
|
u.drawImage(l, Math.round(t.left), Math.round(t.top), i, n),
|
|
o.toDataURL("image/png")
|
|
);
|
|
}
|
|
e.s(
|
|
[
|
|
"compositeImageWithMask",
|
|
() => l,
|
|
"compositeOutpaintImage",
|
|
() => s,
|
|
"createDefaultCropRect",
|
|
() => o,
|
|
"dataUrlToFile",
|
|
() => u,
|
|
"getDisplayImageSize",
|
|
() => a,
|
|
],
|
|
772e3,
|
|
);
|
|
var d = e.i(505e3),
|
|
c = e.i(182004);
|
|
e.i(135623);
|
|
var m = e.i(168823),
|
|
f = e.i(295085);
|
|
e.i(954175);
|
|
var p = e.i(301710);
|
|
let g = new Set([24, 30, 60, 90, 120]);
|
|
function v(e) {
|
|
if (null != e) {
|
|
if ("number" == typeof e) return g.has(e) ? e : void 0;
|
|
if ("string" == typeof e) {
|
|
let t = parseInt(e.trim(), 10);
|
|
return Number.isFinite(t) && g.has(t) ? t : void 0;
|
|
}
|
|
}
|
|
}
|
|
async function h(e) {
|
|
let t = e.focusRegion;
|
|
if (
|
|
!t?.imageUrl ||
|
|
"number" != typeof t.relX ||
|
|
"number" != typeof t.relY ||
|
|
"number" != typeof t.width ||
|
|
"number" != typeof t.height
|
|
)
|
|
return e;
|
|
let i = (0, m.getCookie)(d.USER_TOKEN_COOKIE_KEY),
|
|
n = (0, m.getCookie)(d.USER_UUID_COOKIE_KEY);
|
|
if (!i || "string" != typeof i || !n || "string" != typeof n)
|
|
throw Error("请先登录");
|
|
let r = await (0, f.drawFocusRegionRedBox)(
|
|
t.imageUrl,
|
|
t.relX,
|
|
t.relY,
|
|
t.width,
|
|
t.height,
|
|
),
|
|
a = await u(r, "focus-region"),
|
|
o = await (0, p.uploadViaPreSign)(a, {
|
|
token: i,
|
|
uuid: n,
|
|
verify: !0,
|
|
onCalcHashEnd: () => void 0,
|
|
}),
|
|
l = (0, p.resolveUploadUrl)(o);
|
|
if (!l) throw Error("上传聚焦图片失败");
|
|
return { ...e, originImage: l, scene: "camera_focus" };
|
|
}
|
|
function $(e, a, o, u, l, s) {
|
|
let d = e.model || "",
|
|
c = l(a, d);
|
|
return {
|
|
params:
|
|
"enhanceVideo" === a || "enhanceImage" === a
|
|
? (function (e) {
|
|
if (!e) return {};
|
|
let t = e.model;
|
|
if ("topaz-video-upscaler" === t || "topazlabs" === t) {
|
|
let t = { ...e };
|
|
if (
|
|
("apf-2" === t.specifiedModel &&
|
|
(t.specifiedModel = "apo-8"),
|
|
null == t.fps && null != t.frameRate)
|
|
) {
|
|
let e = v(t.frameRate);
|
|
void 0 !== e && (t.fps = e);
|
|
}
|
|
if (
|
|
(delete t.frameRate,
|
|
delete t.frame_rate,
|
|
"prob-4" === t.specifiedModel)
|
|
)
|
|
delete t.fps;
|
|
else if (null != t.fps) {
|
|
let e = v(t.fps);
|
|
void 0 !== e ? (t.fps = e) : delete t.fps;
|
|
}
|
|
return t;
|
|
}
|
|
return { ...e };
|
|
})(e)
|
|
: (function (e, t, a) {
|
|
let o;
|
|
if (!e) return {};
|
|
let {
|
|
settings: u,
|
|
advancedSettings: l,
|
|
textList: s,
|
|
imageList: d,
|
|
videoList: c,
|
|
audioList: m,
|
|
mixedList: f,
|
|
fineTuneType: p,
|
|
fineTuneModels: g,
|
|
subjectList: v,
|
|
focusRegion: h,
|
|
cameraPresets: $,
|
|
image: y,
|
|
videoListV2: _,
|
|
audioListV2: b,
|
|
imageListOrder: x,
|
|
videoListOrder: k,
|
|
audioListOrder: I,
|
|
mixedListOrder: S,
|
|
...w
|
|
} = e;
|
|
u?.multi_shot !== !0 && delete w.multi_prompt;
|
|
let z = a?.properties?.portrait === !0,
|
|
Z = (e) =>
|
|
z && Array.isArray(e) && 0 !== e.length
|
|
? e.map((e) => {
|
|
if (!e || !e.assetId) return e;
|
|
let t = `asset://${e.assetId}`;
|
|
return { ...e, url: t, nodeId: t };
|
|
})
|
|
: e,
|
|
U = Z(d),
|
|
O = Z(c),
|
|
N = Z(m),
|
|
E = Z(f),
|
|
T = (e) =>
|
|
Array.isArray(e) && 0 !== e.length
|
|
? e.map((e) => e?.url).filter((e) => !!e)
|
|
: [],
|
|
D = {},
|
|
j = w.modeType;
|
|
if (
|
|
"video" === t &&
|
|
Array.isArray(v) &&
|
|
v.length > 0 &&
|
|
(0, n.getSubjectConfig)(
|
|
a ?? null,
|
|
"string" == typeof j ? j : "",
|
|
)
|
|
) {
|
|
let e = v.map((e) => e.klingId).filter(Boolean);
|
|
e.length > 0 && (D.elementList = e);
|
|
}
|
|
if (("image" === t || "video" === t) && p && g && g.length > 0)
|
|
if ("template" === p) {
|
|
if (
|
|
((D = { ...D, effects: g.map((e) => e.versionId) }),
|
|
g[0]?.templateInfo?.length)
|
|
) {
|
|
let e = g[0].templateInfo.find(
|
|
(e) => "template" === e.name,
|
|
)?.default;
|
|
e && (D.effectTemplateUuids = [e]);
|
|
}
|
|
} else
|
|
"lora" === p &&
|
|
"image" === t &&
|
|
(D = {
|
|
loraList: g.map((e) => ({
|
|
modelId: e.versionId,
|
|
modelType: e.modelType,
|
|
imageUrl: e.imageUrl,
|
|
weight: e.weight,
|
|
name: e.name,
|
|
})),
|
|
});
|
|
let P =
|
|
"mixed2video" === w.modeType &&
|
|
Array.isArray(E) &&
|
|
E.length > 0,
|
|
C = "video" === t && a?.properties?.digitalHuman === !0,
|
|
A = P ? [] : T(U),
|
|
L = P ? [] : T(O);
|
|
if ("video" === t && !P) {
|
|
let e = w.modeType;
|
|
C
|
|
? (L = [])
|
|
: "text2video" === e
|
|
? ((A = []), (L = []))
|
|
: e &&
|
|
[
|
|
"singleImage2video",
|
|
"frames2video",
|
|
"image2video",
|
|
].includes(e)
|
|
? (L = [])
|
|
: e && ["video2video"].includes(e) && (A = []);
|
|
}
|
|
let M = "image" === t && "camera_focus" === w.scene;
|
|
M && w.originImage && (A = [w.originImage]);
|
|
let R = C ? { ...w, modeType: "singleImage2video" } : w;
|
|
if (
|
|
"video" === t &&
|
|
a?.properties?.derivesDurationFromVideo === !0
|
|
) {
|
|
let e = 0;
|
|
if (Array.isArray(O))
|
|
for (let t of O)
|
|
null != t.durationSec &&
|
|
t.durationSec > e &&
|
|
(e = t.durationSec);
|
|
if (Array.isArray(E))
|
|
for (let t of E)
|
|
"video" === t.mediaType &&
|
|
null != t.durationSec &&
|
|
t.durationSec > e &&
|
|
(e = t.durationSec);
|
|
e > 0 && (o = { duration: Math.floor(e) });
|
|
}
|
|
let J = {
|
|
...R,
|
|
...(u ?? {}),
|
|
...(l ?? {}),
|
|
...D,
|
|
...(M ? { modeType: "image2image" } : {}),
|
|
textList: Array.isArray(s)
|
|
? s.flatMap((e) => e.content ?? [])
|
|
: [],
|
|
imageList: A,
|
|
videoList: L,
|
|
...(L.length > 0 ||
|
|
(P &&
|
|
Array.isArray(E) &&
|
|
E.some((e) => "video" === e.mediaType))
|
|
? {
|
|
videoListV2:
|
|
Array.isArray(O) && 0 !== O.length
|
|
? O.filter((e) => !!e?.url).map((e) => {
|
|
let t = { url: e.url };
|
|
return (
|
|
null != e.width && (t.width = e.width),
|
|
null != e.height && (t.height = e.height),
|
|
null != e.durationSec &&
|
|
(t.duration = parseFloat(
|
|
e.durationSec.toFixed(2),
|
|
)),
|
|
t
|
|
);
|
|
})
|
|
: [],
|
|
}
|
|
: {}),
|
|
audioList: P ? [] : T(N),
|
|
...(!P && Array.isArray(N) && N.length > 0
|
|
? {
|
|
audioListV2:
|
|
Array.isArray(N) && 0 !== N.length
|
|
? N.filter((e) => !!e?.url).map((e) => {
|
|
let t = { url: e.url };
|
|
return (
|
|
null != e.durationSec &&
|
|
(t.duration = parseFloat(
|
|
e.durationSec.toFixed(2),
|
|
)),
|
|
t
|
|
);
|
|
})
|
|
: [],
|
|
}
|
|
: {}),
|
|
...(P
|
|
? {
|
|
mixedList: E.map((e) => ({
|
|
url: e.url ?? "",
|
|
type: e.mediaType ?? "image",
|
|
})).filter((e) => !!e.url),
|
|
}
|
|
: {}),
|
|
...("video" === t &&
|
|
!(0, n.isVideoModeDeferringCameraPreset)(w.modeType) &&
|
|
Array.isArray($) &&
|
|
$.length > 0
|
|
? { cameraPresets: $.map((e) => e.prompt) }
|
|
: {}),
|
|
...o,
|
|
};
|
|
return (
|
|
"video" === t &&
|
|
(0, n.isVideoModeDeferringCameraPreset)(J.modeType) &&
|
|
("string" == typeof J.prompt &&
|
|
(J.prompt = (0, i.stripCameraPresetMentionTokens)(
|
|
J.prompt,
|
|
)),
|
|
Array.isArray(J.multi_prompt) &&
|
|
(J.multi_prompt = J.multi_prompt.map((e) => ({
|
|
...e,
|
|
prompt:
|
|
"string" == typeof e.prompt
|
|
? (0, i.stripCameraPresetMentionTokens)(e.prompt)
|
|
: e.prompt,
|
|
})))),
|
|
"video" === t &&
|
|
(0, r.stripVideoFlatParamsDisallowedBySchema)(
|
|
J,
|
|
a,
|
|
J.modeType,
|
|
),
|
|
J
|
|
);
|
|
})(e, a, c),
|
|
metadata: { node_id: o, project_id: u ?? "" },
|
|
provider: c?.modelVendor || "",
|
|
model: d,
|
|
taskType: s ?? a,
|
|
requestId: (0, t.v4)(),
|
|
};
|
|
}
|
|
function y(e) {
|
|
let t = e.data;
|
|
if (!t?.action) return null;
|
|
let i = t.generatorType === c.GeneratorType.ENHANCE;
|
|
switch (t.action) {
|
|
case c.NodeAction.TEXT_GENERATE:
|
|
return "text";
|
|
case c.NodeAction.IMAGE_GENERATE:
|
|
return i ? "enhanceImage" : "image";
|
|
case c.NodeAction.VIDEO_GENERATE:
|
|
return i ? "enhanceVideo" : "video";
|
|
case c.NodeAction.AUDIO_GENERATE:
|
|
return "audio";
|
|
case c.NodeAction.IMAGE_EDIT:
|
|
return "enhanceImage";
|
|
case c.NodeAction.VIDEO_EDIT:
|
|
return "enhanceVideo";
|
|
case c.NodeAction.SCRIPT_GENERATE:
|
|
return "text";
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
e.s(
|
|
[
|
|
"buildRequestData",
|
|
() => $,
|
|
"getGeneratorTypeFromNode",
|
|
() => y,
|
|
"prepareImageParamsForFocusRegion",
|
|
() => h,
|
|
],
|
|
10036,
|
|
);
|
|
};
|
|
|
|
export default moduleFactory;
|