@@ -1866,8 +1866,13 @@ function initMargins(fullLayout) {
1866
1866
if ( ! fullLayout . _pushmarginIds ) fullLayout . _pushmarginIds = { } ;
1867
1867
}
1868
1868
1869
- var MIN_FINAL_WIDTH = 64 ; // could possibly be exposed as layout.margin.minfinalwidth
1870
- var MIN_FINAL_HEIGHT = 16 ; // could possibly be exposed as layout.margin.minfinalheight
1869
+ // non-negotiable - this is the smallest height we will allow users to specify via explicit margins
1870
+ var MIN_SPECIFIED_WIDTH = 2 ;
1871
+ var MIN_SPECIFIED_HEIGHT = 2 ;
1872
+
1873
+ // could be exposed as an option - the smallest we will allow automargin to shrink a larger plot
1874
+ var MIN_REDUCED_WIDTH = 64 ;
1875
+ var MIN_REDUCED_HEIGHT = 64 ;
1871
1876
1872
1877
/**
1873
1878
* autoMargin: called by components that may need to expand the margins to
@@ -1890,8 +1895,20 @@ plots.autoMargin = function(gd, id, o) {
1890
1895
var height = fullLayout . height ;
1891
1896
var margin = fullLayout . margin ;
1892
1897
1893
- var maxSpaceW = Math . max ( 0 , width - MIN_FINAL_WIDTH ) ;
1894
- var maxSpaceH = Math . max ( 0 , height - MIN_FINAL_HEIGHT ) ;
1898
+ var minFinalWidth = Lib . constrain (
1899
+ width - margin . l - margin . r ,
1900
+ MIN_SPECIFIED_WIDTH ,
1901
+ MIN_REDUCED_WIDTH
1902
+ ) ;
1903
+
1904
+ var minFinalHeight = Lib . constrain (
1905
+ height - margin . t - margin . b ,
1906
+ MIN_SPECIFIED_HEIGHT ,
1907
+ MIN_REDUCED_HEIGHT
1908
+ ) ;
1909
+
1910
+ var maxSpaceW = Math . max ( 0 , width - minFinalWidth ) ;
1911
+ var maxSpaceH = Math . max ( 0 , height - minFinalHeight ) ;
1895
1912
1896
1913
var pushMargin = fullLayout . _pushmargin ;
1897
1914
var pushMarginIds = fullLayout . _pushmarginIds ;
@@ -2021,8 +2038,20 @@ plots.doAutoMargin = function(gd) {
2021
2038
}
2022
2039
}
2023
2040
2024
- var maxSpaceW = Math . max ( 0 , width - MIN_FINAL_WIDTH ) ;
2025
- var maxSpaceH = Math . max ( 0 , height - MIN_FINAL_HEIGHT ) ;
2041
+ var minFinalWidth = Lib . constrain (
2042
+ width - margin . l - margin . r ,
2043
+ MIN_SPECIFIED_WIDTH ,
2044
+ MIN_REDUCED_WIDTH
2045
+ ) ;
2046
+
2047
+ var minFinalHeight = Lib . constrain (
2048
+ height - margin . t - margin . b ,
2049
+ MIN_SPECIFIED_HEIGHT ,
2050
+ MIN_REDUCED_HEIGHT
2051
+ ) ;
2052
+
2053
+ var maxSpaceW = Math . max ( 0 , width - minFinalWidth ) ;
2054
+ var maxSpaceH = Math . max ( 0 , height - minFinalHeight ) ;
2026
2055
2027
2056
if ( maxSpaceW ) {
2028
2057
var rW = ( ml + mr ) / maxSpaceW ;
0 commit comments