light-chain-open-ui 1.0.0 → 1.0.2

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.
@@ -0,0 +1,1592 @@
1
+ import { C as e, D as t, E as n, O as r, P as i, S as a, T as o, _ as s, a as c, b as l, f as u, g as d, h as f, k as p, l as m, m as h, p as g, u as _, v, w as y, x as b, y as x } from "./constants-DmzJOR2G.js";
2
+ //#region src/core/types.ts
3
+ var S = {
4
+ RUNNING: "running",
5
+ DONE: "done"
6
+ }, C = {
7
+ DONE: "done",
8
+ EXCEPTION: "exception"
9
+ }, w = {
10
+ MAX_SIZE_MB: 10,
11
+ MAX_WIDTH: 2048,
12
+ MAX_HEIGHT: 2048,
13
+ ASPECT_RATIO_MIN: 1 / 3,
14
+ ASPECT_RATIO_MAX: 3
15
+ }, T = [
16
+ "1:1",
17
+ "2:3",
18
+ "3:4",
19
+ "3:2",
20
+ "4:3",
21
+ "9:16",
22
+ "16:9"
23
+ ];
24
+ //#endregion
25
+ //#region src/core/image-validator.ts
26
+ function E(e) {
27
+ let t = [];
28
+ e.size > w.MAX_SIZE_MB * 1024 * 1024 && t.push("图片大小不能超过10MB"), (e.width > w.MAX_WIDTH || e.height > w.MAX_HEIGHT) && t.push("图片分辨率不能超过2048x2048");
29
+ let n = e.width / e.height;
30
+ return (n < w.ASPECT_RATIO_MIN || n > w.ASPECT_RATIO_MAX) && t.push("宽高比必须在1:3到3:1之间"), {
31
+ valid: t.length === 0,
32
+ errors: t
33
+ };
34
+ }
35
+ function D(e, t) {
36
+ let n = [];
37
+ return (e.width !== t.width || e.height !== t.height) && n.push("蒙版尺寸必须与原图尺寸相同"), {
38
+ valid: n.length === 0,
39
+ errors: n
40
+ };
41
+ }
42
+ async function O(e) {
43
+ let t = e.size <= w.MAX_SIZE_MB * 1024 * 1024;
44
+ return new Promise((n) => {
45
+ let r = new Image(), i = URL.createObjectURL(e);
46
+ r.onload = () => {
47
+ URL.revokeObjectURL(i);
48
+ let e = [];
49
+ (r.width > w.MAX_WIDTH || r.height > w.MAX_HEIGHT) && e.push("图片分辨率不能超过2048x2048");
50
+ let a = r.width / r.height;
51
+ (a < w.ASPECT_RATIO_MIN || a > w.ASPECT_RATIO_MAX) && e.push("宽高比必须在1:3到3:1之间"), t || e.push("图片大小不能超过10MB"), n({
52
+ valid: e.length === 0,
53
+ errors: e
54
+ });
55
+ }, r.onerror = () => {
56
+ URL.revokeObjectURL(i), n({
57
+ valid: !1,
58
+ errors: ["无法加载图片"]
59
+ });
60
+ }, r.src = i;
61
+ });
62
+ }
63
+ //#endregion
64
+ //#region src/core/task-types/types-part-a.ts
65
+ var k = {
66
+ GeneratePrinting: {
67
+ key: "GeneratePrinting",
68
+ title: "图案设计",
69
+ description: "上传1-2张灵感素材图进行融合发散设计",
70
+ fields: [
71
+ {
72
+ name: "imgUrlList",
73
+ label: "灵感素材图",
74
+ type: "images",
75
+ required: !0,
76
+ hint: "上传1-2张灵感素材图"
77
+ },
78
+ {
79
+ name: "prompt",
80
+ label: "图案风格",
81
+ type: "text",
82
+ required: !0,
83
+ placeholder: "描述想要的图案风格"
84
+ },
85
+ {
86
+ name: "aspectRatio",
87
+ label: "比例",
88
+ type: "aspectRatio"
89
+ }
90
+ ]
91
+ },
92
+ VirtualFitting: {
93
+ key: "VirtualFitting",
94
+ title: "AI试衣",
95
+ description: "上传服装图片生成模特上身效果图",
96
+ fields: [
97
+ {
98
+ name: "imgUrl",
99
+ label: "上装图片",
100
+ type: "image",
101
+ required: !0,
102
+ hint: "挂拍图/人台图/平铺图"
103
+ },
104
+ {
105
+ name: "lowerImgUrl",
106
+ label: "下装图片",
107
+ type: "image"
108
+ },
109
+ {
110
+ name: "prompt",
111
+ label: "试衣需求",
112
+ type: "text",
113
+ placeholder: "描述试衣需求"
114
+ },
115
+ {
116
+ name: "aspectRatio",
117
+ label: "比例",
118
+ type: "aspectRatio"
119
+ }
120
+ ]
121
+ },
122
+ FixFace: {
123
+ key: "FixFace",
124
+ title: "面部优化",
125
+ description: "智能修复模特脸部畸形",
126
+ fields: [{
127
+ name: "imgUrl",
128
+ label: "模特图",
129
+ type: "image",
130
+ required: !0
131
+ }]
132
+ },
133
+ ChangeFace: {
134
+ key: "ChangeFace",
135
+ title: "面部替换",
136
+ description: "上传指定面部图片替换模特面容",
137
+ fields: [{
138
+ name: "imgUrl",
139
+ label: "模特图",
140
+ type: "image",
141
+ required: !0
142
+ }, {
143
+ name: "refImgUrl",
144
+ label: "参考面部图",
145
+ type: "image",
146
+ required: !0
147
+ }]
148
+ },
149
+ MultiPerspective: {
150
+ key: "MultiPerspective",
151
+ title: "多视角",
152
+ description: "生成不同角度的展示效果图",
153
+ fields: [{
154
+ name: "imgUrl",
155
+ label: "图片",
156
+ type: "image",
157
+ required: !0
158
+ }, {
159
+ name: "perspective",
160
+ label: "视角",
161
+ type: "enum",
162
+ required: !0,
163
+ options: l
164
+ }]
165
+ },
166
+ PrintingTiling: {
167
+ key: "PrintingTiling",
168
+ title: "图案印染上身",
169
+ description: "将指定图案虚拟印染到款式图上",
170
+ fields: [
171
+ {
172
+ name: "imgUrl",
173
+ label: "款式图",
174
+ type: "image",
175
+ required: !0
176
+ },
177
+ {
178
+ name: "maskUrl",
179
+ label: "蒙版",
180
+ type: "mask"
181
+ },
182
+ {
183
+ name: "printingImgUrl",
184
+ label: "印花图案",
185
+ type: "image",
186
+ required: !0
187
+ },
188
+ {
189
+ name: "prompt",
190
+ label: "印染需求",
191
+ type: "text",
192
+ placeholder: "描述印染需求"
193
+ }
194
+ ]
195
+ },
196
+ ChangeDesignPoint: {
197
+ key: "ChangeDesignPoint",
198
+ title: "设计点修改",
199
+ description: "通过参考图实现设计点修改或融合",
200
+ fields: [
201
+ {
202
+ name: "imgUrl",
203
+ label: "原图",
204
+ type: "image",
205
+ required: !0
206
+ },
207
+ {
208
+ name: "maskUrl",
209
+ label: "蒙版",
210
+ type: "mask"
211
+ },
212
+ {
213
+ name: "refImgUrl",
214
+ label: "参考图",
215
+ type: "image"
216
+ },
217
+ {
218
+ name: "prompt",
219
+ label: "修改需求",
220
+ type: "text",
221
+ placeholder: "描述修改需求"
222
+ }
223
+ ]
224
+ },
225
+ ChangeColor: {
226
+ key: "ChangeColor",
227
+ title: "服装改色",
228
+ description: "自定义区域一键换色",
229
+ fields: [
230
+ {
231
+ name: "imgUrl",
232
+ label: "原图",
233
+ type: "image",
234
+ required: !0
235
+ },
236
+ {
237
+ name: "maskUrl",
238
+ label: "改色区域蒙版",
239
+ type: "mask",
240
+ required: !0
241
+ },
242
+ {
243
+ name: "hexCode",
244
+ label: "目标颜色",
245
+ type: "color",
246
+ required: !0
247
+ }
248
+ ]
249
+ },
250
+ ChangeFabric: {
251
+ key: "ChangeFabric",
252
+ title: "面料上身",
253
+ description: "将指定面料一键上身到款式图",
254
+ fields: [
255
+ {
256
+ name: "imgUrl",
257
+ label: "款式图/模特图",
258
+ type: "image",
259
+ required: !0
260
+ },
261
+ {
262
+ name: "maskUrl",
263
+ label: "蒙版",
264
+ type: "mask",
265
+ required: !0
266
+ },
267
+ {
268
+ name: "fabricImgUrl",
269
+ label: "面料图",
270
+ type: "image",
271
+ required: !0
272
+ }
273
+ ]
274
+ },
275
+ Sr: {
276
+ key: "Sr",
277
+ title: "高清放大",
278
+ description: "无损高清放大与细节强化",
279
+ fields: [{
280
+ name: "imgUrl",
281
+ label: "图片",
282
+ type: "image",
283
+ required: !0
284
+ }, {
285
+ name: "scale",
286
+ label: "放大倍数",
287
+ type: "enum",
288
+ required: !0,
289
+ options: o
290
+ }]
291
+ },
292
+ VectorConvert: {
293
+ key: "VectorConvert",
294
+ title: "矢量图转换",
295
+ description: "生成可编辑的矢量格式文件",
296
+ fields: [{
297
+ name: "imgUrl",
298
+ label: "图片",
299
+ type: "image",
300
+ required: !0
301
+ }, {
302
+ name: "patternType",
303
+ label: "图案类型",
304
+ type: "enum",
305
+ required: !0,
306
+ options: x
307
+ }]
308
+ },
309
+ ChangeModel: {
310
+ key: "ChangeModel",
311
+ title: "模特更换",
312
+ description: "一键更换模特并支持自定义选择",
313
+ fields: [
314
+ {
315
+ name: "imgUrl",
316
+ label: "模特图",
317
+ type: "image",
318
+ required: !0
319
+ },
320
+ {
321
+ name: "gender",
322
+ label: "性别",
323
+ type: "enum",
324
+ options: d
325
+ },
326
+ {
327
+ name: "age",
328
+ label: "年龄",
329
+ type: "enum",
330
+ options: _
331
+ },
332
+ {
333
+ name: "race",
334
+ label: "人种",
335
+ type: "enum",
336
+ options: a
337
+ }
338
+ ]
339
+ },
340
+ GenerateSketch: {
341
+ key: "GenerateSketch",
342
+ title: "平铺图转线稿",
343
+ description: "上传平铺图生成线稿",
344
+ fields: [{
345
+ name: "imgUrl",
346
+ label: "平铺图",
347
+ type: "image",
348
+ required: !0
349
+ }]
350
+ },
351
+ ModelGenerateSketch: {
352
+ key: "ModelGenerateSketch",
353
+ title: "模特图转线稿",
354
+ description: "上传模特图生成线稿",
355
+ fields: [{
356
+ name: "imgUrl",
357
+ label: "模特图",
358
+ type: "image",
359
+ required: !0
360
+ }, {
361
+ name: "position",
362
+ label: "服装位置",
363
+ type: "enum",
364
+ options: b
365
+ }]
366
+ },
367
+ Eliminate: {
368
+ key: "Eliminate",
369
+ title: "AI消除",
370
+ description: "一键消除指定元素",
371
+ fields: [{
372
+ name: "imgUrl",
373
+ label: "原图",
374
+ type: "image",
375
+ required: !0
376
+ }, {
377
+ name: "maskUrl",
378
+ label: "消除区域蒙版",
379
+ type: "mask",
380
+ required: !0
381
+ }]
382
+ },
383
+ ExpandImage: {
384
+ key: "ExpandImage",
385
+ title: "AI扩图",
386
+ description: "一键扩充人物或背景",
387
+ fields: [{
388
+ name: "imgUrl",
389
+ label: "原图",
390
+ type: "image",
391
+ required: !0
392
+ }, {
393
+ name: "maskUrl",
394
+ label: "扩图区域蒙版",
395
+ type: "mask",
396
+ required: !0
397
+ }]
398
+ },
399
+ ClothingDesign: {
400
+ key: "ClothingDesign",
401
+ title: "AI创款",
402
+ description: "根据灵感图快速创款",
403
+ fields: [
404
+ {
405
+ name: "imgUrlList",
406
+ label: "灵感款式图",
407
+ type: "images",
408
+ hint: "上传1-3张灵感图"
409
+ },
410
+ {
411
+ name: "fabricImgUrl",
412
+ label: "面料图",
413
+ type: "image",
414
+ hint: "上传面料图进行面料创款"
415
+ },
416
+ {
417
+ name: "words",
418
+ label: "创款需求",
419
+ type: "text",
420
+ placeholder: "描述创款需求"
421
+ },
422
+ {
423
+ name: "aspectRatio",
424
+ label: "比例",
425
+ type: "aspectRatio"
426
+ }
427
+ ]
428
+ },
429
+ ChangePattern: {
430
+ key: "ChangePattern",
431
+ title: "服装改版",
432
+ description: "通过选择部位和版型修改服装版型",
433
+ fields: [{
434
+ name: "imgUrl",
435
+ label: "服装图",
436
+ type: "image",
437
+ required: !0
438
+ }, {
439
+ name: "detailList",
440
+ label: "改版部位",
441
+ type: "multiEnum",
442
+ required: !0,
443
+ options: h
444
+ }]
445
+ },
446
+ GenerateModel: {
447
+ key: "GenerateModel",
448
+ title: "定制模特",
449
+ description: "生成符合需求的虚拟模特",
450
+ fields: [
451
+ {
452
+ name: "imgUrlList",
453
+ label: "参考图片",
454
+ type: "images",
455
+ required: !0,
456
+ hint: "上传1-10张带面容的图片"
457
+ },
458
+ {
459
+ name: "gender",
460
+ label: "性别",
461
+ type: "enum",
462
+ required: !0,
463
+ options: d
464
+ },
465
+ {
466
+ name: "race",
467
+ label: "人种",
468
+ type: "enum",
469
+ options: a
470
+ }
471
+ ]
472
+ },
473
+ ModifyPrinting: {
474
+ key: "ModifyPrinting",
475
+ title: "图案修改",
476
+ description: "上传图案和参考图AI修改",
477
+ fields: [
478
+ {
479
+ name: "imgUrl",
480
+ label: "原图",
481
+ type: "image",
482
+ required: !0
483
+ },
484
+ {
485
+ name: "refImgUrl",
486
+ label: "参考图",
487
+ type: "image"
488
+ },
489
+ {
490
+ name: "maskUrl",
491
+ label: "蒙版",
492
+ type: "mask"
493
+ },
494
+ {
495
+ name: "prompt",
496
+ label: "修改需求",
497
+ type: "text",
498
+ placeholder: "描述修改需求"
499
+ }
500
+ ]
501
+ },
502
+ CutOut: {
503
+ key: "CutOut",
504
+ title: "智能抠图",
505
+ description: "一键抠图修边",
506
+ fields: [{
507
+ name: "imgUrl",
508
+ label: "图片",
509
+ type: "image",
510
+ required: !0
511
+ }, {
512
+ name: "recognitionType",
513
+ label: "识别类型",
514
+ type: "enum",
515
+ required: !0,
516
+ options: e
517
+ }]
518
+ },
519
+ LineArtToReal: {
520
+ key: "LineArtToReal",
521
+ title: "线稿转实物",
522
+ description: "线稿图生成实物效果平铺图",
523
+ fields: [
524
+ {
525
+ name: "imgUrl",
526
+ label: "线稿图",
527
+ type: "image",
528
+ required: !0
529
+ },
530
+ {
531
+ name: "imageType",
532
+ label: "图片类型",
533
+ type: "enum",
534
+ required: !0,
535
+ options: s
536
+ },
537
+ {
538
+ name: "prompt",
539
+ label: "款式特征",
540
+ type: "text",
541
+ placeholder: "描述款式特征"
542
+ }
543
+ ]
544
+ },
545
+ FixPartial: {
546
+ key: "FixPartial",
547
+ title: "局部修复",
548
+ description: "修复或重新创造指定区域",
549
+ fields: [
550
+ {
551
+ name: "imgUrl",
552
+ label: "原图",
553
+ type: "image",
554
+ required: !0
555
+ },
556
+ {
557
+ name: "maskUrl",
558
+ label: "修复区域蒙版",
559
+ type: "mask",
560
+ required: !0
561
+ },
562
+ {
563
+ name: "prompt",
564
+ label: "修复需求",
565
+ type: "text",
566
+ placeholder: "描述修复需求"
567
+ }
568
+ ]
569
+ },
570
+ DetailCompensation: {
571
+ key: "DetailCompensation",
572
+ title: "细节补偿",
573
+ description: "精准还原服装细节",
574
+ fields: [
575
+ {
576
+ name: "imgUrl",
577
+ label: "原图",
578
+ type: "image",
579
+ required: !0
580
+ },
581
+ {
582
+ name: "maskUrl",
583
+ label: "蒙版",
584
+ type: "mask"
585
+ },
586
+ {
587
+ name: "refImgUrl",
588
+ label: "参考图",
589
+ type: "image"
590
+ }
591
+ ]
592
+ },
593
+ ChangeClothesByImg: {
594
+ key: "ChangeClothesByImg",
595
+ title: "服装穿搭调整",
596
+ description: "上下装搭配调整",
597
+ fields: [{
598
+ name: "imgUrl",
599
+ label: "原图",
600
+ type: "image",
601
+ required: !0
602
+ }, {
603
+ name: "changeImgUrl",
604
+ label: "搭配服装图",
605
+ type: "image",
606
+ required: !0
607
+ }]
608
+ }
609
+ }, A = {
610
+ ChangeAccessoriesByImg: {
611
+ key: "ChangeAccessoriesByImg",
612
+ title: "配饰穿搭调整",
613
+ description: "背包鞋子首饰等搭配调整",
614
+ fields: [
615
+ {
616
+ name: "imgUrl",
617
+ label: "原图",
618
+ type: "image",
619
+ required: !0
620
+ },
621
+ {
622
+ name: "changeImgUrl",
623
+ label: "搭配物品图",
624
+ type: "image",
625
+ required: !0
626
+ },
627
+ {
628
+ name: "accessoryType",
629
+ label: "配件类型",
630
+ type: "enum",
631
+ required: !0,
632
+ options: m
633
+ }
634
+ ]
635
+ },
636
+ VirtualFittingReference: {
637
+ key: "VirtualFittingReference",
638
+ title: "AI试衣参考图模式",
639
+ description: "上传模特参考图生成试衣效果",
640
+ fields: [{
641
+ name: "imgUrl",
642
+ label: "服装图片",
643
+ type: "image",
644
+ required: !0
645
+ }, {
646
+ name: "refImgUrl",
647
+ label: "模特参考图",
648
+ type: "image",
649
+ required: !0
650
+ }]
651
+ },
652
+ VirtualFittingTemplate: {
653
+ key: "VirtualFittingTemplate",
654
+ title: "AI试衣模板模式",
655
+ description: "选择试衣场景模板",
656
+ fields: [{
657
+ name: "imgUrl",
658
+ label: "服装图片",
659
+ type: "image",
660
+ required: !0
661
+ }, {
662
+ name: "templateId",
663
+ label: "试衣模板",
664
+ type: "enum",
665
+ required: !0,
666
+ options: p
667
+ }]
668
+ },
669
+ FixDeformities: {
670
+ key: "FixDeformities",
671
+ title: "畸形修复",
672
+ description: "修复手部脚部脸部畸形",
673
+ fields: [{
674
+ name: "imgUrl",
675
+ label: "模特图",
676
+ type: "image",
677
+ required: !0
678
+ }, {
679
+ name: "maskUrl",
680
+ label: "修复区域蒙版",
681
+ type: "mask",
682
+ required: !0
683
+ }]
684
+ },
685
+ IntelligentCropping: {
686
+ key: "IntelligentCropping",
687
+ title: "AI智能裁图",
688
+ description: "自定义像素或比例裁图",
689
+ fields: [
690
+ {
691
+ name: "imgUrl",
692
+ label: "图片",
693
+ type: "image",
694
+ required: !0
695
+ },
696
+ {
697
+ name: "mode",
698
+ label: "裁剪模式",
699
+ type: "enum",
700
+ required: !0,
701
+ options: g
702
+ },
703
+ {
704
+ name: "x",
705
+ label: "X坐标",
706
+ type: "number"
707
+ },
708
+ {
709
+ name: "y",
710
+ label: "Y坐标",
711
+ type: "number"
712
+ },
713
+ {
714
+ name: "width",
715
+ label: "宽度",
716
+ type: "number"
717
+ },
718
+ {
719
+ name: "height",
720
+ label: "高度",
721
+ type: "number"
722
+ },
723
+ {
724
+ name: "aspectRatio",
725
+ label: "宽高比",
726
+ type: "aspectRatio"
727
+ }
728
+ ]
729
+ },
730
+ ModelToFlat: {
731
+ key: "ModelToFlat",
732
+ title: "模特转平铺",
733
+ description: "模特图生成平铺图效果",
734
+ fields: [{
735
+ name: "imgUrl",
736
+ label: "模特图",
737
+ type: "image",
738
+ required: !0
739
+ }, {
740
+ name: "position",
741
+ label: "服装位置",
742
+ type: "enum",
743
+ required: !0,
744
+ options: b
745
+ }]
746
+ },
747
+ GenerateShortVideo: {
748
+ key: "GenerateShortVideo",
749
+ title: "短视频生成",
750
+ description: "上传图片生成短视频",
751
+ fields: [
752
+ {
753
+ name: "imgUrl",
754
+ label: "首帧图片",
755
+ type: "image",
756
+ required: !0
757
+ },
758
+ {
759
+ name: "tailImgUrl",
760
+ label: "尾帧图片",
761
+ type: "image"
762
+ },
763
+ {
764
+ name: "prompt",
765
+ label: "文本指令",
766
+ type: "text",
767
+ placeholder: "描述视频内容"
768
+ },
769
+ {
770
+ name: "duration",
771
+ label: "时长",
772
+ type: "enum",
773
+ required: !0,
774
+ options: f
775
+ }
776
+ ]
777
+ },
778
+ OneClickModifyPrinting: {
779
+ key: "OneClickModifyPrinting",
780
+ title: "一键改图案",
781
+ description: "通过文本或参考图一键更改图案",
782
+ fields: [
783
+ {
784
+ name: "imgUrl",
785
+ label: "原图",
786
+ type: "image",
787
+ required: !0
788
+ },
789
+ {
790
+ name: "refImgUrl",
791
+ label: "参考图",
792
+ type: "image"
793
+ },
794
+ {
795
+ name: "prompt",
796
+ label: "文本指令",
797
+ type: "text",
798
+ placeholder: "描述图案修改需求"
799
+ },
800
+ {
801
+ name: "aspectRatio",
802
+ label: "宽高比",
803
+ type: "aspectRatio"
804
+ }
805
+ ]
806
+ },
807
+ OrientationDesign: {
808
+ key: "OrientationDesign",
809
+ title: "服装定向设计",
810
+ description: "通过设计点对服装进行定向设计",
811
+ fields: [
812
+ {
813
+ name: "imgUrl",
814
+ label: "原图",
815
+ type: "image",
816
+ required: !0
817
+ },
818
+ {
819
+ name: "maskUrl",
820
+ label: "蒙版1",
821
+ type: "mask"
822
+ },
823
+ {
824
+ name: "refImgUrl",
825
+ label: "参考图1",
826
+ type: "image"
827
+ },
828
+ {
829
+ name: "prompt",
830
+ label: "文本指令1",
831
+ type: "text",
832
+ placeholder: "描述设计需求"
833
+ }
834
+ ]
835
+ },
836
+ DirectionalIntegration: {
837
+ key: "DirectionalIntegration",
838
+ title: "定向融合",
839
+ description: "通过融合设计点对服装进行融合设计",
840
+ fields: [
841
+ {
842
+ name: "imgUrl",
843
+ label: "原图",
844
+ type: "image",
845
+ required: !0
846
+ },
847
+ {
848
+ name: "maskUrl",
849
+ label: "蒙版1",
850
+ type: "mask"
851
+ },
852
+ {
853
+ name: "refImgUrl",
854
+ label: "参考图1",
855
+ type: "image",
856
+ required: !0
857
+ }
858
+ ]
859
+ },
860
+ OneClickIntegration: {
861
+ key: "OneClickIntegration",
862
+ title: "一键融合",
863
+ description: "通过参考图和文本指令一键融合",
864
+ fields: [
865
+ {
866
+ name: "imgUrl",
867
+ label: "原图",
868
+ type: "image",
869
+ required: !0
870
+ },
871
+ {
872
+ name: "refImgUrl",
873
+ label: "参考图",
874
+ type: "image",
875
+ required: !0
876
+ },
877
+ {
878
+ name: "prompt",
879
+ label: "文本指令",
880
+ type: "text",
881
+ placeholder: "描述融合需求"
882
+ },
883
+ {
884
+ name: "aspectRatio",
885
+ label: "宽高比",
886
+ type: "aspectRatio"
887
+ }
888
+ ]
889
+ },
890
+ ChangeFabricV2: {
891
+ key: "ChangeFabricV2",
892
+ title: "面料上身2.0",
893
+ description: "支持文本指令的面料上身",
894
+ fields: [
895
+ {
896
+ name: "imgUrl",
897
+ label: "款式图",
898
+ type: "image",
899
+ required: !0
900
+ },
901
+ {
902
+ name: "maskUrl",
903
+ label: "蒙版",
904
+ type: "mask",
905
+ required: !0
906
+ },
907
+ {
908
+ name: "fabricImgUrl",
909
+ label: "面料图",
910
+ type: "image",
911
+ required: !0
912
+ },
913
+ {
914
+ name: "prompt",
915
+ label: "文本指令",
916
+ type: "text",
917
+ placeholder: "描述调整需求"
918
+ },
919
+ {
920
+ name: "aspectRatio",
921
+ label: "宽高比",
922
+ type: "aspectRatio"
923
+ }
924
+ ]
925
+ },
926
+ VirtualFittingReferenceV2: {
927
+ key: "VirtualFittingReferenceV2",
928
+ title: "AI试衣参考图2.0",
929
+ description: "支持姿势和背景的试衣",
930
+ fields: [
931
+ {
932
+ name: "imgUrl",
933
+ label: "服装图片",
934
+ type: "image",
935
+ required: !0
936
+ },
937
+ {
938
+ name: "refImgUrl",
939
+ label: "模特参考图",
940
+ type: "image",
941
+ required: !0
942
+ },
943
+ {
944
+ name: "poseImgUrl",
945
+ label: "姿势图",
946
+ type: "image"
947
+ },
948
+ {
949
+ name: "bgImgUrl",
950
+ label: "背景图",
951
+ type: "image"
952
+ },
953
+ {
954
+ name: "prompt",
955
+ label: "文本指令",
956
+ type: "text",
957
+ placeholder: "描述试衣需求"
958
+ },
959
+ {
960
+ name: "aspectRatio",
961
+ label: "宽高比",
962
+ type: "aspectRatio"
963
+ }
964
+ ]
965
+ },
966
+ FlowerShapedDesign: {
967
+ key: "FlowerShapedDesign",
968
+ title: "花型创款",
969
+ description: "将印花上身到指定款式效果图",
970
+ fields: [
971
+ {
972
+ name: "imgUrl",
973
+ label: "印花图案",
974
+ type: "image",
975
+ required: !0
976
+ },
977
+ {
978
+ name: "prompt",
979
+ label: "文本指令",
980
+ type: "text",
981
+ required: !0,
982
+ placeholder: "描述上身效果需求"
983
+ },
984
+ {
985
+ name: "aspectRatio",
986
+ label: "宽高比",
987
+ type: "aspectRatio"
988
+ }
989
+ ]
990
+ },
991
+ FlowerShapedVirtualPrinting: {
992
+ key: "FlowerShapedVirtualPrinting",
993
+ title: "花型上身",
994
+ description: "将图案上身到款式图指定区域",
995
+ fields: [
996
+ {
997
+ name: "imgUrl",
998
+ label: "印花图案",
999
+ type: "image",
1000
+ required: !0
1001
+ },
1002
+ {
1003
+ name: "bodyImgUrl",
1004
+ label: "上身图",
1005
+ type: "image",
1006
+ required: !0
1007
+ },
1008
+ {
1009
+ name: "bodyMaskImgUrl",
1010
+ label: "目标区域蒙版",
1011
+ type: "mask",
1012
+ required: !0
1013
+ },
1014
+ {
1015
+ name: "removePattern",
1016
+ label: "是否去除参考图印花",
1017
+ type: "enum",
1018
+ options: y
1019
+ }
1020
+ ]
1021
+ },
1022
+ OneClickChangeColor: {
1023
+ key: "OneClickChangeColor",
1024
+ title: "一键改色",
1025
+ description: "整合智能识别与自定义改色",
1026
+ fields: [
1027
+ {
1028
+ name: "imgUrl",
1029
+ label: "原图",
1030
+ type: "image",
1031
+ required: !0
1032
+ },
1033
+ {
1034
+ name: "hexCode",
1035
+ label: "目标颜色",
1036
+ type: "color"
1037
+ },
1038
+ {
1039
+ name: "hexImgUrl",
1040
+ label: "颜色参考图",
1041
+ type: "image"
1042
+ },
1043
+ {
1044
+ name: "changeColorArea",
1045
+ label: "改色区域",
1046
+ type: "text",
1047
+ placeholder: "如:上衣"
1048
+ },
1049
+ {
1050
+ name: "aspectRatio",
1051
+ label: "宽高比",
1052
+ type: "aspectRatio"
1053
+ }
1054
+ ]
1055
+ },
1056
+ FittingModelWithLabels: {
1057
+ key: "FittingModelWithLabels",
1058
+ title: "模特定制标签模式",
1059
+ description: "通过标签选择生成虚拟模特",
1060
+ fields: [
1061
+ {
1062
+ name: "gender",
1063
+ label: "性别",
1064
+ type: "enum",
1065
+ required: !0,
1066
+ options: d
1067
+ },
1068
+ {
1069
+ name: "age",
1070
+ label: "年龄",
1071
+ type: "enum",
1072
+ options: _
1073
+ },
1074
+ {
1075
+ name: "nationality",
1076
+ label: "国籍",
1077
+ type: "enum",
1078
+ options: v
1079
+ },
1080
+ {
1081
+ name: "skinColor",
1082
+ label: "肤色",
1083
+ type: "enum",
1084
+ options: r
1085
+ },
1086
+ {
1087
+ name: "bodyShape",
1088
+ label: "身材",
1089
+ type: "enum",
1090
+ options: u
1091
+ }
1092
+ ]
1093
+ },
1094
+ FittingModelCustom: {
1095
+ key: "FittingModelCustom",
1096
+ title: "模特定制自定义模式",
1097
+ description: "根据参考图生成虚拟模特",
1098
+ fields: [
1099
+ {
1100
+ name: "gender",
1101
+ label: "性别",
1102
+ type: "enum",
1103
+ required: !0,
1104
+ options: d
1105
+ },
1106
+ {
1107
+ name: "faceRefImgUrl",
1108
+ label: "脸部参考图",
1109
+ type: "image",
1110
+ required: !0
1111
+ },
1112
+ {
1113
+ name: "similarity",
1114
+ label: "相似度",
1115
+ type: "enum",
1116
+ options: n
1117
+ },
1118
+ {
1119
+ name: "bodyShapeRefImgUrl",
1120
+ label: "身材参考图",
1121
+ type: "image"
1122
+ },
1123
+ {
1124
+ name: "additionalDescription",
1125
+ label: "附加描述",
1126
+ type: "text",
1127
+ placeholder: "附加描述"
1128
+ }
1129
+ ]
1130
+ },
1131
+ FittingModelChangeFace: {
1132
+ key: "FittingModelChangeFace",
1133
+ title: "模特换脸",
1134
+ description: "对模特图换脸操作",
1135
+ fields: [
1136
+ {
1137
+ name: "imgUrl",
1138
+ label: "模特图",
1139
+ type: "image",
1140
+ required: !0
1141
+ },
1142
+ {
1143
+ name: "refImgUrl",
1144
+ label: "参考面部图",
1145
+ type: "image",
1146
+ required: !0
1147
+ },
1148
+ {
1149
+ name: "similarity",
1150
+ label: "相似度",
1151
+ type: "enum",
1152
+ options: n
1153
+ },
1154
+ {
1155
+ name: "aspectRatio",
1156
+ label: "宽高比",
1157
+ type: "aspectRatio"
1158
+ }
1159
+ ]
1160
+ },
1161
+ FittingModelChangeModel: {
1162
+ key: "FittingModelChangeModel",
1163
+ title: "模特替换",
1164
+ description: "随机或指定模特替换",
1165
+ fields: [
1166
+ {
1167
+ name: "imgUrl",
1168
+ label: "模特图",
1169
+ type: "image",
1170
+ required: !0
1171
+ },
1172
+ {
1173
+ name: "gender",
1174
+ label: "性别",
1175
+ type: "enum",
1176
+ options: d
1177
+ },
1178
+ {
1179
+ name: "similarity",
1180
+ label: "相似度",
1181
+ type: "enum",
1182
+ options: n
1183
+ },
1184
+ {
1185
+ name: "aspectRatio",
1186
+ label: "宽高比",
1187
+ type: "aspectRatio"
1188
+ }
1189
+ ]
1190
+ },
1191
+ FittingModelChangeBodyShape: {
1192
+ key: "FittingModelChangeBodyShape",
1193
+ title: "模特身材调整",
1194
+ description: "通过标签或参考图调整身材",
1195
+ fields: [
1196
+ {
1197
+ name: "imgUrl",
1198
+ label: "模特图",
1199
+ type: "image",
1200
+ required: !0
1201
+ },
1202
+ {
1203
+ name: "bodyShapeRefImgUrl",
1204
+ label: "身材参考图",
1205
+ type: "image"
1206
+ },
1207
+ {
1208
+ name: "aspectRatio",
1209
+ label: "宽高比",
1210
+ type: "aspectRatio"
1211
+ }
1212
+ ]
1213
+ },
1214
+ FittingModelChangeClothingSize: {
1215
+ key: "FittingModelChangeClothingSize",
1216
+ title: "模特尺码调整",
1217
+ description: "调整模特服装尺码",
1218
+ fields: [
1219
+ {
1220
+ name: "imgUrl",
1221
+ label: "模特图",
1222
+ type: "image",
1223
+ required: !0
1224
+ },
1225
+ {
1226
+ name: "size",
1227
+ label: "尺码",
1228
+ type: "enum",
1229
+ required: !0,
1230
+ options: t
1231
+ },
1232
+ {
1233
+ name: "aspectRatio",
1234
+ label: "宽高比",
1235
+ type: "aspectRatio"
1236
+ }
1237
+ ]
1238
+ },
1239
+ FittingModelChangePosture: {
1240
+ key: "FittingModelChangePosture",
1241
+ title: "模特姿势调整",
1242
+ description: "调整模特姿势",
1243
+ fields: [
1244
+ {
1245
+ name: "imgUrl",
1246
+ label: "模特图",
1247
+ type: "image",
1248
+ required: !0
1249
+ },
1250
+ {
1251
+ name: "poseImgUrl",
1252
+ label: "姿势参考图",
1253
+ type: "image",
1254
+ required: !0
1255
+ },
1256
+ {
1257
+ name: "aspectRatio",
1258
+ label: "宽高比",
1259
+ type: "aspectRatio"
1260
+ }
1261
+ ]
1262
+ },
1263
+ FittingModelChangeBackground: {
1264
+ key: "FittingModelChangeBackground",
1265
+ title: "模特换背景",
1266
+ description: "替换模特背景",
1267
+ fields: [
1268
+ {
1269
+ name: "imgUrl",
1270
+ label: "模特图",
1271
+ type: "image",
1272
+ required: !0
1273
+ },
1274
+ {
1275
+ name: "bgImgUrl",
1276
+ label: "背景参考图",
1277
+ type: "image"
1278
+ },
1279
+ {
1280
+ name: "prompt",
1281
+ label: "文本指令",
1282
+ type: "text",
1283
+ placeholder: "描述背景需求"
1284
+ },
1285
+ {
1286
+ name: "aspectRatio",
1287
+ label: "宽高比",
1288
+ type: "aspectRatio"
1289
+ }
1290
+ ]
1291
+ },
1292
+ FittingModelChangePerspective: {
1293
+ key: "FittingModelChangePerspective",
1294
+ title: "模特视角调整",
1295
+ description: "调整模特视角",
1296
+ fields: [
1297
+ {
1298
+ name: "imgUrl",
1299
+ label: "模特图",
1300
+ type: "image",
1301
+ required: !0
1302
+ },
1303
+ {
1304
+ name: "perspective",
1305
+ label: "视角",
1306
+ type: "enum",
1307
+ required: !0,
1308
+ options: l
1309
+ },
1310
+ {
1311
+ name: "aspectRatio",
1312
+ label: "宽高比",
1313
+ type: "aspectRatio"
1314
+ }
1315
+ ]
1316
+ },
1317
+ TrainClothingModel: {
1318
+ key: "TrainClothingModel",
1319
+ title: "服装风格模型训练",
1320
+ description: "训练自定义服装风格模型",
1321
+ fields: [
1322
+ {
1323
+ name: "imgUrlList",
1324
+ label: "训练图片",
1325
+ type: "images",
1326
+ required: !0,
1327
+ hint: "建议上传30-50张正面/斜侧面模特图"
1328
+ },
1329
+ {
1330
+ name: "clothingModelName",
1331
+ label: "模型名称",
1332
+ type: "text",
1333
+ required: !0
1334
+ },
1335
+ {
1336
+ name: "enhanceWordList",
1337
+ label: "加强词",
1338
+ type: "text"
1339
+ }
1340
+ ]
1341
+ }
1342
+ }, j = {
1343
+ ...k,
1344
+ ...A
1345
+ };
1346
+ function M(e) {
1347
+ return j[e];
1348
+ }
1349
+ function N() {
1350
+ return Object.values(j);
1351
+ }
1352
+ //#endregion
1353
+ //#region src/core/validate.ts
1354
+ function P(e, t) {
1355
+ let n = [];
1356
+ for (let r of t) {
1357
+ let t = e[r.name], i = F(r, t);
1358
+ i && n.push(i);
1359
+ }
1360
+ return {
1361
+ valid: n.length === 0,
1362
+ errors: n
1363
+ };
1364
+ }
1365
+ function F(e, t) {
1366
+ let n = t == null || t === "";
1367
+ if (e.required && n) return {
1368
+ field: e.name,
1369
+ label: e.label,
1370
+ message: c.FIELD_REQUIRED(e.label)
1371
+ };
1372
+ if (t == null) return null;
1373
+ let r = (t) => ({
1374
+ field: e.name,
1375
+ label: e.label,
1376
+ message: t(e.label)
1377
+ });
1378
+ switch (e.type) {
1379
+ case "image":
1380
+ case "mask":
1381
+ if (typeof t != "string" && !I(t)) return r(c.FIELD_STRING);
1382
+ break;
1383
+ case "images":
1384
+ if (!Array.isArray(t) || t.length === 0) return r(c.FIELD_ARRAY);
1385
+ if (t.some((e) => (typeof e != "string" || e === "") && !I(e))) return r(c.FIELD_ARRAY_ELEMENTS);
1386
+ break;
1387
+ case "text":
1388
+ if (typeof t != "string") return r(c.FIELD_STRING);
1389
+ if (e.maxLength && t.length > e.maxLength) return r((t) => c.FIELD_MAX_LENGTH(t, e.maxLength));
1390
+ break;
1391
+ case "enum":
1392
+ if (typeof t != "string") return r(c.FIELD_STRING);
1393
+ if (e.options && !e.options.some((e) => e.value === t)) return r(c.FIELD_ENUM_INVALID);
1394
+ break;
1395
+ case "multiEnum":
1396
+ if (!Array.isArray(t) || t.length === 0) return r(c.FIELD_ARRAY);
1397
+ if (t.some((e) => typeof e != "string" || e === "")) return r(c.FIELD_ARRAY_ELEMENTS);
1398
+ if (e.options && t.some((t) => !e.options?.some((e) => e.value === t))) return r(c.FIELD_ENUM_INVALID);
1399
+ break;
1400
+ case "color":
1401
+ if (typeof t != "string" || !/^#[0-9A-Fa-f]{6}$/.test(t)) return r(c.FIELD_COLOR_FORMAT);
1402
+ break;
1403
+ case "number":
1404
+ if (typeof t != "number" || Number.isNaN(t)) return r(c.FIELD_NUMBER);
1405
+ break;
1406
+ case "aspectRatio":
1407
+ case "strength": break;
1408
+ }
1409
+ return null;
1410
+ }
1411
+ function I(e) {
1412
+ return typeof File < "u" && e instanceof File;
1413
+ }
1414
+ //#endregion
1415
+ //#region src/core/client.ts
1416
+ var L = class {
1417
+ constructor(e = {}) {
1418
+ this.type = "", this.submitEndpoint = "/task/submit", this.submitEndpointMode = "prefix", this.pollEndpoint = "/task/progress", this.pollInterval = 1e3, this.maxPollAttempts = 120, this.phase = i.IDLE, this.taskId = "", this.progress = 0, this.result = null, this.error = "", this.activeTasks = /* @__PURE__ */ new Map(), this.pollTimer = null, this.isPollingBatch = !1, this.configure(e);
1419
+ }
1420
+ configure(e) {
1421
+ e.type !== void 0 && (this.type = e.type), e.submitEndpoint !== void 0 && (this.submitEndpoint = e.submitEndpoint), e.submitEndpointMode !== void 0 && (this.submitEndpointMode = e.submitEndpointMode), e.pollEndpoint !== void 0 && (this.pollEndpoint = e.pollEndpoint), e.pollInterval !== void 0 && (this.pollInterval = e.pollInterval), e.maxPollAttempts !== void 0 && (this.maxPollAttempts = e.maxPollAttempts), e.customRequest !== void 0 && (this.customRequest = e.customRequest), e.customUploadRequest !== void 0 && (this.customUploadRequest = e.customUploadRequest), e.customUploadRequert !== void 0 && (this.customUploadRequest = e.customUploadRequert), e.onSubmit !== void 0 && (this.onSubmit = e.onSubmit), e.onPoll !== void 0 && (this.onPoll = e.onPoll), e.onSuccess !== void 0 && (this.onSuccess = e.onSuccess), e.onError !== void 0 && (this.onError = e.onError);
1422
+ }
1423
+ get typeDef() {
1424
+ let e = this.resolvedTaskTypeKey;
1425
+ return e ? M(e) : void 0;
1426
+ }
1427
+ get taskFields() {
1428
+ return this.typeDef?.fields ?? [];
1429
+ }
1430
+ async submit(e, t) {
1431
+ let n = this.createRequestUri(e);
1432
+ if (!n) {
1433
+ this.fail(c.MISSING_ENDPOINT, i.IDLE);
1434
+ return;
1435
+ }
1436
+ let r = this.getTaskFields(e);
1437
+ if (r.length > 0) {
1438
+ let e = P(t, r);
1439
+ if (!e.valid) {
1440
+ this.fail(e.errors.map((e) => e.message).join("; "), i.IDLE);
1441
+ return;
1442
+ }
1443
+ }
1444
+ this.phase = i.SUBMITTING, this.error = "", this.progress = 0, this.result = null;
1445
+ try {
1446
+ let e = await this.resolveUploads(t, r), i = (await this.request(n, {
1447
+ method: "POST",
1448
+ body: JSON.stringify(e),
1449
+ headers: { "Content-Type": "application/json" }
1450
+ })).data.taskId;
1451
+ this.taskId = i;
1452
+ let a = {
1453
+ taskId: i,
1454
+ endpoint: n,
1455
+ formData: e
1456
+ };
1457
+ this.onSubmit?.(a), await this.trackTask(i);
1458
+ } catch (e) {
1459
+ this.fail(e instanceof Error ? e.message : c.SUBMIT_FAILED, this.phase);
1460
+ }
1461
+ }
1462
+ reset() {
1463
+ this.phase = i.IDLE, this.taskId = "", this.progress = 0, this.result = null, this.error = "", this.activeTasks.clear(), this.pollTimer &&= (clearTimeout(this.pollTimer), null);
1464
+ }
1465
+ createRequestUri(e = this.type) {
1466
+ return this.submitEndpointMode === "full" ? this.submitEndpoint : e ? `${this.submitEndpoint}/${e}` : this.submitEndpoint;
1467
+ }
1468
+ get resolvedTaskTypeKey() {
1469
+ return R(this.type);
1470
+ }
1471
+ getTaskFields(e) {
1472
+ let t = R(e);
1473
+ return t ? M(t)?.fields ?? [] : [];
1474
+ }
1475
+ async resolveUploads(e, t) {
1476
+ let n = t.length > 0 ? t.filter((e) => e.type === "image" || e.type === "mask" || e.type === "images") : Object.keys(e).map((e) => ({
1477
+ name: e,
1478
+ type: "image"
1479
+ }));
1480
+ if (!n.length) return e;
1481
+ let r = { ...e };
1482
+ for (let e of n) {
1483
+ let t = r[e.name];
1484
+ Array.isArray(t) ? r[e.name] = await Promise.all(t.map((t) => this.resolveUploadValue(t, e))) : r[e.name] = await this.resolveUploadValue(t, e);
1485
+ }
1486
+ return r;
1487
+ }
1488
+ async resolveUploadValue(e, t) {
1489
+ if (!z(e)) return e;
1490
+ if (!this.customUploadRequest) throw Error(`customUploadRequest is required to upload ${t.name}`);
1491
+ let n = new FormData();
1492
+ return n.append(t.name || "file", e), B(await this.customUploadRequest({
1493
+ file: e,
1494
+ name: t.name,
1495
+ formData: n,
1496
+ field: t
1497
+ }));
1498
+ }
1499
+ trackTask(e) {
1500
+ this.phase = i.POLLING;
1501
+ let t = new Promise((t) => {
1502
+ this.activeTasks.set(e, {
1503
+ taskId: e,
1504
+ attempts: 0,
1505
+ resolve: t
1506
+ });
1507
+ });
1508
+ return this.ensurePolling(0), t;
1509
+ }
1510
+ ensurePolling(e = this.pollInterval) {
1511
+ this.pollTimer || this.isPollingBatch || !this.activeTasks.size || (this.pollTimer = setTimeout(() => {
1512
+ this.pollTimer = null, this.pollActiveTasks();
1513
+ }, this.pollInterval));
1514
+ }
1515
+ async pollActiveTasks() {
1516
+ if (!this.activeTasks.size) return;
1517
+ this.isPollingBatch = !0;
1518
+ let e = [...this.activeTasks.keys()];
1519
+ try {
1520
+ let t = `${this.pollEndpoint}?taskIds=${e.map(encodeURIComponent).join(",")}`, n = await this.request(t, { method: "GET" }), r = new Map(n.data.map((e) => [e.aiTaskId, e]));
1521
+ e.forEach((e) => {
1522
+ let t = this.activeTasks.get(e);
1523
+ if (!t) return;
1524
+ t.attempts += 1;
1525
+ let n = r.get(e);
1526
+ if (!n) {
1527
+ this.failTask(t, c.TASK_NOT_FOUND(e));
1528
+ return;
1529
+ }
1530
+ this.taskId = e, this.progress = n.taskProgress;
1531
+ let i = {
1532
+ taskId: e,
1533
+ progress: n.taskProgress,
1534
+ status: n.aiTaskStatus,
1535
+ queuePos: n.queuePos
1536
+ };
1537
+ if (this.onPoll?.(i), n.aiTaskStatus === "done") {
1538
+ this.result = n;
1539
+ let r = {
1540
+ taskId: e,
1541
+ images: n.imgInfo ? [{
1542
+ index: 0,
1543
+ url: n.imgInfo
1544
+ }] : [],
1545
+ result: n
1546
+ };
1547
+ this.onSuccess?.(r), this.completeTask(t);
1548
+ return;
1549
+ }
1550
+ t.attempts >= this.maxPollAttempts && this.failTask(t, c.POLL_TIMEOUT(e));
1551
+ });
1552
+ } catch (e) {
1553
+ let t = e instanceof Error ? e.message : c.POLL_FAILED;
1554
+ [...this.activeTasks.values()].forEach((e) => this.failTask(e, t));
1555
+ } finally {
1556
+ this.isPollingBatch = !1, this.activeTasks.size ? (this.phase = i.POLLING, this.ensurePolling(this.pollInterval)) : this.phase === i.POLLING && (this.phase = this.error ? i.ERROR : i.SUCCESS);
1557
+ }
1558
+ }
1559
+ completeTask(e) {
1560
+ this.activeTasks.delete(e.taskId), e.resolve();
1561
+ }
1562
+ failTask(e, t) {
1563
+ this.activeTasks.delete(e.taskId), this.fail(t, i.POLLING, e.taskId), e.resolve();
1564
+ }
1565
+ async request(e, t) {
1566
+ let n = await (this.customRequest ?? fetch)(e, t);
1567
+ return n && typeof n.json == "function" ? n.json() : n;
1568
+ }
1569
+ fail(e, t, n) {
1570
+ this.phase = i.ERROR, this.error = e;
1571
+ let r = {
1572
+ message: e,
1573
+ phase: t,
1574
+ taskId: n
1575
+ };
1576
+ this.onError?.(r);
1577
+ }
1578
+ };
1579
+ function R(e) {
1580
+ if (!e) return "";
1581
+ if (j[e]) return e;
1582
+ let t = e.replace(/([a-z0-9])([A-Z])/g, "$1_$2").replace(/[-\s]+/g, "_").toUpperCase();
1583
+ return j[t] ? t : "";
1584
+ }
1585
+ function z(e) {
1586
+ return typeof File < "u" && e instanceof File;
1587
+ }
1588
+ async function B(e) {
1589
+ return e ? typeof e == "string" ? e : e instanceof Response ? B(await e.json()) : typeof e.data == "string" ? e.data : e.data ? e.data.value || e.data.url || "" : e.value || e.url || "" : "";
1590
+ }
1591
+ //#endregion
1592
+ export { M as a, E as c, T as d, C as f, N as i, O as l, S as m, P as n, A as o, w as p, j as r, k as s, L as t, D as u };