@jieyin/editor-sdk 1.1.190 → 1.1.191

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.
@@ -1,7 +1,9 @@
1
- var te = Object.defineProperty, re = (s, t, e) => t in s ? te(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e, z = (s, t, e) => re(s, typeof t != "symbol" ? t + "" : t, e);
2
- const Z = class P {
1
+ class $ {
2
+ static instance;
3
+ wasmReady = !1;
4
+ go = null;
5
+ wasmModule = null;
3
6
  constructor() {
4
- z(this, "wasmReady", !1), z(this, "go", null), z(this, "wasmModule", null);
5
7
  }
6
8
  isDebugEnabled() {
7
9
  try {
@@ -10,135 +12,135 @@ const Z = class P {
10
12
  }
11
13
  return !1;
12
14
  }
13
- debugLog(...t) {
14
- this.isDebugEnabled();
15
+ debugLog(...r) {
16
+ this.isDebugEnabled() && console.log(...r);
15
17
  }
16
- debugWarn(...t) {
17
- this.isDebugEnabled();
18
+ debugWarn(...r) {
19
+ this.isDebugEnabled() && console.warn(...r);
18
20
  }
19
21
  static getInstance() {
20
- return P.instance || (P.instance = new P()), P.instance;
22
+ return $.instance || ($.instance = new $()), $.instance;
21
23
  }
22
24
  /**
23
25
  * 在 Worker 环境中加载 WASM 模块
24
26
  * @param wasmUrl WASM 文件路径
25
27
  * @param wasmExecUrl wasm_exec.js 路径
26
28
  */
27
- async load(t, e) {
29
+ async load(r, e) {
28
30
  if (this.wasmReady) {
29
31
  this.debugLog("✅ WASM 已加载,跳过重复加载");
30
32
  return;
31
33
  }
32
34
  try {
33
35
  this.debugLog("🚀 Worker: 加载透视变换 WASM...");
34
- const r = (i) => {
35
- if (e && i === "wasm_exec.js")
36
+ const t = (c) => {
37
+ if (e && c === "wasm_exec.js")
36
38
  return e;
37
- if (t && i === "perspective.wasm")
38
- return t;
39
+ if (r && c === "perspective.wasm")
40
+ return r;
39
41
  try {
40
- let h = null;
41
- if (typeof import.meta < "u" && import.meta.url ? h = import.meta.url : typeof self < "u" && self.location && (h = self.location.href), h) {
42
- const f = new URL(h), d = f.pathname;
42
+ let f = null;
43
+ if (typeof import.meta < "u" && import.meta.url ? f = import.meta.url : typeof self < "u" && self.location && (f = self.location.href), f) {
44
+ const u = new URL(f), d = u.pathname;
43
45
  if (d.includes("/js/")) {
44
- const y = "../assets/" + i, m = new URL(y, f);
45
- return this.debugLog(`🔍 [WASM] 计算路径: ${i} -> ${m.pathname} (Worker: ${d})`), m.pathname;
46
+ const m = "../assets/" + c, y = new URL(m, u);
47
+ return this.debugLog(`🔍 [WASM] 计算路径: ${c} -> ${y.pathname} (Worker: ${d})`), y.pathname;
46
48
  } else if (d.includes("/assets/")) {
47
- const y = "./" + i, m = new URL(y, f);
48
- return this.debugLog(`🔍 [WASM] 计算路径: ${i} -> ${m.pathname} (Worker: ${d})`), m.pathname;
49
+ const m = "./" + c, y = new URL(m, u);
50
+ return this.debugLog(`🔍 [WASM] 计算路径: ${c} -> ${y.pathname} (Worker: ${d})`), y.pathname;
49
51
  } else
50
- return this.debugLog(`🔍 [WASM] 使用默认绝对路径: /assets/${i}`), "/assets/" + i;
52
+ return this.debugLog(`🔍 [WASM] 使用默认绝对路径: /assets/${c}`), "/assets/" + c;
51
53
  }
52
- } catch (h) {
53
- this.debugWarn("⚠️ 无法计算 WASM 相对路径,使用默认路径:", h);
54
+ } catch (f) {
55
+ this.debugWarn("⚠️ 无法计算 WASM 相对路径,使用默认路径:", f);
54
56
  }
55
- return "/assets/" + i;
56
- }, n = e || r("wasm_exec.js"), u = t || r("perspective.wasm");
57
- this.debugLog("🔍 [WASM] 最终使用的路径:", { execUrl: n, moduleUrl: u }), await this.loadWasmExec(n);
58
- const o = typeof self < "u" ? self : globalThis;
59
- this.go = new o.Go();
60
- const c = await fetch(u);
61
- if (!c.ok)
62
- throw new Error(`无法加载 WASM 文件: ${c.status}`);
63
- const w = await c.arrayBuffer(), a = await WebAssembly.instantiate(w, this.go.importObject);
64
- this.wasmModule = a.instance, this.go.run(this.wasmModule), this.wasmReady = !0;
65
- const l = this.call("wasmInit");
66
- if (l && l.success)
67
- this.debugLog("✅ Worker WASM 加载成功:", l);
57
+ return "/assets/" + c;
58
+ }, n = e || t("wasm_exec.js"), s = r || t("perspective.wasm");
59
+ this.debugLog("🔍 [WASM] 最终使用的路径:", { execUrl: n, moduleUrl: s }), await this.loadWasmExec(n);
60
+ const i = typeof self < "u" ? self : globalThis;
61
+ this.go = new i.Go();
62
+ const a = await fetch(s);
63
+ if (!a.ok)
64
+ throw new Error(`无法加载 WASM 文件: ${a.status}`);
65
+ const w = await a.arrayBuffer(), l = await WebAssembly.instantiate(w, this.go.importObject);
66
+ this.wasmModule = l.instance, this.go.run(this.wasmModule), this.wasmReady = !0;
67
+ const h = this.call("wasmInit");
68
+ if (h && h.success)
69
+ this.debugLog("✅ Worker WASM 加载成功:", h);
68
70
  else
69
71
  throw new Error("WASM 初始化失败");
70
- } catch (r) {
71
- throw this.wasmReady = !1, r;
72
+ } catch (t) {
73
+ throw console.error("❌ Worker WASM 加载失败:", t), this.wasmReady = !1, t;
72
74
  }
73
75
  }
74
76
  /**
75
77
  * 在 Worker 中加载 wasm_exec.js
76
78
  * Module Worker 不支持 importScripts(),仅 Classic Worker 可尝试 importScripts,否则用 fetch + eval
77
79
  */
78
- async loadWasmExec(t) {
79
- return new Promise((e, r) => {
80
+ async loadWasmExec(r) {
81
+ return new Promise((e, t) => {
80
82
  if (!(typeof import.meta < "u" && import.meta.url) && typeof self.importScripts == "function")
81
83
  try {
82
- self.importScripts(t), e();
84
+ self.importScripts(r), e();
83
85
  return;
84
- } catch (u) {
85
- this.debugWarn("⚠️ importScripts 失败,使用 fetch:", u);
86
+ } catch (s) {
87
+ this.debugWarn("⚠️ importScripts 失败,使用 fetch:", s);
86
88
  }
87
- fetch(t).then((u) => {
88
- if (!u.ok)
89
- throw new Error(`HTTP ${u.status}: ${u.statusText} - URL: ${t}`);
90
- const o = u.headers.get("content-type") || "";
91
- return !o.includes("javascript") && !o.includes("text/plain") && this.debugWarn("⚠️ [WASM] 响应 Content-Type 不是 JavaScript:", o), u.text();
92
- }).then((u) => {
93
- if (u.trim().startsWith("<!DOCTYPE") || u.trim().startsWith("<html"))
94
- throw new Error(`返回的是 HTML 而不是 JavaScript,可能是 404 错误。URL: ${t}`);
89
+ fetch(r).then((s) => {
90
+ if (!s.ok)
91
+ throw new Error(`HTTP ${s.status}: ${s.statusText} - URL: ${r}`);
92
+ const i = s.headers.get("content-type") || "";
93
+ return !i.includes("javascript") && !i.includes("text/plain") && this.debugWarn("⚠️ [WASM] 响应 Content-Type 不是 JavaScript:", i), s.text();
94
+ }).then((s) => {
95
+ if (s.trim().startsWith("<!DOCTYPE") || s.trim().startsWith("<html"))
96
+ throw console.error("❌ [WASM] 返回的是 HTML 而不是 JavaScript,可能是 404 错误"), console.error("❌ [WASM] URL:", r), console.error("❌ [WASM] 响应前100字符:", s.substring(0, 100)), new Error(`返回的是 HTML 而不是 JavaScript,可能是 404 错误。URL: ${r}`);
95
97
  try {
96
- const o = typeof self < "u" ? self : globalThis;
97
- new Function("self", u)(o), e();
98
- } catch (o) {
99
- r(new Error(`执行 wasm_exec.js 失败: ${o}`));
98
+ const i = typeof self < "u" ? self : globalThis;
99
+ new Function("self", s)(i), e();
100
+ } catch (i) {
101
+ t(new Error(`执行 wasm_exec.js 失败: ${i}`));
100
102
  }
101
- }).catch((u) => {
102
- r(u);
103
+ }).catch((s) => {
104
+ console.error("❌ [WASM] 加载 wasm_exec.js 失败:", { url: r, error: s.message }), t(s);
103
105
  });
104
106
  });
105
107
  }
106
108
  /**
107
109
  * 验证授权(通过 API)
108
110
  */
109
- async verifyLicense(t, e) {
111
+ async verifyLicense(r, e) {
110
112
  if (!this.wasmReady)
111
113
  return !1;
112
114
  if (e)
113
115
  try {
114
- const r = this.getDeviceID(), n = this.getDomain(), o = await (await fetch(`${e}/jet_license/interface/license/verify`, {
116
+ const t = this.getDeviceID(), n = this.getDomain(), i = await (await fetch(`${e}/jet_license/interface/license/verify`, {
115
117
  method: "POST",
116
118
  headers: {
117
119
  "Content-Type": "application/json"
118
120
  },
119
121
  body: JSON.stringify({
120
- token: t,
121
- deviceId: r,
122
+ token: r,
123
+ deviceId: t,
122
124
  domain: n
123
125
  })
124
126
  })).json();
125
- if (!o.success || !o.valid) {
126
- const w = o.error || "License 验证失败";
127
+ if (!i.success || !i.valid) {
128
+ const w = i.error || "License 验证失败";
127
129
  throw new Error(w);
128
130
  }
129
- const c = this.call("wasmVerifyLicense", t);
130
- if (!c.success || c.valid !== !0)
131
+ const a = this.call("wasmVerifyLicense", r);
132
+ if (!a.success || a.valid !== !0)
131
133
  throw new Error("WASM 验证失败");
132
134
  return !0;
133
- } catch (r) {
134
- throw r;
135
+ } catch (t) {
136
+ throw console.error("License API 验证失败:", t), t;
135
137
  }
136
138
  else
137
139
  try {
138
- const r = this.call("wasmVerifyLicense", t);
139
- return r.success && r.valid === !0;
140
- } catch {
141
- return !1;
140
+ const t = this.call("wasmVerifyLicense", r);
141
+ return t.success && t.valid === !0;
142
+ } catch (t) {
143
+ return console.error("License 验证失败:", t), !1;
142
144
  }
143
145
  }
144
146
  /**
@@ -156,83 +158,83 @@ const Z = class P {
156
158
  /**
157
159
  * 计算透视变换矩阵
158
160
  */
159
- calcPerspectiveMatrix(t) {
161
+ calcPerspectiveMatrix(r) {
160
162
  if (!this.wasmReady)
161
163
  throw new Error("WASM 未加载");
162
- if (t.length !== 4)
164
+ if (r.length !== 4)
163
165
  throw new Error("需要恰好 4 个点");
164
166
  try {
165
- const e = this.call("wasmCalcPerspectiveMatrix", JSON.stringify(t));
167
+ const e = this.call("wasmCalcPerspectiveMatrix", JSON.stringify(r));
166
168
  if (!e.success)
167
169
  throw new Error(e.error || "计算失败");
168
170
  return e.matrix;
169
171
  } catch (e) {
170
- throw e;
172
+ throw console.error("计算透视矩阵失败:", e), e;
171
173
  }
172
174
  }
173
175
  /**
174
176
  * 矩阵求逆
175
177
  */
176
- invertMatrix(t) {
178
+ invertMatrix(r) {
177
179
  if (!this.wasmReady)
178
180
  throw new Error("WASM 未加载");
179
181
  try {
180
- const e = this.call("wasmInvertMatrix", JSON.stringify(t));
182
+ const e = this.call("wasmInvertMatrix", JSON.stringify(r));
181
183
  if (!e.success)
182
184
  throw new Error(e.error || "矩阵求逆失败");
183
185
  return e.matrix;
184
186
  } catch (e) {
185
- throw e;
187
+ throw console.error("矩阵求逆失败:", e), e;
186
188
  }
187
189
  }
188
190
  /**
189
191
  * 应用透视变换到单个点
190
192
  */
191
- applyPerspective(t, e, r) {
193
+ applyPerspective(r, e, t) {
192
194
  if (!this.wasmReady)
193
195
  throw new Error("WASM 未加载");
194
196
  try {
195
- const n = this.call("wasmApplyPerspective", t, e, JSON.stringify(r));
197
+ const n = this.call("wasmApplyPerspective", r, e, JSON.stringify(t));
196
198
  if (!n.success)
197
199
  throw new Error(n.error || "变换失败");
198
200
  return { x: n.x, y: n.y };
199
201
  } catch (n) {
200
- throw n;
202
+ throw console.error("应用透视变换失败:", n), n;
201
203
  }
202
204
  }
203
205
  /**
204
206
  * 应用逆透视变换到单个点
205
207
  */
206
- applyInversePerspective(t, e, r) {
208
+ applyInversePerspective(r, e, t) {
207
209
  if (!this.wasmReady)
208
210
  throw new Error("WASM 未加载");
209
211
  try {
210
- const n = this.call("wasmApplyInversePerspective", t, e, JSON.stringify(r));
212
+ const n = this.call("wasmApplyInversePerspective", r, e, JSON.stringify(t));
211
213
  if (!n.success)
212
214
  throw new Error(n.error || "逆变换失败");
213
215
  return { x: n.x, y: n.y };
214
216
  } catch (n) {
215
- throw n;
217
+ throw console.error("应用逆透视变换失败:", n), n;
216
218
  }
217
219
  }
218
220
  /**
219
221
  * 批量变换点(高性能)
220
222
  */
221
- transformPoints(t, e, r = !1) {
223
+ transformPoints(r, e, t = !1) {
222
224
  if (!this.wasmReady)
223
225
  throw new Error("WASM 未加载");
224
226
  try {
225
227
  const n = this.call(
226
228
  "wasmTransformPoints",
227
- JSON.stringify(t),
229
+ JSON.stringify(r),
228
230
  JSON.stringify(e),
229
- r
231
+ t
230
232
  );
231
233
  if (!n.success)
232
234
  throw new Error(n.error || "批量变换失败");
233
235
  return JSON.parse(n.points);
234
236
  } catch (n) {
235
- throw n;
237
+ throw console.error("批量变换失败:", n), n;
236
238
  }
237
239
  }
238
240
  /**
@@ -244,407 +246,412 @@ const Z = class P {
244
246
  /**
245
247
  * 双三次插值点计算
246
248
  */
247
- getBicubicPoint(t, e, r) {
249
+ getBicubicPoint(r, e, t) {
248
250
  if (!this.wasmReady)
249
251
  throw new Error("WASM 未加载");
250
- if (r.length !== 16)
252
+ if (t.length !== 16)
251
253
  throw new Error("需要恰好 16 个点");
252
254
  try {
253
- const n = this.call("wasmGetBicubicPoint", t, e, JSON.stringify(r));
255
+ const n = this.call("wasmGetBicubicPoint", r, e, JSON.stringify(t));
254
256
  if (!n.success)
255
257
  throw new Error(n.error || "计算失败");
256
258
  return { x: n.x, y: n.y };
257
259
  } catch (n) {
258
- throw n;
260
+ throw console.error("双三次插值计算失败:", n), n;
259
261
  }
260
262
  }
261
263
  /**
262
264
  * 双线性插值点计算
263
265
  */
264
- getBilinearPoint(t, e, r) {
266
+ getBilinearPoint(r, e, t) {
265
267
  if (!this.wasmReady)
266
268
  throw new Error("WASM 未加载");
267
- if (r.length !== 4)
269
+ if (t.length !== 4)
268
270
  throw new Error("需要恰好 4 个点");
269
271
  try {
270
- const n = this.call("wasmGetBilinearPoint", t, e, JSON.stringify(r));
272
+ const n = this.call("wasmGetBilinearPoint", r, e, JSON.stringify(t));
271
273
  if (!n.success)
272
274
  throw new Error(n.error || "计算失败");
273
275
  return { x: n.x, y: n.y };
274
276
  } catch (n) {
275
- throw n;
277
+ throw console.error("双线性插值计算失败:", n), n;
276
278
  }
277
279
  }
278
280
  /**
279
281
  * 任意网格点插值计算
280
282
  */
281
- getArbitraryMeshPoint(t, e, r, n) {
283
+ getArbitraryMeshPoint(r, e, t, n) {
282
284
  if (!this.wasmReady)
283
285
  throw new Error("WASM 未加载");
284
286
  try {
285
- const u = this.call("wasmGetArbitraryMeshPoint", t, e, JSON.stringify(r), n);
286
- if (!u.success)
287
- throw new Error(u.error || "计算失败");
288
- return { x: u.x, y: u.y };
289
- } catch (u) {
290
- throw u;
287
+ const s = this.call("wasmGetArbitraryMeshPoint", r, e, JSON.stringify(t), n);
288
+ if (!s.success)
289
+ throw new Error(s.error || "计算失败");
290
+ return { x: s.x, y: s.y };
291
+ } catch (s) {
292
+ throw console.error("任意网格点插值计算失败:", s), s;
291
293
  }
292
294
  }
293
295
  /**
294
296
  * 批量双三次插值(高性能优化)
295
297
  * 一次性处理多个坐标,避免频繁的 JS/WASM 边界调用
296
298
  */
297
- batchBicubicInterpolation(t, e) {
299
+ batchBicubicInterpolation(r, e) {
298
300
  if (!this.wasmReady)
299
301
  throw new Error("WASM 未加载");
300
302
  if (e.length !== 16)
301
303
  throw new Error("需要恰好 16 个控制点");
302
304
  try {
303
- const r = this.call(
305
+ const t = this.call(
304
306
  "wasmBatchBicubicInterpolation",
305
- JSON.stringify(t),
307
+ JSON.stringify(r),
306
308
  JSON.stringify(e)
307
309
  );
308
- if (!r.success)
309
- throw new Error(r.error || "批量双三次插值失败");
310
- return r.points;
311
- } catch (r) {
312
- throw r;
310
+ if (!t.success)
311
+ throw new Error(t.error || "批量双三次插值失败");
312
+ return t.points;
313
+ } catch (t) {
314
+ throw console.error("批量双三次插值失败:", t), t;
313
315
  }
314
316
  }
315
317
  /**
316
318
  * 批量双线性插值(高性能优化)
317
319
  */
318
- batchBilinearInterpolation(t, e) {
320
+ batchBilinearInterpolation(r, e) {
319
321
  if (!this.wasmReady)
320
322
  throw new Error("WASM 未加载");
321
323
  if (e.length !== 4)
322
324
  throw new Error("需要恰好 4 个控制点");
323
325
  try {
324
- const r = this.call(
326
+ const t = this.call(
325
327
  "wasmBatchBilinearInterpolation",
326
- JSON.stringify(t),
328
+ JSON.stringify(r),
327
329
  JSON.stringify(e)
328
330
  );
329
- if (!r.success)
330
- throw new Error(r.error || "批量双线性插值失败");
331
- return r.points;
332
- } catch (r) {
333
- throw r;
331
+ if (!t.success)
332
+ throw new Error(t.error || "批量双线性插值失败");
333
+ return t.points;
334
+ } catch (t) {
335
+ throw console.error("批量双线性插值失败:", t), t;
334
336
  }
335
337
  }
336
338
  /**
337
339
  * 批量任意网格插值(高性能优化)
338
340
  */
339
- batchArbitraryMeshInterpolation(t, e, r) {
341
+ batchArbitraryMeshInterpolation(r, e, t) {
340
342
  if (!this.wasmReady)
341
343
  throw new Error("WASM 未加载");
342
344
  try {
343
345
  const n = this.call(
344
346
  "wasmBatchArbitraryMeshInterpolation",
345
- JSON.stringify(t),
347
+ JSON.stringify(r),
346
348
  JSON.stringify(e),
347
- r
349
+ t
348
350
  );
349
351
  if (!n.success)
350
352
  throw new Error(n.error || "批量网格插值失败");
351
353
  return n.points;
352
354
  } catch (n) {
353
- throw n;
355
+ throw console.error("批量网格插值失败:", n), n;
354
356
  }
355
357
  }
356
358
  /**
357
359
  * 调用 WASM 函数
358
360
  */
359
- call(t, ...e) {
361
+ call(r, ...e) {
360
362
  if (!this.wasmReady)
361
363
  throw new Error("WASM 未加载");
362
- const n = (typeof self < "u" ? self : globalThis)[t];
364
+ const n = (typeof self < "u" ? self : globalThis)[r];
363
365
  if (!n)
364
- throw new Error(`函数不存在: ${t}`);
366
+ throw new Error(`函数不存在: ${r}`);
365
367
  try {
366
368
  return n(...e);
367
- } catch (u) {
368
- throw u;
369
+ } catch (s) {
370
+ throw console.error(`调用 ${r} 失败:`, s), s;
369
371
  }
370
372
  }
373
+ }
374
+ let V = !1;
375
+ const A = (...o) => {
376
+ V && console.log(...o);
377
+ }, Z = (...o) => {
378
+ V && console.warn(...o);
371
379
  };
372
- z(Z, "instance");
373
- let ne = Z, H = !1;
374
- const L = (...s) => {
375
- }, se = (...s) => {
376
- };
377
- let E = null, R = !1, M = null, b = null, O = null, $ = null, U = null;
378
- function ue(s) {
379
- b = s.licenseToken, O = s.licenseApiUrl, $ = s.deviceId, U = s.domain, self.LICENSE_TOKEN = b, self.LICENSE_API_URL = O, self.DEVICE_ID = $, self.DOMAIN = U, E || (M && !R && (M = null), G().then(() => {
380
- }).catch((t) => {
380
+ let g = null, N = !1, b = null, k = null, U = null, C = null, j = null;
381
+ function ee(o) {
382
+ k = o.licenseToken, U = o.licenseApiUrl, C = o.deviceId, j = o.domain, self.LICENSE_TOKEN = k, self.LICENSE_API_URL = U, self.DEVICE_ID = C, self.DOMAIN = j, A("✅ [deform.worker] License 信息已接收"), g || (b && !N && (b = null), A("🔄 [deform.worker] 开始初始化 WASM..."), Y().then(() => {
383
+ A("✅ [deform.worker] WASM 初始化完成");
384
+ }).catch((r) => {
385
+ Z("⚠️ [deform.worker] WASM 初始化失败:", r);
381
386
  }));
382
387
  }
383
- async function G() {
384
- return E ? void 0 : R ? M || Promise.resolve() : b || self.LICENSE_TOKEN ? (R = !0, M = (async () => {
388
+ async function Y() {
389
+ return g ? void 0 : N ? b || Promise.resolve() : k || self.LICENSE_TOKEN ? (N = !0, b = (async () => {
385
390
  try {
386
- E = ne.getInstance();
387
- const t = (a) => {
388
- const l = self.WASM_URL, i = self.WASM_EXEC_URL;
389
- if (a === "perspective.wasm" && l)
390
- return l;
391
- if (a === "wasm_exec.js" && i)
392
- return i;
391
+ g = $.getInstance();
392
+ const r = (l) => {
393
+ const h = self.WASM_URL, c = self.WASM_EXEC_URL;
394
+ if (l === "perspective.wasm" && h)
395
+ return h;
396
+ if (l === "wasm_exec.js" && c)
397
+ return c;
393
398
  try {
394
- let h = null;
395
- if (typeof import.meta < "u" && import.meta.url ? h = import.meta.url : typeof self < "u" && self.location && (h = self.location.href), h) {
396
- const f = new URL(h), d = f.pathname;
399
+ let f = null;
400
+ if (typeof import.meta < "u" && import.meta.url ? f = import.meta.url : typeof self < "u" && self.location && (f = self.location.href), f) {
401
+ const u = new URL(f), d = u.pathname;
397
402
  if (d.includes("/js/")) {
398
- const y = "../assets/" + a, m = new URL(y, f);
399
- return L(`🔍 [deform.worker] 计算路径: ${a} -> ${m.pathname} (Worker: ${d})`), m.pathname;
403
+ const m = "../assets/" + l, y = new URL(m, u);
404
+ return A(`🔍 [deform.worker] 计算路径: ${l} -> ${y.pathname} (Worker: ${d})`), y.pathname;
400
405
  } else if (d.includes("/assets/")) {
401
- const y = "./" + a, m = new URL(y, f);
402
- return L(`🔍 [deform.worker] 计算路径: ${a} -> ${m.pathname} (Worker: ${d})`), m.pathname;
406
+ const m = "./" + l, y = new URL(m, u);
407
+ return A(`🔍 [deform.worker] 计算路径: ${l} -> ${y.pathname} (Worker: ${d})`), y.pathname;
403
408
  } else
404
- return L(`🔍 [deform.worker] 使用默认绝对路径: /assets/${a}`), "/assets/" + a;
409
+ return A(`🔍 [deform.worker] 使用默认绝对路径: /assets/${l}`), "/assets/" + l;
405
410
  }
406
- } catch (h) {
407
- se("⚠️ [deform.worker] 无法计算 WASM 相对路径,使用默认路径:", h);
411
+ } catch (f) {
412
+ Z("⚠️ [deform.worker] 无法计算 WASM 相对路径,使用默认路径:", f);
408
413
  }
409
- return "/assets/" + a;
410
- }, e = self.WASM_URL || t("perspective.wasm"), r = self.WASM_EXEC_URL || t("wasm_exec.js");
411
- L("🔍 [deform.worker] 最终使用的 WASM 路径:", { wasmUrl: e, wasmExecUrl: r }), await E.load(e, r);
412
- const n = b || self.LICENSE_TOKEN, u = O || self.LICENSE_API_URL, o = $ || self.DEVICE_ID, c = U || self.DOMAIN;
414
+ return "/assets/" + l;
415
+ }, e = self.WASM_URL || r("perspective.wasm"), t = self.WASM_EXEC_URL || r("wasm_exec.js");
416
+ A("🔍 [deform.worker] 最终使用的 WASM 路径:", { wasmUrl: e, wasmExecUrl: t }), await g.load(e, t);
417
+ const n = k || self.LICENSE_TOKEN, s = U || self.LICENSE_API_URL, i = C || self.DEVICE_ID, a = j || self.DOMAIN;
413
418
  if (!n)
414
419
  throw new Error("LICENSE_TOKEN 未设置,无法使用 WASM 功能");
415
- if (!await E.verifyLicense(n, u))
420
+ if (!await g.verifyLicense(n, s))
416
421
  throw new Error("WASM License 验证失败,无法使用 WASM 功能");
417
- } catch (t) {
418
- throw E = null, M = null, t;
422
+ console.log("✅ Worker WASM 模块加载并验证成功");
423
+ } catch (r) {
424
+ throw console.error("❌ WASM 加载或验证失败:", r), g = null, b = null, r;
419
425
  } finally {
420
- R = !1;
426
+ N = !1;
421
427
  }
422
- })(), M) : Promise.resolve();
428
+ })(), b) : (A("⏳ [deform.worker] 等待 License Token..."), Promise.resolve());
423
429
  }
424
- function Y(s) {
425
- return "naturalWidth" in s && s.naturalWidth ? { width: s.naturalWidth, height: s.naturalHeight } : "width" in s ? { width: s.width, height: s.height } : { width: 0, height: 0 };
430
+ function K(o) {
431
+ return "naturalWidth" in o && o.naturalWidth ? { width: o.naturalWidth, height: o.naturalHeight } : "width" in o ? { width: o.width, height: o.height } : { width: 0, height: 0 };
426
432
  }
427
- function oe(s, t) {
428
- if (!s || !s.bounds)
433
+ function re(o, r) {
434
+ if (!o || !o.bounds)
429
435
  throw new Error("Invalid layer data: missing bounds");
430
- const e = s.bounds;
431
- if (t && t.width > 0 && t.height > 0)
432
- return { ...s };
433
- const r = s.size || s.placedLayer || {
436
+ const e = o.bounds;
437
+ if (r && r.width > 0 && r.height > 0)
438
+ return { ...o };
439
+ const t = o.size || o.placedLayer || {
434
440
  width: e.width,
435
441
  height: e.height
436
- }, n = r.width / e.width, u = r.height / e.height, o = { ...s };
437
- return s.transform && s.transform.length === 8 && (o.transform = [
438
- (s.transform[0] - e.left) * n,
439
- (s.transform[1] - e.top) * u,
440
- (s.transform[2] - e.left) * n,
441
- (s.transform[3] - e.top) * u,
442
- (s.transform[4] - e.left) * n,
443
- (s.transform[5] - e.top) * u,
444
- (s.transform[6] - e.left) * n,
445
- (s.transform[7] - e.top) * u
446
- ]), o;
442
+ }, n = t.width / e.width, s = t.height / e.height, i = { ...o };
443
+ return o.transform && o.transform.length === 8 && (i.transform = [
444
+ (o.transform[0] - e.left) * n,
445
+ (o.transform[1] - e.top) * s,
446
+ (o.transform[2] - e.left) * n,
447
+ (o.transform[3] - e.top) * s,
448
+ (o.transform[4] - e.left) * n,
449
+ (o.transform[5] - e.top) * s,
450
+ (o.transform[6] - e.left) * n,
451
+ (o.transform[7] - e.top) * s
452
+ ]), i;
447
453
  }
448
- function ie(s) {
449
- return s.error, s;
454
+ function te(o) {
455
+ return o.error, o;
450
456
  }
451
- function ce(s, t, e) {
452
- if (!s || !t || !e)
457
+ function ne(o, r, e) {
458
+ if (!o || !r || !e)
453
459
  return "Invalid Parameters";
454
- const r = "naturalWidth" in t ? t.naturalWidth : "width" in t ? t.width : 0, n = "naturalHeight" in t ? t.naturalHeight : "height" in t ? t.height : 0;
455
- if (!r || !n)
460
+ const t = "naturalWidth" in r ? r.naturalWidth : "width" in r ? r.width : 0, n = "naturalHeight" in r ? r.naturalHeight : "height" in r ? r.height : 0;
461
+ if (!t || !n)
456
462
  return "Image Not Loaded";
457
- s.imageSmoothingEnabled = !0, s.imageSmoothingQuality = "high";
458
- let u = null, o = null, c = null, w = null, a = 0, l = 0, i = null, h = "Unknown";
459
- if (e.size && e.size.width ? (a = e.size.width, l = e.size.height) : e.placedLayer && e.placedLayer.width ? (a = e.placedLayer.width, l = e.placedLayer.height) : e.originalWidth && (a = e.originalWidth, l = e.originalHeight), e.meshPoints && e.meshPoints.length > 0 && (u = e.meshPoints), e.transform && e.transform.length === 8) {
460
- const f = e.transform;
461
- o = [
462
- { x: f[0], y: f[1] },
463
- { x: f[2], y: f[3] },
464
- { x: f[4], y: f[5] },
465
- { x: f[6], y: f[7] }
463
+ o.imageSmoothingEnabled = !0, o.imageSmoothingQuality = "high";
464
+ let s = null, i = null, a = null, w = null, l = 0, h = 0, c = null, f = "Unknown";
465
+ if (e.size && e.size.width ? (l = e.size.width, h = e.size.height) : e.placedLayer && e.placedLayer.width ? (l = e.placedLayer.width, h = e.placedLayer.height) : e.originalWidth && (l = e.originalWidth, h = e.originalHeight), e.meshPoints && e.meshPoints.length > 0 && (s = e.meshPoints), e.transform && e.transform.length === 8) {
466
+ const u = e.transform;
467
+ i = [
468
+ { x: u[0], y: u[1] },
469
+ { x: u[2], y: u[3] },
470
+ { x: u[4], y: u[5] },
471
+ { x: u[6], y: u[7] }
466
472
  ];
467
473
  }
468
- return e.quiltSliceX && (c = e.quiltSliceX), e.quiltSliceY && (w = e.quiltSliceY), e.filterList && (i = e.filterList.find((f) => f.type === "puppet" && f.enabled)), a === 0 && c && c.length > 0 && (a = c[c.length - 1]), a === 0 && (a = 1e3), l === 0 && (l = 1e3), i && i.filter && i.filter.puppetShapeList && i.filter.puppetShapeList.length > 0 && o ? (ae(s, t, o, i.filter.puppetShapeList[0]), h = "Puppet Warp") : u && o ? c && w ? (he(s, t, o, u, c, w, a, l), h = "Quilt Mesh") : u.length === 16 ? (le(s, t, o, u), h = "Std Mesh (16pt)") : (fe(s, t, o, u), h = "Auto-Fit Mesh") : u ? (de(s, t, u), h = "Direct Mesh") : o && (K(s, t, o), h = "Transform Only"), h;
474
+ return e.quiltSliceX && (a = e.quiltSliceX), e.quiltSliceY && (w = e.quiltSliceY), e.filterList && (c = e.filterList.find((u) => u.type === "puppet" && u.enabled)), l === 0 && a && a.length > 0 && (l = a[a.length - 1]), l === 0 && (l = 1e3), h === 0 && (h = 1e3), c && c.filter && c.filter.puppetShapeList && c.filter.puppetShapeList.length > 0 && i ? (oe(o, r, i, c.filter.puppetShapeList[0]), f = "Puppet Warp") : s && i ? a && w ? (ie(o, r, i, s, a, w, l, h), f = "Quilt Mesh") : s.length === 16 ? (se(o, r, i, s), f = "Std Mesh (16pt)") : (ce(o, r, i, s), f = "Auto-Fit Mesh") : s ? (le(o, r, s), f = "Direct Mesh") : i && (q(o, r, i), f = "Transform Only"), f;
469
475
  }
470
- function ae(s, t, e, r, n, u) {
471
- if (!r.originalVertexArray || !r.deformedVertexArray || !r.indexArray)
476
+ function oe(o, r, e, t, n, s) {
477
+ if (!t.originalVertexArray || !t.deformedVertexArray || !t.indexArray)
472
478
  return;
473
- const o = q(e), c = ye(o);
474
- if (!c) {
475
- K(s, t, e);
479
+ const i = F(e), a = fe(i);
480
+ if (!a) {
481
+ q(o, r, e);
476
482
  return;
477
483
  }
478
- const w = r.originalVertexArray, a = r.deformedVertexArray, l = r.indexArray;
479
- for (let i = 0; i < l.length; i += 3) {
480
- const h = l[i], f = l[i + 1], d = l[i + 2];
481
- if (!w[h] || !w[f] || !w[d]) continue;
482
- const y = w[h], m = w[f], F = w[d], g = X(y.x, y.y, c), p = X(m.x, m.y, c), x = X(F.x, F.y, c), A = Y(t), D = { x: g.x * A.width, y: g.y * A.height }, W = { x: p.x * A.width, y: p.y * A.height }, B = { x: x.x * A.width, y: x.y * A.height }, _ = a[h], I = a[f], v = a[d];
483
- k(s, t, D, W, B, _, I, v);
484
+ const w = t.originalVertexArray, l = t.deformedVertexArray, h = t.indexArray;
485
+ for (let c = 0; c < h.length; c += 3) {
486
+ const f = h[c], u = h[c + 1], d = h[c + 2];
487
+ if (!w[f] || !w[u] || !w[d]) continue;
488
+ const m = w[f], y = w[u], x = w[d], p = G(m.x, m.y, a), E = G(y.x, y.y, a), S = G(x.x, x.y, a), M = K(r), W = { x: p.x * M.width, y: p.y * M.height }, L = { x: E.x * M.width, y: E.y * M.height }, T = { x: S.x * M.width, y: S.y * M.height }, P = l[f], R = l[u], _ = l[d];
489
+ J(o, r, W, L, T, P, R, _);
484
490
  }
485
491
  }
486
- function le(s, t, e, r) {
487
- let n = 1 / 0, u = -1 / 0, o = 1 / 0, c = -1 / 0;
488
- r.forEach((i) => {
489
- n = Math.min(n, i.x), u = Math.max(u, i.x), o = Math.min(o, i.y), c = Math.max(c, i.y);
492
+ function se(o, r, e, t) {
493
+ let n = 1 / 0, s = -1 / 0, i = 1 / 0, a = -1 / 0;
494
+ t.forEach((c) => {
495
+ n = Math.min(n, c.x), s = Math.max(s, c.x), i = Math.min(i, c.y), a = Math.max(a, c.y);
490
496
  });
491
- const w = u - n, a = c - o;
492
- if (w < 1 || a < 1) {
493
- K(s, t, e);
497
+ const w = s - n, l = a - i;
498
+ if (w < 1 || l < 1) {
499
+ q(o, r, e);
494
500
  return;
495
501
  }
496
- const l = r.map((i) => {
497
- const h = (i.x - n) / w, f = (i.y - o) / a;
498
- return N(h, f, e);
502
+ const h = t.map((c) => {
503
+ const f = (c.x - n) / w, u = (c.y - i) / l;
504
+ return B(f, u, e);
499
505
  });
500
- V(s, t, l, "bicubic", 4, 40);
506
+ X(o, r, h, "bicubic", 4, 40);
501
507
  }
502
- function he(s, t, e, r, n, u, o, c) {
503
- const w = q(e);
504
- let a = 1 / 0, l = -1 / 0, i = 1 / 0, h = -1 / 0;
505
- r.forEach((F) => {
506
- a = Math.min(a, F.x), l = Math.max(l, F.x), i = Math.min(i, F.y), h = Math.max(h, F.y);
508
+ function ie(o, r, e, t, n, s, i, a) {
509
+ const w = F(e);
510
+ let l = 1 / 0, h = -1 / 0, c = 1 / 0, f = -1 / 0;
511
+ t.forEach((x) => {
512
+ l = Math.min(l, x.x), h = Math.max(h, x.x), c = Math.min(c, x.y), f = Math.max(f, x.y);
507
513
  });
508
- const f = l - a || 1, d = h - i || 1, y = n.length - 1, m = u.length - 1;
509
- for (let F = 0; F < m; F++)
510
- for (let g = 0; g < y; g++) {
511
- const p = F * 3, x = g * 3, A = [], D = y * 3 + 1;
514
+ const u = h - l || 1, d = f - c || 1, m = n.length - 1, y = s.length - 1;
515
+ for (let x = 0; x < y; x++)
516
+ for (let p = 0; p < m; p++) {
517
+ const E = x * 3, S = p * 3, M = [], W = m * 3 + 1;
512
518
  try {
513
- for (let S = 0; S < 4; S++)
514
- for (let T = 0; T < 4; T++) {
515
- const J = (p + S) * D + (x + T);
516
- r[J] && A.push(r[J]);
519
+ for (let I = 0; I < 4; I++)
520
+ for (let O = 0; O < 4; O++) {
521
+ const H = (E + I) * W + (S + O);
522
+ t[H] && M.push(t[H]);
517
523
  }
518
524
  } catch {
519
525
  continue;
520
526
  }
521
- if (A.length < 16) continue;
522
- const W = A.map((S) => {
523
- const T = (S.x - a) / f, J = (S.y - i) / d;
524
- return ee(T, J, w);
525
- }), B = n[g] / o, _ = n[g + 1] / o, I = u[F] / c, v = u[F + 1] / c;
526
- we(s, t, W, B, _, I, v);
527
+ if (M.length < 16) continue;
528
+ const L = M.map((I) => {
529
+ const O = (I.x - l) / u, H = (I.y - c) / d;
530
+ return D(O, H, w);
531
+ }), T = n[p] / i, P = n[p + 1] / i, R = s[x] / a, _ = s[x + 1] / a;
532
+ ae(o, r, L, T, P, R, _);
527
533
  }
528
534
  }
529
- function fe(s, t, e, r) {
530
- const n = q(e);
531
- let u = 1 / 0, o = -1 / 0, c = 1 / 0, w = -1 / 0;
532
- r.forEach((f) => {
533
- u = Math.min(u, f.x), o = Math.max(o, f.x), c = Math.min(c, f.y), w = Math.max(w, f.y);
535
+ function ce(o, r, e, t) {
536
+ const n = F(e);
537
+ let s = 1 / 0, i = -1 / 0, a = 1 / 0, w = -1 / 0;
538
+ t.forEach((u) => {
539
+ s = Math.min(s, u.x), i = Math.max(i, u.x), a = Math.min(a, u.y), w = Math.max(w, u.y);
534
540
  });
535
- const a = o - u || 1, l = w - c || 1, i = r.map((f) => {
536
- const d = (f.x - u) / a, y = (f.y - c) / l;
537
- return ee(d, y, n);
538
- }), h = Math.floor(Math.sqrt(r.length)) || 4;
539
- V(s, t, i, "grid", h, 40);
541
+ const l = i - s || 1, h = w - a || 1, c = t.map((u) => {
542
+ const d = (u.x - s) / l, m = (u.y - a) / h;
543
+ return D(d, m, n);
544
+ }), f = Math.floor(Math.sqrt(t.length)) || 4;
545
+ X(o, r, c, "grid", f, 40);
540
546
  }
541
- function we(s, t, e, r, n, u, o) {
542
- const w = Y(t), a = w.width, l = w.height;
543
- for (let i = 0; i < 20; i++)
544
- for (let h = 0; h < 20; h++) {
545
- const f = h / 20, d = i / 20, y = (h + 1) / 20, m = (i + 1) / 20, F = r + f * (n - r), g = r + y * (n - r), p = u + d * (o - u), x = u + m * (o - u), A = { x: F * a, y: p * l }, D = { x: g * a, y: p * l }, W = { x: F * a, y: x * l }, B = { x: g * a, y: x * l }, _ = C(f, d, e), I = C(y, d, e), v = C(f, m, e), S = C(y, m, e);
546
- k(s, t, A, D, W, _, I, v), k(s, t, D, B, W, I, S, v);
547
+ function ae(o, r, e, t, n, s, i) {
548
+ const w = K(r), l = w.width, h = w.height;
549
+ for (let c = 0; c < 20; c++)
550
+ for (let f = 0; f < 20; f++) {
551
+ const u = f / 20, d = c / 20, m = (f + 1) / 20, y = (c + 1) / 20, x = t + u * (n - t), p = t + m * (n - t), E = s + d * (i - s), S = s + y * (i - s), M = { x: x * l, y: E * h }, W = { x: p * l, y: E * h }, L = { x: x * l, y: S * h }, T = { x: p * l, y: S * h }, P = v(u, d, e), R = v(m, d, e), _ = v(u, y, e), I = v(m, y, e);
552
+ J(o, r, M, W, L, P, R, _), J(o, r, W, T, L, R, I, _);
547
553
  }
548
554
  }
549
- function K(s, t, e) {
550
- V(s, t, e, "bilinear", 0, 10);
555
+ function q(o, r, e) {
556
+ X(o, r, e, "bilinear", 0, 10);
551
557
  }
552
- function de(s, t, e) {
553
- V(s, t, e, "bicubic", 4, 40);
558
+ function le(o, r, e) {
559
+ X(o, r, e, "bicubic", 4, 40);
554
560
  }
555
- function V(s, t, e, r, n, u) {
556
- const o = Y(t), c = o.width, w = o.height;
557
- for (let a = 0; a < u; a++)
558
- for (let l = 0; l < u; l++) {
559
- const i = l / u, h = a / u, f = (l + 1) / u, d = (a + 1) / u, y = { x: i * c, y: h * w }, m = { x: f * c, y: h * w }, F = { x: i * c, y: d * w }, g = { x: f * c, y: d * w };
560
- let p, x, A, D;
561
- r === "bicubic" ? (p = C(i, h, e), x = C(f, h, e), A = C(i, d, e), D = C(f, d, e)) : r === "grid" ? (p = j(i, h, e, n), x = j(f, h, e, n), A = j(i, d, e, n), D = j(f, d, e, n)) : (p = N(i, h, e), x = N(f, h, e), A = N(i, d, e), D = N(f, d, e)), k(s, t, y, m, F, p, x, A), k(s, t, m, g, F, x, D, A);
561
+ function X(o, r, e, t, n, s) {
562
+ const i = K(r), a = i.width, w = i.height;
563
+ for (let l = 0; l < s; l++)
564
+ for (let h = 0; h < s; h++) {
565
+ const c = h / s, f = l / s, u = (h + 1) / s, d = (l + 1) / s, m = { x: c * a, y: f * w }, y = { x: u * a, y: f * w }, x = { x: c * a, y: d * w }, p = { x: u * a, y: d * w };
566
+ let E, S, M, W;
567
+ t === "bicubic" ? (E = v(c, f, e), S = v(u, f, e), M = v(c, d, e), W = v(u, d, e)) : t === "grid" ? (E = z(c, f, e, n), S = z(u, f, e, n), M = z(c, d, e, n), W = z(u, d, e, n)) : (E = B(c, f, e), S = B(u, f, e), M = B(c, d, e), W = B(u, d, e)), J(o, r, m, y, x, E, S, M), J(o, r, y, p, x, S, W, M);
562
568
  }
563
569
  }
564
- function Q(s, t) {
565
- const e = 1 - t;
566
- return s === 0 ? e * e * e : s === 1 ? 3 * e * e * t : s === 2 ? 3 * e * t * t : t * t * t;
570
+ function Q(o, r) {
571
+ const e = 1 - r;
572
+ return o === 0 ? e * e * e : o === 1 ? 3 * e * e * r : o === 2 ? 3 * e * r * r : r * r * r;
567
573
  }
568
- function C(s, t, e) {
569
- let r = 0, n = 0;
570
- for (let u = 0; u < 4; u++)
571
- for (let o = 0; o < 4; o++) {
572
- const c = Q(u, t) * Q(o, s);
573
- r += e[u * 4 + o].x * c, n += e[u * 4 + o].y * c;
574
+ function v(o, r, e) {
575
+ let t = 0, n = 0;
576
+ for (let s = 0; s < 4; s++)
577
+ for (let i = 0; i < 4; i++) {
578
+ const a = Q(s, r) * Q(i, o);
579
+ t += e[s * 4 + i].x * a, n += e[s * 4 + i].y * a;
574
580
  }
575
- return { x: r, y: n };
581
+ return { x: t, y: n };
576
582
  }
577
- function N(s, t, e) {
578
- const r = (1 - s) * (1 - t) * e[0].x + s * (1 - t) * e[1].x + s * t * e[2].x + (1 - s) * t * e[3].x, n = (1 - s) * (1 - t) * e[0].y + s * (1 - t) * e[1].y + s * t * e[2].y + (1 - s) * t * e[3].y;
579
- return { x: r, y: n };
583
+ function B(o, r, e) {
584
+ const t = (1 - o) * (1 - r) * e[0].x + o * (1 - r) * e[1].x + o * r * e[2].x + (1 - o) * r * e[3].x, n = (1 - o) * (1 - r) * e[0].y + o * (1 - r) * e[1].y + o * r * e[2].y + (1 - o) * r * e[3].y;
585
+ return { x: t, y: n };
580
586
  }
581
- function j(s, t, e, r) {
582
- const n = r - 1, u = s * n, o = t * n;
583
- let c = Math.floor(u), w = Math.floor(o);
584
- c >= n && (c = n - 1), w >= n && (w = n - 1), c < 0 && (c = 0), w < 0 && (w = 0);
585
- const a = u - c, l = o - w, i = e[w * r + c], h = e[w * r + (c + 1)], f = e[(w + 1) * r + c], d = e[(w + 1) * r + (c + 1)], y = (1 - a) * (1 - l) * i.x + a * (1 - l) * h.x + a * l * d.x + (1 - a) * l * f.x, m = (1 - a) * (1 - l) * i.y + a * (1 - l) * h.y + a * l * d.y + (1 - a) * l * f.y;
586
- return { x: y, y: m };
587
+ function z(o, r, e, t) {
588
+ const n = t - 1, s = o * n, i = r * n;
589
+ let a = Math.floor(s), w = Math.floor(i);
590
+ a >= n && (a = n - 1), w >= n && (w = n - 1), a < 0 && (a = 0), w < 0 && (w = 0);
591
+ const l = s - a, h = i - w, c = e[w * t + a], f = e[w * t + (a + 1)], u = e[(w + 1) * t + a], d = e[(w + 1) * t + (a + 1)], m = (1 - l) * (1 - h) * c.x + l * (1 - h) * f.x + l * h * d.x + (1 - l) * h * u.x, y = (1 - l) * (1 - h) * c.y + l * (1 - h) * f.y + l * h * d.y + (1 - l) * h * u.y;
592
+ return { x: m, y };
587
593
  }
588
- function q(s) {
589
- if (!E || !E.isReady())
594
+ function F(o) {
595
+ if (!g || !g.isReady())
590
596
  throw new Error("WASM 模块未加载,无法计算透视变换矩阵");
591
597
  try {
592
- return E.calcPerspectiveMatrix(s);
593
- } catch (t) {
594
- throw new Error(`WASM 计算透视矩阵失败: ${t}`);
598
+ return g.calcPerspectiveMatrix(o);
599
+ } catch (r) {
600
+ throw new Error(`WASM 计算透视矩阵失败: ${r}`);
595
601
  }
596
602
  }
597
- function ye(s) {
598
- if (!E || !E.isReady())
603
+ function fe(o) {
604
+ if (!g || !g.isReady())
599
605
  throw new Error("WASM 模块未加载,无法求逆矩阵");
600
606
  try {
601
- return E.invertMatrix(s);
602
- } catch (t) {
603
- throw new Error(`WASM 求逆矩阵失败: ${t}`);
607
+ return g.invertMatrix(o);
608
+ } catch (r) {
609
+ throw new Error(`WASM 求逆矩阵失败: ${r}`);
604
610
  }
605
611
  }
606
- function X(s, t, e) {
607
- if (!E || !E.isReady())
612
+ function G(o, r, e) {
613
+ if (!g || !g.isReady())
608
614
  throw new Error("WASM 模块未加载,无法应用逆透视变换");
609
615
  try {
610
- return E.applyInversePerspective(s, t, e);
611
- } catch (r) {
612
- throw new Error(`WASM 应用逆透视变换失败: ${r}`);
616
+ return g.applyInversePerspective(o, r, e);
617
+ } catch (t) {
618
+ throw new Error(`WASM 应用逆透视变换失败: ${t}`);
613
619
  }
614
620
  }
615
- function ee(s, t, e) {
616
- if (!E || !E.isReady())
621
+ function D(o, r, e) {
622
+ if (!g || !g.isReady())
617
623
  throw new Error("WASM 模块未加载,无法应用透视变换");
618
624
  try {
619
- return E.applyPerspective(s, t, e);
620
- } catch (r) {
621
- throw new Error(`WASM 应用透视变换失败: ${r}`);
625
+ return g.applyPerspective(o, r, e);
626
+ } catch (t) {
627
+ throw new Error(`WASM 应用透视变换失败: ${t}`);
622
628
  }
623
629
  }
624
- function k(s, t, e, r, n, u, o, c) {
625
- if (!t || "complete" in t && !t.complete || !("naturalWidth" in t ? t.naturalWidth : t.width)) return;
626
- const a = (u.x + o.x + c.x) / 3, l = (u.y + o.y + c.y) / 3, i = 1.65, h = a + (u.x - a) * i, f = l + (u.y - l) * i, d = a + (o.x - a) * i, y = l + (o.y - l) * i, m = a + (c.x - a) * i, F = l + (c.y - l) * i;
627
- s.save(), s.beginPath(), s.moveTo(h, f), s.lineTo(d, y), s.lineTo(m, F), s.closePath(), s.clip();
628
- const g = e.x * (n.y - r.y) - r.x * n.y + n.x * r.y + (r.x - n.x) * e.y;
629
- if (Math.abs(g) < 1e-3) {
630
- s.restore();
630
+ function J(o, r, e, t, n, s, i, a) {
631
+ if (!r || "complete" in r && !r.complete || !("naturalWidth" in r ? r.naturalWidth : r.width)) return;
632
+ const l = (s.x + i.x + a.x) / 3, h = (s.y + i.y + a.y) / 3, c = 1.65, f = l + (s.x - l) * c, u = h + (s.y - h) * c, d = l + (i.x - l) * c, m = h + (i.y - h) * c, y = l + (a.x - l) * c, x = h + (a.y - h) * c;
633
+ o.save(), o.beginPath(), o.moveTo(f, u), o.lineTo(d, m), o.lineTo(y, x), o.closePath(), o.clip();
634
+ const p = e.x * (n.y - t.y) - t.x * n.y + n.x * t.y + (t.x - n.x) * e.y;
635
+ if (Math.abs(p) < 1e-3) {
636
+ o.restore();
631
637
  return;
632
638
  }
633
- const p = -(e.y * (c.x - o.x) - r.y * c.x + n.y * o.x + (r.y - n.y) * u.x) / g, x = (r.y * c.y + e.y * (o.y - c.y) - n.y * o.y + (n.y - r.y) * u.y) / g, A = (e.x * (c.x - o.x) - r.x * c.x + n.x * o.x + (r.x - n.x) * u.x) / g, D = -(r.x * c.y + e.x * (o.y - c.y) - n.x * o.y + (n.x - r.x) * u.y) / g, W = (e.x * (n.y * o.x - r.y * c.x) + e.y * (r.x * c.x - n.x * o.x) + (n.x * r.y - r.x * n.y) * u.x) / g, B = (e.x * (n.y * o.y - r.y * c.y) + e.y * (r.x * c.y - n.x * o.y) + (n.x * r.y - r.x * n.y) * u.y) / g;
634
- s.transform(p, x, A, D, W, B), s.drawImage(t, 0, 0), s.restore();
639
+ const E = -(e.y * (a.x - i.x) - t.y * a.x + n.y * i.x + (t.y - n.y) * s.x) / p, S = (t.y * a.y + e.y * (i.y - a.y) - n.y * i.y + (n.y - t.y) * s.y) / p, M = (e.x * (a.x - i.x) - t.x * a.x + n.x * i.x + (t.x - n.x) * s.x) / p, W = -(t.x * a.y + e.x * (i.y - a.y) - n.x * i.y + (n.x - t.x) * s.y) / p, L = (e.x * (n.y * i.x - t.y * a.x) + e.y * (t.x * a.x - n.x * i.x) + (n.x * t.y - t.x * n.y) * s.x) / p, T = (e.x * (n.y * i.y - t.y * a.y) + e.y * (t.x * a.y - n.x * i.y) + (n.x * t.y - t.x * n.y) * s.y) / p;
640
+ o.transform(E, S, M, W, L, T), o.drawImage(r, 0, 0), o.restore();
635
641
  }
636
- self.onmessage = async (s) => {
637
- if (s.data?.type === "SET_DEBUG") {
638
- H = !!s.data?.debugRender, self.__DEBUG_RENDER__ = H;
642
+ A("🚀 [deform.worker] Worker 启动,等待 License Token...");
643
+ self.onmessage = async (o) => {
644
+ if (o.data?.type === "SET_DEBUG") {
645
+ V = !!o.data?.debugRender, self.__DEBUG_RENDER__ = V;
639
646
  return;
640
647
  }
641
- if (s.data?.type === "SET_LICENSE") {
642
- ue(s.data);
648
+ if (o.data?.type === "SET_LICENSE") {
649
+ ee(o.data);
643
650
  return;
644
651
  }
645
- const t = s.data, { id: e, designBitmap: r, layerData: n, canvasSize: u } = t;
646
- if (!r) {
647
- self.postMessage({
652
+ const r = o.data, { id: e, designBitmap: t, layerData: n, canvasSize: s } = r;
653
+ if (!t) {
654
+ console.error(`[deform worker] ❌ designBitmap 未定义 id=${e}`), self.postMessage({
648
655
  id: e,
649
656
  imageBitmap: null,
650
657
  error: "designBitmap 未定义",
@@ -653,7 +660,7 @@ self.onmessage = async (s) => {
653
660
  return;
654
661
  }
655
662
  if (!n) {
656
- self.postMessage({
663
+ console.error(`[deform worker] ❌ layerData 未定义 id=${e}`), self.postMessage({
657
664
  id: e,
658
665
  imageBitmap: null,
659
666
  error: "layerData 未定义",
@@ -661,47 +668,54 @@ self.onmessage = async (s) => {
661
668
  });
662
669
  return;
663
670
  }
664
- const o = performance.now(), c = (/* @__PURE__ */ new Date()).toISOString();
665
- if (L(`[deform worker] ⏰ 开始 id=${e} 时间=${c}`, {
666
- designBitmap: { width: r.width, height: r.height },
671
+ const i = performance.now(), a = (/* @__PURE__ */ new Date()).toISOString();
672
+ if (A(`[deform worker] ⏰ 开始 id=${e} 时间=${a}`, {
673
+ designBitmap: { width: t.width, height: t.height },
667
674
  size: n.size,
668
675
  bounds: n.bounds,
669
- canvasSize: u
670
- }), !E || !E.isReady())
671
- if (b || self.LICENSE_TOKEN)
676
+ canvasSize: s
677
+ }), !g || !g.isReady())
678
+ if (k || self.LICENSE_TOKEN) {
679
+ console.log("🔄 [deform.worker] WASM 未就绪,尝试初始化...");
672
680
  try {
673
- if (R && M && await M, (!E || !E.isReady()) && await G(), !E || !E.isReady())
681
+ if (N && b && (console.log("⏳ [deform.worker] WASM 正在加载中,等待完成..."), await b), (!g || !g.isReady()) && await Y(), !g || !g.isReady())
674
682
  throw new Error("WASM 模块仍未就绪");
675
- } catch (a) {
676
- const i = performance.now() - o;
683
+ console.log("✅ [deform.worker] WASM 初始化成功,继续处理任务");
684
+ } catch (l) {
685
+ console.error("❌ [deform.worker] WASM 初始化失败:", l);
686
+ const c = performance.now() - i;
677
687
  self.postMessage({
678
688
  id: e,
679
- error: `WASM 初始化失败: ${a.message}`,
680
- duration: i
689
+ error: `WASM 初始化失败: ${l.message}`,
690
+ duration: c
681
691
  });
682
692
  return;
683
693
  }
684
- else {
685
- let a = 0;
686
- const l = 500, i = 50;
687
- let h = null;
688
- for (; a < l && !h; )
689
- await new Promise((f) => setTimeout(f, i)), a += i, h = b || self.LICENSE_TOKEN;
690
- if (h)
694
+ } else {
695
+ console.log("⏳ [deform.worker] 等待 License Token...");
696
+ let l = 0;
697
+ const h = 500, c = 50;
698
+ let f = null;
699
+ for (; l < h && !f; )
700
+ await new Promise((u) => setTimeout(u, c)), l += c, f = k || self.LICENSE_TOKEN;
701
+ if (f)
691
702
  try {
692
- if (b = h, O = O || self.LICENSE_API_URL, $ = $ || self.DEVICE_ID, U = U || self.DOMAIN, R && M ? await M : E || await G(), !E || !E.isReady())
703
+ if (k = f, U = U || self.LICENSE_API_URL, C = C || self.DEVICE_ID, j = j || self.DOMAIN, N && b ? (console.log("⏳ [deform.worker] WASM 正在加载中,等待完成..."), await b) : g || await Y(), !g || !g.isReady())
693
704
  throw new Error("WASM 模块未就绪");
694
- } catch (f) {
695
- const y = performance.now() - o;
705
+ console.log("✅ [deform.worker] WASM 初始化成功,继续处理任务");
706
+ } catch (u) {
707
+ console.error("❌ [deform.worker] WASM 初始化失败:", u);
708
+ const m = performance.now() - i;
696
709
  self.postMessage({
697
710
  id: e,
698
- error: `WASM 初始化失败: ${f.message}`,
699
- duration: y
711
+ error: `WASM 初始化失败: ${u.message}`,
712
+ duration: m
700
713
  });
701
714
  return;
702
715
  }
703
- else if (!h) {
704
- const d = performance.now() - o;
716
+ else if (!f) {
717
+ console.error("❌ [deform.worker] 等待超时,License Token 未设置");
718
+ const d = performance.now() - i;
705
719
  self.postMessage({
706
720
  id: e,
707
721
  error: "LICENSE_TOKEN 未设置,无法使用 WASM 功能",
@@ -713,7 +727,7 @@ self.onmessage = async (s) => {
713
727
  try {
714
728
  const w = n.bounds;
715
729
  if (!w || !w.width || !w.height) {
716
- self.postMessage({
730
+ console.error(`[deform worker] ❌ bounds 无效 id=${e}`, w), self.postMessage({
717
731
  id: e,
718
732
  imageBitmap: null,
719
733
  error: "bounds 无效",
@@ -721,40 +735,43 @@ self.onmessage = async (s) => {
721
735
  });
722
736
  return;
723
737
  }
724
- const a = oe(n, u);
725
- let l, i;
726
- if (u && u.width > 0 && u.height > 0)
727
- l = u.width, i = u.height;
738
+ const l = re(n, s);
739
+ let h, c;
740
+ if (s && s.width > 0 && s.height > 0)
741
+ h = s.width, c = s.height;
728
742
  else {
729
- const x = n.size || n.placedLayer || {
743
+ const S = n.size || n.placedLayer || {
730
744
  width: w.width,
731
745
  height: w.height
732
746
  };
733
- l = x.width, i = x.height;
747
+ h = S.width, c = S.height;
734
748
  }
735
- const h = new OffscreenCanvas(l, i), f = h.getContext("2d");
736
- if (!f) {
737
- const A = performance.now() - o;
738
- self.postMessage({ id: e, error: "Canvas context unavailable", duration: A });
749
+ const f = new OffscreenCanvas(h, c), u = f.getContext("2d");
750
+ if (!u) {
751
+ const M = performance.now() - i;
752
+ self.postMessage({ id: e, error: "Canvas context unavailable", duration: M });
739
753
  return;
740
754
  }
741
- const d = ce(f, r, a), y = h.transferToImageBitmap(), F = performance.now() - o, g = (/* @__PURE__ */ new Date()).toISOString();
742
- L(
743
- `[deform worker] ✅ 结束 id=${e} 时间=${g} 耗时=${Math.round(F)}ms 变形方法=${d}`,
755
+ const d = ne(u, t, l), m = f.transferToImageBitmap(), x = performance.now() - i, p = (/* @__PURE__ */ new Date()).toISOString();
756
+ A(
757
+ `[deform worker] ✅ 结束 id=${e} 时间=${p} 耗时=${Math.round(x)}ms 变形方法=${d}`,
744
758
  {
745
- width: y.width,
746
- height: y.height
759
+ width: m.width,
760
+ height: m.height
747
761
  }
748
- ), r.close();
749
- const p = ie(
750
- { id: e, imageBitmap: y, duration: F }
762
+ ), t.close();
763
+ const E = te(
764
+ { id: e, imageBitmap: m, duration: x }
751
765
  );
752
766
  self.postMessage(
753
- p,
754
- p.imageBitmap ? [p.imageBitmap] : []
767
+ E,
768
+ E.imageBitmap ? [E.imageBitmap] : []
755
769
  );
756
770
  } catch (w) {
757
- const l = performance.now() - o, i = w instanceof Error ? w.message : String(w);
758
- (/* @__PURE__ */ new Date()).toISOString(), self.postMessage({ id: e, error: i, duration: l });
771
+ const h = performance.now() - i, c = w instanceof Error ? w.message : String(w), f = (/* @__PURE__ */ new Date()).toISOString();
772
+ A(
773
+ `[deform worker] ❌ 错误 id=${e} 时间=${f} 耗时=${Math.round(h)}ms`,
774
+ c
775
+ ), self.postMessage({ id: e, error: c, duration: h });
759
776
  }
760
777
  };