@@ -439,8 +439,8 @@ drawing.pointStyle = function(s, trace, gd) {
439
439
} ) ;
440
440
} ;
441
441
442
- drawing . selectedPointStyle = function ( s , trace ) {
443
- if ( ! s . size ( ) || ! trace . selectedpoints ) return ;
442
+ drawing . makeSelectedPointStyleFns = function ( trace ) {
443
+ var out = { } ;
444
444
445
445
var selectedAttrs = trace . selected || { } ;
446
446
var unselectedAttrs = trace . unselected || { } ;
@@ -455,59 +455,77 @@ drawing.selectedPointStyle = function(s, trace) {
455
455
var smoIsDefined = smo !== undefined ;
456
456
var usmoIsDefined = usmo !== undefined ;
457
457
458
- s . each ( function ( d ) {
459
- var pt = d3 . select ( this ) ;
458
+ out . opacityFn = function ( d ) {
460
459
var dmo = d . mo ;
461
460
var dmoIsDefined = dmo !== undefined ;
462
- var mo2 ;
463
461
464
462
if ( dmoIsDefined || smoIsDefined || usmoIsDefined ) {
465
463
if ( d . selected ) {
466
- if ( smoIsDefined ) mo2 = smo ;
464
+ if ( smoIsDefined ) return smo ;
467
465
} else {
468
- if ( usmoIsDefined ) mo2 = usmo ;
469
- else mo2 = DESELECTDIM * ( dmoIsDefined ? dmo : mo ) ;
466
+ if ( usmoIsDefined ) return usmo ;
467
+ return DESELECTDIM * ( dmoIsDefined ? dmo : mo ) ;
470
468
}
471
469
}
472
-
473
- if ( mo2 !== undefined ) pt . style ( 'opacity' , mo2 ) ;
474
- } ) ;
470
+ } ;
475
471
476
472
var smc = selectedMarker . color ;
477
473
var usmc = unselectedMarker . color ;
478
474
479
475
if ( smc || usmc ) {
480
- s . each ( function ( d ) {
481
- var pt = d3 . select ( this ) ;
482
- var mc2 ;
483
-
476
+ out . colorFn = function ( d ) {
484
477
if ( d . selected ) {
485
- if ( smc ) mc2 = smc ;
478
+ if ( smc ) return smc ;
486
479
} else {
487
- if ( usmc ) mc2 = usmc ;
480
+ if ( usmc ) return usmc ;
488
481
}
489
-
490
- if ( mc2 ) Color . fill ( pt , mc2 ) ;
491
- } ) ;
482
+ } ;
492
483
}
493
484
494
485
var sms = selectedMarker . size ;
495
486
var usms = unselectedMarker . size ;
496
487
var smsIsDefined = sms !== undefined ;
497
488
var usmsIsDefined = usms !== undefined ;
498
489
499
- if ( Registry . traceIs ( trace , 'symbols' ) && ( smsIsDefined || usmsIsDefined ) ) {
500
- s . each ( function ( d ) {
501
- var pt = d3 . select ( this ) ;
490
+ if ( smsIsDefined || usmsIsDefined ) {
491
+ out . sizeFn = function ( d ) {
502
492
var mrc = d . mrc ;
503
- var mx = d . mx || marker . symbol || 0 ;
504
- var mrc2 ;
505
-
506
493
if ( d . selected ) {
507
- mrc2 = ( smsIsDefined ) ? sms / 2 : mrc ;
494
+ return smsIsDefined ? sms / 2 : mrc ;
508
495
} else {
509
- mrc2 = ( usmsIsDefined ) ? usms / 2 : mrc ;
496
+ return usmsIsDefined ? usms / 2 : mrc ;
510
497
}
498
+ } ;
499
+ }
500
+
501
+ return out ;
502
+ } ;
503
+
504
+ drawing . selectedPointStyle = function ( s , trace ) {
505
+ if ( ! s . size ( ) || ! trace . selectedpoints ) return ;
506
+
507
+ var fns = drawing . makeSelectedPointStyleFns ( trace ) ;
508
+ var marker = trace . marker || { } ;
509
+
510
+ s . each ( function ( d ) {
511
+ var pt = d3 . select ( this ) ;
512
+ var mo2 = fns . opacityFn ( d ) ;
513
+ if ( mo2 !== undefined ) pt . style ( 'opacity' , mo2 ) ;
514
+ } ) ;
515
+
516
+ if ( fns . colorFn ) {
517
+ s . each ( function ( d ) {
518
+ var pt = d3 . select ( this ) ;
519
+ var mc2 = fns . colorFn ( d ) ;
520
+ if ( mc2 ) Color . fill ( pt , mc2 ) ;
521
+ } ) ;
522
+ }
523
+
524
+ if ( Registry . traceIs ( trace , 'symbols' ) && fns . sizeFn ) {
525
+ s . each ( function ( d ) {
526
+ var pt = d3 . select ( this ) ;
527
+ var mx = d . mx || marker . symbol || 0 ;
528
+ var mrc2 = fns . sizeFn ( d ) ;
511
529
512
530
pt . attr ( 'd' , makePointPath ( drawing . symbolNumber ( mx ) , mrc2 ) ) ;
513
531
0 commit comments