@@ -10,34 +10,22 @@ function getHaloId() {
1010}
1111
1212export function applyHalo ( selection , { halo} ) {
13- if ( ! halo ) return ;
13+ if ( ! halo ) return null ;
1414 const { color, radius} = halo ;
15- const filters = new WeakMap ( ) ;
16- selection . attr ( "filter" , function ( ) {
17- const id = getHaloId ( ) ;
18- filters . set ( this , id ) ;
19- return `url(#${ id } )` ;
20- } ) ;
21- selection
22- . append ( "filter" )
23- . attr ( "id" , function ( ) {
24- return filters . get ( this . parentNode ) ;
25- } )
26- . call ( ( filter ) =>
27- filter
28- . append ( "feMorphology" )
29- . attr ( "in" , "SourceAlpha" )
30- . attr ( "result" , "dilated" )
31- . attr ( "operator" , "dilate" )
32- . attr ( "radius" , radius )
33- )
34- . call ( ( filter ) => filter . append ( "feFlood" ) . style ( "flood-color" , color ) )
35- . call ( ( filter ) => filter . append ( "feComposite" ) . attr ( "in2" , "dilated" ) . attr ( "operator" , "in" ) )
36- . append ( "feMerge" )
37- . call ( ( merge ) => {
38- merge . append ( "feMergeNode" ) ;
39- merge . append ( "feMergeNode" ) . attr ( "in" , "SourceGraphic" ) ;
40- } ) ;
15+ const id = getHaloId ( ) ;
16+ const filter = selection . append ( "filter" ) . attr ( "id" , id ) ;
17+ filter
18+ . append ( "feMorphology" )
19+ . attr ( "in" , "SourceAlpha" )
20+ . attr ( "result" , "dilated" )
21+ . attr ( "operator" , "dilate" )
22+ . attr ( "radius" , radius ) ;
23+ filter . append ( "feFlood" ) . style ( "flood-color" , color ) ;
24+ filter . append ( "feComposite" ) . attr ( "in2" , "dilated" ) . attr ( "operator" , "in" ) ;
25+ const merge = filter . append ( "feMerge" ) ;
26+ merge . append ( "feMergeNode" ) ;
27+ merge . append ( "feMergeNode" ) . attr ( "in" , "SourceGraphic" ) ;
28+ return `url(#${ id } )` ;
4129}
4230
4331export function maybeHalo ( halo , color , radius ) {
0 commit comments