plotly.js 2.9.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/.circleci/config.yml +39 -1
  2. package/.circleci/test.sh +14 -1
  3. package/CHANGELOG.md +24 -1
  4. package/CONTRIBUTING.md +18 -1
  5. package/README.md +12 -4
  6. package/dist/README.md +28 -28
  7. package/dist/plot-schema.json +98 -0
  8. package/dist/plotly-basic.js +174 -83
  9. package/dist/plotly-basic.min.js +3 -3
  10. package/dist/plotly-cartesian.js +174 -83
  11. package/dist/plotly-cartesian.min.js +4 -4
  12. package/dist/plotly-finance.js +174 -83
  13. package/dist/plotly-finance.min.js +3 -3
  14. package/dist/plotly-geo-assets.js +2 -2
  15. package/dist/plotly-geo.js +174 -83
  16. package/dist/plotly-geo.min.js +3 -3
  17. package/dist/plotly-gl2d.js +601 -433
  18. package/dist/plotly-gl2d.min.js +10 -10
  19. package/dist/plotly-gl3d.js +223 -91
  20. package/dist/plotly-gl3d.min.js +8 -8
  21. package/dist/plotly-mapbox.js +174 -83
  22. package/dist/plotly-mapbox.min.js +2 -2
  23. package/dist/plotly-strict.js +40414 -1028
  24. package/dist/plotly-strict.min.js +11 -11
  25. package/dist/plotly-with-meta.js +881 -704
  26. package/dist/plotly.js +848 -675
  27. package/dist/plotly.min.js +4 -4
  28. package/lib/index-strict.js +5 -0
  29. package/package.json +13 -9
  30. package/src/components/drawing/index.js +28 -24
  31. package/src/components/legend/style.js +10 -6
  32. package/src/generated/regl-codegen/0919c57b995304312da30a5af7873a319bfb7b7e22ff6b4fa203ecbd5774ebfc +1462 -0
  33. package/src/generated/regl-codegen/13c0ae156483f2bcbd7ff29404f0abfd8689ff43f41791a6c7469868690a4260 +3391 -0
  34. package/src/generated/regl-codegen/19769c875db736c08a744c0a6aabe28276ed06aa24fdb7c36506a9f4c1f56f13 +3375 -0
  35. package/src/generated/regl-codegen/21cec01aa93887c70e86d7f1bc84d6837da0b1f5c1ff4cadd42ac6eb37f9f316 +2488 -0
  36. package/src/generated/regl-codegen/4df455b48c9de7d9f1de4b9481b505c09613ba7f90d2b4e360e673839566688e +662 -0
  37. package/src/generated/regl-codegen/53f2bf051e4ba66c90f343d29aa8da9e4029454c0d428f8e46e94dfddc97c8c6 +459 -0
  38. package/src/generated/regl-codegen/59568c77bcbe6343ee6109df49ceeb78c8a8a8a81872e88fb077f9a3d6dc0567 +637 -0
  39. package/src/generated/regl-codegen/6c3ff5a68d2906faf59307b58a799389f916ebdd3f7732ce75967575041988fc +2226 -0
  40. package/src/generated/regl-codegen/7c8e7f36e693904898ece5f7f8b49b23c69d98397567c3915a45647209eb7da4 +2052 -0
  41. package/src/generated/regl-codegen/8a43b073e4f3e9c0e499c8ac9c253f2aa1e3d3de2febfccc6526b52295dbf770 +664 -0
  42. package/src/generated/regl-codegen/909861c036d6f1ef40ba2dfcc33ef32489d2fe05fa7b7984d5ff315ddceb17b1 +454 -0
  43. package/src/generated/regl-codegen/c759965c8d66b2b356ae7455825df829f2ba7d4e7e903236f8c8d3bc5f45bd44 +2116 -0
  44. package/src/generated/regl-codegen/f9448a214a3e3cd439b767559aa71a4d1ccf5a8f39b8b756973e71acd33ff956 +2755 -0
  45. package/src/generated/regl-codegen/ff8495670417d5d0e4caa9942ad63b4dff0242a390ac1cb807c78ca326d6f3ce +639 -0
  46. package/src/lib/prepare_regl.js +7 -3
  47. package/src/lib/svg_text_utils.js +106 -21
  48. package/src/plot_api/plot_config.js +9 -0
  49. package/src/snapshot/tosvg.js +14 -25
  50. package/src/traces/parcoords/base_index.js +24 -0
  51. package/src/traces/parcoords/index.js +4 -22
  52. package/src/traces/parcoords/plot-strict.js +9 -0
  53. package/src/traces/parcoords/plot.js +5 -2
  54. package/src/traces/parcoords/regl_precompiled.js +12 -0
  55. package/src/traces/parcoords/strict.js +7 -0
  56. package/src/traces/scatter/attributes.js +2 -0
  57. package/src/traces/scatter/defaults.js +2 -0
  58. package/src/traces/scatter/plot.js +4 -4
  59. package/src/traces/scatter/style.js +1 -1
  60. package/src/traces/scattergl/base_index.js +29 -0
  61. package/src/traces/scattergl/index.js +3 -26
  62. package/src/traces/scattergl/plot.js +5 -2
  63. package/src/traces/scattergl/plot_strict.js +9 -0
  64. package/src/traces/scattergl/regl_precompiled.js +24 -0
  65. package/src/traces/scattergl/strict.js +7 -0
  66. package/src/traces/scatterpolargl/base_index.js +29 -0
  67. package/src/traces/scatterpolargl/index.js +3 -26
  68. package/src/traces/scatterpolargl/plot.js +4 -0
  69. package/src/traces/scatterpolargl/plot_strict.js +13 -0
  70. package/src/traces/scatterpolargl/regl_precompiled.js +24 -0
  71. package/src/traces/scatterpolargl/strict.js +7 -0
  72. package/src/traces/splom/base_index.js +36 -0
  73. package/src/traces/splom/base_plot.js +5 -2
  74. package/src/traces/splom/base_plot_strict.js +9 -0
  75. package/src/traces/splom/index.js +3 -33
  76. package/src/traces/splom/regl_precompiled.js +24 -0
  77. package/src/traces/splom/strict.js +7 -0
  78. package/src/version.js +1 -1
  79. package/stackgl_modules/index.js +49 -8
  80. package/stackgl_modules/package-lock.json +10 -10
  81. package/stackgl_modules/package.json +2 -2
  82. package/tasks/bundle.js +18 -0
  83. package/tasks/noci_test.sh +1 -1
  84. package/tasks/partial_bundle.js +26 -23
  85. package/tasks/stats.js +3 -3
  86. package/tasks/util/constants.js +13 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * plotly.js (gl3d) v2.9.0
