JahDaGanj commited on
Commit
131759b
·
verified ·
1 Parent(s): 410c2cc

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +621 -19
index.html CHANGED
@@ -1,19 +1,621 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>ComfyUI Workflow</title>
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+ body {
14
+ font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', system-ui, sans-serif;
15
+ background-color: #000000;
16
+ color: #f5f5f7;
17
+ line-height: 1.6;
18
+ padding: 20px;
19
+ min-height: 100vh;
20
+ }
21
+ .container {
22
+ max-width: 1200px;
23
+ margin: 0 auto;
24
+ }
25
+ .header {
26
+ text-align: center;
27
+ margin-bottom: 40px;
28
+ padding: 40px 20px;
29
+ }
30
+ .header h1 {
31
+ font-size: 48px;
32
+ font-weight: 600;
33
+ color: #ffffff;
34
+ margin-bottom: 12px;
35
+ letter-spacing: -0.02em;
36
+ }
37
+ .header p {
38
+ font-size: 18px;
39
+ color: #86868b;
40
+ font-weight: 400;
41
+ }
42
+ .controls {
43
+ display: flex;
44
+ gap: 12px;
45
+ margin-bottom: 24px;
46
+ justify-content: center;
47
+ }
48
+ .btn {
49
+ padding: 12px 24px;
50
+ border: none;
51
+ border-radius: 24px;
52
+ font-size: 14px;
53
+ font-weight: 500;
54
+ cursor: pointer;
55
+ transition: all 0.2s;
56
+ font-family: inherit;
57
+ }
58
+ .btn-primary {
59
+ background: #ffffff;
60
+ color: #000000;
61
+ }
62
+ .btn-primary:hover {
63
+ background: #f5f5f7;
64
+ transform: scale(0.98);
65
+ }
66
+ .btn-secondary {
67
+ background: #1d1d1f;
68
+ color: #f5f5f7;
69
+ border: 1px solid #424245;
70
+ }
71
+ .btn-secondary:hover {
72
+ background: #2d2d2f;
73
+ transform: scale(0.98);
74
+ }
75
+ .json-container {
76
+ background-color: #1d1d1f;
77
+ border-radius: 16px;
78
+ padding: 32px;
79
+ overflow-x: auto;
80
+ border: 1px solid #424245;
81
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
82
+ }
83
+ pre {
84
+ margin: 0;
85
+ font-family: 'SF Mono', 'Monaco', 'Menlo', 'Consolas', monospace;
86
+ font-size: 13px;
87
+ line-height: 1.6;
88
+ white-space: pre-wrap;
89
+ word-wrap: break-word;
90
+ }
91
+ .json-key {
92
+ color: #9cdcfe;
93
+ }
94
+ .json-string {
95
+ color: #ce9178;
96
+ }
97
+ .json-number {
98
+ color: #b5cea8;
99
+ }
100
+ .json-boolean {
101
+ color: #569cd6;
102
+ }
103
+ .json-null {
104
+ color: #569cd6;
105
+ }
106
+ .success {
107
+ color: #30d158;
108
+ }
109
+ @media (max-width: 768px) {
110
+ .header h1 {
111
+ font-size: 32px;
112
+ }
113
+ .controls {
114
+ flex-direction: column;
115
+ }
116
+ .json-container {
117
+ padding: 20px;
118
+ }
119
+ }
120
+ </style>
121
+ </head>
122
+ <body>
123
+ <div class="container">
124
+ <div class="header">
125
+ <h1>ComfyUI Workflow</h1>
126
+ <p>View and download your workflow JSON</p>
127
+ </div>
128
+
129
+ <div class="controls">
130
+ <button class="btn btn-primary" onclick="downloadJSON()">Download JSON</button>
131
+ <button class="btn btn-secondary" onclick="copyToClipboard()">Copy to Clipboard</button>
132
+ </div>
133
+
134
+ <div class="json-container">
135
+ <pre id="json-content">{
136
+ "last_node_id": 8,
137
+ "last_link_id": 7,
138
+ "nodes": [
139
+ {
140
+ "id": 1,
141
+ "type": "LoadImage",
142
+ "pos": [
143
+ 100,
144
+ 200
145
+ ],
146
+ "size": {
147
+ "0": 315,
148
+ "1": 180
149
+ },
150
+ "flags": {},
151
+ "order": 0,
152
+ "mode": 0,
153
+ "inputs": [
154
+ {
155
+ "name": "image",
156
+ "type": "IMAGE",
157
+ "link": null
158
+ }
159
+ ],
160
+ "outputs": [
161
+ {
162
+ "name": "IMAGE",
163
+ "type": "IMAGE",
164
+ "links": [
165
+ 1
166
+ ],
167
+ "slot_index": 0
168
+ }
169
+ ],
170
+ "properties": {
171
+ "node": "LoadImage"
172
+ },
173
+ "widgets_values": []
174
+ },
175
+ {
176
+ "id": 2,
177
+ "type": "CLIPTextEncode",
178
+ "pos": [
179
+ 100,
180
+ 400
181
+ ],
182
+ "size": {
183
+ "0": 425,
184
+ "1": 180
185
+ },
186
+ "flags": {},
187
+ "order": 1,
188
+ "mode": 0,
189
+ "inputs": [
190
+ {
191
+ "name": "clip",
192
+ "type": "CLIP",
193
+ "link": 3,
194
+ "slot_index": 0
195
+ },
196
+ {
197
+ "name": "text",
198
+ "type": "STRING",
199
+ "link": null
200
+ }
201
+ ],
202
+ "outputs": [
203
+ {
204
+ "name": "CONDITIONING",
205
+ "type": "CONDITIONING",
206
+ "links": [
207
+ 4
208
+ ],
209
+ "slot_index": 0
210
+ }
211
+ ],
212
+ "properties": {
213
+ "node": "CLIPTextEncode"
214
+ },
215
+ "widgets_values": [
216
+ "positive prompt"
217
+ ]
218
+ },
219
+ {
220
+ "id": 3,
221
+ "type": "CLIPTextEncode",
222
+ "pos": [
223
+ 100,
224
+ 600
225
+ ],
226
+ "size": {
227
+ "0": 425,
228
+ "1": 180
229
+ },
230
+ "flags": {},
231
+ "order": 2,
232
+ "mode": 0,
233
+ "inputs": [
234
+ {
235
+ "name": "clip",
236
+ "type": "CLIP",
237
+ "link": 3,
238
+ "slot_index": 0
239
+ },
240
+ {
241
+ "name": "text",
242
+ "type": "STRING",
243
+ "link": null
244
+ }
245
+ ],
246
+ "outputs": [
247
+ {
248
+ "name": "CONDITIONING",
249
+ "type": "CONDITIONING",
250
+ "links": [
251
+ 5
252
+ ],
253
+ "slot_index": 0
254
+ }
255
+ ],
256
+ "properties": {
257
+ "node": "CLIPTextEncode"
258
+ },
259
+ "widgets_values": [
260
+ "negative prompt"
261
+ ]
262
+ },
263
+ {
264
+ "id": 4,
265
+ "type": "LoadCheckpoint",
266
+ "pos": [
267
+ 100,
268
+ 50
269
+ ],
270
+ "size": {
271
+ "0": 315,
272
+ "1": 98
273
+ },
274
+ "flags": {},
275
+ "order": 3,
276
+ "mode": 0,
277
+ "inputs": [
278
+ {
279
+ "name": "ckpt_name",
280
+ "type": "COMBO",
281
+ "link": null
282
+ }
283
+ ],
284
+ "outputs": [
285
+ {
286
+ "name": "MODEL",
287
+ "type": "MODEL",
288
+ "links": [
289
+ 6
290
+ ],
291
+ "slot_index": 0
292
+ },
293
+ {
294
+ "name": "CLIP",
295
+ "type": "CLIP",
296
+ "links": [
297
+ 3
298
+ ],
299
+ "slot_index": 1
300
+ },
301
+ {
302
+ "name": "VAE",
303
+ "type": "VAE",
304
+ "links": [
305
+ 7
306
+ ],
307
+ "slot_index": 2
308
+ }
309
+ ],
310
+ "properties": {
311
+ "node": "LoadCheckpoint"
312
+ },
313
+ "widgets_values": [
314
+ "qwen_image_edit_2509.safetensors"
315
+ ]
316
+ },
317
+ {
318
+ "id": 5,
319
+ "type": "VAEDecode",
320
+ "pos": [
321
+ 800,
322
+ 300
323
+ ],
324
+ "size": {
325
+ "0": 210,
326
+ "1": 46
327
+ },
328
+ "flags": {},
329
+ "order": 4,
330
+ "mode": 0,
331
+ "inputs": [
332
+ {
333
+ "name": "samples",
334
+ "type": "LATENT",
335
+ "link": 2,
336
+ "slot_index": 0
337
+ },
338
+ {
339
+ "name": "vae",
340
+ "type": "VAE",
341
+ "link": 7,
342
+ "slot_index": 1
343
+ }
344
+ ],
345
+ "outputs": [
346
+ {
347
+ "name": "IMAGE",
348
+ "type": "IMAGE",
349
+ "links": [
350
+ 0
351
+ ],
352
+ "slot_index": 0
353
+ }
354
+ ],
355
+ "properties": {
356
+ "node": "VAEDecode"
357
+ },
358
+ "widgets_values": []
359
+ },
360
+ {
361
+ "id": 6,
362
+ "type": "KSampler",
363
+ "pos": [
364
+ 550,
365
+ 300
366
+ ],
367
+ "size": {
368
+ "0": 315,
369
+ "1": 262
370
+ },
371
+ "flags": {},
372
+ "order": 5,
373
+ "mode": 0,
374
+ "inputs": [
375
+ {
376
+ "name": "model",
377
+ "type": "MODEL",
378
+ "link": 6,
379
+ "slot_index": 0
380
+ },
381
+ {
382
+ "name": "positive",
383
+ "type": "CONDITIONING",
384
+ "link": 4,
385
+ "slot_index": 1
386
+ },
387
+ {
388
+ "name": "negative",
389
+ "type": "CONDITIONING",
390
+ "link": 5,
391
+ "slot_index": 2
392
+ },
393
+ {
394
+ "name": "latent_image",
395
+ "type": "LATENT",
396
+ "link": null
397
+ }
398
+ ],
399
+ "outputs": [
400
+ {
401
+ "name": "LATENT",
402
+ "type": "LATENT",
403
+ "links": [
404
+ 2
405
+ ],
406
+ "slot_index": 0
407
+ }
408
+ ],
409
+ "properties": {
410
+ "node": "KSampler"
411
+ },
412
+ "widgets_values": [
413
+ 20,
414
+ 7,
415
+ 1,
416
+ "euler",
417
+ 12345
418
+ ]
419
+ },
420
+ {
421
+ "id": 7,
422
+ "type": "VAEEncode",
423
+ "pos": [
424
+ 350,
425
+ 200
426
+ ],
427
+ "size": {
428
+ "0": 210,
429
+ "1": 46
430
+ },
431
+ "flags": {},
432
+ "order": 6,
433
+ "mode": 0,
434
+ "inputs": [
435
+ {
436
+ "name": "pixels",
437
+ "type": "IMAGE",
438
+ "link": 1,
439
+ "slot_index": 0
440
+ },
441
+ {
442
+ "name": "vae",
443
+ "type": "VAE",
444
+ "link": 7,
445
+ "slot_index": 1
446
+ }
447
+ ],
448
+ "outputs": [
449
+ {
450
+ "name": "LATENT",
451
+ "type": "LATENT",
452
+ "links": null,
453
+ "slot_index": 0
454
+ }
455
+ ],
456
+ "properties": {
457
+ "node": "VAEEncode"
458
+ },
459
+ "widgets_values": []
460
+ },
461
+ {
462
+ "id": 8,
463
+ "type": "SaveImage",
464
+ "pos": [
465
+ 1000,
466
+ 300
467
+ ],
468
+ "size": {
469
+ "0": 210,
470
+ "1": 46
471
+ },
472
+ "flags": {},
473
+ "order": 7,
474
+ "mode": 0,
475
+ "inputs": [
476
+ {
477
+ "name": "images",
478
+ "type": "IMAGE",
479
+ "link": 0,
480
+ "slot_index": 0
481
+ }
482
+ ],
483
+ "outputs": [],
484
+ "properties": {
485
+ "node": "SaveImage"
486
+ },
487
+ "widgets_values": []
488
+ }
489
+ ],
490
+ "links": [
491
+ [
492
+ 1,
493
+ 0,
494
+ 7,
495
+ 0,
496
+ "IMAGE"
497
+ ],
498
+ [
499
+ 2,
500
+ 0,
501
+ 6,
502
+ 0,
503
+ "LATENT"
504
+ ],
505
+ [
506
+ 3,
507
+ 1,
508
+ 2,
509
+ 0,
510
+ "CLIP"
511
+ ],
512
+ [
513
+ 3,
514
+ 1,
515
+ 3,
516
+ 0,
517
+ "CLIP"
518
+ ],
519
+ [
520
+ 4,
521
+ 0,
522
+ 6,
523
+ 1,
524
+ "CONDITIONING"
525
+ ],
526
+ [
527
+ 5,
528
+ 0,
529
+ 6,
530
+ 2,
531
+ "CONDITIONING"
532
+ ],
533
+ [
534
+ 6,
535
+ 0,
536
+ 6,
537
+ 0,
538
+ "MODEL"
539
+ ],
540
+ [
541
+ 7,
542
+ 2,
543
+ 5,
544
+ 1,
545
+ "VAE"
546
+ ],
547
+ [
548
+ 7,
549
+ 2,
550
+ 7,
551
+ 1,
552
+ "VAE"
553
+ ]
554
+ ],
555
+ "groups": [],
556
+ "config": {},
557
+ "extra": {},
558
+ "version": 0.4
559
+ }</pre>
560
+ </div>
561
+ </div>
562
+
563
+ <script>
564
+ function copyToClipboard() {
565
+ const jsonContent = document.getElementById('json-content').textContent;
566
+ navigator.clipboard.writeText(jsonContent).then(() => {
567
+ const btn = event.target;
568
+ const originalText = btn.textContent;
569
+ btn.textContent = 'Copied!';
570
+ btn.classList.add('success');
571
+ setTimeout(() => {
572
+ btn.textContent = originalText;
573
+ btn.classList.remove('success');
574
+ }, 2000);
575
+ }).catch(err => {
576
+ alert('Failed to copy to clipboard');
577
+ });
578
+ }
579
+
580
+ function downloadJSON() {
581
+ const jsonContent = document.getElementById('json-content').textContent;
582
+ const blob = new Blob([jsonContent], { type: 'application/json' });
583
+ const url = URL.createObjectURL(blob);
584
+ const a = document.createElement('a');
585
+ a.href = url;
586
+ a.download = 'comfyui_workflow.json';
587
+ document.body.appendChild(a);
588
+ a.click();
589
+ document.body.removeChild(a);
590
+ URL.revokeObjectURL(url);
591
+
592
+ const btn = event.target;
593
+ const originalText = btn.textContent;
594
+ btn.textContent = 'Downloaded!';
595
+ btn.classList.add('success');
596
+ setTimeout(() => {
597
+ btn.textContent = originalText;
598
+ btn.classList.remove('success');
599
+ }, 2000);
600
+ }
601
+
602
+ // Add syntax highlighting
603
+ function highlightJSON() {
604
+ const content = document.getElementById('json-content');
605
+ let html = content.innerHTML;
606
+
607
+ // Highlight different JSON elements
608
+ html = html.replace(/"([^"]+)":/g, '<span class="json-key">"$1":</span>');
609
+ html = html.replace(/: "([^"]*)"/g, ': <span class="json-string">"$1"</span>');
610
+ html = html.replace(/: (-?\d+\.?\d*)/g, ': <span class="json-number">$1</span>');
611
+ html = html.replace(/: (true|false)/g, ': <span class="json-boolean">$1</span>');
612
+ html = html.replace(/: null/g, ': <span class="json-null">null</span>');
613
+
614
+ content.innerHTML = html;
615
+ }
616
+
617
+ // Apply syntax highlighting after page load
618
+ window.addEventListener('load', highlightJSON);
619
+ </script>
620
+ </body>
621
+ </html>