11import { Box , Container , QuerySelector , SVG } from '@svgdotjs/svg.js'
2- import { Alignment , GraphcisElement , Renderer } from '../renderer'
2+ import { Alignment , ArcDirection , GraphcisElement , Renderer } from '../renderer'
33import { constants } from '../../constants'
44import { isNode } from '../../utils/is-node'
55
@@ -10,7 +10,7 @@ export class SvgJsRenderer extends Renderer {
1010 super ( container )
1111
1212 // initialize the SVG
13- const { width } = constants
13+ const { width} = constants
1414 const height = 0
1515
1616 /*
@@ -42,7 +42,7 @@ export class SvgJsRenderer extends Renderer {
4242 strokeWidth : number ,
4343 color : string ,
4444 ) : void {
45- this . svg . line ( fromX , fromY , toX , toY ) . stroke ( { color, width : strokeWidth } )
45+ this . svg . line ( fromX , fromY , toX , toY ) . stroke ( { color, width : strokeWidth } )
4646 }
4747
4848 size ( width : number , height : number ) : void {
@@ -77,30 +77,30 @@ export class SvgJsRenderer extends Renderer {
7777 if ( plain ) {
7878 // create a text element centered at x,y. No SVG.js magic.
7979 element = this . svg
80- . plain ( text )
81- . attr ( {
82- x,
83- y,
84- } )
85- . font ( {
86- family : fontFamily ,
87- size : fontSize ,
88- anchor : alignment ,
89- 'dominant-baseline' : 'central' ,
90- } )
91- . fill ( color )
92- . addClass ( Renderer . toClassName ( classes ) )
80+ . plain ( text )
81+ . attr ( {
82+ x,
83+ y,
84+ } )
85+ . font ( {
86+ family : fontFamily ,
87+ size : fontSize ,
88+ anchor : alignment ,
89+ 'dominant-baseline' : 'central' ,
90+ } )
91+ . fill ( color )
92+ . addClass ( Renderer . toClassName ( classes ) )
9393 } else {
9494 element = this . svg
95- . text ( text )
96- . move ( x , y )
97- . font ( {
98- family : fontFamily ,
99- size : fontSize ,
100- anchor : alignment ,
101- } )
102- . fill ( color )
103- . addClass ( Renderer . toClassName ( classes ) )
95+ . text ( text )
96+ . move ( x , y )
97+ . font ( {
98+ family : fontFamily ,
99+ size : fontSize ,
100+ anchor : alignment ,
101+ } )
102+ . fill ( color )
103+ . addClass ( Renderer . toClassName ( classes ) )
104104 }
105105
106106 return SvgJsRenderer . boxToElement ( element . bbox ( ) , element . remove . bind ( element ) )
@@ -116,14 +116,14 @@ export class SvgJsRenderer extends Renderer {
116116 classes ?: string | string [ ] ,
117117 ) : GraphcisElement {
118118 const element = this . svg
119- . circle ( diameter )
120- . move ( x , y )
121- . fill ( fill || 'none' )
122- . stroke ( {
123- color : strokeColor ,
124- width : strokeWidth ,
125- } )
126- . addClass ( Renderer . toClassName ( classes ) )
119+ . circle ( diameter )
120+ . move ( x , y )
121+ . fill ( fill || 'none' )
122+ . stroke ( {
123+ color : strokeColor ,
124+ width : strokeWidth ,
125+ } )
126+ . addClass ( Renderer . toClassName ( classes ) )
127127
128128 return SvgJsRenderer . boxToElement ( element . bbox ( ) , element . remove . bind ( element ) )
129129 }
@@ -140,15 +140,15 @@ export class SvgJsRenderer extends Renderer {
140140 radius ?: number ,
141141 ) : GraphcisElement {
142142 const element = this . svg
143- . rect ( width , height )
144- . move ( x , y )
145- . fill ( fill || 'none' )
146- . stroke ( {
147- width : strokeWidth ,
148- color : strokeColor ,
149- } )
150- . radius ( radius || 0 )
151- . addClass ( Renderer . toClassName ( classes ) )
143+ . rect ( width , height )
144+ . move ( x , y )
145+ . fill ( fill || 'none' )
146+ . stroke ( {
147+ width : strokeWidth ,
148+ color : strokeColor ,
149+ } )
150+ . radius ( radius || 0 )
151+ . addClass ( Renderer . toClassName ( classes ) )
152152
153153 return SvgJsRenderer . boxToElement ( element . bbox ( ) , element . remove . bind ( element ) )
154154 }
@@ -163,14 +163,14 @@ export class SvgJsRenderer extends Renderer {
163163 fill ?: string | undefined ,
164164 ) : GraphcisElement {
165165 const element = this . svg
166- . path ( Renderer . trianglePath ( x , y , size ) )
167- . move ( x , y )
168- . fill ( fill || 'none' )
169- . stroke ( {
170- width : strokeWidth ,
171- color : strokeColor ,
172- } )
173- . addClass ( Renderer . toClassName ( classes ) )
166+ . path ( Renderer . trianglePath ( x , y , size ) )
167+ . move ( x , y )
168+ . fill ( fill || 'none' )
169+ . stroke ( {
170+ width : strokeWidth ,
171+ color : strokeColor ,
172+ } )
173+ . addClass ( Renderer . toClassName ( classes ) )
174174
175175 return SvgJsRenderer . boxToElement ( element . bbox ( ) , element . remove . bind ( element ) )
176176 }
@@ -198,14 +198,14 @@ export class SvgJsRenderer extends Renderer {
198198 classes ?: string | string [ ] ,
199199 ) {
200200 const element = this . svg
201- . path ( Renderer . ngonPath ( x , y , size , edges ) )
202- . move ( x , y )
203- . fill ( fill || 'none' )
204- . stroke ( {
205- width : strokeWidth ,
206- color : strokeColor ,
207- } )
208- . addClass ( Renderer . toClassName ( classes ) )
201+ . path ( Renderer . ngonPath ( x , y , size , edges ) )
202+ . move ( x , y )
203+ . fill ( fill || 'none' )
204+ . stroke ( {
205+ width : strokeWidth ,
206+ color : strokeColor ,
207+ } )
208+ . addClass ( Renderer . toClassName ( classes ) )
209209
210210 return SvgJsRenderer . boxToElement ( element . bbox ( ) , element . remove . bind ( element ) )
211211 }
@@ -219,6 +219,35 @@ export class SvgJsRenderer extends Renderer {
219219 remove,
220220 }
221221 }
222+
223+ arc ( x : number ,
224+ y : number ,
225+ width : number ,
226+ height : number ,
227+ direction : ArcDirection ,
228+ strokeWidth : number ,
229+ strokeColor : string ,
230+ classes ?: string | string [ ] ,
231+ fill ?: string ,
232+ ) : GraphcisElement {
233+ const path = Renderer . arcBarrePath ( x , y , width , height , direction )
234+
235+ const element = this . svg
236+ . path ( path )
237+ . stroke ( {
238+ width : strokeWidth ,
239+ color : strokeColor ,
240+ linecap : 'round' ,
241+ } )
242+ . fill ( {
243+ color : fill ,
244+ } )
245+ . addClass ( Renderer . toClassName ( classes ) )
246+
247+ // this.rect(x, y, width, height, strokeWidth, strokeColor, classes, 'rgba(0, 0, 0, 0.2)') // TODO: remove rectangle
248+
249+ return SvgJsRenderer . boxToElement ( element . bbox ( ) , element . remove . bind ( element ) )
250+ }
222251}
223252
224253export default SvgJsRenderer
0 commit comments