nanoplot 0.0.92 → 0.0.94
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/dist/index.css +12 -165
- package/dist/src/components/Bars/components/HorizontalBars.js +1 -2
- package/dist/src/components/Bars/components/VerticalBars.js +1 -4
- package/dist/src/components/BoxShadow/BoxShadow.d.ts +5 -0
- package/dist/src/components/BoxShadow/BoxShadow.js +240 -0
- package/dist/src/components/Heatmap/Heatmap.js +1 -2
- package/dist/src/components/Lines/Lines.d.ts +3 -1
- package/dist/src/components/Lines/Lines.js +5 -0
- package/dist/src/components/Lines/components/Line.d.ts +8 -5
- package/dist/src/components/Lines/components/Line.js +19 -3
- package/dist/src/components/Lines/components/LinesTooltip.js +7 -7
- package/dist/src/components/Overlay/Overlay.d.ts +17 -3
- package/dist/src/components/Overlay/Overlay.js +21 -8
- package/dist/src/components/Overlay/OverlayCircle.d.ts +8 -0
- package/dist/src/components/Overlay/OverlayCircle.js +18 -0
- package/dist/src/components/Overlay/OverlayCross.d.ts +8 -0
- package/dist/src/components/Overlay/OverlayCross.js +18 -0
- package/dist/src/components/Overlay/OverlayDiamond.d.ts +8 -0
- package/dist/src/components/Overlay/OverlayDiamond.js +18 -0
- package/dist/src/components/Overlay/OverlayTriangle.d.ts +8 -0
- package/dist/src/components/Overlay/OverlayTriangle.js +18 -0
- package/dist/src/components/Pie/Pie.js +1 -1
- package/dist/src/components/Scatter/Scatter.d.ts +103 -9
- package/dist/src/components/Scatter/Scatter.js +12 -17
- package/dist/src/components/Scatter/components/ScatterLabels.d.ts +16 -1
- package/dist/src/components/Scatter/components/ScatterLabels.js +46 -18
- package/dist/src/components/Scatter/components/ScatterQuadrant.d.ts +3 -3
- package/dist/src/components/Scatter/components/ScatterQuadrant.js +2 -2
- package/dist/src/components/Scatter/components/ScatterTooltip.d.ts +3 -1
- package/dist/src/components/Scatter/components/ScatterTooltip.js +25 -12
- package/dist/src/components/Tooltip/Popup.js +45 -24
- package/dist/src/utils/coordinates/coordinates.js +10 -2
- package/dist/src/utils/domain/utils/temporal.js +6 -1
- package/dist/src/utils/gradient/gradient.d.ts +6 -2
- package/dist/src/utils/gradient/gradient.js +13 -6
- package/dist/src/utils/path/path.d.ts +0 -7
- package/dist/src/utils/path/path.js +0 -30
- package/dist/tsconfig.typings.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -32,10 +32,6 @@
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
.pseudo-bg-inherit::before, .pseudo-bg-inherit::after {
|
|
36
|
-
background: inherit;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
35
|
.pointer-events-none {
|
|
40
36
|
pointer-events: none;
|
|
41
37
|
}
|
|
@@ -100,10 +96,6 @@
|
|
|
100
96
|
z-index: -10;
|
|
101
97
|
}
|
|
102
98
|
|
|
103
|
-
.z-0 {
|
|
104
|
-
z-index: 0;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
99
|
.z-10 {
|
|
108
100
|
z-index: 10;
|
|
109
101
|
}
|
|
@@ -448,10 +440,6 @@
|
|
|
448
440
|
stroke-width: 5;
|
|
449
441
|
}
|
|
450
442
|
|
|
451
|
-
.p-\[12px\] {
|
|
452
|
-
padding: 12px;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
443
|
.px-2\.5 {
|
|
456
444
|
padding-left: 0.625rem;
|
|
457
445
|
padding-right: 0.625rem;
|
|
@@ -678,50 +666,10 @@
|
|
|
678
666
|
backface-visibility: hidden;
|
|
679
667
|
}
|
|
680
668
|
|
|
681
|
-
.\[background-position\:bottom\] {
|
|
682
|
-
background-position: bottom;
|
|
683
|
-
}
|
|
684
|
-
|
|
685
|
-
.\[background-position\:right\] {
|
|
686
|
-
background-position: right;
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
.\[background-size\:100\%_calc\(100\%\+var\(--h\)\)\] {
|
|
690
|
-
background-size: 100% calc(100% + var(--h));
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
.\[background-size\:calc\(100\%\+var\(--h\)\)_100\%\] {
|
|
694
|
-
background-size: calc(100% + var(--h)) 100%;
|
|
695
|
-
}
|
|
696
|
-
|
|
697
669
|
.\[background\:linear-gradient\(transparent\2c \#CFCFCF\)\] {
|
|
698
670
|
background: linear-gradient(transparent,#CFCFCF);
|
|
699
671
|
}
|
|
700
672
|
|
|
701
|
-
.\[background\:padding-box_linear-gradient\(black\)\2c border-box_rgb\(45\2c 45\2c 45\)\] {
|
|
702
|
-
background: padding-box linear-gradient(black),border-box rgb(45,45,45);
|
|
703
|
-
}
|
|
704
|
-
|
|
705
|
-
.\[border-radius\:min\(var\(--r\)\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_min\(var\(--r\)\2c 100\%-var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_var\(--r\)_var\(--r\)\/var\(--r\)\] {
|
|
706
|
-
border-radius: min(var(--r),var(--p) - var(--h) * tan(var(--a) / 2)) min(var(--r),100% - var(--p) - var(--h) * tan(var(--a) / 2)) var(--r) var(--r) / var(--r);
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
.\[border-radius\:var\(--r\)\/min\(var\(--r\)\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_var\(--r\)_var\(--r\)_min\(var\(--r\)\2c 100\%-var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)\] {
|
|
710
|
-
border-radius: var(--r)/min(var(--r),var(--p) - var(--h) * tan(var(--a) / 2)) var(--r) var(--r) min(var(--r),100% - var(--p) - var(--h) * tan(var(--a) / 2));
|
|
711
|
-
}
|
|
712
|
-
|
|
713
|
-
.\[border-radius\:var\(--r\)\/var\(--r\)_min\(var\(--r\)\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_min\(var\(--r\)\2c 100\%-var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_var\(--r\)\] {
|
|
714
|
-
border-radius: var(--r)/var(--r) min(var(--r),var(--p) - var(--h) * tan(var(--a) / 2)) min(var(--r),100% - var(--p) - var(--h) * tan(var(--a) / 2)) var(--r);
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
.\[border-radius\:var\(--r\)_var\(--r\)_min\(var\(--r\)\2c 100\%-var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_min\(var\(--r\)\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)\/var\(--r\)\] {
|
|
718
|
-
border-radius: var(--r) var(--r) min(var(--r),100% - var(--p) - var(--h) * tan(var(--a) / 2)) min(var(--r),var(--p) - var(--h) * tan(var(--a) / 2)) / var(--r);
|
|
719
|
-
}
|
|
720
|
-
|
|
721
|
-
.\[border\:var\(--b\)_solid_\#0000\] {
|
|
722
|
-
border: var(--b) solid #0000;
|
|
723
|
-
}
|
|
724
|
-
|
|
725
673
|
.\[container-type\:size\] {
|
|
726
674
|
container-type: size;
|
|
727
675
|
}
|
|
@@ -858,129 +806,28 @@
|
|
|
858
806
|
initial-value: 1px;
|
|
859
807
|
}
|
|
860
808
|
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
position: absolute;
|
|
864
|
-
}
|
|
865
|
-
|
|
866
|
-
.before\:z-\[-1\]::before {
|
|
867
|
-
content: var(--tw-content);
|
|
868
|
-
z-index: -1;
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
.before\:content-\[\'_\'\]::before {
|
|
872
|
-
--tw-content: ' ';
|
|
873
|
-
content: var(--tw-content);
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
.before\:\[background-size\:0_0\2c _100\%_100\%\]::before {
|
|
877
|
-
content: var(--tw-content);
|
|
878
|
-
background-size: 0 0, 100% 100%;
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
.before\:\[clip-path\:polygon\(calc\(100\%-var\(--h\)-var\(--b\)\)_min\(100\%\2c var\(--p\)\+var\(--h\)\*tan\(var\(--a\)\/2\)\)\2c calc\(100\%-var\(--h\)\)_min\(100\%\2c var\(--p\)\+var\(--h\)\*tan\(var\(--a\)\/2\)\)\2c 100\%_var\(--p\)\2c calc\(100\%-var\(--h\)\)_max\(0\%\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)\2c calc\(100\%-var\(--h\)-var\(--b\)\)_max\(0\%\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)\)\]::before {
|
|
882
|
-
content: var(--tw-content);
|
|
883
|
-
clip-path: polygon(calc(100% - var(--h) - var(--b)) min(100%,var(--p) + var(--h) * tan(var(--a) / 2)),calc(100% - var(--h)) min(100%,var(--p) + var(--h) * tan(var(--a) / 2)),100% var(--p),calc(100% - var(--h)) max(0%,var(--p) - var(--h) * tan(var(--a) / 2)),calc(100% - var(--h) - var(--b)) max(0%,var(--p) - var(--h) * tan(var(--a) / 2)));
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
.before\:\[clip-path\:polygon\(calc\(var\(--h\)\+var\(--b\)\)_min\(100\%\2c var\(--p\)\+var\(--h\)\*tan\(var\(--a\)\/2\)\)\2c var\(--h\)_min\(100\%\2c var\(--p\)\+var\(--h\)\*tan\(var\(--a\)\/2\)\)\2c 0_var\(--p\)\2c var\(--h\)_max\(0\%\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)\2c calc\(var\(--h\)\+var\(--b\)\)_max\(0\%\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)\)\]::before {
|
|
887
|
-
content: var(--tw-content);
|
|
888
|
-
clip-path: polygon(calc(var(--h) + var(--b)) min(100%,var(--p) + var(--h) * tan(var(--a) / 2)),var(--h) min(100%,var(--p) + var(--h) * tan(var(--a) / 2)),0 var(--p),var(--h) max(0%,var(--p) - var(--h) * tan(var(--a) / 2)),calc(var(--h) + var(--b)) max(0%,var(--p) - var(--h) * tan(var(--a) / 2)));
|
|
889
|
-
}
|
|
890
|
-
|
|
891
|
-
.before\:\[clip-path\:polygon\(min\(100\%\2c var\(--p\)\+var\(--h\)\*tan\(var\(--a\)\/2\)\)_calc\(100\%-var\(--h\)-var\(--b\)\)\2c min\(100\%\2c var\(--p\)\+var\(--h\)\*tan\(var\(--a\)\/2\)\)_calc\(100\%-var\(--h\)\)\2c var\(--p\)_100\%\2c max\(0\%\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_calc\(100\%-var\(--h\)\)\2c max\(0\%\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_calc\(100\%-var\(--h\)-var\(--b\)\)\)\]::before {
|
|
892
|
-
content: var(--tw-content);
|
|
893
|
-
clip-path: polygon(min(100%,var(--p) + var(--h) * tan(var(--a) / 2)) calc(100% - var(--h) - var(--b)),min(100%,var(--p) + var(--h) * tan(var(--a) / 2)) calc(100% - var(--h)),var(--p) 100%,max(0%,var(--p) - var(--h) * tan(var(--a) / 2)) calc(100% - var(--h)),max(0%,var(--p) - var(--h) * tan(var(--a) / 2)) calc(100% - var(--h) - var(--b)));
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
.before\:\[clip-path\:polygon\(min\(100\%\2c var\(--p\)\+var\(--h\)\*tan\(var\(--a\)\/2\)\)_calc\(var\(--h\)\+var\(--b\)\)\2c min\(100\%\2c var\(--p\)\+var\(--h\)\*tan\(var\(--a\)\/2\)\)_var\(--h\)\2c var\(--p\)_0\2c max\(0\%\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_var\(--h\)\2c max\(0\%\2c var\(--p\)-var\(--h\)\*tan\(var\(--a\)\/2\)\)_calc\(var\(--h\)\+var\(--b\)\)\)\]::before {
|
|
897
|
-
content: var(--tw-content);
|
|
898
|
-
clip-path: polygon(min(100%,var(--p) + var(--h) * tan(var(--a) / 2)) calc(var(--h) + var(--b)),min(100%,var(--p) + var(--h) * tan(var(--a) / 2)) var(--h),var(--p) 0,max(0%,var(--p) - var(--h) * tan(var(--a) / 2)) var(--h),max(0%,var(--p) - var(--h) * tan(var(--a) / 2)) calc(var(--h) + var(--b)));
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
.before\:\[inset\:calc\(-1\*var\(--b\)\)_calc\(-1\*var\(--b\)\)_calc\(-1\*var\(--b\)\)_calc\(-1\*var\(--b\)-var\(--h\)\)\]::before {
|
|
902
|
-
content: var(--tw-content);
|
|
903
|
-
inset: calc(-1 * var(--b)) calc(-1 * var(--b)) calc(-1 * var(--b)) calc(-1 * var(--b) - var(--h));
|
|
904
|
-
}
|
|
905
|
-
|
|
906
|
-
.before\:\[inset\:calc\(-1\*var\(--b\)\)_calc\(-1\*var\(--b\)\)_calc\(-1\*var\(--b\)-var\(--h\)\)\]::before {
|
|
907
|
-
content: var(--tw-content);
|
|
908
|
-
inset: calc(-1 * var(--b)) calc(-1 * var(--b)) calc(-1 * var(--b) - var(--h));
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
.before\:\[inset\:calc\(-1\*var\(--b\)\)_calc\(-1\*var\(--b\)-var\(--h\)\)_calc\(-1\*var\(--b\)\)_calc\(-1\*var\(--b\)\)\]::before {
|
|
912
|
-
content: var(--tw-content);
|
|
913
|
-
inset: calc(-1 * var(--b)) calc(-1 * var(--b) - var(--h)) calc(-1 * var(--b)) calc(-1 * var(--b));
|
|
914
|
-
}
|
|
915
|
-
|
|
916
|
-
.before\:\[inset\:calc\(-1\*var\(--b\)-var\(--h\)\)_calc\(-1\*var\(--b\)\)_calc\(-1\*var\(--b\)\)\]::before {
|
|
917
|
-
content: var(--tw-content);
|
|
918
|
-
inset: calc(-1 * var(--b) - var(--h)) calc(-1 * var(--b)) calc(-1 * var(--b));
|
|
919
|
-
}
|
|
920
|
-
|
|
921
|
-
.after\:absolute::after {
|
|
922
|
-
content: var(--tw-content);
|
|
923
|
-
position: absolute;
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
.after\:z-\[-1\]::after {
|
|
927
|
-
content: var(--tw-content);
|
|
928
|
-
z-index: -1;
|
|
929
|
-
}
|
|
930
|
-
|
|
931
|
-
.after\:content-\[\'_\'\]::after {
|
|
932
|
-
--tw-content: ' ';
|
|
933
|
-
content: var(--tw-content);
|
|
934
|
-
}
|
|
935
|
-
|
|
936
|
-
.after\:\[background-size\:100\%_100\%\2c 0_0\]::after {
|
|
937
|
-
content: var(--tw-content);
|
|
938
|
-
background-size: 100% 100%,0 0;
|
|
939
|
-
}
|
|
940
|
-
|
|
941
|
-
.after\:\[border\:inherit\]::after {
|
|
942
|
-
content: var(--tw-content);
|
|
943
|
-
border: inherit;
|
|
944
|
-
}
|
|
809
|
+
@property --fit-w {
|
|
810
|
+
syntax: "<length>";
|
|
945
811
|
|
|
946
|
-
|
|
947
|
-
content: var(--tw-content);
|
|
948
|
-
clip-path: polygon(calc(100% - var(--h) - var(--b)) min(100% - var(--b),var(--p) + var(--h) * tan(var(--a) / 2) - var(--b) * tan(45deg - var(--a) / 4)),calc(100% - var(--b) / sin(var(--a) / 2)) var(--p),calc(100% - var(--h) - var(--b)) max(var(--b),var(--p) - var(--h) * tan(var(--a) / 2) + var(--b) * tan(45deg - var(--a) / 4)),50% 50%);
|
|
949
|
-
}
|
|
812
|
+
inherits: true;
|
|
950
813
|
|
|
951
|
-
|
|
952
|
-
content: var(--tw-content);
|
|
953
|
-
clip-path: polygon(calc(var(--h) + var(--b)) min(100% - var(--b),var(--p) + var(--h) * tan(var(--a) / 2) - var(--b) * tan(45deg - var(--a) / 4)),calc(var(--b) / sin(var(--a) / 2)) var(--p),calc(var(--h) + var(--b)) max(var(--b),var(--p) - var(--h) * tan(var(--a) / 2) + var(--b) * tan(45deg - var(--a) / 4)),50% 50%);
|
|
814
|
+
initial-value: 1px;
|
|
954
815
|
}
|
|
955
816
|
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
clip-path: polygon(min(100% - var(--b),var(--p) + var(--h) * tan(var(--a) / 2) - var(--b) * tan(45deg - var(--a) / 4)) calc(100% - var(--h) - var(--b)),var(--p) calc(100% - var(--b) / sin(var(--a) / 2)),max(var(--b),var(--p) - var(--h) * tan(var(--a) / 2) + var(--b) * tan(45deg - var(--a) / 4)) calc(100% - var(--h) - var(--b)),50% 50%);
|
|
959
|
-
}
|
|
817
|
+
@property --fit-h {
|
|
818
|
+
syntax: "<length>";
|
|
960
819
|
|
|
961
|
-
|
|
962
|
-
content: var(--tw-content);
|
|
963
|
-
clip-path: polygon(min(100% - var(--b),var(--p) + var(--h) * tan(var(--a) / 2) - var(--b) * tan(45deg - var(--a) / 4)) calc(var(--h) + var(--b)),var(--p) calc(var(--b) / sin(var(--a) / 2)),max(var(--b),var(--p) - var(--h) * tan(var(--a) / 2) + var(--b) * tan(45deg - var(--a) / 4)) calc(var(--h) + var(--b)),50% 50%);
|
|
964
|
-
}
|
|
820
|
+
inherits: true;
|
|
965
821
|
|
|
966
|
-
|
|
967
|
-
content: var(--tw-content);
|
|
968
|
-
inset: calc(-1 * var(--b)) calc(-1 * var(--b)) calc(-1 * var(--b)) calc(-1 * var(--b) - var(--h));
|
|
822
|
+
initial-value: 1px;
|
|
969
823
|
}
|
|
970
824
|
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
inset: calc(-1 * var(--b)) calc(-1 * var(--b)) calc(-1 * var(--b) - var(--h));
|
|
974
|
-
}
|
|
825
|
+
@property --sx {
|
|
826
|
+
syntax: "<number>";
|
|
975
827
|
|
|
976
|
-
|
|
977
|
-
content: var(--tw-content);
|
|
978
|
-
inset: calc(-1 * var(--b)) calc(-1 * var(--b) - var(--h)) calc(-1 * var(--b)) calc(-1 * var(--b));
|
|
979
|
-
}
|
|
828
|
+
inherits: false;
|
|
980
829
|
|
|
981
|
-
|
|
982
|
-
content: var(--tw-content);
|
|
983
|
-
inset: calc(-1 * var(--b) - var(--h)) calc(-1 * var(--b)) calc(-1 * var(--b));
|
|
830
|
+
initial-value: 1;
|
|
984
831
|
}
|
|
985
832
|
|
|
986
833
|
.hover\:stroke-\[var\(--worldmap-stroke\)\]:hover {
|
|
@@ -17,7 +17,6 @@ import { cx } from "../../../utils/cx/cx";
|
|
|
17
17
|
import { ObjectUtils } from "../../../utils/object/object";
|
|
18
18
|
import { Rect } from "./Rect";
|
|
19
19
|
import { scale } from "../../../utils/math/math";
|
|
20
|
-
import { overlay } from "../../Overlay/Overlay";
|
|
21
20
|
import { ColorUtils } from "../../../utils/color/color";
|
|
22
21
|
import { toEpochMs } from "../../../utils/domain/utils/temporal";
|
|
23
22
|
export const HorizontalBars = ({ children, fill, stroke, labels, size = 50, radius = 0, anchor = 0, interactions, onMouseEnter, onMouseLeave, className, }) => {
|
|
@@ -75,7 +74,7 @@ export const HorizontalBars = ({ children, fill, stroke, labels, size = 50, radi
|
|
|
75
74
|
return (_a = (labels === true ? bar.data.y : labels(bar))) !== null && _a !== void 0 ? _a : "";
|
|
76
75
|
})();
|
|
77
76
|
const breakpoint = [2, 4, 6, 8, 10, 15, 20].find((bp) => bp >= label.toString().length);
|
|
78
|
-
return (React.createElement(
|
|
77
|
+
return (React.createElement("div", { key: i, className: "bars__label [grid-area:graph] @container-[size] absolute text-center", style: {
|
|
79
78
|
width,
|
|
80
79
|
height: height + "%",
|
|
81
80
|
left: position === "above" ? "unset" : scale(Math.min(bar.x1, bar.x2), context.viewbox.x, 100) + "%",
|
|
@@ -18,7 +18,6 @@ import { ObjectUtils } from "../../../utils/object/object";
|
|
|
18
18
|
import { Rect } from "./Rect";
|
|
19
19
|
import { cx } from "../../../utils/cx/cx";
|
|
20
20
|
import { scale } from "../../../utils/math/math";
|
|
21
|
-
import { overlay } from "../../Overlay/Overlay";
|
|
22
21
|
import { ColorUtils } from "../../../utils/color/color";
|
|
23
22
|
import { toEpochMs } from "../../../utils/domain/utils/temporal";
|
|
24
23
|
export const VerticalBars = (_a) => {
|
|
@@ -37,12 +36,10 @@ export const VerticalBars = (_a) => {
|
|
|
37
36
|
}));
|
|
38
37
|
const BAR_WIDTH = Math.floor(context.viewbox.x / context.domain.x.length / new Set(bars.map((bar) => bar.group)).size) * (size / 100); // this divided by number of unique groups?
|
|
39
38
|
const xValues = new Set(bars.map((bar) => (typeof bar.data.x === "string" || typeof bar.data.x === "number" ? bar.data.x : toEpochMs(bar.data.x))));
|
|
40
|
-
console.log(xValues);
|
|
41
39
|
const dataset = Array.from(xValues)
|
|
42
40
|
.flatMap((x) => {
|
|
43
41
|
const coordinate = xForValue(x);
|
|
44
42
|
const barsForTick = bars.filter((bar) => (typeof bar.data.x === "string" || typeof bar.data.x === "number" ? bar.data.x : toEpochMs(bar.data.x)) === x);
|
|
45
|
-
console.log(barsForTick);
|
|
46
43
|
return Object.entries(ObjectUtils.groupBy(barsForTick, ({ group }) => group)).flatMap(([, barsForGroup], i, groups) => {
|
|
47
44
|
const x1 = coordinate + BAR_WIDTH * i - (BAR_WIDTH * Object.keys(groups).length) / 2;
|
|
48
45
|
return barsForGroup === null || barsForGroup === void 0 ? void 0 : barsForGroup.map((bar) => (Object.assign(Object.assign({}, bar), { x1, x2: x1 + BAR_WIDTH, y1: yForValue(bar.data.y), y2: yForValue(anchor) }))).map((segment, ii, segments) => {
|
|
@@ -88,7 +85,7 @@ export const VerticalBars = (_a) => {
|
|
|
88
85
|
return (_a = (labels === true ? bar.data.y : labels(bar))) !== null && _a !== void 0 ? _a : "";
|
|
89
86
|
})();
|
|
90
87
|
const breakpoint = [2, 4, 5, 6, 8, 10, 15, 20].find((bp) => bp >= label.toString().replace(".", "").length);
|
|
91
|
-
return (React.createElement(
|
|
88
|
+
return (React.createElement("div", { key: i, className: "bars__label [grid-area:graph] @container-[size] absolute text-center", style: {
|
|
92
89
|
width,
|
|
93
90
|
height: Math.abs(height - (position === "above" ? 100 : 0)) + "%",
|
|
94
91
|
left: scale(bar.x1, context.viewbox.x, 100) + "%",
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import React, { useMemo } from "react";
|
|
2
|
+
function splitShadows(str) {
|
|
3
|
+
const result = [];
|
|
4
|
+
let depth = 0, current = "";
|
|
5
|
+
for (const ch of str) {
|
|
6
|
+
if (ch === "(")
|
|
7
|
+
depth++;
|
|
8
|
+
if (ch === ")")
|
|
9
|
+
depth--;
|
|
10
|
+
if (ch === "," && depth === 0) {
|
|
11
|
+
result.push(current.trim());
|
|
12
|
+
current = "";
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
current += ch;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (current.trim())
|
|
19
|
+
result.push(current.trim());
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
function parseBoxShadow(shadowStr) {
|
|
23
|
+
if (!shadowStr || !shadowStr.trim())
|
|
24
|
+
return [];
|
|
25
|
+
return splitShadows(shadowStr).map(parseSingleShadow);
|
|
26
|
+
}
|
|
27
|
+
function buildFilterData(shadows) {
|
|
28
|
+
const primitives = [];
|
|
29
|
+
const dropRefs = [];
|
|
30
|
+
const insetRefs = [];
|
|
31
|
+
shadows.forEach((s, i) => {
|
|
32
|
+
const sd = s.blur / 2;
|
|
33
|
+
if (!s.inset) {
|
|
34
|
+
// ═══ DROP SHADOW ═══
|
|
35
|
+
let src = "SourceAlpha";
|
|
36
|
+
if (s.spread !== 0) {
|
|
37
|
+
const op = s.spread > 0 ? "dilate" : "erode";
|
|
38
|
+
primitives.push({ tag: "feMorphology", attrs: { in: src, operator: op, radius: Math.abs(s.spread), result: `dSp${i}` } });
|
|
39
|
+
src = `dSp${i}`;
|
|
40
|
+
}
|
|
41
|
+
if (sd > 0) {
|
|
42
|
+
primitives.push({ tag: "feGaussianBlur", attrs: { in: src, stdDeviation: sd, result: `dBl${i}` } });
|
|
43
|
+
src = `dBl${i}`;
|
|
44
|
+
}
|
|
45
|
+
primitives.push({ tag: "feOffset", attrs: { in: src, dx: s.offsetX, dy: s.offsetY, result: `dOf${i}` } });
|
|
46
|
+
primitives.push({ tag: "feFlood", attrs: { floodColor: s.color, floodOpacity: s.opacity, result: `dFl${i}` } });
|
|
47
|
+
primitives.push({ tag: "feComposite", attrs: { in: `dFl${i}`, in2: `dOf${i}`, operator: "in", result: `dSh${i}` } });
|
|
48
|
+
dropRefs.push(`dSh${i}`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// ═══ INSET SHADOW ═══
|
|
52
|
+
primitives.push({ tag: "feFlood", attrs: { floodColor: "white", floodOpacity: 1, result: `iWh${i}` } });
|
|
53
|
+
primitives.push({ tag: "feComposite", attrs: { in: `iWh${i}`, in2: "SourceAlpha", operator: "out", result: `iInv${i}` } });
|
|
54
|
+
let src = `iInv${i}`;
|
|
55
|
+
if (s.spread !== 0) {
|
|
56
|
+
const op = s.spread > 0 ? "dilate" : "erode";
|
|
57
|
+
primitives.push({ tag: "feMorphology", attrs: { in: src, operator: op, radius: Math.abs(s.spread), result: `iSp${i}` } });
|
|
58
|
+
src = `iSp${i}`;
|
|
59
|
+
}
|
|
60
|
+
if (sd > 0) {
|
|
61
|
+
primitives.push({ tag: "feGaussianBlur", attrs: { in: src, stdDeviation: sd, result: `iBl${i}` } });
|
|
62
|
+
src = `iBl${i}`;
|
|
63
|
+
}
|
|
64
|
+
primitives.push({ tag: "feOffset", attrs: { in: src, dx: s.offsetX, dy: s.offsetY, result: `iOf${i}` } });
|
|
65
|
+
primitives.push({ tag: "feFlood", attrs: { floodColor: s.color, floodOpacity: s.opacity, result: `iFl${i}` } });
|
|
66
|
+
primitives.push({ tag: "feComposite", attrs: { in: `iFl${i}`, in2: `iOf${i}`, operator: "in", result: `iCo${i}` } });
|
|
67
|
+
primitives.push({ tag: "feComposite", attrs: { in: `iCo${i}`, in2: "SourceAlpha", operator: "in", result: `iSh${i}` } });
|
|
68
|
+
insetRefs.push(`iSh${i}`);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
// Merge order: drop shadows (last→first) → SourceGraphic → inset (last→first)
|
|
72
|
+
const mergeInputs = [];
|
|
73
|
+
for (let i = dropRefs.length - 1; i >= 0; i--)
|
|
74
|
+
mergeInputs.push(dropRefs[i]);
|
|
75
|
+
mergeInputs.push("SourceGraphic");
|
|
76
|
+
for (let i = insetRefs.length - 1; i >= 0; i--)
|
|
77
|
+
mergeInputs.push(insetRefs[i]);
|
|
78
|
+
return { primitives, mergeInputs };
|
|
79
|
+
}
|
|
80
|
+
function computeFilterRegion(shadows) {
|
|
81
|
+
let maxExt = 30;
|
|
82
|
+
for (const s of shadows) {
|
|
83
|
+
const ext = Math.abs(s.offsetX) + Math.abs(s.offsetY) + s.blur + Math.abs(s.spread) + 20;
|
|
84
|
+
if (ext > maxExt)
|
|
85
|
+
maxExt = ext;
|
|
86
|
+
}
|
|
87
|
+
const pad = Math.max(maxExt * 3, 100);
|
|
88
|
+
return { x: `-${pad}%`, y: `-${pad}%`, width: `${100 + pad * 2}%`, height: `${100 + pad * 2}%` };
|
|
89
|
+
}
|
|
90
|
+
function parseSingleShadow(str) {
|
|
91
|
+
const tokens = tokenize(str);
|
|
92
|
+
let inset = false;
|
|
93
|
+
const lengths = [];
|
|
94
|
+
let colorStr = null;
|
|
95
|
+
for (const token of tokens) {
|
|
96
|
+
if (token.toLowerCase() === "inset") {
|
|
97
|
+
inset = true;
|
|
98
|
+
}
|
|
99
|
+
else if (isLength(token)) {
|
|
100
|
+
lengths.push(parseFloat(token) || 0);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
colorStr = token;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const { color, opacity } = parseColorValue(colorStr || "rgba(0,0,0,1)");
|
|
107
|
+
return {
|
|
108
|
+
inset,
|
|
109
|
+
offsetX: lengths[0] || 0,
|
|
110
|
+
offsetY: lengths[1] || 0,
|
|
111
|
+
blur: Math.max(lengths[2] || 0, 0),
|
|
112
|
+
spread: lengths[3] || 0,
|
|
113
|
+
color,
|
|
114
|
+
opacity,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function isLength(token) {
|
|
118
|
+
return /^-?\d*\.?\d+(px|em|rem|pt|cm|mm|in|vh|vw|%)?$/.test(token);
|
|
119
|
+
}
|
|
120
|
+
// ─── Color Parser ─────────────────────────────────────────
|
|
121
|
+
function tokenize(str) {
|
|
122
|
+
const tokens = [];
|
|
123
|
+
let i = 0;
|
|
124
|
+
const s = str.trim();
|
|
125
|
+
while (i < s.length) {
|
|
126
|
+
if (/\s/.test(s[i])) {
|
|
127
|
+
i++;
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (/[a-zA-Z_]/.test(s[i])) {
|
|
131
|
+
let word = "";
|
|
132
|
+
while (i < s.length && /[a-zA-Z_-]/.test(s[i])) {
|
|
133
|
+
word += s[i];
|
|
134
|
+
i++;
|
|
135
|
+
}
|
|
136
|
+
if (i < s.length && s[i] === "(") {
|
|
137
|
+
word += "(";
|
|
138
|
+
i++;
|
|
139
|
+
let depth = 1;
|
|
140
|
+
while (i < s.length && depth > 0) {
|
|
141
|
+
if (s[i] === "(")
|
|
142
|
+
depth++;
|
|
143
|
+
if (s[i] === ")")
|
|
144
|
+
depth--;
|
|
145
|
+
word += s[i];
|
|
146
|
+
i++;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
tokens.push(word);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (s[i] === "#") {
|
|
153
|
+
let hex = "#";
|
|
154
|
+
i++;
|
|
155
|
+
while (i < s.length && /[0-9a-fA-F]/.test(s[i])) {
|
|
156
|
+
hex += s[i];
|
|
157
|
+
i++;
|
|
158
|
+
}
|
|
159
|
+
tokens.push(hex);
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (/[-\d.]/.test(s[i])) {
|
|
163
|
+
let num = "";
|
|
164
|
+
if (s[i] === "-") {
|
|
165
|
+
num += "-";
|
|
166
|
+
i++;
|
|
167
|
+
}
|
|
168
|
+
while (i < s.length && /[\d.]/.test(s[i])) {
|
|
169
|
+
num += s[i];
|
|
170
|
+
i++;
|
|
171
|
+
}
|
|
172
|
+
while (i < s.length && /[a-zA-Z%]/.test(s[i])) {
|
|
173
|
+
num += s[i];
|
|
174
|
+
i++;
|
|
175
|
+
}
|
|
176
|
+
tokens.push(num);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
i++;
|
|
180
|
+
}
|
|
181
|
+
return tokens;
|
|
182
|
+
}
|
|
183
|
+
function parseColorValue(colorStr) {
|
|
184
|
+
const s = (colorStr || "").trim();
|
|
185
|
+
if (!s || s.toLowerCase() === "transparent")
|
|
186
|
+
return { color: "rgb(0,0,0)", opacity: 0 };
|
|
187
|
+
if (s.startsWith("#")) {
|
|
188
|
+
const hex = s.slice(1);
|
|
189
|
+
if (hex.length === 3)
|
|
190
|
+
return { color: s, opacity: 1 };
|
|
191
|
+
if (hex.length === 4) {
|
|
192
|
+
const a = parseInt(hex[3] + hex[3], 16) / 255;
|
|
193
|
+
return { color: `#${hex[0]}${hex[0]}${hex[1]}${hex[1]}${hex[2]}${hex[2]}`, opacity: +a.toFixed(3) };
|
|
194
|
+
}
|
|
195
|
+
if (hex.length === 6)
|
|
196
|
+
return { color: s, opacity: 1 };
|
|
197
|
+
if (hex.length === 8) {
|
|
198
|
+
const a = parseInt(hex.slice(6), 16) / 255;
|
|
199
|
+
return { color: s.slice(0, 7), opacity: +a.toFixed(3) };
|
|
200
|
+
}
|
|
201
|
+
return { color: s, opacity: 1 };
|
|
202
|
+
}
|
|
203
|
+
const rgbaMatch = s.match(/^rgba?\((.+)\)$/i);
|
|
204
|
+
if (rgbaMatch) {
|
|
205
|
+
const parts = rgbaMatch[1].split(/[\s,/]+/).filter(Boolean);
|
|
206
|
+
const [r, g, b] = parts;
|
|
207
|
+
if (parts.length >= 4) {
|
|
208
|
+
let a = parseFloat(parts[3]);
|
|
209
|
+
if (parts[3].endsWith("%"))
|
|
210
|
+
a = parseFloat(parts[3]) / 100;
|
|
211
|
+
return { color: `rgb(${r},${g},${b})`, opacity: a };
|
|
212
|
+
}
|
|
213
|
+
return { color: `rgb(${r},${g},${b})`, opacity: 1 };
|
|
214
|
+
}
|
|
215
|
+
const hslaMatch = s.match(/^hsla?\((.+)\)$/i);
|
|
216
|
+
if (hslaMatch) {
|
|
217
|
+
const parts = hslaMatch[1].split(/[\s,/]+/).filter(Boolean);
|
|
218
|
+
if (parts.length >= 4) {
|
|
219
|
+
let a = parseFloat(parts[3]);
|
|
220
|
+
if (parts[3].endsWith("%"))
|
|
221
|
+
a = parseFloat(parts[3]) / 100;
|
|
222
|
+
return { color: `hsl(${parts[0]},${parts[1]},${parts[2]})`, opacity: a };
|
|
223
|
+
}
|
|
224
|
+
return { color: s, opacity: 1 };
|
|
225
|
+
}
|
|
226
|
+
return { color: s, opacity: 1 };
|
|
227
|
+
}
|
|
228
|
+
export function BoxShadow({ id, shadow }) {
|
|
229
|
+
const filterElement = useMemo(() => {
|
|
230
|
+
const shadows = parseBoxShadow(shadow);
|
|
231
|
+
if (!shadows.length)
|
|
232
|
+
return null;
|
|
233
|
+
const { primitives, mergeInputs } = buildFilterData(shadows);
|
|
234
|
+
const region = computeFilterRegion(shadows);
|
|
235
|
+
return (React.createElement("filter", { id: id, x: region.x, y: region.y, width: region.width, height: region.height, colorInterpolationFilters: "sRGB", filterUnits: "userSpaceOnUse" },
|
|
236
|
+
primitives.map((p, i) => React.createElement(p.tag, Object.assign({ key: i }, p.attrs))),
|
|
237
|
+
React.createElement("feMerge", null, mergeInputs.map((ref, i) => (React.createElement("feMergeNode", { key: i, in: ref }))))));
|
|
238
|
+
}, [shadow, id]);
|
|
239
|
+
return filterElement;
|
|
240
|
+
}
|
|
@@ -16,7 +16,6 @@ import { GraphUtils } from "../../utils/graph/graph";
|
|
|
16
16
|
import { CoordinatesUtils } from "../../utils/coordinates/coordinates";
|
|
17
17
|
import { scale } from "../../utils/math/math";
|
|
18
18
|
import { GradientUtils } from "../../utils/gradient/gradient";
|
|
19
|
-
import { overlay } from "../Overlay/Overlay";
|
|
20
19
|
import { ColorUtils } from "../../utils/color/color";
|
|
21
20
|
import React from "react";
|
|
22
21
|
import { ScalarUtils } from "../../utils/scalars/scalars";
|
|
@@ -67,7 +66,7 @@ export const Heatmap = (_a) => {
|
|
|
67
66
|
return (_a = (labels === true ? rect.data.z.toString() : labels(rect.data.z))) !== null && _a !== void 0 ? _a : "";
|
|
68
67
|
})();
|
|
69
68
|
const breakpoint = [2, 4, 6, 8, 10, 15, 20].find((bp) => bp >= label.toString().length);
|
|
70
|
-
return (React.createElement(
|
|
69
|
+
return (React.createElement("div", { key: i, className: "heatmap__labels [grid-area:graph] @container-[size] absolute text-center", style: {
|
|
71
70
|
width,
|
|
72
71
|
height: height + "%",
|
|
73
72
|
left: `${scale(rect.x1, context.viewbox.x, 100)}%`,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import React, { ReactNode } from "react";
|
|
1
|
+
import React, { ComponentProps, ReactNode } from "react";
|
|
2
2
|
import { InternalGraphContext } from "../../hooks/use-graph/use-graph";
|
|
3
3
|
import { CurveUtils } from "../../utils/path/curve";
|
|
4
|
+
import { Line } from "./components/Line";
|
|
4
5
|
interface Props extends React.SVGAttributes<SVGSVGElement> {
|
|
5
6
|
children?: ReactNode;
|
|
6
7
|
curve?: keyof typeof CurveUtils;
|
|
@@ -13,6 +14,7 @@ interface Props extends React.SVGAttributes<SVGSVGElement> {
|
|
|
13
14
|
}
|
|
14
15
|
export declare const Lines: {
|
|
15
16
|
(props: Props): React.JSX.Element | null;
|
|
17
|
+
Line(props: ComponentProps<typeof Line>): React.JSX.Element;
|
|
16
18
|
Tooltip: React.ComponentType<Omit<React.HTMLAttributes<HTMLDivElement> & {
|
|
17
19
|
tooltip?: ((points: Array<Omit<import("../../export").CartesianDataset[number], "data"> & {
|
|
18
20
|
data: import("../../export").CartesianDataset[number]["data"][number];
|
|
@@ -63,6 +63,11 @@ export const Lines = (props) => {
|
|
|
63
63
|
}),
|
|
64
64
|
children)));
|
|
65
65
|
};
|
|
66
|
+
Lines.Line = (props) => {
|
|
67
|
+
const context = useGraph();
|
|
68
|
+
return (React.createElement("svg", { className: "[grid-area:graph] h-full w-full", viewBox: `0 0 ${context.viewbox.x} ${context.viewbox.y}`, preserveAspectRatio: "none" },
|
|
69
|
+
React.createElement(Line, Object.assign({}, props))));
|
|
70
|
+
};
|
|
66
71
|
Lines.Tooltip = LinesTooltipZone;
|
|
67
72
|
Lines.Mouse = LinesMouse;
|
|
68
73
|
Lines.Joints = LinesJoints;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { JSX } from "react";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { InternalGraphContext, TemporalDate } from "../../../hooks/use-graph/use-graph";
|
|
3
|
+
type Props = Omit<JSX.IntrinsicElements["path"], "points"> & {
|
|
4
|
+
d?: string;
|
|
4
5
|
stroke: string;
|
|
5
6
|
fill?: string;
|
|
7
|
+
filter?: string;
|
|
6
8
|
disabled?: boolean;
|
|
7
9
|
points?: Array<{
|
|
8
|
-
x: number;
|
|
9
|
-
y: number;
|
|
10
|
+
x: number | string | TemporalDate;
|
|
11
|
+
y: number | string | TemporalDate;
|
|
10
12
|
}>;
|
|
13
|
+
context?: InternalGraphContext;
|
|
11
14
|
};
|
|
12
|
-
export declare const Line: ({ stroke, d, disabled, fill, className, points, ...rest }: Props) => JSX.Element;
|
|
15
|
+
export declare const Line: ({ stroke, d, disabled, fill, className, points, filter, ...rest }: Props) => JSX.Element;
|
|
13
16
|
export {};
|
|
@@ -11,20 +11,36 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
};
|
|
12
12
|
import React, { useId } from "react";
|
|
13
13
|
import { LinearGradient } from "../../LinearGradient/LinearGradient";
|
|
14
|
+
import { useGraph } from "../../../hooks/use-graph/use-graph";
|
|
15
|
+
import { CoordinatesUtils } from "../../../utils/coordinates/coordinates";
|
|
16
|
+
import { CurveUtils } from "../../../utils/path/curve";
|
|
17
|
+
import { BoxShadow } from "../../BoxShadow/BoxShadow";
|
|
14
18
|
export const Line = (_a) => {
|
|
15
|
-
var { stroke, d, disabled, fill, className, points } = _a, rest = __rest(_a, ["stroke", "d", "disabled", "fill", "className", "points"]);
|
|
19
|
+
var { stroke, d, disabled, fill, className, points, filter } = _a, rest = __rest(_a, ["stroke", "d", "disabled", "fill", "className", "points", "filter"]);
|
|
20
|
+
const context = useGraph();
|
|
16
21
|
const strokeId = useId();
|
|
17
22
|
const fillId = useId();
|
|
18
23
|
const clipId = useId();
|
|
24
|
+
const boxShadowId = useId();
|
|
19
25
|
const isGradientFill = fill === null || fill === void 0 ? void 0 : fill.includes("linear-gradient");
|
|
20
26
|
const isGradientStroke = stroke === null || stroke === void 0 ? void 0 : stroke.includes("linear-gradient");
|
|
21
27
|
const isMaskStroke = stroke === null || stroke === void 0 ? void 0 : stroke.includes("mask");
|
|
28
|
+
const coordinatesFor = CoordinatesUtils.xyCoordinatesForDataset(context);
|
|
29
|
+
const D = (() => {
|
|
30
|
+
if (d)
|
|
31
|
+
return d;
|
|
32
|
+
if (points)
|
|
33
|
+
return CurveUtils.linear(coordinatesFor(points));
|
|
34
|
+
return "";
|
|
35
|
+
})();
|
|
22
36
|
return (React.createElement(React.Fragment, null,
|
|
37
|
+
filter && React.createElement(BoxShadow, { id: boxShadowId, shadow: filter }),
|
|
23
38
|
isGradientFill && !disabled && fill && React.createElement(LinearGradient, { id: fillId, gradient: fill }),
|
|
24
39
|
isGradientStroke && !disabled && stroke && React.createElement(LinearGradient, { id: strokeId, gradient: stroke }),
|
|
25
40
|
isMaskStroke && (React.createElement("mask", { id: clipId },
|
|
26
41
|
React.createElement("rect", { width: "100%", height: "100%", fill: "black" }),
|
|
27
|
-
React.createElement("path", { d:
|
|
42
|
+
React.createElement("path", { d: D, fill: "none", stroke: "white", strokeWidth: 1.5, vectorEffect: "non-scaling-stroke" }))),
|
|
28
43
|
isMaskStroke && React.createElement("rect", { width: "100%", height: "100%", fill: `url(#${strokeId})`, mask: `url(#${clipId})` }),
|
|
29
|
-
!isMaskStroke && (React.createElement("
|
|
44
|
+
!isMaskStroke && (React.createElement("g", { filter: `url(#${boxShadowId})` },
|
|
45
|
+
React.createElement("path", Object.assign({ d: D, stroke: isGradientStroke ? `url(#${strokeId})` : stroke, fill: isGradientFill ? `url(#${fillId})` : fill, vectorEffect: "non-scaling-stroke", strokeWidth: 1.5, className: className }, rest))))));
|
|
30
46
|
};
|