@@ -1415,9 +1415,6 @@ function _restyle(gd, aobj, _traces) {
1415
1415
continue ;
1416
1416
}
1417
1417
1418
- // take no chances on transforms
1419
- if ( ai . substr ( 0 , 10 ) === 'transforms' ) flags . docalc = true ;
1420
-
1421
1418
// set attribute in gd.data
1422
1419
undoit [ ai ] = a0 ( ) ;
1423
1420
for ( i = 0 ; i < traces . length ; i ++ ) {
@@ -1557,6 +1554,10 @@ function _restyle(gd, aobj, _traces) {
1557
1554
}
1558
1555
helpers . swapXYData ( cont ) ;
1559
1556
}
1557
+ else if ( Plots . dataArrayContainers . indexOf ( param . parts [ 0 ] ) !== - 1 ) {
1558
+ helpers . manageArrayContainers ( param , newVal , undoit ) ;
1559
+ flags . docalc = true ;
1560
+ }
1560
1561
// all the other ones, just modify that one attribute
1561
1562
else param . set ( newVal ) ;
1562
1563
@@ -1816,8 +1817,7 @@ function _relayout(gd, aobj) {
1816
1817
// trunk nodes (everything except the leaf)
1817
1818
ptrunk = p . parts . slice ( 0 , pend ) . join ( '.' ) ,
1818
1819
parentIn = Lib . nestedProperty ( gd . layout , ptrunk ) . get ( ) ,
1819
- parentFull = Lib . nestedProperty ( fullLayout , ptrunk ) . get ( ) ,
1820
- diff ;
1820
+ parentFull = Lib . nestedProperty ( fullLayout , ptrunk ) . get ( ) ;
1821
1821
1822
1822
if ( vi === undefined ) continue ;
1823
1823
@@ -1922,6 +1922,9 @@ function _relayout(gd, aobj) {
1922
1922
objList = layout [ objType ] || [ ] ,
1923
1923
obji = objList [ objNum ] || { } ;
1924
1924
1925
+ // new API, remove annotation / shape with `null`
1926
+ if ( vi === null ) aobj [ ai ] = 'remove' ;
1927
+
1925
1928
// if p.parts is just an annotation number, and val is either
1926
1929
// 'add' or an entire annotation to add, the undo is 'remove'
1927
1930
// if val is 'remove' then undo is the whole annotation object
@@ -1951,42 +1954,11 @@ function _relayout(gd, aobj) {
1951
1954
drawOne ( gd , objNum , p . parts . slice ( 2 ) . join ( '.' ) , aobj [ ai ] ) ;
1952
1955
delete aobj [ ai ] ;
1953
1956
}
1954
- else if ( p . parts [ 0 ] === 'images' ) {
1955
- var update = Lib . objectFromPath ( ai , vi ) ;
1956
- Lib . extendDeepAll ( gd . layout , update ) ;
1957
-
1958
- Registry . getComponentMethod ( 'images' , 'supplyLayoutDefaults' ) ( gd . layout , gd . _fullLayout ) ;
1959
- Registry . getComponentMethod ( 'images' , 'draw' ) ( gd ) ;
1960
- }
1961
- else if ( p . parts [ 0 ] === 'mapbox' && p . parts [ 1 ] === 'layers' ) {
1962
- Lib . extendDeepAll ( gd . layout , Lib . objectFromPath ( ai , vi ) ) ;
1963
-
1964
- // append empty container to mapbox.layers
1965
- // so that relinkPrivateKeys does not complain
1966
-
1967
- var fullLayers = ( gd . _fullLayout . mapbox || { } ) . layers || [ ] ;
1968
- diff = ( p . parts [ 2 ] + 1 ) - fullLayers . length ;
1969
-
1970
- for ( i = 0 ; i < diff ; i ++ ) fullLayers . push ( { } ) ;
1971
-
1972
- flags . doplot = true ;
1973
- }
1974
- else if ( p . parts [ 0 ] === 'updatemenus' ) {
1975
- Lib . extendDeepAll ( gd . layout , Lib . objectFromPath ( ai , vi ) ) ;
1976
-
1977
- var menus = gd . _fullLayout . updatemenus || [ ] ;
1978
- diff = ( p . parts [ 2 ] + 1 ) - menus . length ;
1979
-
1980
- for ( i = 0 ; i < diff ; i ++ ) menus . push ( { } ) ;
1981
- flags . doplot = true ;
1982
- }
1983
- else if ( p . parts [ 0 ] === 'sliders' ) {
1984
- Lib . extendDeepAll ( gd . layout , Lib . objectFromPath ( ai , vi ) ) ;
1985
-
1986
- var sliders = gd . _fullLayout . sliders || [ ] ;
1987
- diff = ( p . parts [ 2 ] + 1 ) - sliders . length ;
1988
-
1989
- for ( i = 0 ; i < diff ; i ++ ) sliders . push ( { } ) ;
1957
+ else if (
1958
+ Plots . layoutArrayContainers . indexOf ( p . parts [ 0 ] ) !== - 1 ||
1959
+ ( p . parts [ 0 ] === 'mapbox' && p . parts [ 1 ] === 'layers' )
1960
+ ) {
1961
+ helpers . manageArrayContainers ( p , vi , undoit ) ;
1990
1962
flags . doplot = true ;
1991
1963
}
1992
1964
// alter gd.layout
0 commit comments