plotly.js 2.9.0 → 2.10.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 (39) hide show
  1. package/.circleci/config.yml +39 -1
  2. package/.circleci/test.sh +14 -1
  3. package/CHANGELOG.md +11 -1
  4. package/CONTRIBUTING.md +1 -1
  5. package/README.md +12 -4
  6. package/dist/README.md +26 -26
  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 +174 -83
  18. package/dist/plotly-gl2d.min.js +6 -6
  19. package/dist/plotly-gl3d.js +174 -83
  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 +174 -83
  24. package/dist/plotly-strict.min.js +6 -6
  25. package/dist/plotly-with-meta.js +178 -83
  26. package/dist/plotly.js +174 -83
  27. package/dist/plotly.min.js +2 -2
  28. package/package.json +6 -3
  29. package/src/components/drawing/index.js +28 -24
  30. package/src/components/legend/style.js +10 -6
  31. package/src/lib/svg_text_utils.js +106 -21
  32. package/src/plot_api/plot_config.js +9 -0
  33. package/src/snapshot/tosvg.js +14 -25
  34. package/src/traces/scatter/attributes.js +2 -0
  35. package/src/traces/scatter/defaults.js +2 -0
  36. package/src/traces/scatter/plot.js +4 -4
  37. package/src/traces/scatter/style.js +1 -1
  38. package/src/version.js +1 -1
  39. package/tasks/noci_test.sh +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * plotly.js v2.9.0
2
+ * plotly.js v2.10.0
3
3
  * Copyright 2012-2022, Plotly, Inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the MIT license
@@ -109396,24 +109396,42 @@ drawing.dashStyle = function(dash, lineWidth) {
109396
109396
  return dash;
109397
109397
  };
109398
109398
 
109399
+ function setFillStyle(sel, trace, gd) {
109400
+ var markerPattern = trace.fillpattern;
109401
+ var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, 0, '');
109402
+ if(patternShape) {
109403
+ var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, 0, null);
109404
+ var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, 0, null);
109405
+ var patternFGOpacity = markerPattern.fgopacity;
109406
+ var patternSize = drawing.getPatternAttr(markerPattern.size, 0, 8);
109407
+ var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, 0, 0.3);
109408
+ var patternID = trace.uid;
109409
+ drawing.pattern(sel, 'point', gd, patternID,
109410
+ patternShape, patternSize, patternSolidity,
109411
+ undefined, markerPattern.fillmode,
109412
+ patternBGColor, patternFGColor, patternFGOpacity
109413
+ );
109414
+ } else if(trace.fillcolor) {
109415
+ sel.call(Color.fill, trace.fillcolor);
109416
+ }
109417
+ }
109418
+
109399
109419
  // Same as fillGroupStyle, except in this case the selection may be a transition
