Jota2 commited on
Commit
4393d18
·
verified ·
1 Parent(s): de9c8d5

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +626 -19
index.html CHANGED
@@ -1,19 +1,626 @@
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": "CheckpointLoaderSimple",
142
+ "pos": [
143
+ 200,
144
+ 100
145
+ ],
146
+ "size": {
147
+ "0": 315,
148
+ "1": 134
149
+ },
150
+ "flags": {},
151
+ "order": 0,
152
+ "mode": 0,
153
+ "inputs": [
154
+ {
155
+ "name": "ckpt_name",
156
+ "type": "COMBO",
157
+ "link": null
158
+ }
159
+ ],
160
+ "outputs": [
161
+ {
162
+ "name": "MODEL",
163
+ "type": "MODEL",
164
+ "links": [
165
+ 2
166
+ ],
167
+ "slot_index": 0
168
+ },
169
+ {
170
+ "name": "CLIP",
171
+ "type": "CLIP",
172
+ "links": [
173
+ 3
174
+ ],
175
+ "slot_index": 0
176
+ },
177
+ {
178
+ "name": "VAE",
179
+ "type": "VAE",
180
+ "links": [
181
+ 4
182
+ ],
183
+ "slot_index": 0
184
+ }
185
+ ],
186
+ "properties": {
187
+ "Node name for S&R": "CheckpointLoaderSimple"
188
+ },
189
+ "widgets_values": [
190
+ "v1-5-pruned-emaonly.ckpt"
191
+ ]
192
+ },
193
+ {
194
+ "id": 2,
195
+ "type": "CLIPTextEncode",
196
+ "pos": [
197
+ 600,
198
+ 100
199
+ ],
200
+ "size": {
201
+ "0": 422,
202
+ "1": 180
203
+ },
204
+ "flags": {},
205
+ "order": 1,
206
+ "mode": 0,
207
+ "inputs": [
208
+ {
209
+ "name": "clip",
210
+ "type": "CLIP",
211
+ "link": 2
212
+ },
213
+ {
214
+ "name": "text",
215
+ "type": "STRING",
216
+ "link": null
217
+ }
218
+ ],
219
+ "outputs": [
220
+ {
221
+ "name": "CONDITIONING",
222
+ "type": "CONDITIONING",
223
+ "links": [
224
+ 5
225
+ ],
226
+ "slot_index": 0
227
+ }
228
+ ],
229
+ "properties": {
230
+ "Node name for S&R": "CLIPTextEncode"
231
+ },
232
+ "widgets_values": [
233
+ "a beautiful portrait of a person, high quality, detailed"
234
+ ]
235
+ },
236
+ {
237
+ "id": 3,
238
+ "type": "EmptyLatentImage",
239
+ "pos": [
240
+ 600,
241
+ 350
242
+ ],
243
+ "size": {
244
+ "0": 315,
245
+ "1": 106
246
+ },
247
+ "flags": {},
248
+ "order": 2,
249
+ "mode": 0,
250
+ "inputs": [
251
+ {
252
+ "name": "width",
253
+ "type": "INT",
254
+ "link": null
255
+ },
256
+ {
257
+ "name": "height",
258
+ "type": "INT",
259
+ "link": null
260
+ },
261
+ {
262
+ "name": "batch_size",
263
+ "type": "INT",
264
+ "link": null
265
+ }
266
+ ],
267
+ "outputs": [
268
+ {
269
+ "name": "LATENT",
270
+ "type": "LATENT",
271
+ "links": [
272
+ 6
273
+ ],
274
+ "slot_index": 0
275
+ }
276
+ ],
277
+ "properties": {
278
+ "Node name for S&R": "EmptyLatentImage"
279
+ },
280
+ "widgets_values": [
281
+ 512,
282
+ 512,
283
+ 1
284
+ ]
285
+ },
286
+ {
287
+ "id": 4,
288
+ "type": "KSampler",
289
+ "pos": [
290
+ 900,
291
+ 200
292
+ ],
293
+ "size": {
294
+ "0": 315,
295
+ "1": 262
296
+ },
297
+ "flags": {},
298
+ "order": 3,
299
+ "mode": 0,
300
+ "inputs": [
301
+ {
302
+ "name": "model",
303
+ "type": "MODEL",
304
+ "link": 5
305
+ },
306
+ {
307
+ "name": "positive",
308
+ "type": "CONDITIONING",
309
+ "link": 7
310
+ },
311
+ {
312
+ "name": "negative",
313
+ "type": "CONDITIONING",
314
+ "link": null
315
+ },
316
+ {
317
+ "name": "latent_image",
318
+ "type": "LATENT",
319
+ "link": 6
320
+ },
321
+ {
322
+ "name": "seed",
323
+ "type": "INT",
324
+ "link": null
325
+ },
326
+ {
327
+ "name": "steps",
328
+ "type": "INT",
329
+ "link": null
330
+ },
331
+ {
332
+ "name": "cfg",
333
+ "type": "FLOAT",
334
+ "link": null
335
+ },
336
+ {
337
+ "name": "sampler_name",
338
+ "type": "COMBO",
339
+ "link": null
340
+ },
341
+ {
342
+ "name": "scheduler",
343
+ "type": "COMBO",
344
+ "link": null
345
+ },
346
+ {
347
+ "name": "denoise",
348
+ "type": "FLOAT",
349
+ "link": null
350
+ }
351
+ ],
352
+ "outputs": [
353
+ {
354
+ "name": "LATENT",
355
+ "type": "LATENT",
356
+ "links": [
357
+ 8
358
+ ],
359
+ "slot_index": 0
360
+ }
361
+ ],
362
+ "properties": {
363
+ "Node name for S&R": "KSampler"
364
+ },
365
+ "widgets_values": [
366
+ 12345,
367
+ 20,
368
+ 7,
369
+ "euler",
370
+ "normal",
371
+ 1.0
372
+ ]
373
+ },
374
+ {
375
+ "id": 5,
376
+ "type": "VAEDecode",
377
+ "pos": [
378
+ 1200,
379
+ 200
380
+ ],
381
+ "size": {
382
+ "0": 210,
383
+ "1": 46
384
+ },
385
+ "flags": {},
386
+ "order": 4,
387
+ "mode": 0,
388
+ "inputs": [
389
+ {
390
+ "name": "samples",
391
+ "type": "LATENT",
392
+ "link": 8
393
+ },
394
+ {
395
+ "name": "vae",
396
+ "type": "VAE",
397
+ "link": 4
398
+ }
399
+ ],
400
+ "outputs": [
401
+ {
402
+ "name": "IMAGE",
403
+ "type": "IMAGE",
404
+ "links": [
405
+ 9
406
+ ],
407
+ "slot_index": 0
408
+ }
409
+ ],
410
+ "properties": {
411
+ "Node name for S&R": "VAEDecode"
412
+ },
413
+ "widgets_values": []
414
+ },
415
+ {
416
+ "id": 6,
417
+ "type": "SaveImage",
418
+ "pos": [
419
+ 1400,
420
+ 200
421
+ ],
422
+ "size": {
423
+ "0": 210,
424
+ "1": 258
425
+ },
426
+ "flags": {},
427
+ "order": 5,
428
+ "mode": 0,
429
+ "inputs": [
430
+ {
431
+ "name": "images",
432
+ "type": "IMAGE",
433
+ "link": 9
434
+ }
435
+ ],
436
+ "outputs": [],
437
+ "properties": {
438
+ "Node name for S&R": "SaveImage"
439
+ },
440
+ "widgets_values": []
441
+ },
442
+ {
443
+ "id": 7,
444
+ "type": "CLIPTextEncode",
445
+ "pos": [
446
+ 600,
447
+ 500
448
+ ],
449
+ "size": {
450
+ "0": 422,
451
+ "1": 180
452
+ },
453
+ "flags": {},
454
+ "order": 6,
455
+ "mode": 0,
456
+ "inputs": [
457
+ {
458
+ "name": "clip",
459
+ "type": "CLIP",
460
+ "link": 3
461
+ },
462
+ {
463
+ "name": "text",
464
+ "type": "STRING",
465
+ "link": null
466
+ }
467
+ ],
468
+ "outputs": [
469
+ {
470
+ "name": "CONDITIONING",
471
+ "type": "CONDITIONING",
472
+ "links": [
473
+ 10
474
+ ],
475
+ "slot_index": 0
476
+ }
477
+ ],
478
+ "properties": {
479
+ "Node name for S&R": "CLIPTextEncode"
480
+ },
481
+ "widgets_values": [
482
+ "blurry, low quality, bad anatomy, worst quality"
483
+ ]
484
+ }
485
+ ],
486
+ "links": [
487
+ [
488
+ 2,
489
+ 1,
490
+ 0,
491
+ 2,
492
+ 0,
493
+ 0
494
+ ],
495
+ [
496
+ 3,
497
+ 1,
498
+ 1,
499
+ 3,
500
+ 0,
501
+ 0
502
+ ],
503
+ [
504
+ 4,
505
+ 1,
506
+ 2,
507
+ 4,
508
+ 0,
509
+ 0
510
+ ],
511
+ [
512
+ 5,
513
+ 2,
514
+ 0,
515
+ 4,
516
+ 1,
517
+ 0
518
+ ],
519
+ [
520
+ 6,
521
+ 3,
522
+ 0,
523
+ 4,
524
+ 3,
525
+ 0
526
+ ],
527
+ [
528
+ 7,
529
+ 2,
530
+ 0,
531
+ 4,
532
+ 1,
533
+ 0
534
+ ],
535
+ [
536
+ 8,
537
+ 4,
538
+ 0,
539
+ 5,
540
+ 0,
541
+ 0
542
+ ],
543
+ [
544
+ 9,
545
+ 5,
546
+ 0,
547
+ 6,
548
+ 0,
549
+ 0
550
+ ],
551
+ [
552
+ 10,
553
+ 7,
554
+ 0,
555
+ 4,
556
+ 2,
557
+ 0
558
+ ]
559
+ ],
560
+ "groups": [],
561
+ "config": {},
562
+ "extra": {},
563
+ "version": 0.4
564
+ }</pre>
565
+ </div>
566
+ </div>
567
+
568
+ <script>
569
+ function copyToClipboard() {
570
+ const jsonContent = document.getElementById('json-content').textContent;
571
+ navigator.clipboard.writeText(jsonContent).then(() => {
572
+ const btn = event.target;
573
+ const originalText = btn.textContent;
574
+ btn.textContent = 'Copied!';
575
+ btn.classList.add('success');
576
+ setTimeout(() => {
577
+ btn.textContent = originalText;
578
+ btn.classList.remove('success');
579
+ }, 2000);
580
+ }).catch(err => {
581
+ alert('Failed to copy to clipboard');
582
+ });
583
+ }
584
+
585
+ function downloadJSON() {
586
+ const jsonContent = document.getElementById('json-content').textContent;
587
+ const blob = new Blob([jsonContent], { type: 'application/json' });
588
+ const url = URL.createObjectURL(blob);
589
+ const a = document.createElement('a');
590
+ a.href = url;
591
+ a.download = 'comfyui_workflow.json';
592
+ document.body.appendChild(a);
593
+ a.click();
594
+ document.body.removeChild(a);
595
+ URL.revokeObjectURL(url);
596
+
597
+ const btn = event.target;
598
+ const originalText = btn.textContent;
599
+ btn.textContent = 'Downloaded!';
600
+ btn.classList.add('success');
601
+ setTimeout(() => {
602
+ btn.textContent = originalText;
603
+ btn.classList.remove('success');
604
+ }, 2000);
605
+ }
606
+
607
+ // Add syntax highlighting
608
+ function highlightJSON() {
609
+ const content = document.getElementById('json-content');
610
+ let html = content.innerHTML;
611
+
612
+ // Highlight different JSON elements
613
+ html = html.replace(/"([^"]+)":/g, '<span class="json-key">"$1":</span>');
614
+ html = html.replace(/: "([^"]*)"/g, ': <span class="json-string">"$1"</span>');
615
+ html = html.replace(/: (-?\d+\.?\d*)/g, ': <span class="json-number">$1</span>');
616
+ html = html.replace(/: (true|false)/g, ': <span class="json-boolean">$1</span>');
617
+ html = html.replace(/: null/g, ': <span class="json-null">null</span>');
618
+
619
+ content.innerHTML = html;
620
+ }
621
+
622
+ // Apply syntax highlighting after page load
623
+ window.addEventListener('load', highlightJSON);
624
+ </script>
625
+ </body>
626
+ </html>