akhaliq HF Staff commited on
Commit
406a651
·
verified ·
1 Parent(s): dcd5f18

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +977 -19
index.html CHANGED
@@ -1,19 +1,977 @@
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": 15,
137
+ "last_link_id": 20,
138
+ "nodes": [
139
+ {
140
+ "id": 1,
141
+ "type": "CheckpointLoaderSimple",
142
+ "pos": [
143
+ 50,
144
+ 50
145
+ ],
146
+ "size": {
147
+ "0": 315,
148
+ "1": 98
149
+ },
150
+ "flags": {},
151
+ "order": 0,
152
+ "mode": 0,
153
+ "outputs": [
154
+ {
155
+ "name": "MODEL",
156
+ "type": "MODEL",
157
+ "links": [
158
+ 1
159
+ ]
160
+ },
161
+ {
162
+ "name": "CLIP",
163
+ "type": "CLIP",
164
+ "links": [
165
+ 2,
166
+ 3
167
+ ]
168
+ },
169
+ {
170
+ "name": "VAE",
171
+ "type": "VAE",
172
+ "links": [
173
+ 8
174
+ ]
175
+ }
176
+ ],
177
+ "properties": {
178
+ "Node name for S&R": "CheckpointLoaderSimple"
179
+ },
180
+ "widgets_values": [
181
+ "v1-5-pruned-emaonly.safetensors"
182
+ ]
183
+ },
184
+ {
185
+ "id": 2,
186
+ "type": "CLIPTextEncode",
187
+ "pos": [
188
+ 400,
189
+ 50
190
+ ],
191
+ "size": {
192
+ "0": 400,
193
+ "1": 180
194
+ },
195
+ "flags": {},
196
+ "order": 5,
197
+ "mode": 0,
198
+ "inputs": [
199
+ {
200
+ "name": "clip",
201
+ "type": "CLIP",
202
+ "link": 2
203
+ }
204
+ ],
205
+ "outputs": [
206
+ {
207
+ "name": "CONDITIONING",
208
+ "type": "CONDITIONING",
209
+ "links": [
210
+ 4
211
+ ],
212
+ "slot_index": 0
213
+ }
214
+ ],
215
+ "title": "CLIP Text Encode (Positive)",
216
+ "properties": {
217
+ "Node name for S&R": "CLIPTextEncode"
218
+ },
219
+ "widgets_values": [
220
+ "beautiful landscape, high quality, detailed, 8k"
221
+ ]
222
+ },
223
+ {
224
+ "id": 3,
225
+ "type": "CLIPTextEncode",
226
+ "pos": [
227
+ 400,
228
+ 250
229
+ ],
230
+ "size": {
231
+ "0": 400,
232
+ "1": 180
233
+ },
234
+ "flags": {},
235
+ "order": 6,
236
+ "mode": 0,
237
+ "inputs": [
238
+ {
239
+ "name": "clip",
240
+ "type": "CLIP",
241
+ "link": 3
242
+ }
243
+ ],
244
+ "outputs": [
245
+ {
246
+ "name": "CONDITIONING",
247
+ "type": "CONDITIONING",
248
+ "links": [
249
+ 5
250
+ ],
251
+ "slot_index": 0
252
+ }
253
+ ],
254
+ "title": "CLIP Text Encode (Negative)",
255
+ "properties": {
256
+ "Node name for S&R": "CLIPTextEncode"
257
+ },
258
+ "widgets_values": [
259
+ "ugly, blurry, low quality, distorted"
260
+ ]
261
+ },
262
+ {
263
+ "id": 4,
264
+ "type": "KSampler",
265
+ "pos": [
266
+ 850,
267
+ 50
268
+ ],
269
+ "size": {
270
+ "0": 315,
271
+ "1": 262
272
+ },
273
+ "flags": {},
274
+ "order": 8,
275
+ "mode": 0,
276
+ "inputs": [
277
+ {
278
+ "name": "model",
279
+ "type": "MODEL",
280
+ "link": 1
281
+ },
282
+ {
283
+ "name": "positive",
284
+ "type": "CONDITIONING",
285
+ "link": 4
286
+ },
287
+ {
288
+ "name": "negative",
289
+ "type": "CONDITIONING",
290
+ "link": 5
291
+ },
292
+ {
293
+ "name": "latent_image",
294
+ "type": "LATENT",
295
+ "link": 7
296
+ }
297
+ ],
298
+ "outputs": [
299
+ {
300
+ "name": "LATENT",
301
+ "type": "LATENT",
302
+ "links": [
303
+ 9
304
+ ],
305
+ "slot_index": 0
306
+ }
307
+ ],
308
+ "title": "KSampler",
309
+ "properties": {
310
+ "Node name for S&R": "KSampler"
311
+ },
312
+ "widgets_values": [
313
+ 123456789,
314
+ 20,
315
+ 8,
316
+ "euler",
317
+ "normal",
318
+ 0.7
319
+ ]
320
+ },
321
+ {
322
+ "id": 5,
323
+ "type": "VAEDecode",
324
+ "pos": [
325
+ 1200,
326
+ 50
327
+ ],
328
+ "size": {
329
+ "0": 210,
330
+ "1": 46
331
+ },
332
+ "flags": {},
333
+ "order": 9,
334
+ "mode": 0,
335
+ "inputs": [
336
+ {
337
+ "name": "samples",
338
+ "type": "LATENT",
339
+ "link": 9
340
+ },
341
+ {
342
+ "name": "vae",
343
+ "type": "VAE",
344
+ "link": 8
345
+ }
346
+ ],
347
+ "outputs": [
348
+ {
349
+ "name": "IMAGE",
350
+ "type": "IMAGE",
351
+ "links": [
352
+ 10,
353
+ 11
354
+ ],
355
+ "slot_index": 0
356
+ }
357
+ ],
358
+ "properties": {
359
+ "Node name for S&R": "VAEDecode"
360
+ }
361
+ },
362
+ {
363
+ "id": 6,
364
+ "type": "SaveImage",
365
+ "pos": [
366
+ 1450,
367
+ 50
368
+ ],
369
+ "size": {
370
+ "0": 315,
371
+ "1": 270
372
+ },
373
+ "flags": {},
374
+ "order": 10,
375
+ "mode": 0,
376
+ "inputs": [
377
+ {
378
+ "name": "images",
379
+ "type": "IMAGE",
380
+ "link": 10
381
+ }
382
+ ],
383
+ "properties": {
384
+ "Node name for S&R": "SaveImage"
385
+ },
386
+ "widgets_values": [
387
+ "stable_diffusion_output"
388
+ ]
389
+ },
390
+ {
391
+ "id": 7,
392
+ "type": "PreviewImage",
393
+ "pos": [
394
+ 1450,
395
+ 350
396
+ ],
397
+ "size": {
398
+ "0": 315,
399
+ "1": 270
400
+ },
401
+ "flags": {},
402
+ "order": 11,
403
+ "mode": 0,
404
+ "inputs": [
405
+ {
406
+ "name": "images",
407
+ "type": "IMAGE",
408
+ "link": 11
409
+ }
410
+ ],
411
+ "properties": {
412
+ "Node name for S&R": "PreviewImage"
413
+ }
414
+ },
415
+ {
416
+ "id": 8,
417
+ "type": "EmptyLatentImage",
418
+ "pos": [
419
+ 400,
420
+ 500
421
+ ],
422
+ "size": {
423
+ "0": 315,
424
+ "1": 106
425
+ },
426
+ "flags": {},
427
+ "order": 4,
428
+ "mode": 0,
429
+ "outputs": [
430
+ {
431
+ "name": "LATENT",
432
+ "type": "LATENT",
433
+ "links": [
434
+ 7
435
+ ],
436
+ "slot_index": 0
437
+ }
438
+ ],
439
+ "title": "Empty Latent Image",
440
+ "properties": {
441
+ "Node name for S&R": "EmptyLatentImage"
442
+ },
443
+ "widgets_values": [
444
+ 512,
445
+ 512,
446
+ 1
447
+ ]
448
+ },
449
+ {
450
+ "id": 9,
451
+ "type": "KSampler",
452
+ "pos": [
453
+ 850,
454
+ 350
455
+ ],
456
+ "size": {
457
+ "0": 315,
458
+ "1": 262
459
+ },
460
+ "flags": {},
461
+ "order": 8,
462
+ "mode": 1,
463
+ "inputs": [
464
+ {
465
+ "name": "model",
466
+ "type": "MODEL",
467
+ "link": 1
468
+ },
469
+ {
470
+ "name": "positive",
471
+ "type": "CONDITIONING",
472
+ "link": 4
473
+ },
474
+ {
475
+ "name": "negative",
476
+ "type": "CONDITIONING",
477
+ "link": 5
478
+ },
479
+ {
480
+ "name": "latent_image",
481
+ "type": "LATENT",
482
+ "link": 7
483
+ }
484
+ ],
485
+ "outputs": [
486
+ {
487
+ "name": "LATENT",
488
+ "type": "LATENT",
489
+ "links": [
490
+ 9
491
+ ],
492
+ "slot_index": 0
493
+ }
494
+ ],
495
+ "title": "KSampler (Alternative)",
496
+ "properties": {
497
+ "Node name for S&R": "KSampler"
498
+ },
499
+ "widgets_values": [
500
+ 123456789,
501
+ 25,
502
+ 10,
503
+ "dpm_2",
504
+ "normal",
505
+ 0.7
506
+ ]
507
+ },
508
+ {
509
+ "id": 10,
510
+ "type": "ControlNetLoader",
511
+ "pos": [
512
+ 50,
513
+ 200
514
+ ],
515
+ "size": {
516
+ "0": 315,
517
+ "1": 58
518
+ },
519
+ "flags": {},
520
+ "order": 1,
521
+ "mode": 0,
522
+ "outputs": [
523
+ {
524
+ "name": "CONTROL_NET",
525
+ "type": "CONTROL_NET",
526
+ "links": [
527
+ 12
528
+ ],
529
+ "slot_index": 0
530
+ }
531
+ ],
532
+ "title": "ControlNet Loader",
533
+ "properties": {
534
+ "Node name for S&R": "ControlNetLoader"
535
+ },
536
+ "widgets_values": [
537
+ "canny_controlnet_v1-1_sd15.safetensors"
538
+ ]
539
+ },
540
+ {
541
+ "id": 11,
542
+ "type": "Canny",
543
+ "pos": [
544
+ 400,
545
+ 400
546
+ ],
547
+ "size": {
548
+ "0": 315,
549
+ "1": 180
550
+ },
551
+ "flags": {},
552
+ "order": 7,
553
+ "mode": 0,
554
+ "inputs": [
555
+ {
556
+ "name": "image",
557
+ "type": "IMAGE",
558
+ "link": 13
559
+ }
560
+ ],
561
+ "outputs": [
562
+ {
563
+ "name": "IMAGE",
564
+ "type": "IMAGE",
565
+ "links": [
566
+ 14
567
+ ],
568
+ "slot_index": 0
569
+ }
570
+ ],
571
+ "title": "Canny Edge Detection",
572
+ "properties": {
573
+ "Node name for S&R": "Canny"
574
+ },
575
+ "widgets_values": [
576
+ 100,
577
+ 200,
578
+ 512
579
+ ]
580
+ },
581
+ {
582
+ "id": 12,
583
+ "type": "ControlNetApply",
584
+ "pos": [
585
+ 750,
586
+ 300
587
+ ],
588
+ "size": {
589
+ "0": 317,
590
+ "1": 98
591
+ },
592
+ "flags": {},
593
+ "order": 12,
594
+ "mode": 0,
595
+ "inputs": [
596
+ {
597
+ "name": "conditioning",
598
+ "type": "CONDITIONING",
599
+ "link": 15
600
+ },
601
+ {
602
+ "name": "control_net",
603
+ "type": "CONTROL_NET",
604
+ "link": 12
605
+ },
606
+ {
607
+ "name": "image",
608
+ "type": "IMAGE",
609
+ "link": 14
610
+ }
611
+ ],
612
+ "outputs": [
613
+ {
614
+ "name": "CONDITIONING",
615
+ "type": "CONDITIONING",
616
+ "links": [
617
+ 16,
618
+ 17
619
+ ],
620
+ "slot_index": 0
621
+ }
622
+ ],
623
+ "title": "ControlNet Apply",
624
+ "properties": {
625
+ "Node name for S&R": "ControlNetApply"
626
+ }
627
+ },
628
+ {
629
+ "id": 13,
630
+ "type": "LoadImage",
631
+ "pos": [
632
+ 50,
633
+ 400
634
+ ],
635
+ "size": {
636
+ "0": 315,
637
+ "1": 314
638
+ },
639
+ "flags": {},
640
+ "order": 2,
641
+ "mode": 0,
642
+ "outputs": [
643
+ {
644
+ "name": "IMAGE",
645
+ "type": "IMAGE",
646
+ "links": [
647
+ 13
648
+ ],
649
+ "slot_index": 0
650
+ },
651
+ {
652
+ "name": "MASK",
653
+ "type": "MASK",
654
+ "links": null,
655
+ "slot_index": 1
656
+ }
657
+ ],
658
+ "title": "Load Image",
659
+ "properties": {
660
+ "Node name for S&R": "LoadImage"
661
+ },
662
+ "widgets_values": [
663
+ "example.png"
664
+ ]
665
+ },
666
+ {
667
+ "id": 14,
668
+ "type": "CLIPTextEncode",
669
+ "pos": [
670
+ 400,
671
+ 600
672
+ ],
673
+ "size": {
674
+ "0": 400,
675
+ "1": 180
676
+ },
677
+ "flags": {},
678
+ "order": 6,
679
+ "mode": 0,
680
+ "inputs": [
681
+ {
682
+ "name": "clip",
683
+ "type": "CLIP",
684
+ "link": 2
685
+ }
686
+ ],
687
+ "outputs": [
688
+ {
689
+ "name": "CONDITIONING",
690
+ "type": "CONDITIONING",
691
+ "links": [
692
+ 18
693
+ ],
694
+ "slot_index": 0
695
+ }
696
+ ],
697
+ "title": "CLIP Text Encode (ControlNet)",
698
+ "properties": {
699
+ "Node name for S&R": "CLIPTextEncode"
700
+ },
701
+ "widgets_values": [
702
+ "edge detection reference"
703
+ ]
704
+ },
705
+ {
706
+ "id": 15,
707
+ "type": "KSampler",
708
+ "pos": [
709
+ 1200,
710
+ 200
711
+ ],
712
+ "size": {
713
+ "0": 315,
714
+ "1": 262
715
+ },
716
+ "flags": {},
717
+ "order": 8,
718
+ "mode": 0,
719
+ "inputs": [
720
+ {
721
+ "name": "model",
722
+ "type": "MODEL",
723
+ "link": 1
724
+ },
725
+ {
726
+ "name": "positive",
727
+ "type": "CONDITIONING",
728
+ "link": 16
729
+ },
730
+ {
731
+ "name": "negative",
732
+ "type": "CONDITIONING",
733
+ "link": 5
734
+ },
735
+ {
736
+ "name": "latent_image",
737
+ "type": "LATENT",
738
+ "link": 7
739
+ }
740
+ ],
741
+ "outputs": [
742
+ {
743
+ "name": "LATENT",
744
+ "type": "LATENT",
745
+ "links": [
746
+ 19
747
+ ],
748
+ "slot_index": 0
749
+ }
750
+ ],
751
+ "title": "KSampler (ControlNet)",
752
+ "properties": {
753
+ "Node name for S&R": "KSampler"
754
+ },
755
+ "widgets_values": [
756
+ 123456789,
757
+ 20,
758
+ 7,
759
+ "euler",
760
+ "normal",
761
+ 0.8
762
+ ]
763
+ }
764
+ ],
765
+ "links": [
766
+ [
767
+ 1,
768
+ 1,
769
+ 0,
770
+ 4,
771
+ 0,
772
+ "MODEL"
773
+ ],
774
+ [
775
+ 2,
776
+ 1,
777
+ 1,
778
+ 2,
779
+ 0,
780
+ "CLIP"
781
+ ],
782
+ [
783
+ 3,
784
+ 1,
785
+ 1,
786
+ 3,
787
+ 0,
788
+ "CLIP"
789
+ ],
790
+ [
791
+ 4,
792
+ 2,
793
+ 0,
794
+ 4,
795
+ 1,
796
+ "CONDITIONING"
797
+ ],
798
+ [
799
+ 5,
800
+ 3,
801
+ 0,
802
+ 4,
803
+ 2,
804
+ "CONDITIONING"
805
+ ],
806
+ [
807
+ 7,
808
+ 8,
809
+ 0,
810
+ 4,
811
+ 3,
812
+ "LATENT"
813
+ ],
814
+ [
815
+ 8,
816
+ 1,
817
+ 2,
818
+ 5,
819
+ 1,
820
+ "VAE"
821
+ ],
822
+ [
823
+ 9,
824
+ 4,
825
+ 0,
826
+ 5,
827
+ 0,
828
+ "LATENT"
829
+ ],
830
+ [
831
+ 10,
832
+ 5,
833
+ 0,
834
+ 6,
835
+ 0,
836
+ "IMAGE"
837
+ ],
838
+ [
839
+ 11,
840
+ 5,
841
+ 0,
842
+ 7,
843
+ 0,
844
+ "IMAGE"
845
+ ],
846
+ [
847
+ 12,
848
+ 10,
849
+ 0,
850
+ 12,
851
+ 1,
852
+ "CONTROL_NET"
853
+ ],
854
+ [
855
+ 13,
856
+ 13,
857
+ 0,
858
+ 11,
859
+ 0,
860
+ "IMAGE"
861
+ ],
862
+ [
863
+ 14,
864
+ 11,
865
+ 0,
866
+ 12,
867
+ 2,
868
+ "IMAGE"
869
+ ],
870
+ [
871
+ 15,
872
+ 14,
873
+ 0,
874
+ 12,
875
+ 0,
876
+ "CONDITIONING"
877
+ ],
878
+ [
879
+ 16,
880
+ 12,
881
+ 0,
882
+ 15,
883
+ 1,
884
+ "CONDITIONING"
885
+ ],
886
+ [
887
+ 17,
888
+ 12,
889
+ 0,
890
+ 4,
891
+ 1,
892
+ "CONDITIONING"
893
+ ],
894
+ [
895
+ 18,
896
+ 14,
897
+ 0,
898
+ 3,
899
+ 0,
900
+ "CLIP"
901
+ ],
902
+ [
903
+ 19,
904
+ 15,
905
+ 0,
906
+ 5,
907
+ 0,
908
+ "LATENT"
909
+ ]
910
+ ],
911
+ "groups": [],
912
+ "config": {},
913
+ "extra": {},
914
+ "version": 0.4
915
+ }</pre>
916
+ </div>
917
+ </div>
918
+
919
+ <script>
920
+ function copyToClipboard() {
921
+ const jsonContent = document.getElementById('json-content').textContent;
922
+ navigator.clipboard.writeText(jsonContent).then(() => {
923
+ const btn = event.target;
924
+ const originalText = btn.textContent;
925
+ btn.textContent = 'Copied!';
926
+ btn.classList.add('success');
927
+ setTimeout(() => {
928
+ btn.textContent = originalText;
929
+ btn.classList.remove('success');
930
+ }, 2000);
931
+ }).catch(err => {
932
+ alert('Failed to copy to clipboard');
933
+ });
934
+ }
935
+
936
+ function downloadJSON() {
937
+ const jsonContent = document.getElementById('json-content').textContent;
938
+ const blob = new Blob([jsonContent], { type: 'application/json' });
939
+ const url = URL.createObjectURL(blob);
940
+ const a = document.createElement('a');
941
+ a.href = url;
942
+ a.download = 'comfyui_workflow.json';
943
+ document.body.appendChild(a);
944
+ a.click();
945
+ document.body.removeChild(a);
946
+ URL.revokeObjectURL(url);
947
+
948
+ const btn = event.target;
949
+ const originalText = btn.textContent;
950
+ btn.textContent = 'Downloaded!';
951
+ btn.classList.add('success');
952
+ setTimeout(() => {
953
+ btn.textContent = originalText;
954
+ btn.classList.remove('success');
955
+ }, 2000);
956
+ }
957
+
958
+ // Add syntax highlighting
959
+ function highlightJSON() {
960
+ const content = document.getElementById('json-content');
961
+ let html = content.innerHTML;
962
+
963
+ // Highlight different JSON elements
964
+ html = html.replace(/"([^"]+)":/g, '<span class="json-key">"$1":</span>');
965
+ html = html.replace(/: "([^"]*)"/g, ': <span class="json-string">"$1"</span>');
966
+ html = html.replace(/: (-?\d+\.?\d*)/g, ': <span class="json-number">$1</span>');
967
+ html = html.replace(/: (true|false)/g, ': <span class="json-boolean">$1</span>');
968
+ html = html.replace(/: null/g, ': <span class="json-null">null</span>');
969
+
970
+ content.innerHTML = html;
971
+ }
972
+
973
+ // Apply syntax highlighting after page load
974
+ window.addEventListener('load', highlightJSON);
975
+ </script>
976
+ </body>
977
+ </html>