109400
- drawing.singleFillStyle = function(sel) {
109420
+ drawing.singleFillStyle = function(sel, gd) {
109401
109421
  var node = d3.select(sel.node());
109402
109422
  var data = node.data();
109403
- var fillcolor = (((data[0] || [])[0] || {}).trace || {}).fillcolor;
109404
- if(fillcolor) {
109405
- sel.call(Color.fill, fillcolor);
109406
- }
109423
+ var trace = ((data[0] || [])[0] || {}).trace || {};
109424
+ setFillStyle(sel, trace, gd);
109407
109425
  };
109408
109426
 
109409
- drawing.fillGroupStyle = function(s) {
109427
+ drawing.fillGroupStyle = function(s, gd) {
109410
109428
  s.style('stroke-width', 0)
109411
109429
  .each(function(d) {
109412
109430
  var shape = d3.select(this);
109413
109431
  // N.B. 'd' won't be a calcdata item when
109414
109432
  // fill !== 'none' on a segment-less and marker-less trace
109415
109433
  if(d[0].trace) {
109416
- shape.call(Color.fill, d[0].trace.fillcolor);
109434
+ setFillStyle(shape, d[0].trace, gd);
109417
109435
  }
109418
109436
  });
109419
109437
  };
@@ -109566,12 +109584,7 @@ drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) {
109566
109584
  sel.style(prop, getFullUrl(fullID, gd))
109567
109585
  .style(prop + '-opacity', null);
109568
109586
 
109569
- var className2query = function(s) {
109570
- return '.' + s.attr('class').replace(/\s/g, '.');
109571
- };
109572
- var k = className2query(d3.select(sel.node().parentNode)) +
109573
- '>' + className2query(sel);
109574
- fullLayout._gradientUrlQueryParts[k] = 1;
109587
+ sel.classed('gradient_filled', true);
109575
109588
  };
109576
109589
 
109577
109590
  /**
@@ -109778,11 +109791,6 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
109778
109791
  .style('fill-opacity', null);
109779
109792
 
109780
109793
  sel.classed('pattern_filled', true);
109781
- var className2query = function(s) {
109782
- return '.' + s.attr('class').replace(/\s/g, '.');
109783
- };
109784
- var k = className2query(d3.select(sel.node().parentNode)) + '>.pattern_filled';
109785
- fullLayout._patternUrlQueryParts[k] = 1;
109786
109794
  };
109787
109795
 
109788
109796
  /*
@@ -109798,9 +109806,7 @@ drawing.initGradients = function(gd) {
109798
109806
  var gradientsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'gradients');
109799
109807
  gradientsGroup.selectAll('linearGradient,radialGradient').remove();
109800
109808
 
109801
- // initialize stash of query parts filled in Drawing.gradient,
109802
- // used to fix URL strings during image exports
109803
- fullLayout._gradientUrlQueryParts = {};
109809
+ d3.select(gd).selectAll('.gradient_filled').classed('gradient_filled', false);
109804
109810
  };
109805
109811
 
109806
109812
  drawing.initPatterns = function(gd) {
@@ -109809,9 +109815,7 @@ drawing.initPatterns = function(gd) {
109809
109815
  var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns');
109810
109816
  patternsGroup.selectAll('pattern').remove();
109811
109817
 
109812
- // initialize stash of query parts filled in Drawing.pattern,
109813
- // used to fix URL strings during image exports
109814
- fullLayout._patternUrlQueryParts = {};
109818
+ d3.select(gd).selectAll('.pattern_filled').classed('pattern_filled', false);
109815
109819
  };
109816
109820
 
109817
109821
  drawing.getPatternAttr = function(mp, i, dflt) {
@@ -117509,12 +117513,16 @@ module.exports = function style(s, gd, legend) {
117509
117513
  var colorscale = cOpts.colorscale;
117510
117514
  var reversescale = cOpts.reversescale;
117511
117515
 
117512
- var fillGradient = function(s) {
117516
+ var fillStyle = function(s) {
117513
117517
  if(s.size()) {
117514
- var gradientID = 'legendfill-' + trace.uid;
117515
- Drawing.gradient(s, gd, gradientID,
117516
- getGradientDirection(reversescale),
117517
- colorscale, 'fill');
117518
+ if(showFill) {
117519
+ Drawing.fillGroupStyle(s, gd);
117520
+ } else {
117521
+ var gradientID = 'legendfill-' + trace.uid;
117522
+ Drawing.gradient(s, gd, gradientID,
117523
+ getGradientDirection(reversescale),
117524
+ colorscale, 'fill');
117525
+ }
117518
117526
  }
117519
117527
  };
117520
117528
 
@@ -117543,7 +117551,7 @@ module.exports = function style(s, gd, legend) {
117543
117551
  fill.enter().append('path').classed('js-fill', true);
117544
117552
  fill.exit().remove();
117545
117553
  fill.attr('d', pathStart + 'h' + itemWidth + 'v6h-' + itemWidth + 'z')
117546
- .call(showFill ? Drawing.fillGroupStyle : fillGradient);
117554
+ .call(fillStyle);
117547
117555
 
117548
117556
  if(showLine || showGradientLine) {
117549
117557
  var lw = boundLineWidth(undefined, trace.line, MAX_LINE_WIDTH, CST_LINE_WIDTH);
@@ -133450,6 +133458,7 @@ exports.convertToTspans = function(_context, gd, _callback) {
133450
133458
  // Until we get tex integrated more fully (so it can be used along with non-tex)
133451
133459
  // allow some elements to prohibit it by attaching 'data-notex' to the original
133452
133460
  var tex = (!_context.attr('data-notex')) &&
133461
+ gd && gd._context.typesetMath &&
133453
133462
  (typeof MathJax !== 'undefined') &&
133454
133463
  str.match(FIND_TEX);
133455
133464
 
@@ -133604,70 +133613,154 @@ function cleanEscapesForTex(s) {
133604
133613
  .replace(GT_MATCH, '\\gt ');
133605
133614
  }
133606
133615
 
133616
+ var inlineMath = [['$', '$'], ['\\(', '\\)']];
133617
+
133607
133618
  function texToSVG(_texString, _config, _callback) {
133619
+ var MathJaxVersion = parseInt(
133620
+ (MathJax.version || '').split('.')[0]
133621
+ );
133622
+
133623
+ if(
133624
+ MathJaxVersion !== 2 &&
133625
+ MathJaxVersion !== 3
133626
+ ) {
133627
+ Lib.warn('No MathJax version:', MathJax.version);
133628
+ return;
133629
+ }
133630
+
133608
133631
  var originalRenderer,
133609
133632
  originalConfig,
133610
133633
  originalProcessSectionDelay,
133611
133634
  tmpDiv;
133612
133635
 
133613
- MathJax.Hub.Queue(
133614
- function() {
133636
+ var setConfig2 = function() {
133615
133637
  originalConfig = Lib.extendDeepAll({}, MathJax.Hub.config);
133616
133638
 
133617
133639
  originalProcessSectionDelay = MathJax.Hub.processSectionDelay;
133618
133640
  if(MathJax.Hub.processSectionDelay !== undefined) {
133619
- // MathJax 2.5+
133641
+ // MathJax 2.5+ but not 3+
133620
133642
  MathJax.Hub.processSectionDelay = 0;
133621
133643
  }
133622
133644
 
133623
133645
  return MathJax.Hub.Config({
133624
133646
  messageStyle: 'none',
133625
133647
  tex2jax: {
133626
- inlineMath: [['$', '$'], ['\\(', '\\)']]
133648
+ inlineMath: inlineMath
133627
133649
  },
133628
133650
  displayAlign: 'left',
133629
133651
  });
133630
- },
133631
- function() {
133632
- // Get original renderer
133652
+ };
133653
+
133654
+ var setConfig3 = function() {
133655
+ originalConfig = Lib.extendDeepAll({}, MathJax.config);
133656
+
133657
+ if(!MathJax.config.tex) {
133658
+ MathJax.config.tex = {};
133659
+ }
133660
+
133661
+ MathJax.config.tex.inlineMath = inlineMath;
133662
+ };
133663
+
133664
+ var setRenderer2 = function() {
133633
133665
  originalRenderer = MathJax.Hub.config.menuSettings.renderer;
133634
133666
  if(originalRenderer !== 'SVG') {
133635
133667
  return MathJax.Hub.setRenderer('SVG');
133636
133668
  }
133637
- },
133638
- function() {
133669
+ };
133670
+
133671
+ var setRenderer3 = function() {
133672
+ originalRenderer = MathJax.config.startup.output;
133673
+ if(originalRenderer !== 'svg') {
133674
+ MathJax.config.startup.output = 'svg';
133675
+ }
133676
+ };
133677
+
133678
+ var initiateMathJax = function() {
133639
133679
  var randomID = 'math-output-' + Lib.randstr({}, 64);
133640
133680
  tmpDiv = d3.select('body').append('div')
133641
133681
  .attr({id: randomID})
133642
- .style({visibility: 'hidden', position: 'absolute'})
133643
- .style({'font-size': _config.fontSize + 'px'})
133682
+ .style({
133683
+ visibility: 'hidden',
133684
+ position: 'absolute',
133685
+ 'font-size': _config.fontSize + 'px'
133686
+ })
133644
133687
  .text(cleanEscapesForTex(_texString));
133645
133688
 
133646
- return MathJax.Hub.Typeset(tmpDiv.node());
133647
- },
133648
- function() {
133649
- var glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
133689
+ var tmpNode = tmpDiv.node();
133650
133690
 
133651
- if(tmpDiv.select('.MathJax_SVG').empty() || !tmpDiv.select('svg').node()) {
133691
+ return MathJaxVersion === 2 ?
133692
+ MathJax.Hub.Typeset(tmpNode) :
133693
+ MathJax.typeset([tmpNode]);
133694
+ };
133695
+
133696
+ var finalizeMathJax = function() {
133697
+ var sel = tmpDiv.select(
133698
+ MathJaxVersion === 2 ? '.MathJax_SVG' : '.MathJax'
133699
+ );
133700
+
133701
+ var node = !sel.empty() && tmpDiv.select('svg').node();
133702
+ if(!node) {
133652
133703
  Lib.log('There was an error in the tex syntax.', _texString);
133653
133704
  _callback();
133654
133705
  } else {
133655
- var svgBBox = tmpDiv.select('svg').node().getBoundingClientRect();
133656
- _callback(tmpDiv.select('.MathJax_SVG'), glyphDefs, svgBBox);
133706
+ var nodeBBox = node.getBoundingClientRect();
133707
+ var glyphDefs;
133708
+ if(MathJaxVersion === 2) {
133709
+ glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
133710
+ } else {
133711
+ glyphDefs = sel.select('defs');
133712
+ }
133713
+ _callback(sel, glyphDefs, nodeBBox);
133657
133714
  }
133658
133715
 
133659
133716
  tmpDiv.remove();
133717
+ };
133660
133718
 
133719
+ var resetRenderer2 = function() {
133661
133720
  if(originalRenderer !== 'SVG') {
133662
133721
  return MathJax.Hub.setRenderer(originalRenderer);
133663
133722
  }
133664
- },
133665
- function() {
133723
+ };
133724
+
133725
+ var resetRenderer3 = function() {
133726
+ if(originalRenderer !== 'svg') {
133727
+ MathJax.config.startup.output = originalRenderer;
133728
+ }
133729
+ };
133730
+
133731
+ var resetConfig2 = function() {
133666
133732
  if(originalProcessSectionDelay !== undefined) {
133667
133733
  MathJax.Hub.processSectionDelay = originalProcessSectionDelay;
133668
133734
  }
133669
133735
  return MathJax.Hub.Config(originalConfig);
133670
- });
133736
+ };
133737
+
133738
+ var resetConfig3 = function() {
133739
+ MathJax.config = originalConfig;
133740
+ };
133741
+
133742
+ if(MathJaxVersion === 2) {
133743
+ MathJax.Hub.Queue(
133744
+ setConfig2,
133745
+ setRenderer2,
133746
+ initiateMathJax,
133747
+ finalizeMathJax,
133748
+ resetRenderer2,
133749
+ resetConfig2
133750
+ );
133751
+ } else if(MathJaxVersion === 3) {
133752
+ setConfig3();
133753
+ setRenderer3();
133754
+ MathJax.startup.defaultReady();
133755
+
133756
+ MathJax.startup.promise.then(function() {
133757
+ initiateMathJax();
133758
+ finalizeMathJax();
133759
+
133760
+ resetRenderer3();
133761
+ resetConfig3();
133762
+ });
133763
+ }
133671
133764
  }
133672
133765
 
133673
133766
  var TAG_STYLES = {
@@ -139544,6 +139637,15 @@ var configAttributes = {
139544
139637
  ].join(' ')
139545
139638
  },
139546
139639
 
139640
+ typesetMath: {
139641
+ valType: 'boolean',
139642
+ dflt: true,
139643
+ description: [
139644
+ 'Determines whether math should be typeset or not,',
139645
+ 'when MathJax (either v2 or v3) is present on the page.'
139646
+ ].join(' ')
139647
+ },
139648
+
139547
139649
  plotlyServerURL: {
139548
139650
  valType: 'string',
139549
139651
  dflt: '',
@@ -173645,7 +173747,7 @@ module.exports = function toSVG(gd, format, scale) {
173645
173747
  var toppaper = fullLayout._toppaper;
173646
173748
  var width = fullLayout.width;
173647
173749
  var height = fullLayout.height;
173648
- var i, k;
173750
+ var i;
173649
173751
 
173650
173752
  // make background color a rect in the svg, then revert after scraping
173651
173753
  // all other alterations have been dealt with by properly preparing the svg
@@ -173718,32 +173820,21 @@ module.exports = function toSVG(gd, format, scale) {
173718
173820
  }
173719
173821
  });
173720
173822
 
173721
- var queryParts = [];
173722
- if(fullLayout._gradientUrlQueryParts) {
173723
- for(k in fullLayout._gradientUrlQueryParts) queryParts.push(k);
173724
- }
173823
+ svg.selectAll('.gradient_filled,.pattern_filled').each(function() {
173824
+ var pt = d3.select(this);
173725
173825
 
173726
- if(fullLayout._patternUrlQueryParts) {
173727
- for(k in fullLayout._patternUrlQueryParts) queryParts.push(k);
173728
- }
173729
-
173730
- if(queryParts.length) {
173731
- svg.selectAll(queryParts.join(',')).each(function() {
173732
- var pt = d3.select(this);
173733
-
173734
- // similar to font family styles above,
173735
- // we must remove " after the SVG DOM has been serialized
173736
- var fill = this.style.fill;
173737
- if(fill && fill.indexOf('url(') !== -1) {
173738
- pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
173739
- }
173826
+ // similar to font family styles above,
173827
+ // we must remove " after the SVG DOM has been serialized
173828
+ var fill = this.style.fill;
173829
+ if(fill && fill.indexOf('url(') !== -1) {
173830
+ pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
173831
+ }
173740
173832
 
173741
- var stroke = this.style.stroke;
173742
- if(stroke && stroke.indexOf('url(') !== -1) {
173743
- pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
173744
- }
173745
- });
173746
- }
173833
+ var stroke = this.style.stroke;
173834
+ if(stroke && stroke.indexOf('url(') !== -1) {
173835
+ pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
173836
+ }
173837
+ });
173747
173838
 
173748
173839
  if(format === 'pdf' || format === 'eps') {
173749
173840
  // these formats make the extra line MathJax adds around symbols look super thick in some cases
@@ -209449,6 +209540,7 @@ var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplat
209449
209540
  var colorScaleAttrs = _dereq_('../../components/colorscale/attributes');
209450
209541
  var fontAttrs = _dereq_('../../plots/font_attributes');
209451
209542
  var dash = _dereq_('../../components/drawing/attributes').dash;
209543
+ var pattern = _dereq_('../../components/drawing/attributes').pattern;
209452
209544
 
209453
209545
  var Drawing = _dereq_('../../components/drawing');
209454
209546
  var constants = _dereq_('./constants');
@@ -209806,6 +209898,7 @@ module.exports = {
209806
209898
  'marker color, or marker line color, whichever is available.'
209807
209899
  ].join(' ')
209808
209900
  },
209901
+ fillpattern: pattern,
209809
209902
  marker: extendFlat({
209810
209903
  symbol: {
209811
209904
  valType: 'enumerated',
@@ -210591,6 +210684,7 @@ var handleLineDefaults = _dereq_('./line_defaults');
210591
210684
  var handleLineShapeDefaults = _dereq_('./line_shape_defaults');
210592
210685
  var handleTextDefaults = _dereq_('./text_defaults');
210593
210686
  var handleFillColorDefaults = _dereq_('./fillcolor_defaults');
210687
+ var coercePattern = _dereq_('../../lib').coercePattern;
210594
210688
 
210595
210689
  module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
210596
210690
  function coerce(attr, dflt) {
@@ -210644,6 +210738,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
210644
210738
  if(traceOut.fill !== 'none') {
210645
210739
  handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);
210646
210740
  if(!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);
210741
+ coercePattern(coerce, 'fillpattern', traceOut.fillcolor, false);
210647
210742
  }
210648
210743
 
210649
210744
  var lineColor = (traceOut.line || {}).color;
@@ -212033,11 +212128,11 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
212033
212128
  // the points on the axes are the first two points. Otherwise
212034
212129
  // animations get a little crazy if the number of points changes.
212035
212130
  transition(ownFillEl3).attr('d', 'M' + pt1 + 'L' + pt0 + 'L' + fullpath.substr(1))
212036
- .call(Drawing.singleFillStyle);
212131
+ .call(Drawing.singleFillStyle, gd);
212037
212132
  } else {
212038
212133
  // fill to self: just join the path to itself
212039
212134
  transition(ownFillEl3).attr('d', fullpath + 'Z')
212040
- .call(Drawing.singleFillStyle);
212135
+ .call(Drawing.singleFillStyle, gd);
212041
212136
  }
212042
212137
  }
212043
212138
  } else if(tonext) {
@@ -212049,7 +212144,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
212049
212144
  // This makes strange results if one path is *not* entirely
212050
212145
  // inside the other, but then that is a strange usage.
212051
212146
  transition(tonext).attr('d', fullpath + 'Z' + prevRevpath + 'Z')
212052
- .call(Drawing.singleFillStyle);
212147
+ .call(Drawing.singleFillStyle, gd);
212053
212148
  } else {
212054
212149
  // tonextx/y: for now just connect endpoints with lines. This is
212055
212150
  // the correct behavior if the endpoints are at the same value of
@@ -212057,7 +212152,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
212057
212152
  // things depending on whether the new endpoint projects onto the
212058
212153
  // existing curve or off the end of it
212059
212154
  transition(tonext).attr('d', fullpath + 'L' + prevRevpath.substr(1) + 'Z')
212060
- .call(Drawing.singleFillStyle);
212155
+ .call(Drawing.singleFillStyle, gd);
212061
212156
  }
212062
212157
  trace._polygons = trace._polygons.concat(prevPolygons);
212063
212158
  } else {
@@ -212450,7 +212545,7 @@ function style(gd) {
212450
212545
  .call(Drawing.lineGroupStyle);
212451
212546
 
212452
212547
  s.selectAll('g.trace path.js-fill')
212453
- .call(Drawing.fillGroupStyle);
212548
+ .call(Drawing.fillGroupStyle, gd);
212454
212549
 
212455
212550
  Registry.getComponentMethod('errorbars', 'style')(s);
212456
212551
  }
@@ -230607,7 +230702,7 @@ function getSortFunc(opts, d2c) {
230607
230702
  'use strict';
230608
230703
 
230609
230704
  // package version injected by `npm run preprocess`
230610
- exports.version = '2.9.0';
230705
+ exports.version = '2.10.0';
230611
230706
 
230612
230707
  },{}],1120:[function(_dereq_,module,exports){
230613
230708
  (function (global){(function (){