2
+ * plotly.js (gl3d) v2.11.0
3
3
  * Copyright 2012-2022, Plotly, Inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the MIT license
@@ -25180,24 +25180,42 @@ drawing.dashStyle = function(dash, lineWidth) {
25180
25180
  return dash;
25181
25181
  };
25182
25182
 
25183
+ function setFillStyle(sel, trace, gd) {
25184
+ var markerPattern = trace.fillpattern;
25185
+ var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, 0, '');
25186
+ if(patternShape) {
25187
+ var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, 0, null);
25188
+ var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, 0, null);
25189
+ var patternFGOpacity = markerPattern.fgopacity;
25190
+ var patternSize = drawing.getPatternAttr(markerPattern.size, 0, 8);
25191
+ var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, 0, 0.3);
25192
+ var patternID = trace.uid;
25193
+ drawing.pattern(sel, 'point', gd, patternID,
25194
+ patternShape, patternSize, patternSolidity,
25195
+ undefined, markerPattern.fillmode,
25196
+ patternBGColor, patternFGColor, patternFGOpacity
25197
+ );
25198
+ } else if(trace.fillcolor) {
25199
+ sel.call(Color.fill, trace.fillcolor);
25200
+ }
25201
+ }
25202
+
25183
25203
  // Same as fillGroupStyle, except in this case the selection may be a transition
