@@ -277,6 +277,9 @@ var extraFormatKeys = [
277277 * gd._fullLayout._modules
278278 * is a list of all the trace modules required to draw the plot.
279279 *
280+ * gd._fullLayout._visibleModules
281+ * subset of _modules, a list of modules corresponding to visible:true traces.
282+ *
280283 * gd._fullLayout._basePlotModules
281284 * is a list of all the plot modules required to draw the plot.
282285 *
@@ -378,6 +381,7 @@ plots.supplyDefaults = function(gd, opts) {
378381
379382 // clear the lists of trace and baseplot modules, and subplots
380383 newFullLayout . _modules = [ ] ;
384+ newFullLayout . _visibleModules = [ ] ;
381385 newFullLayout . _basePlotModules = [ ] ;
382386 var subplots = newFullLayout . _subplots = emptySubplotLists ( ) ;
383387
@@ -420,7 +424,7 @@ plots.supplyDefaults = function(gd, opts) {
420424 newFullLayout . _has = plots . _hasPlotType . bind ( newFullLayout ) ;
421425
422426 // special cases that introduce interactions between traces
423- var _modules = newFullLayout . _modules ;
427+ var _modules = newFullLayout . _visibleModules ;
424428 for ( i = 0 ; i < _modules . length ; i ++ ) {
425429 var _module = _modules [ i ] ;
426430 if ( _module . cleanData ) _module . cleanData ( newFullData ) ;
@@ -898,6 +902,7 @@ plots.clearExpandedTraceDefaultColors = function(trace) {
898902
899903plots . supplyDataDefaults = function ( dataIn , dataOut , layout , fullLayout ) {
900904 var modules = fullLayout . _modules ;
905+ var visibleModules = fullLayout . _visibleModules ;
901906 var basePlotModules = fullLayout . _basePlotModules ;
902907 var cnt = 0 ;
903908 var colorCnt = 0 ;
@@ -913,8 +918,8 @@ plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) {
913918 if ( ! _module ) return ;
914919
915920 Lib . pushUnique ( modules , _module ) ;
921+ if ( fullTrace . visible === true ) Lib . pushUnique ( visibleModules , _module ) ;
916922 Lib . pushUnique ( basePlotModules , fullTrace . _module . basePlotModule ) ;
917-
918923 cnt ++ ;
919924
920925 // TODO: do we really want color not to increment for explicitly invisible traces?
@@ -1475,7 +1480,7 @@ plots.supplyLayoutModuleDefaults = function(layoutIn, layoutOut, fullData, trans
14751480 }
14761481
14771482 // trace module layout defaults
1478- var modules = layoutOut . _modules ;
1483+ var modules = layoutOut . _visibleModules ;
14791484 for ( i = 0 ; i < modules . length ; i ++ ) {
14801485 _module = modules [ i ] ;
14811486
@@ -1579,7 +1584,7 @@ plots.purge = function(gd) {
15791584} ;
15801585
15811586plots . style = function ( gd ) {
1582- var _modules = gd . _fullLayout . _modules ;
1587+ var _modules = gd . _fullLayout . _visibleModules ;
15831588 var styleModules = [ ] ;
15841589 var i ;
15851590
@@ -2567,7 +2572,7 @@ function clearAxesCalc(axList) {
25672572plots . doSetPositions = function ( gd ) {
25682573 var fullLayout = gd . _fullLayout ;
25692574 var subplots = fullLayout . _subplots . cartesian ;
2570- var modules = fullLayout . _modules ;
2575+ var modules = fullLayout . _visibleModules ;
25712576 var methods = [ ] ;
25722577 var i , j ;
25732578
0 commit comments