1
+ import { isValidNumber } from "../../utils" ;
2
+
1
3
const half = ( val ) => val / 2 ;
2
4
3
5
const thicknessWithDot = ( options ) => {
@@ -17,6 +19,21 @@ const normalLineModeRadius = (options) => {
17
19
return baseRadius ( options ) ;
18
20
} ;
19
21
22
+ const previousCirclesThickness = ( options ) => {
23
+ if ( options . index === 0 ) return 0 ;
24
+ const currentCircleGap = isValidNumber ( options . gap ) ? options . gap : options . globalGap ;
25
+ const preCirclesThickness = [ ] ;
26
+ for ( let i = 0 ; i < options . options . previousCircles . length ; i ++ ) {
27
+ const data = options . options . previousCircles [ i ] ;
28
+ const dot = data . dot ? data . dot . size : options . globalDot . size ;
29
+ const thickness = isValidNumber ( data . thickness ) ? data . thickness : options . globalThickness ;
30
+ const gap = isValidNumber ( data . gap ) ? data . gap : options . globalGap ;
31
+ const completeThickness = Math . max ( dot , thickness ) ;
32
+ preCirclesThickness . push ( i > 0 ? completeThickness + gap : completeThickness ) ;
33
+ }
34
+ return preCirclesThickness . reduce ( ( acc , current ) => acc + current ) + currentCircleGap ;
35
+ } ;
36
+
20
37
const radiusNormalMode = ( options ) => normalLineModeRadius ( options ) ;
21
38
const radiusInMode = ( options ) =>
22
39
emptyRadius ( options ) - half ( options . emptyThickness + half ( options . thickness ) + options . lineMode . offset ) ;
@@ -62,6 +79,7 @@ const emptyRadiusTopMode = (options) => emptyBaseRadius(options) - half(thicknes
62
79
63
80
export const radius = ( options ) => {
64
81
const modes = {
82
+ multiple : ( ) => baseRadius ( options ) - previousCirclesThickness ( options ) ,
65
83
normal : ( ) => radiusNormalMode ( options ) ,
66
84
in : ( ) => radiusInMode ( options ) ,
67
85
"out-over" : ( ) => radiusOutOverMode ( options ) ,
@@ -74,6 +92,7 @@ export const radius = (options) => {
74
92
75
93
export const emptyRadius = ( options ) => {
76
94
const modes = {
95
+ multiple : ( ) => baseRadius ( options ) - previousCirclesThickness ( options ) ,
77
96
normal : ( ) => emptyRadiusNormalMode ( options ) ,
78
97
in : ( ) => emptyRadiusInMode ( options ) ,
79
98
"in-over" : ( ) => emptyRadiusInOverMode ( options ) ,
0 commit comments