25184
- drawing.singleFillStyle = function(sel) {
25204
+ drawing.singleFillStyle = function(sel, gd) {
25185
25205
  var node = d3.select(sel.node());
25186
25206
  var data = node.data();
25187
- var fillcolor = (((data[0] || [])[0] || {}).trace || {}).fillcolor;
25188
- if(fillcolor) {
25189
- sel.call(Color.fill, fillcolor);
25190
- }
25207
+ var trace = ((data[0] || [])[0] || {}).trace || {};
25208
+ setFillStyle(sel, trace, gd);
25191
25209
  };
25192
25210
 
25193
- drawing.fillGroupStyle = function(s) {
25211
+ drawing.fillGroupStyle = function(s, gd) {
25194
25212
  s.style('stroke-width', 0)
25195
25213
  .each(function(d) {
25196
25214
  var shape = d3.select(this);
25197
25215
  // N.B. 'd' won't be a calcdata item when
25198
25216
  // fill !== 'none' on a segment-less and marker-less trace
25199
25217
  if(d[0].trace) {
25200
- shape.call(Color.fill, d[0].trace.fillcolor);
25218
+ setFillStyle(shape, d[0].trace, gd);
25201
25219
  }
25202
25220
  });
25203
25221
  };
@@ -25350,12 +25368,7 @@ drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) {
25350
25368
  sel.style(prop, getFullUrl(fullID, gd))
25351
25369
  .style(prop + '-opacity', null);
25352
25370
 
25353
- var className2query = function(s) {
25354
- return '.' + s.attr('class').replace(/\s/g, '.');
25355
- };
25356
- var k = className2query(d3.select(sel.node().parentNode)) +
25357
- '>' + className2query(sel);
25358
- fullLayout._gradientUrlQueryParts[k] = 1;
25371
+ sel.classed('gradient_filled', true);
25359
25372
  };
25360
25373
 
25361
25374
  /**
@@ -25562,11 +25575,6 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
25562
25575
  .style('fill-opacity', null);
25563
25576
 
25564
25577
  sel.classed('pattern_filled', true);
25565
- var className2query = function(s) {
25566
- return '.' + s.attr('class').replace(/\s/g, '.');
25567
- };
25568
- var k = className2query(d3.select(sel.node().parentNode)) + '>.pattern_filled';
25569
- fullLayout._patternUrlQueryParts[k] = 1;
25570
25578
  };
25571
25579
 
25572
25580
  /*
@@ -25582,9 +25590,7 @@ drawing.initGradients = function(gd) {
25582
25590
  var gradientsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'gradients');
25583
25591
  gradientsGroup.selectAll('linearGradient,radialGradient').remove();
25584
25592
 
25585
- // initialize stash of query parts filled in Drawing.gradient,
25586
- // used to fix URL strings during image exports
25587
- fullLayout._gradientUrlQueryParts = {};
25593
+ d3.select(gd).selectAll('.gradient_filled').classed('gradient_filled', false);
25588
25594
  };
25589
25595
 
25590
25596
  drawing.initPatterns = function(gd) {
@@ -25593,9 +25599,7 @@ drawing.initPatterns = function(gd) {
25593
25599
  var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns');
25594
25600
  patternsGroup.selectAll('pattern').remove();
25595
25601
 
25596
- // initialize stash of query parts filled in Drawing.pattern,
25597
- // used to fix URL strings during image exports
25598
- fullLayout._patternUrlQueryParts = {};
25602
+ d3.select(gd).selectAll('.pattern_filled').classed('pattern_filled', false);
25599
25603
  };
25600
25604
 
25601
25605
  drawing.getPatternAttr = function(mp, i, dflt) {
@@ -32932,12 +32936,16 @@ module.exports = function style(s, gd, legend) {
32932
32936
  var colorscale = cOpts.colorscale;
32933
32937
  var reversescale = cOpts.reversescale;
32934
32938
 
32935
- var fillGradient = function(s) {
32939
+ var fillStyle = function(s) {
32936
32940
  if(s.size()) {
32937
- var gradientID = 'legendfill-' + trace.uid;
32938
- Drawing.gradient(s, gd, gradientID,
32939
- getGradientDirection(reversescale),
32940
- colorscale, 'fill');
32941
+ if(showFill) {
32942
+ Drawing.fillGroupStyle(s, gd);
32943
+ } else {
32944
+ var gradientID = 'legendfill-' + trace.uid;
32945
+ Drawing.gradient(s, gd, gradientID,
32946
+ getGradientDirection(reversescale),
32947
+ colorscale, 'fill');
32948
+ }
32941
32949
  }
32942
32950
  };
32943
32951
 
@@ -32966,7 +32974,7 @@ module.exports = function style(s, gd, legend) {
32966
32974
  fill.enter().append('path').classed('js-fill', true);
32967
32975
  fill.exit().remove();
32968
32976
  fill.attr('d', pathStart + 'h' + itemWidth + 'v6h-' + itemWidth + 'z')
32969
- .call(showFill ? Drawing.fillGroupStyle : fillGradient);
32977
+ .call(fillStyle);
32970
32978
 
32971
32979
  if(showLine || showGradientLine) {
32972
32980
  var lw = boundLineWidth(undefined, trace.line, MAX_LINE_WIDTH, CST_LINE_WIDTH);
@@ -47779,6 +47787,7 @@ exports.convertToTspans = function(_context, gd, _callback) {
47779
47787
  // Until we get tex integrated more fully (so it can be used along with non-tex)
47780
47788
  // allow some elements to prohibit it by attaching 'data-notex' to the original
47781
47789
  var tex = (!_context.attr('data-notex')) &&
47790
+ gd && gd._context.typesetMath &&
47782
47791
  (typeof MathJax !== 'undefined') &&
47783
47792
  str.match(FIND_TEX);
47784
47793
 
@@ -47933,70 +47942,154 @@ function cleanEscapesForTex(s) {
47933
47942
  .replace(GT_MATCH, '\\gt ');
47934
47943
  }
47935
47944
 
47945
+ var inlineMath = [['$', '$'], ['\\(', '\\)']];
47946
+
47936
47947
  function texToSVG(_texString, _config, _callback) {
47948
+ var MathJaxVersion = parseInt(
47949
+ (MathJax.version || '').split('.')[0]
47950
+ );
47951
+
47952
+ if(
47953
+ MathJaxVersion !== 2 &&
47954
+ MathJaxVersion !== 3
47955
+ ) {
47956
+ Lib.warn('No MathJax version:', MathJax.version);
47957
+ return;
47958
+ }
47959
+
47937
47960
  var originalRenderer,
47938
47961
  originalConfig,
47939
47962
  originalProcessSectionDelay,
47940
47963
  tmpDiv;
47941
47964
 
47942
- MathJax.Hub.Queue(
47943
- function() {
47965
+ var setConfig2 = function() {
47944
47966
  originalConfig = Lib.extendDeepAll({}, MathJax.Hub.config);
47945
47967
 
47946
47968
  originalProcessSectionDelay = MathJax.Hub.processSectionDelay;
47947
47969
  if(MathJax.Hub.processSectionDelay !== undefined) {
47948
- // MathJax 2.5+
47970
+ // MathJax 2.5+ but not 3+
47949
47971
  MathJax.Hub.processSectionDelay = 0;
47950
47972
  }
47951
47973
 
47952
47974
  return MathJax.Hub.Config({
47953
47975
  messageStyle: 'none',
47954
47976
  tex2jax: {
47955
- inlineMath: [['$', '$'], ['\\(', '\\)']]
47977
+ inlineMath: inlineMath
47956
47978
  },
47957
47979
  displayAlign: 'left',
47958
47980
  });
47959
- },
47960
- function() {
47961
- // Get original renderer
47981
+ };
47982
+
47983
+ var setConfig3 = function() {
47984
+ originalConfig = Lib.extendDeepAll({}, MathJax.config);
47985
+
47986
+ if(!MathJax.config.tex) {
47987
+ MathJax.config.tex = {};
47988
+ }
47989
+
47990
+ MathJax.config.tex.inlineMath = inlineMath;
47991
+ };
47992
+
47993
+ var setRenderer2 = function() {
47962
47994
  originalRenderer = MathJax.Hub.config.menuSettings.renderer;
47963
47995
  if(originalRenderer !== 'SVG') {
47964
47996
  return MathJax.Hub.setRenderer('SVG');
47965
47997
  }
47966
- },
47967
- function() {
47998
+ };
47999
+
48000
+ var setRenderer3 = function() {
48001
+ originalRenderer = MathJax.config.startup.output;
48002
+ if(originalRenderer !== 'svg') {
48003
+ MathJax.config.startup.output = 'svg';
48004
+ }
48005
+ };
48006
+
48007
+ var initiateMathJax = function() {
47968
48008
  var randomID = 'math-output-' + Lib.randstr({}, 64);
47969
48009
  tmpDiv = d3.select('body').append('div')
47970
48010
  .attr({id: randomID})
47971
- .style({visibility: 'hidden', position: 'absolute'})
47972
- .style({'font-size': _config.fontSize + 'px'})
48011
+ .style({
48012
+ visibility: 'hidden',
48013
+ position: 'absolute',
48014
+ 'font-size': _config.fontSize + 'px'
48015
+ })
47973
48016
  .text(cleanEscapesForTex(_texString));
47974
48017
 
47975
- return MathJax.Hub.Typeset(tmpDiv.node());
47976
- },
47977
- function() {
47978
- var glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
48018
+ var tmpNode = tmpDiv.node();
48019
+
48020
+ return MathJaxVersion === 2 ?
48021
+ MathJax.Hub.Typeset(tmpNode) :
48022
+ MathJax.typeset([tmpNode]);
48023
+ };
48024
+
48025
+ var finalizeMathJax = function() {
48026
+ var sel = tmpDiv.select(
48027
+ MathJaxVersion === 2 ? '.MathJax_SVG' : '.MathJax'
48028
+ );
47979
48029
 
47980
- if(tmpDiv.select('.MathJax_SVG').empty() || !tmpDiv.select('svg').node()) {
48030
+ var node = !sel.empty() && tmpDiv.select('svg').node();
48031
+ if(!node) {
47981
48032
  Lib.log('There was an error in the tex syntax.', _texString);
47982
48033
  _callback();
47983
48034
  } else {
47984
- var svgBBox = tmpDiv.select('svg').node().getBoundingClientRect();
47985
- _callback(tmpDiv.select('.MathJax_SVG'), glyphDefs, svgBBox);
48035
+ var nodeBBox = node.getBoundingClientRect();
48036
+ var glyphDefs;
48037
+ if(MathJaxVersion === 2) {
48038
+ glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
48039
+ } else {
48040
+ glyphDefs = sel.select('defs');
48041
+ }
48042
+ _callback(sel, glyphDefs, nodeBBox);
47986
48043
  }
47987
48044
 
47988
48045
  tmpDiv.remove();
48046
+ };
47989
48047
 
48048
+ var resetRenderer2 = function() {
47990
48049
  if(originalRenderer !== 'SVG') {
47991
48050
  return MathJax.Hub.setRenderer(originalRenderer);
47992
48051
  }
47993
- },
47994
- function() {
48052
+ };
48053
+
48054
+ var resetRenderer3 = function() {
48055
+ if(originalRenderer !== 'svg') {
48056
+ MathJax.config.startup.output = originalRenderer;
48057
+ }
48058
+ };
48059
+
48060
+ var resetConfig2 = function() {
47995
48061
  if(originalProcessSectionDelay !== undefined) {
47996
48062
  MathJax.Hub.processSectionDelay = originalProcessSectionDelay;
47997
48063
  }
47998
48064
  return MathJax.Hub.Config(originalConfig);
47999
- });
48065
+ };
48066
+
48067
+ var resetConfig3 = function() {
48068
+ MathJax.config = originalConfig;
48069
+ };
48070
+
48071
+ if(MathJaxVersion === 2) {
48072
+ MathJax.Hub.Queue(
48073
+ setConfig2,
48074
+ setRenderer2,
48075
+ initiateMathJax,
48076
+ finalizeMathJax,
48077
+ resetRenderer2,
48078
+ resetConfig2
48079
+ );
48080
+ } else if(MathJaxVersion === 3) {
48081
+ setConfig3();
48082
+ setRenderer3();
48083
+ MathJax.startup.defaultReady();
48084
+
48085
+ MathJax.startup.promise.then(function() {
48086
+ initiateMathJax();
48087
+ finalizeMathJax();
48088
+
48089
+ resetRenderer3();
48090
+ resetConfig3();
48091
+ });
48092
+ }
48000
48093
  }
48001
48094
 
48002
48095
  var TAG_STYLES = {
@@ -53816,6 +53909,11 @@ var configAttributes = {
53816
53909
  dflt: false,
53817
53910
  },
53818
53911
 
53912
+ typesetMath: {
53913
+ valType: 'boolean',
53914
+ dflt: true,
53915
+ },
53916
+
53819
53917
  plotlyServerURL: {
53820
53918
  valType: 'string',
53821
53919
  dflt: '',
@@ -76713,7 +76811,7 @@ module.exports = function toSVG(gd, format, scale) {
76713
76811
  var toppaper = fullLayout._toppaper;
76714
76812
  var width = fullLayout.width;
76715
76813
  var height = fullLayout.height;
76716
- var i, k;
76814
+ var i;
76717
76815
 
76718
76816
  // make background color a rect in the svg, then revert after scraping
76719
76817
  // all other alterations have been dealt with by properly preparing the svg
@@ -76786,32 +76884,21 @@ module.exports = function toSVG(gd, format, scale) {
76786
76884
  }
76787
76885
  });
76788
76886
 
76789
- var queryParts = [];
76790
- if(fullLayout._gradientUrlQueryParts) {
76791
- for(k in fullLayout._gradientUrlQueryParts) queryParts.push(k);
76792
- }
76793
-
76794
- if(fullLayout._patternUrlQueryParts) {
76795
- for(k in fullLayout._patternUrlQueryParts) queryParts.push(k);
76796
- }
76887
+ svg.selectAll('.gradient_filled,.pattern_filled').each(function() {
76888
+ var pt = d3.select(this);
76797
76889
 
76798
- if(queryParts.length) {
76799
- svg.selectAll(queryParts.join(',')).each(function() {
76800
- var pt = d3.select(this);
76801
-
76802
- // similar to font family styles above,
76803
- // we must remove " after the SVG DOM has been serialized
76804
- var fill = this.style.fill;
76805
- if(fill && fill.indexOf('url(') !== -1) {
76806
- pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
76807
- }
76890
+ // similar to font family styles above,
76891
+ // we must remove " after the SVG DOM has been serialized
76892
+ var fill = this.style.fill;
76893
+ if(fill && fill.indexOf('url(') !== -1) {
76894
+ pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
76895
+ }
76808
76896
 
76809
- var stroke = this.style.stroke;
76810
- if(stroke && stroke.indexOf('url(') !== -1) {
76811
- pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
76812
- }
76813
- });
76814
- }
76897
+ var stroke = this.style.stroke;
76898
+ if(stroke && stroke.indexOf('url(') !== -1) {
76899
+ pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
76900
+ }
76901
+ });
76815
76902
 
76816
76903
  if(format === 'pdf' || format === 'eps') {
76817
76904
  // these formats make the extra line MathJax adds around symbols look super thick in some cases
@@ -79453,6 +79540,7 @@ var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplat
79453
79540
  var colorScaleAttrs = _dereq_('../../components/colorscale/attributes');
79454
79541
  var fontAttrs = _dereq_('../../plots/font_attributes');
79455
79542
  var dash = _dereq_('../../components/drawing/attributes').dash;
79543
+ var pattern = _dereq_('../../components/drawing/attributes').pattern;
79456
79544
 
79457
79545
  var Drawing = _dereq_('../../components/drawing');
79458
79546
  var constants = _dereq_('./constants');
@@ -79640,6 +79728,7 @@ module.exports = {
79640
79728
  editType: 'style',
79641
79729
  anim: true,
79642
79730
  },
79731
+ fillpattern: pattern,
79643
79732
  marker: extendFlat({
79644
79733
  symbol: {
79645
79734
  valType: 'enumerated',
@@ -80376,6 +80465,7 @@ var handleLineDefaults = _dereq_('./line_defaults');
80376
80465
  var handleLineShapeDefaults = _dereq_('./line_shape_defaults');
80377
80466
  var handleTextDefaults = _dereq_('./text_defaults');
80378
80467
  var handleFillColorDefaults = _dereq_('./fillcolor_defaults');
80468
+ var coercePattern = _dereq_('../../lib').coercePattern;
80379
80469
 
80380
80470
  module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
80381
80471
  function coerce(attr, dflt) {
@@ -80429,6 +80519,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
80429
80519
  if(traceOut.fill !== 'none') {
80430
80520
  handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);
80431
80521
  if(!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);
80522
+ coercePattern(coerce, 'fillpattern', traceOut.fillcolor, false);
80432
80523
  }
80433
80524
 
80434
80525
  var lineColor = (traceOut.line || {}).color;
@@ -81811,11 +81902,11 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
81811
81902
  // the points on the axes are the first two points. Otherwise
81812
81903
  // animations get a little crazy if the number of points changes.
81813
81904
  transition(ownFillEl3).attr('d', 'M' + pt1 + 'L' + pt0 + 'L' + fullpath.substr(1))
81814
- .call(Drawing.singleFillStyle);
81905
+ .call(Drawing.singleFillStyle, gd);
81815
81906
  } else {
81816
81907
  // fill to self: just join the path to itself
81817
81908
  transition(ownFillEl3).attr('d', fullpath + 'Z')
81818
- .call(Drawing.singleFillStyle);
81909
+ .call(Drawing.singleFillStyle, gd);
81819
81910
  }
81820
81911
  }
81821
81912
  } else if(tonext) {
@@ -81827,7 +81918,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
81827
81918
  // This makes strange results if one path is *not* entirely
81828
81919
  // inside the other, but then that is a strange usage.
81829
81920
  transition(tonext).attr('d', fullpath + 'Z' + prevRevpath + 'Z')
81830
- .call(Drawing.singleFillStyle);
81921
+ .call(Drawing.singleFillStyle, gd);
81831
81922
  } else {
81832
81923
  // tonextx/y: for now just connect endpoints with lines. This is
81833
81924
  // the correct behavior if the endpoints are at the same value of
@@ -81835,7 +81926,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
81835
81926
  // things depending on whether the new endpoint projects onto the
81836
81927
  // existing curve or off the end of it
81837
81928
  transition(tonext).attr('d', fullpath + 'L' + prevRevpath.substr(1) + 'Z')
81838
- .call(Drawing.singleFillStyle);
81929
+ .call(Drawing.singleFillStyle, gd);
81839
81930
  }
81840
81931
  trace._polygons = trace._polygons.concat(prevPolygons);
81841
81932
  } else {
@@ -82228,7 +82319,7 @@ function style(gd) {
82228
82319
  .call(Drawing.lineGroupStyle);
82229
82320
 
82230
82321
  s.selectAll('g.trace path.js-fill')
82231
- .call(Drawing.fillGroupStyle);
82322
+ .call(Drawing.fillGroupStyle, gd);
82232
82323
 
82233
82324
  Registry.getComponentMethod('errorbars', 'style')(s);
82234
82325
  }
@@ -86351,7 +86442,7 @@ function getSortFunc(opts, d2c) {
86351
86442
  'use strict';
86352
86443
 
86353
86444
  // package version injected by `npm run preprocess`
86354
- exports.version = '2.9.0';
86445
+ exports.version = '2.11.0';
86355
86446
 
86356
86447
  },{}],435:[function(_dereq_,module,exports){
86357
86448
  (function (global){(function (){
@@ -121531,7 +121622,7 @@ var robustSum = _glvis_("robust-sum")
121531
121622
  var robustScale = _glvis_("robust-scale")
121532
121623
  var compress = _glvis_("robust-compress")
121533
121624
 
121534
- var NUM_EXPANDED = 4
121625
+ var NUM_EXPANDED = 6
121535
121626
 
121536
121627
  function determinant_2(sum, scale, prod, compress) {
121537
121628
  return function robustDeterminant2(m) {
@@ -121545,10 +121636,24 @@ function determinant_3(sum, scale, prod, compress) {
121545
121636
  }
121546
121637
  }
121547
121638
 
121639
+ function determinant_4(sum, scale, prod, compress) {
121640
+ return function robustDeterminant4(m) {
121641
+ return compress(sum(sum(scale(sum(scale(sum(prod(m[2][2], m[3][3]), prod(-m[2][3], m[3][2])), m[1][1]), sum(scale(sum(prod(m[2][1], m[3][3]), prod(-m[2][3], m[3][1])), -m[1][2]), scale(sum(prod(m[2][1], m[3][2]), prod(-m[2][2], m[3][1])), m[1][3]))), m[0][0]), scale(sum(scale(sum(prod(m[2][2], m[3][3]), prod(-m[2][3], m[3][2])), m[1][0]), sum(scale(sum(prod(m[2][0], m[3][3]), prod(-m[2][3], m[3][0])), -m[1][2]), scale(sum(prod(m[2][0], m[3][2]), prod(-m[2][2], m[3][0])), m[1][3]))), -m[0][1])), sum(scale(sum(scale(sum(prod(m[2][1], m[3][3]), prod(-m[2][3], m[3][1])), m[1][0]), sum(scale(sum(prod(m[2][0], m[3][3]), prod(-m[2][3], m[3][0])), -m[1][1]), scale(sum(prod(m[2][0], m[3][1]), prod(-m[2][1], m[3][0])), m[1][3]))), m[0][2]), scale(sum(scale(sum(prod(m[2][1], m[3][2]), prod(-m[2][2], m[3][1])), m[1][0]), sum(scale(sum(prod(m[2][0], m[3][2]), prod(-m[2][2], m[3][0])), -m[1][1]), scale(sum(prod(m[2][0], m[3][1]), prod(-m[2][1], m[3][0])), m[1][2]))), -m[0][3]))))
121642
+ }
121643
+ }
121644
+
121645
+ function determinant_5(sum, scale, prod, compress) {
121646
+ return function robustDeterminant5(m) {
121647
+ return compress(sum(sum(scale(sum(sum(scale(sum(scale(sum(prod(m[3][3], m[4][4]), prod(-m[3][4], m[4][3])), m[2][2]), sum(scale(sum(prod(m[3][2], m[4][4]), prod(-m[3][4], m[4][2])), -m[2][3]), scale(sum(prod(m[3][2], m[4][3]), prod(-m[3][3], m[4][2])), m[2][4]))), m[1][1]), scale(sum(scale(sum(prod(m[3][3], m[4][4]), prod(-m[3][4], m[4][3])), m[2][1]), sum(scale(sum(prod(m[3][1], m[4][4]), prod(-m[3][4], m[4][1])), -m[2][3]), scale(sum(prod(m[3][1], m[4][3]), prod(-m[3][3], m[4][1])), m[2][4]))), -m[1][2])), sum(scale(sum(scale(sum(prod(m[3][2], m[4][4]), prod(-m[3][4], m[4][2])), m[2][1]), sum(scale(sum(prod(m[3][1], m[4][4]), prod(-m[3][4], m[4][1])), -m[2][2]), scale(sum(prod(m[3][1], m[4][2]), prod(-m[3][2], m[4][1])), m[2][4]))), m[1][3]), scale(sum(scale(sum(prod(m[3][2], m[4][3]), prod(-m[3][3], m[4][2])), m[2][1]), sum(scale(sum(prod(m[3][1], m[4][3]), prod(-m[3][3], m[4][1])), -m[2][2]), scale(sum(prod(m[3][1], m[4][2]), prod(-m[3][2], m[4][1])), m[2][3]))), -m[1][4]))), m[0][0]), scale(sum(sum(scale(sum(scale(sum(prod(m[3][3], m[4][4]), prod(-m[3][4], m[4][3])), m[2][2]), sum(scale(sum(prod(m[3][2], m[4][4]), prod(-m[3][4], m[4][2])), -m[2][3]), scale(sum(prod(m[3][2], m[4][3]), prod(-m[3][3], m[4][2])), m[2][4]))), m[1][0]), scale(sum(scale(sum(prod(m[3][3], m[4][4]), prod(-m[3][4], m[4][3])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][4]), prod(-m[3][4], m[4][0])), -m[2][3]), scale(sum(prod(m[3][0], m[4][3]), prod(-m[3][3], m[4][0])), m[2][4]))), -m[1][2])), sum(scale(sum(scale(sum(prod(m[3][2], m[4][4]), prod(-m[3][4], m[4][2])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][4]), prod(-m[3][4], m[4][0])), -m[2][2]), scale(sum(prod(m[3][0], m[4][2]), prod(-m[3][2], m[4][0])), m[2][4]))), m[1][3]), scale(sum(scale(sum(prod(m[3][2], m[4][3]), prod(-m[3][3], m[4][2])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][3]), prod(-m[3][3], m[4][0])), -m[2][2]), scale(sum(prod(m[3][0], m[4][2]), prod(-m[3][2], m[4][0])), m[2][3]))), -m[1][4]))), -m[0][1])), sum(scale(sum(sum(scale(sum(scale(sum(prod(m[3][3], m[4][4]), prod(-m[3][4], m[4][3])), m[2][1]), sum(scale(sum(prod(m[3][1], m[4][4]), prod(-m[3][4], m[4][1])), -m[2][3]), scale(sum(prod(m[3][1], m[4][3]), prod(-m[3][3], m[4][1])), m[2][4]))), m[1][0]), scale(sum(scale(sum(prod(m[3][3], m[4][4]), prod(-m[3][4], m[4][3])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][4]), prod(-m[3][4], m[4][0])), -m[2][3]), scale(sum(prod(m[3][0], m[4][3]), prod(-m[3][3], m[4][0])), m[2][4]))), -m[1][1])), sum(scale(sum(scale(sum(prod(m[3][1], m[4][4]), prod(-m[3][4], m[4][1])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][4]), prod(-m[3][4], m[4][0])), -m[2][1]), scale(sum(prod(m[3][0], m[4][1]), prod(-m[3][1], m[4][0])), m[2][4]))), m[1][3]), scale(sum(scale(sum(prod(m[3][1], m[4][3]), prod(-m[3][3], m[4][1])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][3]), prod(-m[3][3], m[4][0])), -m[2][1]), scale(sum(prod(m[3][0], m[4][1]), prod(-m[3][1], m[4][0])), m[2][3]))), -m[1][4]))), m[0][2]), sum(scale(sum(sum(scale(sum(scale(sum(prod(m[3][2], m[4][4]), prod(-m[3][4], m[4][2])), m[2][1]), sum(scale(sum(prod(m[3][1], m[4][4]), prod(-m[3][4], m[4][1])), -m[2][2]), scale(sum(prod(m[3][1], m[4][2]), prod(-m[3][2], m[4][1])), m[2][4]))), m[1][0]), scale(sum(scale(sum(prod(m[3][2], m[4][4]), prod(-m[3][4], m[4][2])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][4]), prod(-m[3][4], m[4][0])), -m[2][2]), scale(sum(prod(m[3][0], m[4][2]), prod(-m[3][2], m[4][0])), m[2][4]))), -m[1][1])), sum(scale(sum(scale(sum(prod(m[3][1], m[4][4]), prod(-m[3][4], m[4][1])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][4]), prod(-m[3][4], m[4][0])), -m[2][1]), scale(sum(prod(m[3][0], m[4][1]), prod(-m[3][1], m[4][0])), m[2][4]))), m[1][2]), scale(sum(scale(sum(prod(m[3][1], m[4][2]), prod(-m[3][2], m[4][1])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][2]), prod(-m[3][2], m[4][0])), -m[2][1]), scale(sum(prod(m[3][0], m[4][1]), prod(-m[3][1], m[4][0])), m[2][2]))), -m[1][4]))), -m[0][3]), scale(sum(sum(scale(sum(scale(sum(prod(m[3][2], m[4][3]), prod(-m[3][3], m[4][2])), m[2][1]), sum(scale(sum(prod(m[3][1], m[4][3]), prod(-m[3][3], m[4][1])), -m[2][2]), scale(sum(prod(m[3][1], m[4][2]), prod(-m[3][2], m[4][1])), m[2][3]))), m[1][0]), scale(sum(scale(sum(prod(m[3][2], m[4][3]), prod(-m[3][3], m[4][2])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][3]), prod(-m[3][3], m[4][0])), -m[2][2]), scale(sum(prod(m[3][0], m[4][2]), prod(-m[3][2], m[4][0])), m[2][3]))), -m[1][1])), sum(scale(sum(scale(sum(prod(m[3][1], m[4][3]), prod(-m[3][3], m[4][1])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][3]), prod(-m[3][3], m[4][0])), -m[2][1]), scale(sum(prod(m[3][0], m[4][1]), prod(-m[3][1], m[4][0])), m[2][3]))), m[1][2]), scale(sum(scale(sum(prod(m[3][1], m[4][2]), prod(-m[3][2], m[4][1])), m[2][0]), sum(scale(sum(prod(m[3][0], m[4][2]), prod(-m[3][2], m[4][0])), -m[2][1]), scale(sum(prod(m[3][0], m[4][1]), prod(-m[3][1], m[4][0])), m[2][2]))), -m[1][3]))), m[0][4])))))
121648
+ }
121649
+ }
121650
+
121548
121651
  function compileDeterminant(n) {
121549
121652
  var fn =
121550
121653
  n === 2 ? determinant_2 :
121551
- n === 3 ? determinant_3 : undefined
121654
+ n === 3 ? determinant_3 :
121655
+ n === 4 ? determinant_4 :
121656
+ n === 5 ? determinant_5 : undefined
121552
121657
  return fn(robustSum, robustScale, twoProduct, compress)
121553
121658
  }
121554
121659
 
@@ -121557,7 +121662,7 @@ var CACHE = [
121557
121662
  function robustDeterminant1(m) { return [m[0][0]] }
121558
121663
  ]
121559
121664
 
121560
- function proc(det0, det1, det2, det3, CACHE, gen) {
121665
+ function proc(det0, det1, det2, det3, det4, det5, CACHE, gen) {
121561
121666
  return function robustDeterminant(m) {
121562
121667
  switch (m.length) {
121563
121668
  case 0:
@@ -121568,6 +121673,10 @@ function proc(det0, det1, det2, det3, CACHE, gen) {
121568
121673
  return det2(m)
121569
121674
  case 3:
121570
121675
  return det3(m)
121676
+ case 4:
121677
+ return det4(m)
121678
+ case 5:
121679
+ return det5(m)
121571
121680
  }
121572
121681
  var det = CACHE[m.length]
121573
121682
  if (!det) det = CACHE[m.length] = gen(m.length)
@@ -121811,13 +121920,16 @@ generateInSphereTest()
121811
121920
 
121812
121921
  var determinant = _glvis_("robust-determinant")
121813
121922
 
121814
- var NUM_EXPAND = 3
121923
+ var NUM_EXPAND = 6
121815
121924
 
121816
121925
  function generateSolver(n) {
121817
121926
  var fn =
121818
- n === 2 ? solve2d : solve3d
121927
+ n === 2 ? solve2d :
121928
+ n === 3 ? solve3d :
121929
+ n === 4 ? solve4d :
121930
+ n === 5 ? solve5d : solve6d
121819
121931
 
121820
- if(n < NUM_EXPAND) {
121932
+ if(n < 6) {
121821
121933
  return fn(determinant[n])
121822
121934
  }
121823
121935
  return fn(determinant)
@@ -121843,18 +121955,38 @@ function solve3d(det) {
121843
121955
  }
121844
121956
  }
121845
121957
 
121958
+ function solve4d(det) {
121959
+ return function robustLinearSolve4d(A, b) {
121960
+ return [det([[+b[0], +A[0][1], +A[0][2], +A[0][3]], [+b[1], +A[1][1], +A[1][2], +A[1][3]], [+b[2], +A[2][1], +A[2][2], +A[2][3]], [+b[3], +A[3][1], +A[3][2], +A[3][3]]]), det([[+A[0][0], +b[0], +A[0][2], +A[0][3]], [+A[1][0], +b[1], +A[1][2], +A[1][3]], [+A[2][0], +b[2], +A[2][2], +A[2][3]], [+A[3][0], +b[3], +A[3][2], +A[3][3]]]), det([[+A[0][0], +A[0][1], +b[0], +A[0][3]], [+A[1][0], +A[1][1], +b[1], +A[1][3]], [+A[2][0], +A[2][1], +b[2], +A[2][3]], [+A[3][0], +A[3][1], +b[3], +A[3][3]]]), det([[+A[0][0], +A[0][1], +A[0][2], +b[0]], [+A[1][0], +A[1][1], +A[1][2], +b[1]], [+A[2][0], +A[2][1], +A[2][2], +b[2]], [+A[3][0], +A[3][1], +A[3][2], +b[3]]]), det(A)]
121961
+ }
121962
+ }
121963
+
121964
+ function solve5d(det) {
121965
+ return function robustLinearSolve5d(A, b) {
121966
+ return [det([[+b[0], +A[0][1], +A[0][2], +A[0][3], +A[0][4]], [+b[1], +A[1][1], +A[1][2], +A[1][3], +A[1][4]], [+b[2], +A[2][1], +A[2][2], +A[2][3], +A[2][4]], [+b[3], +A[3][1], +A[3][2], +A[3][3], +A[3][4]], [+b[4], +A[4][1], +A[4][2], +A[4][3], +A[4][4]]]), det([[+A[0][0], +b[0], +A[0][2], +A[0][3], +A[0][4]], [+A[1][0], +b[1], +A[1][2], +A[1][3], +A[1][4]], [+A[2][0], +b[2], +A[2][2], +A[2][3], +A[2][4]], [+A[3][0], +b[3], +A[3][2], +A[3][3], +A[3][4]], [+A[4][0], +b[4], +A[4][2], +A[4][3], +A[4][4]]]), det([[+A[0][0], +A[0][1], +b[0], +A[0][3], +A[0][4]], [+A[1][0], +A[1][1], +b[1], +A[1][3], +A[1][4]], [+A[2][0], +A[2][1], +b[2], +A[2][3], +A[2][4]], [+A[3][0], +A[3][1], +b[3], +A[3][3], +A[3][4]], [+A[4][0], +A[4][1], +b[4], +A[4][3], +A[4][4]]]), det([[+A[0][0], +A[0][1], +A[0][2], +b[0], +A[0][4]], [+A[1][0], +A[1][1], +A[1][2], +b[1], +A[1][4]], [+A[2][0], +A[2][1], +A[2][2], +b[2], +A[2][4]], [+A[3][0], +A[3][1], +A[3][2], +b[3], +A[3][4]], [+A[4][0], +A[4][1], +A[4][2], +b[4], +A[4][4]]]), det([[+A[0][0], +A[0][1], +A[0][2], +A[0][3], +b[0]], [+A[1][0], +A[1][1], +A[1][2], +A[1][3], +b[1]], [+A[2][0], +A[2][1], +A[2][2], +A[2][3], +b[2]], [+A[3][0], +A[3][1], +A[3][2], +A[3][3], +b[3]], [+A[4][0], +A[4][1], +A[4][2], +A[4][3], +b[4]]]), det(A)]
121967
+ }
121968
+ }
121969
+
121970
+ function solve6d(det) {
121971
+ return function robustLinearSolve6d(A, b) {
121972
+ return [det([[+b[0], +A[0][1], +A[0][2], +A[0][3], +A[0][4], +A[0][5]], [+b[1], +A[1][1], +A[1][2], +A[1][3], +A[1][4], +A[1][5]], [+b[2], +A[2][1], +A[2][2], +A[2][3], +A[2][4], +A[2][5]], [+b[3], +A[3][1], +A[3][2], +A[3][3], +A[3][4], +A[3][5]], [+b[4], +A[4][1], +A[4][2], +A[4][3], +A[4][4], +A[4][5]], [+b[5], +A[5][1], +A[5][2], +A[5][3], +A[5][4], +A[5][5]]]), det([[+A[0][0], +b[0], +A[0][2], +A[0][3], +A[0][4], +A[0][5]], [+A[1][0], +b[1], +A[1][2], +A[1][3], +A[1][4], +A[1][5]], [+A[2][0], +b[2], +A[2][2], +A[2][3], +A[2][4], +A[2][5]], [+A[3][0], +b[3], +A[3][2], +A[3][3], +A[3][4], +A[3][5]], [+A[4][0], +b[4], +A[4][2], +A[4][3], +A[4][4], +A[4][5]], [+A[5][0], +b[5], +A[5][2], +A[5][3], +A[5][4], +A[5][5]]]), det([[+A[0][0], +A[0][1], +b[0], +A[0][3], +A[0][4], +A[0][5]], [+A[1][0], +A[1][1], +b[1], +A[1][3], +A[1][4], +A[1][5]], [+A[2][0], +A[2][1], +b[2], +A[2][3], +A[2][4], +A[2][5]], [+A[3][0], +A[3][1], +b[3], +A[3][3], +A[3][4], +A[3][5]], [+A[4][0], +A[4][1], +b[4], +A[4][3], +A[4][4], +A[4][5]], [+A[5][0], +A[5][1], +b[5], +A[5][3], +A[5][4], +A[5][5]]]), det([[+A[0][0], +A[0][1], +A[0][2], +b[0], +A[0][4], +A[0][5]], [+A[1][0], +A[1][1], +A[1][2], +b[1], +A[1][4], +A[1][5]], [+A[2][0], +A[2][1], +A[2][2], +b[2], +A[2][4], +A[2][5]], [+A[3][0], +A[3][1], +A[3][2], +b[3], +A[3][4], +A[3][5]], [+A[4][0], +A[4][1], +A[4][2], +b[4], +A[4][4], +A[4][5]], [+A[5][0], +A[5][1], +A[5][2], +b[5], +A[5][4], +A[5][5]]]), det([[+A[0][0], +A[0][1], +A[0][2], +A[0][3], +b[0], +A[0][5]], [+A[1][0], +A[1][1], +A[1][2], +A[1][3], +b[1], +A[1][5]], [+A[2][0], +A[2][1], +A[2][2], +A[2][3], +b[2], +A[2][5]], [+A[3][0], +A[3][1], +A[3][2], +A[3][3], +b[3], +A[3][5]], [+A[4][0], +A[4][1], +A[4][2], +A[4][3], +b[4], +A[4][5]], [+A[5][0], +A[5][1], +A[5][2], +A[5][3], +b[5], +A[5][5]]]), det([[+A[0][0], +A[0][1], +A[0][2], +A[0][3], +A[0][4], +b[0]], [+A[1][0], +A[1][1], +A[1][2], +A[1][3], +A[1][4], +b[1]], [+A[2][0], +A[2][1], +A[2][2], +A[2][3], +A[2][4], +b[2]], [+A[3][0], +A[3][1], +A[3][2], +A[3][3], +A[3][4], +b[3]], [+A[4][0], +A[4][1], +A[4][2], +A[4][3], +A[4][4], +b[4]], [+A[5][0], +A[5][1], +A[5][2], +A[5][3], +A[5][4], +b[5]]]), det(A)]
121973
+ }
121974
+ }
121975
+
121846
121976
  var CACHE = [
121847
121977
  robustLinearSolve0d,
121848
121978
  robustLinearSolve1d
121849
121979
  ]
121850
121980
 
121851
- function proc(s0, s1, s2, s3, CACHE, g) {
121981
+ function proc(s0, s1, s2, s3, s4, s5, CACHE, g) {
121852
121982
  return function dispatchLinearSolve(A, b) {
121853
121983
  switch (A.length) {
121854
121984
  case 0: return s0(A, b);
121855
121985
  case 1: return s1(A, b);
121856
121986
  case 2: return s2(A, b);
121857
121987
  case 3: return s3(A, b);
121988
+ case 4: return s4(A, b);
121989
+ case 5: return s5(A, b);
121858
121990
  }
121859
121991
  var s = CACHE[A.length];
121860
121992
  if (!s) s = CACHE[A.length] = g(A.length);
@@ -121863,7 +121995,7 @@ function proc(s0, s1, s2, s3, CACHE, g) {
121863
121995
  }
121864
121996
 
121865
121997
  function generateDispatch() {
121866
- while(CACHE.length <= NUM_EXPAND) {
121998
+ while(CACHE.length < NUM_EXPAND) {
121867
121999
  CACHE.push(generateSolver(CACHE.length))
121868
122000
  }
121869
122001
  module.exports = proc.apply(undefined, CACHE.concat([CACHE, generateSolver]))