-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathibom.html
3428 lines (3142 loc) · 167 KB
/
ibom.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interactive BOM for KiCAD</title>
<style type="text/css">
:root {
--pcb-edge-color: black;
--pad-color: #878787;
--pad-color-highlight: #D04040;
--pin1-outline-color: #ffb629;
--pin1-outline-color-highlight: #b4ff03;
--silkscreen-edge-color: #aa4;
--silkscreen-polygon-color: #4aa;
--silkscreen-text-color: #4aa;
--fabrication-edge-color: #907651;
--fabrication-polygon-color: #907651;
--fabrication-text-color: #a27c24;
--track-color: #def5f1;
--track-color-highlight: #D04040;
--zone-color: #def5f1;
--zone-color-highlight: #d0404080;
}
html, body {
margin: 0px;
height: 100%;
font-family: Verdana, sans-serif;
}
.dark.topmostdiv {
--pcb-edge-color: #eee;
--pad-color: #808080;
--pin1-outline-color: #ffa800;
--pin1-outline-color-highlight: #ccff00;
--track-color: #42524f;
--zone-color: #42524f;
background-color: #252c30;
color: #eee;
}
button {
background-color: #eee;
border: 1px solid #888;
color: black;
height: 44px;
width: 44px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 14px;
font-weight: bolder;
}
.dark button {
/* This will be inverted */
background-color: #c3b7b5;
}
button.depressed {
background-color: #0a0;
color: white;
}
.dark button.depressed {
/* This will be inverted */
background-color: #b3b;
}
button:focus {
outline: 0;
}
button#tb-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}
button#lr-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}
button#bom-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
}
button#bom-grouped-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}
button#bom-ungrouped-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}
button#bom-netlist-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
}
button#copy {
background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
background-position: 6px 6px;
background-repeat: no-repeat;
background-size: 26px 26px;
border-radius: 6px;
height: 40px;
width: 40px;
margin: 10px 5px;
}
button#copy:active {
box-shadow: inset 0px 0px 5px #6c6c6c;
}
textarea.clipboard-temp {
position: fixed;
top: 0;
left: 0;
width: 2em;
height: 2em;
padding: 0;
border: None;
outline: None;
box-shadow: None;
background: transparent;
}
.left-most-button {
border-right: 0;
border-top-left-radius: 6px;
border-bottom-left-radius: 6px;
}
.middle-button {
border-right: 0;
}
.right-most-button {
border-top-right-radius: 6px;
border-bottom-right-radius: 6px;
}
.button-container {
font-size: 0;
margin: 10px 10px 10px 0px;
}
.dark .button-container {
filter: invert(1);
}
.button-container button {
background-size: 32px 32px;
background-position: 5px 5px;
background-repeat: no-repeat;
}
@media print {
.hideonprint {
display: none;
}
}
canvas {
cursor: crosshair;
}
canvas:active {
cursor: grabbing;
}
.fileinfo {
width: 100%;
max-width: 1000px;
border: none;
padding: 5px;
}
.fileinfo .title {
font-size: 20pt;
font-weight: bold;
}
.fileinfo td {
overflow: hidden;
white-space: nowrap;
max-width: 1px;
width: 50%;
text-overflow: ellipsis;
}
.bom {
border-collapse: collapse;
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
font-size: 10pt;
table-layout: fixed;
width: 100%;
margin-top: 1px;
}
.bom th, .bom td {
border: 1px solid black;
padding: 5px;
word-wrap: break-word;
text-align: center;
position: relative;
}
.dark .bom th, .dark .bom td {
border: 1px solid #777;
}
.bom th {
background-color: #CCCCCC;
background-clip: padding-box;
}
.dark .bom th {
background-color: #3b4749;
}
.bom tr.highlighted:nth-child(n) {
background-color: #cfc;
}
.dark .bom tr.highlighted:nth-child(n) {
background-color: #226022;
}
.bom tr:nth-child(even) {
background-color: #f2f2f2;
}
.dark .bom tr:nth-child(even) {
background-color: #313b40;
}
.bom tr {
transition: background-color 0.2s;
}
.bom .numCol {
width: 25px;
}
.bom .Description {
width: 10%;
}
.bom .Part {
width: 10%;
}
.bom .Value {
width: 15%;
}
.bom .Quantity {
width: 65px;
}
.bom th .sortmark {
position: absolute;
right: 1px;
top: 1px;
margin-top: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent #221 transparent;
transform-origin: 50% 85%;
transition: opacity 0.2s, transform 0.4s;
}
.dark .bom th .sortmark {
filter: invert(1);
}
.bom th .sortmark.none {
opacity: 0;
}
.bom th .sortmark.desc {
transform: rotate(180deg);
}
.bom th:hover .sortmark.none {
opacity: 0.5;
}
.bom .bom-checkbox {
width: 30px;
position: relative;
user-select: none;
-moz-user-select: none;
}
.bom .bom-checkbox:before {
content: "";
position: absolute;
border-width: 15px;
border-style: solid;
border-color: #51829f transparent transparent transparent;
visibility: hidden;
top: -15px;
}
.bom .bom-checkbox:after {
content: "Double click to set/unset all";
position: absolute;
color: white;
top: -35px;
left: -26px;
background: #51829f;
padding: 5px 15px;
border-radius: 8px;
white-space: nowrap;
visibility: hidden;
}
.bom .bom-checkbox:hover:before, .bom .bom-checkbox:hover:after {
visibility: visible;
transition: visibility 0.2s linear 1s;
}
.split {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
overflow-y: auto;
overflow-x: hidden;
background-color: inherit;
}
.split.split-horizontal, .gutter.gutter-horizontal {
height: 100%;
float: left;
}
.gutter {
background-color: #ddd;
background-repeat: no-repeat;
background-position: 50%;
transition: background-color 0.3s;
}
.dark .gutter {
background-color: #777;
}
.gutter.gutter-horizontal {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==');
cursor: ew-resize;
width: 5px;
}
.gutter.gutter-vertical {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII=');
cursor: ns-resize;
height: 5px;
}
.searchbox {
float: left;
height: 40px;
margin: 10px 5px;
padding: 12px 32px;
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
font-size: 18px;
box-sizing: border-box;
border: 1px solid #888;
border-radius: 6px;
outline: none;
background-color: #eee;
transition: background-color 0.2s, border 0.2s;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg==');
background-position: 10px 10px;
background-repeat: no-repeat;
}
.dark .searchbox {
background-color: #111;
color: #eee;
}
.searchbox::placeholder {
color: #ccc;
}
.dark .searchbox::placeholder {
color: #666;
}
.filter {
width: calc(60% - 64px);
}
.reflookup {
width: calc(40% - 10px);
}
input[type=text]:focus {
background-color: white;
border: 1px solid #333;
}
.dark input[type=text]:focus {
background-color: #333;
border: 1px solid #ccc;
}
mark.highlight {
background-color: #5050ff;
color: #fff;
padding: 2px;
border-radius: 6px;
}
.dark mark.highlight {
background-color: #76a6da;
color: #111;
}
.menubtn {
background-color: white;
border: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
background-position: center;
background-repeat: no-repeat;
}
.statsbtn {
background-color: white;
border: none;
background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
background-position: center;
background-repeat: no-repeat;
}
.iobtn {
background-color: white;
border: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
background-position: center;
background-repeat: no-repeat;
}
.dark .statsbtn, .dark .savebtn, .dark .menubtn, .dark .iobtn {
filter: invert(1);
}
.flexbox {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
.savebtn {
background-color: #d6d6d6;
width: auto;
height: 30px;
flex-grow: 1;
margin: 5px;
border-radius: 4px;
}
.savebtn:active {
background-color: #0a0;
color: white;
}
.dark .savebtn:active {
/* This will be inverted */
background-color: #b3b;
}
.stats {
border-collapse: collapse;
font-size: 12pt;
table-layout: fixed;
width: 100%;
min-width: 450px;
}
.dark .stats td {
border: 1px solid #bbb;
}
.stats td {
border: 1px solid black;
padding: 5px;
word-wrap: break-word;
text-align: center;
position: relative;
}
#checkbox-stats div {
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
#checkbox-stats .bar {
background-color: rgba(28, 251, 0, 0.6);
}
.menu {
position: relative;
display: inline-block;
margin: 10px 10px 10px 0px;
}
.menu-content {
display: none;
position: absolute;
background-color: white;
right: 0;
min-width: 300px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 100;
padding: 8px;
}
.dark .menu-content {
background-color: #111;
}
.menu:hover .menu-content {
display: block;
}
.menu:hover .menubtn, .menu:hover .iobtn, .menu:hover .statsbtn {
background-color: #eee;
}
.menu-label {
display: inline-block;
padding: 8px;
border: 1px solid #ccc;
border-top: 0;
width: calc(100% - 18px);
}
.menu-label-top {
border-top: 1px solid #ccc;
}
.menu-textbox {
float: left;
height: 24px;
margin: 10px 5px;
padding: 5px 5px;
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
font-size: 14px;
box-sizing: border-box;
border: 1px solid #888;
border-radius: 4px;
outline: none;
background-color: #eee;
transition: background-color 0.2s, border 0.2s;
width: calc(100% - 10px);
}
.menu-textbox.invalid, .dark .menu-textbox.invalid {
color: red;
}
.dark .menu-textbox {
background-color: #222;
color: #eee;
}
.topmostdiv {
width: 100%;
height: 100%;
background-color: white;
transition: background-color 0.3s;
}
#top {
height: 78px;
border-bottom: 2px solid black;
}
.dark #top {
border-bottom: 2px solid #ccc;
}
#dbg {
display: block;
}
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #aaa;
}
::-webkit-scrollbar-thumb {
background: #666;
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
.slider {
-webkit-appearance: none;
width: 100%;
margin: 3px 0;
padding: 0;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
border-radius: 3px;
}
.slider:hover {
opacity: 1;
}
.slider:focus {
outline: none;
}
.slider::-webkit-slider-runnable-track {
-webkit-appearance: none;
width: 100%;
height: 8px;
background: #d3d3d3;
border-radius: 3px;
border: none;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 15px;
height: 15px;
border-radius: 50%;
background: #0a0;
cursor: pointer;
margin-top: -4px;
}
.dark .slider::-webkit-slider-thumb {
background: #3d3;
}
.slider::-moz-range-thumb {
width: 15px;
height: 15px;
border-radius: 50%;
background: #0a0;
cursor: pointer;
}
.slider::-moz-range-track {
height: 8px;
background: #d3d3d3;
border-radius: 3px;
}
.dark .slider::-moz-range-thumb {
background: #3d3;
}
.slider::-ms-track {
width: 100%;
height: 8px;
border-width: 3px 0;
background: transparent;
border-color: transparent;
color: transparent;
transition: opacity .2s;
}
.slider::-ms-fill-lower {
background: #d3d3d3;
border: none;
border-radius: 3px;
}
.slider::-ms-fill-upper {
background: #d3d3d3;
border: none;
border-radius: 3px;
}
.slider::-ms-thumb {
width: 15px;
height: 15px;
border-radius: 50%;
background: #0a0;
cursor: pointer;
margin: 0;
}
.shameless-plug {
font-size: 0.8em;
text-align: center;
display: block;
}
a {
color: #0278a4;
}
.dark a {
color: #00b9fd;
}
#frontcanvas, #backcanvas {
touch-action: none;
}
</style>
<script type="text/javascript" >
///////////////////////////////////////////////
/*
Split.js - v1.3.5
MIT License
https://github.com/nathancahill/Split.js
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});
///////////////////////////////////////////////
///////////////////////////////////////////////
// Copyright (c) 2013 Pieroxy <[email protected]>
// This work is free. You can redistribute it and/or modify it
// under the terms of the WTFPL, Version 2
// For more information see LICENSE.txt or http://www.wtfpl.net/
//
// For more information, the home page:
// http://pieroxy.net/blog/pages/lz-string/testing.html
//
// LZ-based compression algorithm, version 1.4.4
var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
///////////////////////////////////////////////
///////////////////////////////////////////////
/*!
* PEP v0.4.3 | https://github.com/jquery/PEP
* Copyright jQuery Foundation and other contributors | http://jquery.org/license
*/
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
for(var b=a;b.parentNode;)b=b.parentNode;
return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
//
this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
var b=x(a,this.findElements,this);
return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
b=!1;else if("XY"===c)
b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
vacuumTouches:function(a){var b=a.touches;
if(R.size>=b.length){var c=[];R.forEach(function(a,d){
if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
if(this.isPrimaryTouch(c)){
var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});
///////////////////////////////////////////////
///////////////////////////////////////////////
var config = {"show_fabrication": false, "redraw_on_drag": true, "highlight_pin1": false, "extra_fields": [], "dark_mode": false, "bom_view": "left-right", "board_rotation": 0, "checkboxes": "Sourced,Placed", "show_silkscreen": true, "show_pads": true, "layer_view": "FB"}
///////////////////////////////////////////////
///////////////////////////////////////////////
var pcbdata = JSON.parse(LZString.decompressFromBase64("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"))
///////////////////////////////////////////////
///////////////////////////////////////////////
/* Utility functions */
var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
pcbdata.metadata.revision + '__#';
var storage;
function initStorage(key) {
try {
window.localStorage.getItem("blank");
storage = window.localStorage;
} catch (e) {
// localStorage not available
}
if (!storage) {
try {
window.sessionStorage.getItem("blank");
storage = window.sessionStorage;
} catch (e) {
// sessionStorage also not available
}
}
}
function readStorage(key) {
if (storage) {
return storage.getItem(storagePrefix + key);
} else {
return null;
}
}
function writeStorage(key, value) {
if (storage) {
storage.setItem(storagePrefix + key, value);
}
}
function fancyDblClickHandler(el, onsingle, ondouble) {
return function() {
if (el.getAttribute("data-dblclick") == null) {
el.setAttribute("data-dblclick", 1);
setTimeout(function() {
if (el.getAttribute("data-dblclick") == 1) {
onsingle();
}
el.removeAttribute("data-dblclick");
}, 200);
} else {
el.removeAttribute("data-dblclick");
ondouble();
}
}
}
function smoothScrollToRow(rowid) {
document.getElementById(rowid).scrollIntoView({
behavior: "smooth",
block: "center",
inline: "nearest"
});
}
function focusInputField(input) {
input.scrollIntoView(false);
input.focus();
input.select();
}
function copyToClipboard() {
var text = '';
for (var node of bomhead.childNodes[0].childNodes) {
if (node.firstChild) {
text = text + node.firstChild.nodeValue;
}
if (node != bomhead.childNodes[0].lastChild) {
text += '\t';
}
}
text += '\n';
for (var row of bombody.childNodes) {
for (var cell of row.childNodes) {
for (var node of cell.childNodes) {
if (node.nodeName == "INPUT") {
if (node.checked) {
text = text + '✓';
}
} else if (node.nodeName == "MARK") {
text = text + node.firstChild.nodeValue;
} else {
text = text + node.nodeValue;
}
}
if (cell != row.lastChild) {
text += '\t';
}
}
text += '\n';
}
var textArea = document.createElement("textarea");
textArea.classList.add('clipboard-temp');
textArea.value = text;
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
if (document.execCommand('copy')) {
console.log('Bom copied to clipboard.');
}
} catch (err) {
console.log('Can not copy to clipboard.');
}
document.body.removeChild(textArea);
}
function removeGutterNode(node) {
for (var i = 0; i < node.childNodes.length; i++) {
if (node.childNodes[i].classList &&
node.childNodes[i].classList.contains("gutter")) {
node.removeChild(node.childNodes[i]);
break;
}
}
}
function cleanGutters() {
removeGutterNode(document.getElementById("bot"));
removeGutterNode(document.getElementById("canvasdiv"));
}
var units = {
prefixes: {
giga: ["G", "g", "giga", "Giga", "GIGA"],
mega: ["M", "mega", "Mega", "MEGA"],
kilo: ["K", "k", "kilo", "Kilo", "KILO"],
milli: ["m", "milli", "Milli", "MILLI"],
micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
nano: ["N", "n", "nano", "Nano", "NANO"],
pico: ["P", "p", "pico", "Pico", "PICO"],
},
unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
unitsLong: [
"OHM", "Ohm", "ohm", "ohms",
"FARAD", "Farad", "farad",
"HENRY", "Henry", "henry"
],
getMultiplier: function(s) {
if (this.prefixes.giga.includes(s)) return 1e9;
if (this.prefixes.mega.includes(s)) return 1e6;
if (this.prefixes.kilo.includes(s)) return 1e3;
if (this.prefixes.milli.includes(s)) return 1e-3;
if (this.prefixes.micro.includes(s)) return 1e-6;
if (this.prefixes.nano.includes(s)) return 1e-9;
if (this.prefixes.pico.includes(s)) return 1e-12;
return 1;
},
valueRegex: null,
}
function initUtils() {
var allPrefixes = units.prefixes.giga
.concat(units.prefixes.mega)
.concat(units.prefixes.kilo)
.concat(units.prefixes.milli)
.concat(units.prefixes.micro)
.concat(units.prefixes.nano)
.concat(units.prefixes.pico);
var allUnits = units.unitsShort.concat(units.unitsLong);
units.valueRegex = new RegExp("^([0-9\.]+)" +
"\\s*(" + allPrefixes.join("|") + ")?" +
"(" + allUnits.join("|") + ")?" +
"(\\b.*)?$", "");
units.valueAltRegex = new RegExp("^([0-9]*)" +
"(" + units.unitsShort.join("|") + ")?" +
"([GgMmKkUuNnPp])?" +
"([0-9]*)" +
"(\\b.*)?$", "");
for (var bom_type of ["both", "F", "B"]) {
for (var row of pcbdata.bom[bom_type]) {
row.push(parseValue(row[1], row[3][0][0]));
}
}
}
function parseValue(val, ref) {
var inferUnit = (unit, ref) => {
if (unit) {
unit = unit.toLowerCase();
if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
unit = 'r';
}
unit = unit[0];
} else {