react-ui-basics 0.0.164 → 0.0.165

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bundle.css CHANGED
@@ -1,52 +1,166 @@
1
- .DialogModal {
1
+ .Button {
2
+ position: relative;
3
+ min-width: 64px;
4
+ min-height: 36px;
5
+ height: 24px;
6
+ margin: 0px;
7
+ padding: 0px 16px;
8
+ border: none;
9
+ outline: none;
10
+ font-size: 14px;
11
+ font-weight: 500;
12
+ letter-spacing: 1.25px;
13
+ background: #dfdfdf;
14
+ text-transform: uppercase;
15
+ font-family: Roboto, sans-serif;
16
+ display: inline-flex;
17
+ justify-content: center;
18
+ align-items: center;
19
+ cursor: pointer;
2
20
  overflow: hidden;
21
+ user-select: none;
22
+ border-radius: 3px;
23
+ transition: all 0.2s ease;
3
24
  }
4
25
 
5
- .DialogModal .content {
6
- top: 20vh;
26
+ .Button.flat {
27
+ background-color: transparent;
7
28
  }
8
29
 
9
- .Dialog {
10
- background-color: white;
11
- min-width: 460px;
12
- max-width: 40vw;
13
- padding: 15px;
30
+ .Button.flat:hover {
31
+ background-color: rgba(0, 0, 0, 0.05);
14
32
  }
15
33
 
16
- .Dialog .title {
17
- margin-bottom: 15px;
18
- padding: 20px 50px 0px 30px;
19
- font-size: 1.25rem;
20
- line-height: 2rem;
21
- font-weight: 400;
22
- letter-spacing: 0.0125em;
34
+ .Button.green {
35
+ background-color: #43a047;
36
+ color: white;
23
37
  }
24
38
 
25
- .Dialog .description {
26
- color: rgba(0, 0, 0, 0.54);
27
- font-size: 1rem;
28
- line-height: 1.5rem;
29
- font-weight: 400;
30
- letter-spacing: 0.03125em;
31
- margin-top: 20px;
32
- padding: 0 24px 24px;
39
+ .Button.green:hover {
40
+ background-color: #3b8e3f;
33
41
  }
34
42
 
35
- .Dialog > div.row {
36
- margin-bottom: 15px;
43
+ .Button.blue {
44
+ background-color: #039be5;
45
+ color: white;
37
46
  }
38
47
 
39
- .Dialog > div.row:last-child {
40
- margin-bottom: 0;
48
+ .Button.blue:hover {
49
+ background-color: #038acc;
41
50
  }
42
51
 
43
- .animated {
44
- transition: opacity 250ms ease;
45
- opacity: 0;
52
+ .Button.red {
53
+ background-color: #e53935;
54
+ color: white;
46
55
  }
47
56
 
48
- .animated.mounting, .animated.mounted {
57
+ .Button.red:hover {
58
+ background-color: #e2231e;
59
+ }
60
+
61
+ .Button.black {
62
+ background-color: #1e252d;
63
+ color: white;
64
+ }
65
+
66
+ .Button.black:hover {
67
+ background-color: #14181e;
68
+ }
69
+
70
+ .Button.gray {
71
+ background: #D9D9D9;
72
+ color: #999999;
73
+ }
74
+
75
+ .Button.gray:hover {
76
+ background-color: #cccccc;
77
+ }
78
+
79
+ .Button.small {
80
+ padding: 0px 8px;
81
+ min-height: 16px;
82
+ min-width: 16px;
83
+ }
84
+
85
+ .Button > .material-icons {
86
+ margin-right: 10px;
87
+ }
88
+
89
+ .Button.round {
90
+ padding: 0px;
91
+ min-width: 36px;
92
+ border-radius: 50%;
93
+ }
94
+
95
+ .Button.round > .material-icons {
96
+ margin: 0px;
97
+ }
98
+
99
+ .Button .ripple {
100
+ position: absolute;
101
+ background: rgba(0, 0, 0, 0.1);
102
+ border-radius: 100%;
103
+ transform: scale(0);
104
+ pointer-events: none;
105
+ transition: opacity 0.2s ease-out;
106
+ }
107
+
108
+ .Button .ripple.show {
109
+ animation: ripple 0.35s ease-out;
110
+ }
111
+
112
+ .Button:active .ripple.showed {
113
+ opacity: 1;
114
+ }
115
+
116
+ .Button:focus .ripple.focused {
49
117
  opacity: 1;
118
+ transition: opacity 0.2s ease-out, transform 0.2s ease-out;
119
+ transform: scale(1);
120
+ animation: resize 1.25s ease-out infinite;
121
+ animation-delay: 0.2s;
122
+ animation-direction: alternate;
123
+ }
124
+
125
+ .Button .ripple.showed {
126
+ transform: scale(2);
127
+ opacity: 0;
128
+ }
129
+
130
+ @keyframes ripple {
131
+ to {
132
+ transform: scale(2);
133
+ }
134
+ }
135
+ @keyframes resize {
136
+ to {
137
+ transform: scale(0.9);
138
+ }
139
+ }
140
+ .Button.raised {
141
+ transition: color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
142
+ }
143
+
144
+ .Button.raised:hover {
145
+ box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.25);
146
+ }
147
+
148
+ .Button.raised:active {
149
+ box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.35);
150
+ }
151
+
152
+ .Button.disabled {
153
+ box-shadow: none;
154
+ background: #D9D9D9;
155
+ color: #999999;
156
+ }
157
+
158
+ .Button.disabled:hover {
159
+ background-color: #cccccc;
160
+ }
161
+
162
+ .Button::-moz-focus-inner {
163
+ border: 0;
50
164
  }
51
165
 
52
166
  .AutocompleteSelect {
@@ -344,86 +458,6 @@
344
458
  position: absolute;
345
459
  }
346
460
 
347
- .CircleProgress {
348
- width: 48px;
349
- height: 48px;
350
- }
351
-
352
- .CircleProgress .line {
353
- stroke-width: 2px;
354
- stroke: black;
355
- stroke-linecap: square;
356
- fill: none;
357
- transition: stroke-dashoffset 0.2s ease;
358
- }
359
-
360
- .Checkbox {
361
- position: relative;
362
- white-space: pre;
363
- }
364
-
365
- .Checkbox *, .Checkbox *:before, .Checkbox *:after {
366
- box-sizing: border-box;
367
- }
368
-
369
- .Checkbox label {
370
- font-family: Roboto, sans-serif;
371
- font-size: 14px;
372
- color: #1e252d;
373
- cursor: pointer;
374
- }
375
-
376
- .Checkbox label:before, .Checkbox label:after {
377
- content: "";
378
- position: absolute;
379
- left: 0;
380
- top: 0;
381
- }
382
-
383
- .Checkbox label:before {
384
- width: 20px;
385
- height: 20px;
386
- background: #fff;
387
- border: 2px solid #252525;
388
- border-radius: 2px;
389
- cursor: pointer;
390
- transition: background 0.3s;
391
- }
392
-
393
- .Checkbox input[type=checkbox] {
394
- outline: 0;
395
- margin-right: 10px;
396
- visibility: hidden;
397
- }
398
-
399
- .Checkbox input[type=checkbox]:checked + label:before {
400
- background: #4AC263;
401
- border: none;
402
- }
403
-
404
- .Checkbox input[type=checkbox]:checked + label:after {
405
- transform: rotate(-45deg);
406
- top: 6px;
407
- left: 4px;
408
- width: 12px;
409
- height: 6px;
410
- border: 2px solid #fff;
411
- border-top-style: none;
412
- border-right-style: none;
413
- }
414
-
415
- .Checkbox input[type=checkbox]:disabled + label {
416
- color: gray;
417
- }
418
-
419
- .Checkbox input[type=checkbox]:disabled + label:before {
420
- border-color: rgba(0, 0, 0, 0.26);
421
- }
422
-
423
- .Checkbox input[type=checkbox]:disabled:checked + label:before {
424
- background: rgba(0, 0, 0, 0.26);
425
- }
426
-
427
461
  .DNDContainer {
428
462
  position: relative;
429
463
  }
@@ -456,169 +490,162 @@
456
490
  pointer-events: none;
457
491
  }
458
492
 
459
- .Button {
460
- position: relative;
461
- min-width: 64px;
462
- min-height: 36px;
463
- height: 24px;
464
- margin: 0px;
465
- padding: 0px 16px;
466
- border: none;
467
- outline: none;
468
- font-size: 14px;
469
- font-weight: 500;
470
- letter-spacing: 1.25px;
471
- background: #dfdfdf;
472
- text-transform: uppercase;
473
- font-family: Roboto, sans-serif;
474
- display: inline-flex;
475
- justify-content: center;
476
- align-items: center;
477
- cursor: pointer;
478
- overflow: hidden;
479
- user-select: none;
480
- border-radius: 3px;
481
- transition: all 0.2s ease;
482
- }
483
-
484
- .Button.flat {
485
- background-color: transparent;
493
+ .animated {
494
+ transition: opacity 250ms ease;
495
+ opacity: 0;
486
496
  }
487
497
 
488
- .Button.flat:hover {
489
- background-color: rgba(0, 0, 0, 0.05);
498
+ .animated.mounting, .animated.mounted {
499
+ opacity: 1;
490
500
  }
491
501
 
492
- .Button.green {
493
- background-color: #43a047;
494
- color: white;
502
+ .DialogModal {
503
+ overflow: hidden;
495
504
  }
496
505
 
497
- .Button.green:hover {
498
- background-color: #3b8e3f;
506
+ .DialogModal .content {
507
+ top: 20vh;
499
508
  }
500
509
 
501
- .Button.blue {
502
- background-color: #039be5;
503
- color: white;
510
+ .Dialog {
511
+ background-color: white;
512
+ min-width: 460px;
513
+ max-width: 40vw;
514
+ padding: 15px;
504
515
  }
505
516
 
506
- .Button.blue:hover {
507
- background-color: #038acc;
517
+ .Dialog .title {
518
+ margin-bottom: 15px;
519
+ padding: 20px 50px 0px 30px;
520
+ font-size: 1.25rem;
521
+ line-height: 2rem;
522
+ font-weight: 400;
523
+ letter-spacing: 0.0125em;
508
524
  }
509
525
 
510
- .Button.red {
511
- background-color: #e53935;
512
- color: white;
526
+ .Dialog .description {
527
+ color: rgba(0, 0, 0, 0.54);
528
+ font-size: 1rem;
529
+ line-height: 1.5rem;
530
+ font-weight: 400;
531
+ letter-spacing: 0.03125em;
532
+ margin-top: 20px;
533
+ padding: 0 24px 24px;
513
534
  }
514
535
 
515
- .Button.red:hover {
516
- background-color: #e2231e;
536
+ .Dialog > div.row {
537
+ margin-bottom: 15px;
517
538
  }
518
539
 
519
- .Button.black {
520
- background-color: #1e252d;
521
- color: white;
540
+ .Dialog > div.row:last-child {
541
+ margin-bottom: 0;
522
542
  }
523
543
 
524
- .Button.black:hover {
525
- background-color: #14181e;
544
+ .CircleProgress {
545
+ width: 48px;
546
+ height: 48px;
526
547
  }
527
548
 
528
- .Button.gray {
529
- background: #D9D9D9;
530
- color: #999999;
549
+ .CircleProgress .line {
550
+ stroke-width: 2px;
551
+ stroke: black;
552
+ stroke-linecap: square;
553
+ fill: none;
554
+ transition: stroke-dashoffset 0.2s ease;
531
555
  }
532
556
 
533
- .Button.gray:hover {
534
- background-color: #cccccc;
557
+ .DropFileInput {
558
+ flex-grow: 1;
535
559
  }
536
560
 
537
- .Button.small {
538
- padding: 0px 8px;
539
- min-height: 16px;
540
- min-width: 16px;
561
+ .DropFileInput .Dropzone {
562
+ border: 1px dashed #808080;
563
+ padding: 12px;
564
+ display: flex;
565
+ flex-flow: row nowrap;
566
+ justify-content: center;
567
+ align-items: center;
568
+ color: gray;
569
+ cursor: pointer;
570
+ border-radius: 3px;
571
+ font-weight: normal;
572
+ line-height: 22px;
573
+ font-size: 14px;
574
+ color: #7E7E7E;
575
+ max-width: 100%;
576
+ word-break: break-all;
577
+ word-break: break-word;
541
578
  }
542
579
 
543
- .Button > .material-icons {
580
+ .DropFileInput .Dropzone .icon.withText {
544
581
  margin-right: 10px;
545
582
  }
546
583
 
547
- .Button.round {
548
- padding: 0px;
549
- min-width: 36px;
550
- border-radius: 50%;
551
- }
552
-
553
- .Button.round > .material-icons {
554
- margin: 0px;
555
- }
556
-
557
- .Button .ripple {
558
- position: absolute;
559
- background: rgba(0, 0, 0, 0.1);
560
- border-radius: 100%;
561
- transform: scale(0);
562
- pointer-events: none;
563
- transition: opacity 0.2s ease-out;
584
+ .Checkbox {
585
+ position: relative;
586
+ white-space: pre;
564
587
  }
565
588
 
566
- .Button .ripple.show {
567
- animation: ripple 0.35s ease-out;
589
+ .Checkbox *, .Checkbox *:before, .Checkbox *:after {
590
+ box-sizing: border-box;
568
591
  }
569
592
 
570
- .Button:active .ripple.showed {
571
- opacity: 1;
593
+ .Checkbox label {
594
+ font-family: Roboto, sans-serif;
595
+ font-size: 14px;
596
+ color: #1e252d;
597
+ cursor: pointer;
572
598
  }
573
599
 
574
- .Button:focus .ripple.focused {
575
- opacity: 1;
576
- transition: opacity 0.2s ease-out, transform 0.2s ease-out;
577
- transform: scale(1);
578
- animation: resize 1.25s ease-out infinite;
579
- animation-delay: 0.2s;
580
- animation-direction: alternate;
600
+ .Checkbox label:before, .Checkbox label:after {
601
+ content: "";
602
+ position: absolute;
603
+ left: 0;
604
+ top: 0;
581
605
  }
582
606
 
583
- .Button .ripple.showed {
584
- transform: scale(2);
585
- opacity: 0;
607
+ .Checkbox label:before {
608
+ width: 20px;
609
+ height: 20px;
610
+ background: #fff;
611
+ border: 2px solid #252525;
612
+ border-radius: 2px;
613
+ cursor: pointer;
614
+ transition: background 0.3s;
586
615
  }
587
616
 
588
- @keyframes ripple {
589
- to {
590
- transform: scale(2);
591
- }
592
- }
593
- @keyframes resize {
594
- to {
595
- transform: scale(0.9);
596
- }
597
- }
598
- .Button.raised {
599
- transition: color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
617
+ .Checkbox input[type=checkbox] {
618
+ outline: 0;
619
+ margin-right: 10px;
620
+ visibility: hidden;
600
621
  }
601
622
 
602
- .Button.raised:hover {
603
- box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.25);
623
+ .Checkbox input[type=checkbox]:checked + label:before {
624
+ background: #4AC263;
625
+ border: none;
604
626
  }
605
627
 
606
- .Button.raised:active {
607
- box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.35);
628
+ .Checkbox input[type=checkbox]:checked + label:after {
629
+ transform: rotate(-45deg);
630
+ top: 6px;
631
+ left: 4px;
632
+ width: 12px;
633
+ height: 6px;
634
+ border: 2px solid #fff;
635
+ border-top-style: none;
636
+ border-right-style: none;
608
637
  }
609
638
 
610
- .Button.disabled {
611
- box-shadow: none;
612
- background: #D9D9D9;
613
- color: #999999;
639
+ .Checkbox input[type=checkbox]:disabled + label {
640
+ color: gray;
614
641
  }
615
642
 
616
- .Button.disabled:hover {
617
- background-color: #cccccc;
643
+ .Checkbox input[type=checkbox]:disabled + label:before {
644
+ border-color: rgba(0, 0, 0, 0.26);
618
645
  }
619
646
 
620
- .Button::-moz-focus-inner {
621
- border: 0;
647
+ .Checkbox input[type=checkbox]:disabled:checked + label:before {
648
+ background: rgba(0, 0, 0, 0.26);
622
649
  }
623
650
 
624
651
  .Dropzone {
@@ -681,97 +708,123 @@
681
708
  z-index: 1;
682
709
  }
683
710
 
684
- .FormUploadProgress {
711
+ .Button.FloatingActionButton {
685
712
  position: absolute;
686
- left: 0;
687
- right: 0;
688
- top: 0;
689
- bottom: 0;
690
- background-color: rgba(255, 255, 255, 0.6);
691
- z-index: 2;
713
+ right: 16px;
714
+ bottom: 16px;
715
+ width: 56px;
716
+ height: 56px;
717
+ padding: 16px;
718
+ transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
692
719
  }
693
720
 
694
- .FormUploadProgress.animated.mounting, .FormUploadProgress.animated.mounted {
695
- transition-delay: 500ms;
721
+ .Button.FloatingActionButton.raised {
722
+ transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
696
723
  }
697
724
 
698
- .FormUploadProgress .wrapper {
699
- position: sticky;
700
- top: 40%;
701
- margin-top: 40%;
702
- margin-left: 50%;
703
- transform: translateX(-50%);
725
+ .Button.FloatingActionButton.mini {
726
+ width: 40px;
727
+ height: 40px;
728
+ padding: 8px;
729
+ }
730
+
731
+ .Button.FloatingActionButton.hidden {
732
+ bottom: -100px;
733
+ }
734
+
735
+ .Scrollable {
736
+ max-height: 250px;
737
+ max-width: 250px;
738
+ padding-right: 5px;
739
+ position: relative;
704
740
  display: flex;
705
741
  flex-flow: column;
706
- justify-content: center;
707
- align-items: center;
742
+ align-items: stretch;
743
+ overflow: hidden;
708
744
  }
709
745
 
710
- .FormUploadProgress .wrapper .CircleProgress, .FormUploadProgress .wrapper .SpinningProgress {
711
- position: absolute;
712
- width: 107px;
713
- height: 107px;
714
- top: 0;
715
- left: 0;
746
+ .Scrollable:hover > .scrollbar.auto {
747
+ transition-delay: 0s;
748
+ opacity: 1;
716
749
  }
717
750
 
718
- .FormUploadProgress .wrapper .CircleProgress .line, .FormUploadProgress .wrapper .SpinningProgress .line {
719
- stroke: #2196F3;
751
+ .Scrollable .viewport {
752
+ overflow-y: scroll;
753
+ overflow-x: scroll;
754
+ max-height: 100%;
755
+ scroll-behavior: smooth;
756
+ scrollbar-width: none;
720
757
  }
721
758
 
722
- .FormUploadProgress .wrapper > .progress {
723
- width: 107px;
724
- height: 107px;
725
- min-height: 107px;
726
- display: flex;
727
- justify-content: center;
728
- align-items: center;
729
- box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
730
- border-radius: 50%;
731
- background: white;
732
- position: relative;
759
+ .Scrollable .viewport::-webkit-scrollbar {
760
+ display: none;
733
761
  }
734
762
 
735
- .FormUploadProgress .wrapper > .progress > .value {
736
- display: inline-block;
737
- margin-top: 5px;
738
- font-weight: bold;
739
- line-height: 16px;
740
- font-size: 13px;
741
- text-align: center;
742
- color: #818181;
763
+ .Scrollable.without-scroll-horizontal {
764
+ max-width: unset;
743
765
  }
744
766
 
745
- .FormUploadProgress .wrapper .cancel {
746
- min-width: 107px;
747
- margin-top: 20px;
748
- background-color: white;
749
- color: #F96B5C;
750
- box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
767
+ .Scrollable.without-scroll {
768
+ padding-right: 0;
769
+ max-height: unset;
751
770
  }
752
771
 
753
- .Button.FloatingActionButton {
772
+ .Scrollable.without-scroll > .viewport {
773
+ padding-right: 0;
774
+ margin-right: 0;
775
+ }
776
+
777
+ .Scrollable.without-scroll > .scrollbar {
778
+ visibility: hidden;
779
+ }
780
+
781
+ .Scrollable .scrollbar {
754
782
  position: absolute;
755
- right: 16px;
756
- bottom: 16px;
757
- width: 56px;
758
- height: 56px;
759
- padding: 16px;
760
- transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
783
+ right: 0px;
784
+ top: 0px;
785
+ width: 5px;
786
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
787
+ transition-delay: 0.5s;
788
+ z-index: 1;
789
+ }
790
+
791
+ .Scrollable .scrollbar.auto, .Scrollable .scrollbar.hidden {
792
+ opacity: 0;
793
+ }
794
+
795
+ .Scrollable .scrollbar .thumb {
796
+ background-color: rgba(0, 0, 0, 0.3);
797
+ width: 5px;
798
+ position: absolute;
799
+ right: 0px;
800
+ top: 0px;
801
+ user-select: none;
802
+ will-change: top;
803
+ border-radius: 2px;
761
804
  }
762
805
 
763
- .Button.FloatingActionButton.raised {
764
- transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
806
+ .Scrollable .scrollbar .thumb:hover {
807
+ background-color: rgba(0, 0, 0, 0.5);
765
808
  }
766
809
 
767
- .Button.FloatingActionButton.mini {
768
- width: 40px;
769
- height: 40px;
770
- padding: 8px;
810
+ .Scrollable .scrollbar .thumb:active {
811
+ background-color: rgba(0, 0, 0, 0.7);
771
812
  }
772
813
 
773
- .Button.FloatingActionButton.hidden {
774
- bottom: -100px;
814
+ .Scrollable .scrollbar.horizontal {
815
+ left: 0px;
816
+ right: 0px;
817
+ height: 5px;
818
+ bottom: 0;
819
+ width: unset;
820
+ top: unset;
821
+ }
822
+
823
+ .Scrollable .scrollbar.horizontal .thumb {
824
+ height: 5px;
825
+ left: 0px;
826
+ bottom: 0px;
827
+ will-change: left;
775
828
  }
776
829
 
777
830
  .ImageGallery {
@@ -1009,280 +1062,165 @@
1009
1062
  font-size: 24px;
1010
1063
  }
1011
1064
 
1012
- .DropFileInput {
1013
- flex-grow: 1;
1014
- }
1015
-
1016
- .DropFileInput .Dropzone {
1017
- border: 1px dashed #808080;
1018
- padding: 12px;
1019
- display: flex;
1020
- flex-flow: row nowrap;
1021
- justify-content: center;
1022
- align-items: center;
1023
- color: gray;
1024
- cursor: pointer;
1025
- border-radius: 3px;
1026
- font-weight: normal;
1027
- line-height: 22px;
1028
- font-size: 14px;
1029
- color: #7E7E7E;
1030
- max-width: 100%;
1031
- word-break: break-all;
1032
- word-break: break-word;
1033
- }
1034
-
1035
- .DropFileInput .Dropzone .icon.withText {
1036
- margin-right: 10px;
1037
- }
1038
-
1039
- .Scrollable {
1040
- max-height: 250px;
1041
- max-width: 250px;
1042
- padding-right: 5px;
1043
- position: relative;
1044
- display: flex;
1045
- flex-flow: column;
1046
- align-items: stretch;
1047
- overflow: hidden;
1048
- }
1049
-
1050
- .Scrollable:hover > .scrollbar.auto {
1051
- transition-delay: 0s;
1052
- opacity: 1;
1053
- }
1054
-
1055
- .Scrollable .viewport {
1056
- overflow-y: scroll;
1057
- overflow-x: scroll;
1058
- max-height: 100%;
1059
- scroll-behavior: smooth;
1060
- scrollbar-width: none;
1061
- }
1062
-
1063
- .Scrollable .viewport::-webkit-scrollbar {
1064
- display: none;
1065
- }
1066
-
1067
- .Scrollable.without-scroll-horizontal {
1068
- max-width: unset;
1069
- }
1070
-
1071
- .Scrollable.without-scroll {
1072
- padding-right: 0;
1073
- max-height: unset;
1074
- }
1075
-
1076
- .Scrollable.without-scroll > .viewport {
1077
- padding-right: 0;
1078
- margin-right: 0;
1079
- }
1080
-
1081
- .Scrollable.without-scroll > .scrollbar {
1082
- visibility: hidden;
1083
- }
1084
-
1085
- .Scrollable .scrollbar {
1065
+ .ModalMenu {
1086
1066
  position: absolute;
1087
- right: 0px;
1088
- top: 0px;
1089
- width: 5px;
1090
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1091
- transition-delay: 0.5s;
1092
- z-index: 1;
1067
+ top: 10px;
1068
+ right: 50px;
1093
1069
  }
1094
1070
 
1095
- .Scrollable .scrollbar.auto, .Scrollable .scrollbar.hidden {
1096
- opacity: 0;
1071
+ .ModalMenu .material-icons {
1072
+ color: #818181;
1097
1073
  }
1098
1074
 
1099
- .Scrollable .scrollbar .thumb {
1100
- background-color: rgba(0, 0, 0, 0.3);
1101
- width: 5px;
1075
+ .ModalMenu .Button.animated {
1102
1076
  position: absolute;
1103
- right: 0px;
1104
- top: 0px;
1105
- user-select: none;
1106
- will-change: top;
1107
- border-radius: 2px;
1077
+ transition: opacity 150ms ease-in, right 200ms ease-in;
1078
+ opacity: 0;
1079
+ right: 0;
1080
+ top: 0;
1108
1081
  }
1109
1082
 
1110
- .Scrollable .scrollbar .thumb:hover {
1111
- background-color: rgba(0, 0, 0, 0.5);
1083
+ .ModalMenu .Button.animated.mounting, .ModalMenu .Button.animated.mounted {
1084
+ opacity: 1;
1112
1085
  }
1113
1086
 
1114
- .Scrollable .scrollbar .thumb:active {
1115
- background-color: rgba(0, 0, 0, 0.7);
1087
+ .ModalMenu .Button.animated.unmounting {
1088
+ transition: opacity 100ms ease-out, right 200ms ease-out;
1116
1089
  }
1117
1090
 
1118
- .Scrollable .scrollbar.horizontal {
1119
- left: 0px;
1120
- right: 0px;
1121
- height: 5px;
1122
- bottom: 0;
1123
- width: unset;
1124
- top: unset;
1091
+ .ModalMenu .Button.active {
1092
+ background: #EBEBEB;
1125
1093
  }
1126
1094
 
1127
- .Scrollable .scrollbar.horizontal .thumb {
1128
- height: 5px;
1129
- left: 0px;
1130
- bottom: 0px;
1131
- will-change: left;
1095
+ .ModalMenu .separator {
1096
+ height: 24px;
1097
+ width: 1px;
1098
+ background-color: #D9D9D9;
1099
+ margin-left: 4px;
1132
1100
  }
1133
1101
 
1134
- .Modal {
1135
- display: block;
1136
- position: fixed;
1137
- top: 0;
1102
+ .FormUploadProgress {
1103
+ position: absolute;
1138
1104
  left: 0;
1139
1105
  right: 0;
1140
- bottom: 100%;
1141
- overflow-y: scroll;
1142
- transition: bottom 0ms linear;
1143
- transition-delay: 0.2s;
1144
- }
1145
-
1146
- .Modal.show {
1147
- transition-delay: 0s;
1148
- bottom: 0;
1149
- }
1150
-
1151
- .Modal > .overlay {
1152
- position: fixed;
1153
1106
  top: 0;
1154
- bottom: 100%;
1155
- left: 0;
1156
- right: 0;
1157
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1158
- opacity: 0;
1159
- background-color: black;
1160
- pointer-events: none;
1161
- }
1162
-
1163
- .Modal > .overlay.show {
1164
- opacity: 0.5;
1165
1107
  bottom: 0;
1108
+ background-color: rgba(255, 255, 255, 0.6);
1109
+ z-index: 2;
1166
1110
  }
1167
1111
 
1168
- .Modal > .content {
1169
- left: 50%;
1170
- top: 10vh;
1171
- margin-bottom: 10vh;
1172
- font-size: 16px;
1173
- padding: 0;
1174
- opacity: 0;
1175
- transition: opacity 0.25s ease, transform 0.25s ease;
1176
- transform: scaleY(0) translateY(-200px) translateX(-50%);
1177
- transform-origin: top;
1178
- position: absolute;
1179
- border-radius: 2px;
1180
- box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
1181
- }
1182
-
1183
- .Modal > .content.show {
1184
- opacity: 1;
1185
- transform: scaleY(1) translateY(0px) translateX(-50%);
1186
- }
1187
-
1188
- .Modal > .content > .Scrollable {
1189
- overflow: visible;
1190
- max-height: 80vh;
1191
- }
1192
-
1193
- .Modal > .content > .Scrollable > .viewport {
1194
- min-width: 10px;
1195
- min-height: 10px;
1196
- }
1197
-
1198
- .Modal > .content > .Button.close {
1199
- top: 10px;
1200
- right: 10px;
1201
- position: absolute;
1202
- }
1203
-
1204
- .ModalMenu {
1205
- position: absolute;
1206
- top: 10px;
1207
- right: 50px;
1112
+ .FormUploadProgress.animated.mounting, .FormUploadProgress.animated.mounted {
1113
+ transition-delay: 500ms;
1208
1114
  }
1209
1115
 
1210
- .ModalMenu .material-icons {
1211
- color: #818181;
1116
+ .FormUploadProgress .wrapper {
1117
+ position: sticky;
1118
+ top: 40%;
1119
+ margin-top: 40%;
1120
+ margin-left: 50%;
1121
+ transform: translateX(-50%);
1122
+ display: flex;
1123
+ flex-flow: column;
1124
+ justify-content: center;
1125
+ align-items: center;
1212
1126
  }
1213
1127
 
1214
- .ModalMenu .Button.animated {
1128
+ .FormUploadProgress .wrapper .CircleProgress, .FormUploadProgress .wrapper .SpinningProgress {
1215
1129
  position: absolute;
1216
- transition: opacity 150ms ease-in, right 200ms ease-in;
1217
- opacity: 0;
1218
- right: 0;
1130
+ width: 107px;
1131
+ height: 107px;
1219
1132
  top: 0;
1133
+ left: 0;
1220
1134
  }
1221
1135
 
1222
- .ModalMenu .Button.animated.mounting, .ModalMenu .Button.animated.mounted {
1223
- opacity: 1;
1136
+ .FormUploadProgress .wrapper .CircleProgress .line, .FormUploadProgress .wrapper .SpinningProgress .line {
1137
+ stroke: #2196F3;
1224
1138
  }
1225
1139
 
1226
- .ModalMenu .Button.animated.unmounting {
1227
- transition: opacity 100ms ease-out, right 200ms ease-out;
1140
+ .FormUploadProgress .wrapper > .progress {
1141
+ width: 107px;
1142
+ height: 107px;
1143
+ min-height: 107px;
1144
+ display: flex;
1145
+ justify-content: center;
1146
+ align-items: center;
1147
+ box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
1148
+ border-radius: 50%;
1149
+ background: white;
1150
+ position: relative;
1228
1151
  }
1229
1152
 
1230
- .ModalMenu .Button.active {
1231
- background: #EBEBEB;
1153
+ .FormUploadProgress .wrapper > .progress > .value {
1154
+ display: inline-block;
1155
+ margin-top: 5px;
1156
+ font-weight: bold;
1157
+ line-height: 16px;
1158
+ font-size: 13px;
1159
+ text-align: center;
1160
+ color: #818181;
1232
1161
  }
1233
1162
 
1234
- .ModalMenu .separator {
1235
- height: 24px;
1236
- width: 1px;
1237
- background-color: #D9D9D9;
1238
- margin-left: 4px;
1163
+ .FormUploadProgress .wrapper .cancel {
1164
+ min-width: 107px;
1165
+ margin-top: 20px;
1166
+ background-color: white;
1167
+ color: #F96B5C;
1168
+ box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
1239
1169
  }
1240
1170
 
1241
- .Snackbar {
1242
- transform: translateX(-50%);
1243
- overflow: hidden;
1244
- background-color: #323232;
1245
- padding: 14px 24px 14px 24px;
1246
- color: #fff;
1247
- min-width: 288px;
1248
- max-width: 568px;
1249
- position: fixed;
1250
- bottom: -50px;
1251
- left: 50%;
1252
- display: flex;
1253
- flex-wrap: nowrap;
1254
- align-items: center;
1255
- opacity: 0;
1256
- transition: bottom 0.25s ease, opacity 0.2s ease;
1257
- border-radius: 4px;
1258
- box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
1171
+ .SpinningProgress {
1172
+ width: 48px;
1173
+ height: 48px;
1174
+ position: relative;
1175
+ margin: 0 auto;
1259
1176
  }
1260
1177
 
1261
- .Snackbar.shown {
1262
- bottom: 15px;
1263
- opacity: 1;
1178
+ .SpinningProgress:before {
1179
+ content: "";
1180
+ display: block;
1181
+ padding-top: 100%;
1264
1182
  }
1265
1183
 
1266
- .Snackbar .message {
1267
- overflow: hidden;
1268
- line-height: 1.2em;
1269
- min-height: 1.2em;
1270
- max-height: 2.4em;
1271
- flex: 1;
1184
+ .SpinningProgress .circular {
1185
+ animation: rotate 2s linear infinite;
1186
+ height: 100%;
1187
+ transform-origin: center center;
1188
+ width: 100%;
1189
+ position: absolute;
1190
+ top: 0;
1191
+ bottom: 0;
1192
+ left: 0;
1193
+ right: 0;
1194
+ margin: auto;
1272
1195
  }
1273
1196
 
1274
- .Snackbar .action {
1275
- text-transform: uppercase;
1276
- font-weight: bold;
1277
- margin-left: 48px;
1278
- color: #bf3727;
1197
+ .SpinningProgress .line {
1198
+ stroke: black;
1199
+ stroke-width: 2px;
1200
+ stroke-dasharray: 1, 96;
1201
+ stroke-dashoffset: 0;
1202
+ animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
1279
1203
  }
1280
1204
 
1281
- .Snackbar .action a {
1282
- text-decoration: none;
1283
- color: #bf3727;
1205
+ @keyframes rotate {
1206
+ 100% {
1207
+ transform: rotate(360deg);
1208
+ }
1209
+ }
1210
+ @keyframes dash {
1211
+ 0% {
1212
+ stroke-dasharray: 1, 96;
1213
+ stroke-dashoffset: 0;
1214
+ }
1215
+ 50% {
1216
+ stroke-dasharray: 43, 96;
1217
+ stroke-dashoffset: -17px;
1218
+ }
1219
+ 100% {
1220
+ stroke-dasharray: 43, 96;
1221
+ stroke-dashoffset: -53px;
1222
+ }
1284
1223
  }
1285
-
1286
1224
  .Switch {
1287
1225
  display: inline-flex;
1288
1226
  padding-top: 5px;
@@ -1365,6 +1303,51 @@
1365
1303
  display: none;
1366
1304
  }
1367
1305
 
1306
+ .Snackbar {
1307
+ transform: translateX(-50%);
1308
+ overflow: hidden;
1309
+ background-color: #323232;
1310
+ padding: 14px 24px 14px 24px;
1311
+ color: #fff;
1312
+ min-width: 288px;
1313
+ max-width: 568px;
1314
+ position: fixed;
1315
+ bottom: -50px;
1316
+ left: 50%;
1317
+ display: flex;
1318
+ flex-wrap: nowrap;
1319
+ align-items: center;
1320
+ opacity: 0;
1321
+ transition: bottom 0.25s ease, opacity 0.2s ease;
1322
+ border-radius: 4px;
1323
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
1324
+ }
1325
+
1326
+ .Snackbar.shown {
1327
+ bottom: 15px;
1328
+ opacity: 1;
1329
+ }
1330
+
1331
+ .Snackbar .message {
1332
+ overflow: hidden;
1333
+ line-height: 1.2em;
1334
+ min-height: 1.2em;
1335
+ max-height: 2.4em;
1336
+ flex: 1;
1337
+ }
1338
+
1339
+ .Snackbar .action {
1340
+ text-transform: uppercase;
1341
+ font-weight: bold;
1342
+ margin-left: 48px;
1343
+ color: #bf3727;
1344
+ }
1345
+
1346
+ .Snackbar .action a {
1347
+ text-decoration: none;
1348
+ color: #bf3727;
1349
+ }
1350
+
1368
1351
  .TextField {
1369
1352
  position: relative;
1370
1353
  width: 100%;
@@ -1508,59 +1491,76 @@
1508
1491
  animation-name: shake;
1509
1492
  }
1510
1493
 
1511
- .SpinningProgress {
1512
- width: 48px;
1513
- height: 48px;
1514
- position: relative;
1515
- margin: 0 auto;
1494
+ .Modal {
1495
+ display: block;
1496
+ position: fixed;
1497
+ top: 0;
1498
+ left: 0;
1499
+ right: 0;
1500
+ bottom: 100%;
1501
+ overflow-y: scroll;
1502
+ transition: bottom 0ms linear;
1503
+ transition-delay: 0.2s;
1516
1504
  }
1517
1505
 
1518
- .SpinningProgress:before {
1519
- content: "";
1520
- display: block;
1521
- padding-top: 100%;
1506
+ .Modal.show {
1507
+ transition-delay: 0s;
1508
+ bottom: 0;
1522
1509
  }
1523
1510
 
1524
- .SpinningProgress .circular {
1525
- animation: rotate 2s linear infinite;
1526
- height: 100%;
1527
- transform-origin: center center;
1528
- width: 100%;
1529
- position: absolute;
1511
+ .Modal > .overlay {
1512
+ position: fixed;
1530
1513
  top: 0;
1531
- bottom: 0;
1514
+ bottom: 100%;
1532
1515
  left: 0;
1533
1516
  right: 0;
1534
- margin: auto;
1517
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1518
+ opacity: 0;
1519
+ background-color: black;
1520
+ pointer-events: none;
1535
1521
  }
1536
1522
 
1537
- .SpinningProgress .line {
1538
- stroke: black;
1539
- stroke-width: 2px;
1540
- stroke-dasharray: 1, 96;
1541
- stroke-dashoffset: 0;
1542
- animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
1523
+ .Modal > .overlay.show {
1524
+ opacity: 0.5;
1525
+ bottom: 0;
1543
1526
  }
1544
1527
 
1545
- @keyframes rotate {
1546
- 100% {
1547
- transform: rotate(360deg);
1548
- }
1528
+ .Modal > .content {
1529
+ left: 50%;
1530
+ top: 10vh;
1531
+ margin-bottom: 10vh;
1532
+ font-size: 16px;
1533
+ padding: 0;
1534
+ opacity: 0;
1535
+ transition: opacity 0.25s ease, transform 0.25s ease;
1536
+ transform: scaleY(0) translateY(-200px) translateX(-50%);
1537
+ transform-origin: top;
1538
+ position: absolute;
1539
+ border-radius: 2px;
1540
+ box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
1549
1541
  }
1550
- @keyframes dash {
1551
- 0% {
1552
- stroke-dasharray: 1, 96;
1553
- stroke-dashoffset: 0;
1554
- }
1555
- 50% {
1556
- stroke-dasharray: 43, 96;
1557
- stroke-dashoffset: -17px;
1558
- }
1559
- 100% {
1560
- stroke-dasharray: 43, 96;
1561
- stroke-dashoffset: -53px;
1562
- }
1542
+
1543
+ .Modal > .content.show {
1544
+ opacity: 1;
1545
+ transform: scaleY(1) translateY(0px) translateX(-50%);
1546
+ }
1547
+
1548
+ .Modal > .content > .Scrollable {
1549
+ overflow: visible;
1550
+ max-height: 80vh;
1551
+ }
1552
+
1553
+ .Modal > .content > .Scrollable > .viewport {
1554
+ min-width: 10px;
1555
+ min-height: 10px;
1556
+ }
1557
+
1558
+ .Modal > .content > .Button.close {
1559
+ top: 10px;
1560
+ right: 10px;
1561
+ position: absolute;
1563
1562
  }
1563
+
1564
1564
  .DNDContainer .DroppableList .Draggable {
1565
1565
  transform: unset;
1566
1566
  transition: unset;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-ui-basics",
3
- "version": "0.0.164",
3
+ "version": "0.0.165",
4
4
  "description": "",
5
5
  "module": "index.js",
6
6
  "_main": "index.cjs.js",
@@ -19,6 +19,14 @@ var fireEvent = function fireEvent(name) {
19
19
  var pushLocation = function pushLocation(path) {
20
20
  return path !== WINDOW.location.pathname && history[events[0]](null, null, path);
21
21
  };
22
+ var replaceLocation = function replaceLocation(path) {
23
+ return history[events[1]](null, null, path);
24
+ };
25
+ if (process.env.NODE_ENV !== 'production') {
26
+ window['history-tools'] = {
27
+ replaceLocation: replaceLocation
28
+ };
29
+ }
22
30
 
23
- export { pushLocation };
31
+ export { pushLocation, replaceLocation };
24
32
  //# sourceMappingURL=HistoryTools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryTools.js","sources":["../../../../src/react-ui-basics/router/HistoryTools.js"],"sourcesContent":["import {DOCUMENT, WINDOW} from \"../Tools\";\n\nconst history = WINDOW.history;\n\nconst events = ['pushState', 'replaceState'];\nevents.forEach(e => {\n var original = history[e];\n history[e] = function () {\n original.apply(history, arguments);\n fireEvent(e);\n }\n});\n\nconst fireEvent = (name) => {\n const event = DOCUMENT.createEvent('Event');\n event.initEvent(name, true, true);\n WINDOW.dispatchEvent(event);\n};\n\nexport const pushLocation = (path) => path !== WINDOW.location.pathname && history[events[0]](null, null, path);\n\nexport const replaceLocation = (path) => history[events[1]](null, null, path);"],"names":["history","WINDOW","events","forEach","e","original","apply","arguments","fireEvent","name","event","DOCUMENT","createEvent","initEvent","dispatchEvent","pushLocation","path","location","pathname"],"mappings":";;AAEA,IAAMA,OAAO,GAAGC,MAAM,CAACD,OAAvB,CAAA;AAEA,IAAME,MAAM,GAAG,CAAC,WAAD,EAAc,cAAd,CAAf,CAAA;AACAA,MAAM,CAACC,OAAP,CAAe,UAAAC,CAAC,EAAI;AAChB,EAAA,IAAIC,QAAQ,GAAGL,OAAO,CAACI,CAAD,CAAtB,CAAA;AACAJ,EAAAA,OAAO,CAACI,CAAD,CAAP,GAAa,YAAY;AACrBC,IAAAA,QAAQ,CAACC,KAAT,CAAeN,OAAf,EAAwBO,SAAxB,CAAA,CAAA;AACAC,IAAAA,SAAS,CAACJ,CAAD,CAAT,CAAA;AACH,GAHD,CAAA;AAIH,CAND,CAAA,CAAA;AAQA,IAAMI,SAAS,GAAG,SAAZA,SAAY,CAACC,IAAD,EAAU;AACxB,EAAA,IAAMC,KAAK,GAAGC,QAAQ,CAACC,WAAT,CAAqB,OAArB,CAAd,CAAA;AACAF,EAAAA,KAAK,CAACG,SAAN,CAAgBJ,IAAhB,EAAsB,IAAtB,EAA4B,IAA5B,CAAA,CAAA;AACAR,EAAAA,MAAM,CAACa,aAAP,CAAqBJ,KAArB,CAAA,CAAA;AACH,CAJD,CAAA;IAMaK,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAA;AAAA,EAAUA,OAAAA,IAAI,KAAKf,MAAM,CAACgB,QAAP,CAAgBC,QAAzB,IAAqClB,OAAO,CAACE,MAAM,CAAC,CAAD,CAAP,CAAP,CAAmB,IAAnB,EAAyB,IAAzB,EAA+Bc,IAA/B,CAA/C,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"HistoryTools.js","sources":["../../../../src/react-ui-basics/router/HistoryTools.js"],"sourcesContent":["import {DOCUMENT, WINDOW} from \"../Tools\";\n\nconst history = WINDOW.history;\n\nconst events = ['pushState', 'replaceState'];\nevents.forEach(e => {\n var original = history[e];\n history[e] = function () {\n original.apply(history, arguments);\n fireEvent(e);\n }\n});\n\nconst fireEvent = (name) => {\n const event = DOCUMENT.createEvent('Event');\n event.initEvent(name, true, true);\n WINDOW.dispatchEvent(event);\n};\n\nexport const pushLocation = (path) => path !== WINDOW.location.pathname && history[events[0]](null, null, path);\n\nexport const replaceLocation = (path) => history[events[1]](null, null, path);\n\nif (window['isNotProductionEnvironment']) {\n // will be removed in production build\n // needed only to prevent bundler to remove 'unused' functions\n window['history-tools'] = {\n replaceLocation\n }\n}"],"names":["history","WINDOW","events","forEach","e","original","apply","arguments","fireEvent","name","event","DOCUMENT","createEvent","initEvent","dispatchEvent","pushLocation","path","location","pathname","replaceLocation","window"],"mappings":";;AAEA,IAAMA,OAAO,GAAGC,MAAM,CAACD,OAAvB,CAAA;AAEA,IAAME,MAAM,GAAG,CAAC,WAAD,EAAc,cAAd,CAAf,CAAA;AACAA,MAAM,CAACC,OAAP,CAAe,UAAAC,CAAC,EAAI;AAChB,EAAA,IAAIC,QAAQ,GAAGL,OAAO,CAACI,CAAD,CAAtB,CAAA;AACAJ,EAAAA,OAAO,CAACI,CAAD,CAAP,GAAa,YAAY;AACrBC,IAAAA,QAAQ,CAACC,KAAT,CAAeN,OAAf,EAAwBO,SAAxB,CAAA,CAAA;AACAC,IAAAA,SAAS,CAACJ,CAAD,CAAT,CAAA;AACH,GAHD,CAAA;AAIH,CAND,CAAA,CAAA;AAQA,IAAMI,SAAS,GAAG,SAAZA,SAAY,CAACC,IAAD,EAAU;AACxB,EAAA,IAAMC,KAAK,GAAGC,QAAQ,CAACC,WAAT,CAAqB,OAArB,CAAd,CAAA;AACAF,EAAAA,KAAK,CAACG,SAAN,CAAgBJ,IAAhB,EAAsB,IAAtB,EAA4B,IAA5B,CAAA,CAAA;AACAR,EAAAA,MAAM,CAACa,aAAP,CAAqBJ,KAArB,CAAA,CAAA;AACH,CAJD,CAAA;IAMaK,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAA;AAAA,EAAUA,OAAAA,IAAI,KAAKf,MAAM,CAACgB,QAAP,CAAgBC,QAAzB,IAAqClB,OAAO,CAACE,MAAM,CAAC,CAAD,CAAP,CAAP,CAAmB,IAAnB,EAAyB,IAAzB,EAA+Bc,IAA/B,CAA/C,CAAA;AAAA,EAArB;IAEMG,eAAe,GAAG,SAAlBA,eAAkB,CAACH,IAAD,EAAA;AAAA,EAAA,OAAUhB,OAAO,CAACE,MAAM,CAAC,CAAD,CAAP,CAAP,CAAmB,IAAnB,EAAyB,IAAzB,EAA+Bc,IAA/B,CAAV,CAAA;AAAA,EAAxB;AAEP,IAAII,MAAM,CAAC,4BAAD,CAAV,EAA0C;AAGtCA,EAAAA,MAAM,CAAC,eAAD,CAAN,GAA0B;AACtBD,IAAAA,eAAe,EAAfA,eAAAA;AADsB,GAA1B,CAAA;AAGH;;;;"}