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 v2.9.0
2
+ * plotly.js v2.11.0
3
3
  * Copyright 2012-2022, Plotly, Inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the MIT license
@@ -68,7 +68,7 @@ exports.topojson = saneTopojson;
68
68
  'use strict';
69
69
 
70
70
  // package version injected by `npm run preprocess`
71
- exports.version = '2.9.0';
71
+ exports.version = '2.11.0';
72
72
 
73
73
  },{}]},{},[16])(16)
74
74
  });
@@ -1,5 +1,5 @@
1
1
  /**
2
- * plotly.js (geo) v2.9.0
2
+ * plotly.js (geo) v2.11.0
3
3
  * Copyright 2012-2022, Plotly, Inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the MIT license
@@ -38243,24 +38243,42 @@ drawing.dashStyle = function(dash, lineWidth) {
38243
38243
  return dash;
38244
38244
  };
38245
38245
 
38246
+ function setFillStyle(sel, trace, gd) {
38247
+ var markerPattern = trace.fillpattern;
38248
+ var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, 0, '');
38249
+ if(patternShape) {
38250
+ var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, 0, null);
38251
+ var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, 0, null);
38252
+ var patternFGOpacity = markerPattern.fgopacity;
38253
+ var patternSize = drawing.getPatternAttr(markerPattern.size, 0, 8);
38254
+ var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, 0, 0.3);
38255
+ var patternID = trace.uid;
38256
+ drawing.pattern(sel, 'point', gd, patternID,
38257
+ patternShape, patternSize, patternSolidity,
38258
+ undefined, markerPattern.fillmode,
38259
+ patternBGColor, patternFGColor, patternFGOpacity
38260
+ );
38261
+ } else if(trace.fillcolor) {
38262
+ sel.call(Color.fill, trace.fillcolor);
38263
+ }
38264
+ }
38265
+
38246
38266
  // Same as fillGroupStyle, except in this case the selection may be a transition
38247
- drawing.singleFillStyle = function(sel) {
38267
+ drawing.singleFillStyle = function(sel, gd) {
38248
38268
  var node = d3.select(sel.node());
38249
38269
  var data = node.data();
38250
- var fillcolor = (((data[0] || [])[0] || {}).trace || {}).fillcolor;
38251
- if(fillcolor) {
38252
- sel.call(Color.fill, fillcolor);
38253
- }
38270
+ var trace = ((data[0] || [])[0] || {}).trace || {};
38271
+ setFillStyle(sel, trace, gd);
38254
38272
  };
38255
38273
 
38256
- drawing.fillGroupStyle = function(s) {
38274
+ drawing.fillGroupStyle = function(s, gd) {
38257
38275
  s.style('stroke-width', 0)
38258
38276
  .each(function(d) {
38259
38277
  var shape = d3.select(this);
38260
38278
  // N.B. 'd' won't be a calcdata item when
38261
38279
  // fill !== 'none' on a segment-less and marker-less trace
38262
38280
  if(d[0].trace) {
38263
- shape.call(Color.fill, d[0].trace.fillcolor);
38281
+ setFillStyle(shape, d[0].trace, gd);
38264
38282
  }
38265
38283
  });
38266
38284
  };
@@ -38413,12 +38431,7 @@ drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) {
38413
38431
  sel.style(prop, getFullUrl(fullID, gd))
38414
38432
  .style(prop + '-opacity', null);
38415
38433
 
38416
- var className2query = function(s) {
38417
- return '.' + s.attr('class').replace(/\s/g, '.');
38418
- };
38419
- var k = className2query(d3.select(sel.node().parentNode)) +
38420
- '>' + className2query(sel);
38421
- fullLayout._gradientUrlQueryParts[k] = 1;
38434
+ sel.classed('gradient_filled', true);
38422
38435
  };
38423
38436
 
38424
38437
  /**
@@ -38625,11 +38638,6 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
38625
38638
  .style('fill-opacity', null);
38626
38639
 
38627
38640
  sel.classed('pattern_filled', true);
38628
- var className2query = function(s) {
38629
- return '.' + s.attr('class').replace(/\s/g, '.');
38630
- };
38631
- var k = className2query(d3.select(sel.node().parentNode)) + '>.pattern_filled';
38632
- fullLayout._patternUrlQueryParts[k] = 1;
38633
38641
  };
38634
38642
 
38635
38643
  /*
@@ -38645,9 +38653,7 @@ drawing.initGradients = function(gd) {
38645
38653
  var gradientsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'gradients');
38646
38654
  gradientsGroup.selectAll('linearGradient,radialGradient').remove();
38647
38655
 
38648
- // initialize stash of query parts filled in Drawing.gradient,
38649
- // used to fix URL strings during image exports
38650
- fullLayout._gradientUrlQueryParts = {};
38656
+ d3.select(gd).selectAll('.gradient_filled').classed('gradient_filled', false);
38651
38657
  };
38652
38658
 
38653
38659
  drawing.initPatterns = function(gd) {
@@ -38656,9 +38662,7 @@ drawing.initPatterns = function(gd) {
38656
38662
  var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns');
38657
38663
  patternsGroup.selectAll('pattern').remove();
38658
38664
 
38659
- // initialize stash of query parts filled in Drawing.pattern,
38660
- // used to fix URL strings during image exports
38661
- fullLayout._patternUrlQueryParts = {};
38665
+ d3.select(gd).selectAll('.pattern_filled').classed('pattern_filled', false);
38662
38666
  };
38663
38667
 
38664
38668
  drawing.getPatternAttr = function(mp, i, dflt) {
@@ -45995,12 +45999,16 @@ module.exports = function style(s, gd, legend) {
45995
45999
  var colorscale = cOpts.colorscale;
45996
46000
  var reversescale = cOpts.reversescale;
45997
46001
 
45998
- var fillGradient = function(s) {
46002
+ var fillStyle = function(s) {
45999
46003
  if(s.size()) {
46000
- var gradientID = 'legendfill-' + trace.uid;
46001
- Drawing.gradient(s, gd, gradientID,
46002
- getGradientDirection(reversescale),
46003
- colorscale, 'fill');
46004
+ if(showFill) {
46005
+ Drawing.fillGroupStyle(s, gd);
46006
+ } else {
46007
+ var gradientID = 'legendfill-' + trace.uid;
46008
+ Drawing.gradient(s, gd, gradientID,
46009
+ getGradientDirection(reversescale),
46010
+ colorscale, 'fill');
46011
+ }
46004
46012
  }
46005
46013
  };
46006
46014
 
@@ -46029,7 +46037,7 @@ module.exports = function style(s, gd, legend) {
46029
46037
  fill.enter().append('path').classed('js-fill', true);
46030
46038
  fill.exit().remove();
46031
46039
  fill.attr('d', pathStart + 'h' + itemWidth + 'v6h-' + itemWidth + 'z')
46032
- .call(showFill ? Drawing.fillGroupStyle : fillGradient);
46040
+ .call(fillStyle);
46033
46041
 
46034
46042
  if(showLine || showGradientLine) {
46035
46043
  var lw = boundLineWidth(undefined, trace.line, MAX_LINE_WIDTH, CST_LINE_WIDTH);
@@ -61141,6 +61149,7 @@ exports.convertToTspans = function(_context, gd, _callback) {
61141
61149
  // Until we get tex integrated more fully (so it can be used along with non-tex)
61142
61150
  // allow some elements to prohibit it by attaching 'data-notex' to the original
61143
61151
  var tex = (!_context.attr('data-notex')) &&
61152
+ gd && gd._context.typesetMath &&
61144
61153
  (typeof MathJax !== 'undefined') &&
61145
61154
  str.match(FIND_TEX);
61146
61155
 
@@ -61295,70 +61304,154 @@ function cleanEscapesForTex(s) {
61295
61304
  .replace(GT_MATCH, '\\gt ');
61296
61305
  }
61297
61306
 
61307
+ var inlineMath = [['$', '$'], ['\\(', '\\)']];
61308
+
61298
61309
  function texToSVG(_texString, _config, _callback) {
61310
+ var MathJaxVersion = parseInt(
61311
+ (MathJax.version || '').split('.')[0]
61312
+ );
61313
+
61314
+ if(
61315
+ MathJaxVersion !== 2 &&
61316
+ MathJaxVersion !== 3
61317
+ ) {
61318
+ Lib.warn('No MathJax version:', MathJax.version);
61319
+ return;
61320
+ }
61321
+
61299
61322
  var originalRenderer,
61300
61323
  originalConfig,
61301
61324
  originalProcessSectionDelay,
61302
61325
  tmpDiv;
61303
61326
 
61304
- MathJax.Hub.Queue(
61305
- function() {
61327
+ var setConfig2 = function() {
61306
61328
  originalConfig = Lib.extendDeepAll({}, MathJax.Hub.config);
61307
61329
 
61308
61330
  originalProcessSectionDelay = MathJax.Hub.processSectionDelay;
61309
61331
  if(MathJax.Hub.processSectionDelay !== undefined) {
61310
- // MathJax 2.5+
61332
+ // MathJax 2.5+ but not 3+
61311
61333
  MathJax.Hub.processSectionDelay = 0;
61312
61334
  }
61313
61335
 
61314
61336
  return MathJax.Hub.Config({
61315
61337
  messageStyle: 'none',
61316
61338
  tex2jax: {
61317
- inlineMath: [['$', '$'], ['\\(', '\\)']]
61339
+ inlineMath: inlineMath
61318
61340
  },
61319
61341
  displayAlign: 'left',
61320
61342
  });
61321
- },
61322
- function() {
61323
- // Get original renderer
61343
+ };
61344
+
61345
+ var setConfig3 = function() {
61346
+ originalConfig = Lib.extendDeepAll({}, MathJax.config);
61347
+
61348
+ if(!MathJax.config.tex) {
61349
+ MathJax.config.tex = {};
61350
+ }
61351
+
61352
+ MathJax.config.tex.inlineMath = inlineMath;
61353
+ };
61354
+
61355
+ var setRenderer2 = function() {
61324
61356
  originalRenderer = MathJax.Hub.config.menuSettings.renderer;
61325
61357
  if(originalRenderer !== 'SVG') {
61326
61358
  return MathJax.Hub.setRenderer('SVG');
61327
61359
  }
61328
- },
61329
- function() {
61360
+ };
61361
+
61362
+ var setRenderer3 = function() {
61363
+ originalRenderer = MathJax.config.startup.output;
61364
+ if(originalRenderer !== 'svg') {
61365
+ MathJax.config.startup.output = 'svg';
61366
+ }
61367
+ };
61368
+
61369
+ var initiateMathJax = function() {
61330
61370
  var randomID = 'math-output-' + Lib.randstr({}, 64);
61331
61371
  tmpDiv = d3.select('body').append('div')
61332
61372
  .attr({id: randomID})
61333
- .style({visibility: 'hidden', position: 'absolute'})
61334
- .style({'font-size': _config.fontSize + 'px'})
61373
+ .style({
61374
+ visibility: 'hidden',
61375
+ position: 'absolute',
61376
+ 'font-size': _config.fontSize + 'px'
61377
+ })
61335
61378
  .text(cleanEscapesForTex(_texString));
61336
61379
 
61337
- return MathJax.Hub.Typeset(tmpDiv.node());
61338
- },
61339
- function() {
61340
- var glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
61380
+ var tmpNode = tmpDiv.node();
61341
61381
 
61342
- if(tmpDiv.select('.MathJax_SVG').empty() || !tmpDiv.select('svg').node()) {
61382
+ return MathJaxVersion === 2 ?
61383
+ MathJax.Hub.Typeset(tmpNode) :
61384
+ MathJax.typeset([tmpNode]);
61385
+ };
61386
+
61387
+ var finalizeMathJax = function() {
61388
+ var sel = tmpDiv.select(
61389
+ MathJaxVersion === 2 ? '.MathJax_SVG' : '.MathJax'
61390
+ );
61391
+
61392
+ var node = !sel.empty() && tmpDiv.select('svg').node();
61393
+ if(!node) {
61343
61394
  Lib.log('There was an error in the tex syntax.', _texString);
61344
61395
  _callback();
61345
61396
  } else {
61346
- var svgBBox = tmpDiv.select('svg').node().getBoundingClientRect();
61347
- _callback(tmpDiv.select('.MathJax_SVG'), glyphDefs, svgBBox);
61397
+ var nodeBBox = node.getBoundingClientRect();
61398
+ var glyphDefs;
61399
+ if(MathJaxVersion === 2) {
61400
+ glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
61401
+ } else {
61402
+ glyphDefs = sel.select('defs');
61403
+ }
61404
+ _callback(sel, glyphDefs, nodeBBox);
61348
61405
  }
61349
61406
 
61350
61407
  tmpDiv.remove();
61408
+ };
61351
61409
 
61410
+ var resetRenderer2 = function() {
61352
61411
  if(originalRenderer !== 'SVG') {
61353
61412
  return MathJax.Hub.setRenderer(originalRenderer);
61354
61413
  }
61355
- },
61356
- function() {
61414
+ };
61415
+
61416
+ var resetRenderer3 = function() {
61417
+ if(originalRenderer !== 'svg') {
61418
+ MathJax.config.startup.output = originalRenderer;
61419
+ }
61420
+ };
61421
+
61422
+ var resetConfig2 = function() {
61357
61423
  if(originalProcessSectionDelay !== undefined) {
61358
61424
  MathJax.Hub.processSectionDelay = originalProcessSectionDelay;
61359
61425
  }
61360
61426
  return MathJax.Hub.Config(originalConfig);
61361
- });
61427
+ };
61428
+
61429
+ var resetConfig3 = function() {
61430
+ MathJax.config = originalConfig;
61431
+ };
61432
+
61433
+ if(MathJaxVersion === 2) {
61434
+ MathJax.Hub.Queue(
61435
+ setConfig2,
61436
+ setRenderer2,
61437
+ initiateMathJax,
61438
+ finalizeMathJax,
61439
+ resetRenderer2,
61440
+ resetConfig2
61441
+ );
61442
+ } else if(MathJaxVersion === 3) {
61443
+ setConfig3();
61444
+ setRenderer3();
61445
+ MathJax.startup.defaultReady();
61446
+
61447
+ MathJax.startup.promise.then(function() {
61448
+ initiateMathJax();
61449
+ finalizeMathJax();
61450
+
61451
+ resetRenderer3();
61452
+ resetConfig3();
61453
+ });
61454
+ }
61362
61455
  }
61363
61456
 
61364
61457
  var TAG_STYLES = {
@@ -67204,6 +67297,11 @@ var configAttributes = {
67204
67297
  dflt: false,
67205
67298
  },
67206
67299
 
67300
+ typesetMath: {
67301
+ valType: 'boolean',
67302
+ dflt: true,
67303
+ },
67304
+
67207
67305
  plotlyServerURL: {
67208
67306
  valType: 'string',
67209
67307
  dflt: '',
@@ -90134,7 +90232,7 @@ module.exports = function toSVG(gd, format, scale) {
90134
90232
  var toppaper = fullLayout._toppaper;
90135
90233
  var width = fullLayout.width;
90136
90234
  var height = fullLayout.height;
90137
- var i, k;
90235
+ var i;
90138
90236
 
90139
90237
  // make background color a rect in the svg, then revert after scraping
90140
90238
  // all other alterations have been dealt with by properly preparing the svg
@@ -90207,32 +90305,21 @@ module.exports = function toSVG(gd, format, scale) {
90207
90305
  }
90208
90306
  });
90209
90307
 
90210
- var queryParts = [];
90211
- if(fullLayout._gradientUrlQueryParts) {
90212
- for(k in fullLayout._gradientUrlQueryParts) queryParts.push(k);
90213
- }
90214
-
90215
- if(fullLayout._patternUrlQueryParts) {
90216
- for(k in fullLayout._patternUrlQueryParts) queryParts.push(k);
90217
- }
90218
-
90219
- if(queryParts.length) {
90220
- svg.selectAll(queryParts.join(',')).each(function() {
90221
- var pt = d3.select(this);
90308
+ svg.selectAll('.gradient_filled,.pattern_filled').each(function() {
90309
+ var pt = d3.select(this);
90222
90310
 
90223
- // similar to font family styles above,
90224
- // we must remove " after the SVG DOM has been serialized
90225
- var fill = this.style.fill;
90226
- if(fill && fill.indexOf('url(') !== -1) {
90227
- pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
90228
- }
90311
+ // similar to font family styles above,
90312
+ // we must remove " after the SVG DOM has been serialized
90313
+ var fill = this.style.fill;
90314
+ if(fill && fill.indexOf('url(') !== -1) {
90315
+ pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
90316
+ }
90229
90317
 
90230
- var stroke = this.style.stroke;
90231
- if(stroke && stroke.indexOf('url(') !== -1) {
90232
- pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
90233
- }
90234
- });
90235
- }
90318
+ var stroke = this.style.stroke;
90319
+ if(stroke && stroke.indexOf('url(') !== -1) {
90320
+ pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
90321
+ }
90322
+ });
90236
90323
 
90237
90324
  if(format === 'pdf' || format === 'eps') {
90238
90325
  // these formats make the extra line MathJax adds around symbols look super thick in some cases
@@ -90874,6 +90961,7 @@ var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplat
90874
90961
  var colorScaleAttrs = _dereq_('../../components/colorscale/attributes');
90875
90962
  var fontAttrs = _dereq_('../../plots/font_attributes');
90876
90963
  var dash = _dereq_('../../components/drawing/attributes').dash;
90964
+ var pattern = _dereq_('../../components/drawing/attributes').pattern;
90877
90965
 
90878
90966
  var Drawing = _dereq_('../../components/drawing');
90879
90967
  var constants = _dereq_('./constants');
@@ -91061,6 +91149,7 @@ module.exports = {
91061
91149
  editType: 'style',
91062
91150
  anim: true,
91063
91151
  },
91152
+ fillpattern: pattern,
91064
91153
  marker: extendFlat({
91065
91154
  symbol: {
91066
91155
  valType: 'enumerated',
@@ -91797,6 +91886,7 @@ var handleLineDefaults = _dereq_('./line_defaults');
91797
91886
  var handleLineShapeDefaults = _dereq_('./line_shape_defaults');
91798
91887
  var handleTextDefaults = _dereq_('./text_defaults');
91799
91888
  var handleFillColorDefaults = _dereq_('./fillcolor_defaults');
91889
+ var coercePattern = _dereq_('../../lib').coercePattern;
91800
91890
 
91801
91891
  module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
91802
91892
  function coerce(attr, dflt) {
@@ -91850,6 +91940,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
91850
91940
  if(traceOut.fill !== 'none') {
91851
91941
  handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);
91852
91942
  if(!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);
91943
+ coercePattern(coerce, 'fillpattern', traceOut.fillcolor, false);
91853
91944
  }
91854
91945
 
91855
91946
  var lineColor = (traceOut.line || {}).color;
@@ -93232,11 +93323,11 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
93232
93323
  // the points on the axes are the first two points. Otherwise
93233
93324
  // animations get a little crazy if the number of points changes.
93234
93325
  transition(ownFillEl3).attr('d', 'M' + pt1 + 'L' + pt0 + 'L' + fullpath.substr(1))
93235
- .call(Drawing.singleFillStyle);
93326
+ .call(Drawing.singleFillStyle, gd);
93236
93327
  } else {
93237
93328
  // fill to self: just join the path to itself
93238
93329
  transition(ownFillEl3).attr('d', fullpath + 'Z')
93239
- .call(Drawing.singleFillStyle);
93330
+ .call(Drawing.singleFillStyle, gd);
93240
93331
  }
93241
93332
  }
93242
93333
  } else if(tonext) {
@@ -93248,7 +93339,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
93248
93339
  // This makes strange results if one path is *not* entirely
93249
93340
  // inside the other, but then that is a strange usage.
93250
93341
  transition(tonext).attr('d', fullpath + 'Z' + prevRevpath + 'Z')
93251
- .call(Drawing.singleFillStyle);
93342
+ .call(Drawing.singleFillStyle, gd);
93252
93343
  } else {
93253
93344
  // tonextx/y: for now just connect endpoints with lines. This is
93254
93345
  // the correct behavior if the endpoints are at the same value of
@@ -93256,7 +93347,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
93256
93347
  // things depending on whether the new endpoint projects onto the
93257
93348
  // existing curve or off the end of it
93258
93349
  transition(tonext).attr('d', fullpath + 'L' + prevRevpath.substr(1) + 'Z')
93259
- .call(Drawing.singleFillStyle);
93350
+ .call(Drawing.singleFillStyle, gd);
93260
93351
  }
93261
93352
  trace._polygons = trace._polygons.concat(prevPolygons);
93262
93353
  } else {
@@ -93649,7 +93740,7 @@ function style(gd) {
93649
93740
  .call(Drawing.lineGroupStyle);
93650
93741
 
93651
93742
  s.selectAll('g.trace path.js-fill')
93652
- .call(Drawing.fillGroupStyle);
93743
+ .call(Drawing.fillGroupStyle, gd);
93653
93744
 
93654
93745
  Registry.getComponentMethod('errorbars', 'style')(s);
93655
93746
  }
@@ -95443,7 +95534,7 @@ function getSortFunc(opts, d2c) {
95443
95534
  'use strict';
95444
95535
 
95445
95536
  // package version injected by `npm run preprocess`
95446
- exports.version = '2.9.0';
95537
+ exports.version = '2.11.0';
95447
95538
 
95448
95539
  },{}]},{},[8])(8)
95449
95540
  });