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 (strict) v2.9.0
2
+ * plotly.js (strict) v2.10.0
3
3
  * Copyright 2012-2022, Plotly, Inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the MIT license
@@ -99670,24 +99670,42 @@ drawing.dashStyle = function(dash, lineWidth) {
99670
99670
  return dash;
99671
99671
  };
99672
99672
 
99673
+ function setFillStyle(sel, trace, gd) {
99674
+ var markerPattern = trace.fillpattern;
99675
+ var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, 0, '');
99676
+ if(patternShape) {
99677
+ var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, 0, null);
99678
+ var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, 0, null);
99679
+ var patternFGOpacity = markerPattern.fgopacity;
99680
+ var patternSize = drawing.getPatternAttr(markerPattern.size, 0, 8);
99681
+ var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, 0, 0.3);
99682
+ var patternID = trace.uid;
99683
+ drawing.pattern(sel, 'point', gd, patternID,
99684
+ patternShape, patternSize, patternSolidity,
99685
+ undefined, markerPattern.fillmode,
99686
+ patternBGColor, patternFGColor, patternFGOpacity
99687
+ );
99688
+ } else if(trace.fillcolor) {
99689
+ sel.call(Color.fill, trace.fillcolor);
99690
+ }
99691
+ }
99692
+
99673
99693
  // Same as fillGroupStyle, except in this case the selection may be a transition
99674
- drawing.singleFillStyle = function(sel) {
99694
+ drawing.singleFillStyle = function(sel, gd) {
99675
99695
  var node = d3.select(sel.node());
99676
99696
  var data = node.data();
99677
- var fillcolor = (((data[0] || [])[0] || {}).trace || {}).fillcolor;
99678
- if(fillcolor) {
99679
- sel.call(Color.fill, fillcolor);
99680
- }
99697
+ var trace = ((data[0] || [])[0] || {}).trace || {};
99698
+ setFillStyle(sel, trace, gd);
99681
99699
  };
99682
99700
 
99683
- drawing.fillGroupStyle = function(s) {
99701
+ drawing.fillGroupStyle = function(s, gd) {
99684
99702
  s.style('stroke-width', 0)
99685
99703
  .each(function(d) {
99686
99704
  var shape = d3.select(this);
99687
99705
  // N.B. 'd' won't be a calcdata item when
99688
99706
  // fill !== 'none' on a segment-less and marker-less trace
99689
99707
  if(d[0].trace) {
99690
- shape.call(Color.fill, d[0].trace.fillcolor);
99708
+ setFillStyle(shape, d[0].trace, gd);
99691
99709
  }
99692
99710
  });
99693
99711
  };
@@ -99840,12 +99858,7 @@ drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) {
99840
99858
  sel.style(prop, getFullUrl(fullID, gd))
99841
99859
  .style(prop + '-opacity', null);
99842
99860
 
99843
- var className2query = function(s) {
99844
- return '.' + s.attr('class').replace(/\s/g, '.');
99845
- };
99846
- var k = className2query(d3.select(sel.node().parentNode)) +
99847
- '>' + className2query(sel);
99848
- fullLayout._gradientUrlQueryParts[k] = 1;
99861
+ sel.classed('gradient_filled', true);
99849
99862
  };
99850
99863
 
99851
99864
  /**
@@ -100052,11 +100065,6 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
100052
100065
  .style('fill-opacity', null);
100053
100066
 
100054
100067
  sel.classed('pattern_filled', true);
100055
- var className2query = function(s) {
100056
- return '.' + s.attr('class').replace(/\s/g, '.');
100057
- };
100058
- var k = className2query(d3.select(sel.node().parentNode)) + '>.pattern_filled';
100059
- fullLayout._patternUrlQueryParts[k] = 1;
100060
100068
  };
100061
100069
 
100062
100070
  /*
@@ -100072,9 +100080,7 @@ drawing.initGradients = function(gd) {
100072
100080
  var gradientsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'gradients');
100073
100081
  gradientsGroup.selectAll('linearGradient,radialGradient').remove();
100074
100082
 
100075
- // initialize stash of query parts filled in Drawing.gradient,
100076
- // used to fix URL strings during image exports
100077
- fullLayout._gradientUrlQueryParts = {};
100083
+ d3.select(gd).selectAll('.gradient_filled').classed('gradient_filled', false);
100078
100084
  };
100079
100085
 
100080
100086
  drawing.initPatterns = function(gd) {
@@ -100083,9 +100089,7 @@ drawing.initPatterns = function(gd) {
100083
100089
  var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns');
100084
100090
  patternsGroup.selectAll('pattern').remove();
100085
100091
 
100086
- // initialize stash of query parts filled in Drawing.pattern,
100087
- // used to fix URL strings during image exports
100088
- fullLayout._patternUrlQueryParts = {};
100092
+ d3.select(gd).selectAll('.pattern_filled').classed('pattern_filled', false);
100089
100093
  };
100090
100094
 
100091
100095
  drawing.getPatternAttr = function(mp, i, dflt) {
@@ -107422,12 +107426,16 @@ module.exports = function style(s, gd, legend) {
107422
107426
  var colorscale = cOpts.colorscale;
107423
107427
  var reversescale = cOpts.reversescale;
107424
107428
 
107425
- var fillGradient = function(s) {
107429
+ var fillStyle = function(s) {
107426
107430
  if(s.size()) {
107427
- var gradientID = 'legendfill-' + trace.uid;
107428
- Drawing.gradient(s, gd, gradientID,
107429
- getGradientDirection(reversescale),
107430
- colorscale, 'fill');
107431
+ if(showFill) {
107432
+ Drawing.fillGroupStyle(s, gd);
107433
+ } else {
107434
+ var gradientID = 'legendfill-' + trace.uid;
107435
+ Drawing.gradient(s, gd, gradientID,
107436
+ getGradientDirection(reversescale),
107437
+ colorscale, 'fill');
107438
+ }
107431
107439
  }
107432
107440
  };
107433
107441
 
@@ -107456,7 +107464,7 @@ module.exports = function style(s, gd, legend) {
107456
107464
  fill.enter().append('path').classed('js-fill', true);
107457
107465
  fill.exit().remove();
107458
107466
  fill.attr('d', pathStart + 'h' + itemWidth + 'v6h-' + itemWidth + 'z')
107459
- .call(showFill ? Drawing.fillGroupStyle : fillGradient);
107467
+ .call(fillStyle);
107460
107468
 
107461
107469
  if(showLine || showGradientLine) {
107462
107470
  var lw = boundLineWidth(undefined, trace.line, MAX_LINE_WIDTH, CST_LINE_WIDTH);
@@ -122796,6 +122804,7 @@ exports.convertToTspans = function(_context, gd, _callback) {
122796
122804
  // Until we get tex integrated more fully (so it can be used along with non-tex)
122797
122805
  // allow some elements to prohibit it by attaching 'data-notex' to the original
122798
122806
  var tex = (!_context.attr('data-notex')) &&
122807
+ gd && gd._context.typesetMath &&
122799
122808
  (typeof MathJax !== 'undefined') &&
122800
122809
  str.match(FIND_TEX);
122801
122810
 
@@ -122950,70 +122959,154 @@ function cleanEscapesForTex(s) {
122950
122959
  .replace(GT_MATCH, '\\gt ');
122951
122960
  }
122952
122961
 
122962
+ var inlineMath = [['$', '$'], ['\\(', '\\)']];
122963
+
122953
122964
  function texToSVG(_texString, _config, _callback) {
122965
+ var MathJaxVersion = parseInt(
122966
+ (MathJax.version || '').split('.')[0]
122967
+ );
122968
+
122969
+ if(
122970
+ MathJaxVersion !== 2 &&
122971
+ MathJaxVersion !== 3
122972
+ ) {
122973
+ Lib.warn('No MathJax version:', MathJax.version);
122974
+ return;
122975
+ }
122976
+
122954
122977
  var originalRenderer,
122955
122978
  originalConfig,
122956
122979
  originalProcessSectionDelay,
122957
122980
  tmpDiv;
122958
122981
 
122959
- MathJax.Hub.Queue(
122960
- function() {
122982
+ var setConfig2 = function() {
122961
122983
  originalConfig = Lib.extendDeepAll({}, MathJax.Hub.config);
122962
122984
 
122963
122985
  originalProcessSectionDelay = MathJax.Hub.processSectionDelay;
122964
122986
  if(MathJax.Hub.processSectionDelay !== undefined) {
122965
- // MathJax 2.5+
122987
+ // MathJax 2.5+ but not 3+
122966
122988
  MathJax.Hub.processSectionDelay = 0;
122967
122989
  }
122968
122990
 
122969
122991
  return MathJax.Hub.Config({
122970
122992
  messageStyle: 'none',
122971
122993
  tex2jax: {
122972
- inlineMath: [['$', '$'], ['\\(', '\\)']]
122994
+ inlineMath: inlineMath
122973
122995
  },
122974
122996
  displayAlign: 'left',
122975
122997
  });
122976
- },
122977
- function() {
122978
- // Get original renderer
122998
+ };
122999
+
123000
+ var setConfig3 = function() {
123001
+ originalConfig = Lib.extendDeepAll({}, MathJax.config);
123002
+
123003
+ if(!MathJax.config.tex) {
123004
+ MathJax.config.tex = {};
123005
+ }
123006
+
123007
+ MathJax.config.tex.inlineMath = inlineMath;
123008
+ };
123009
+
123010
+ var setRenderer2 = function() {
122979
123011
  originalRenderer = MathJax.Hub.config.menuSettings.renderer;
122980
123012
  if(originalRenderer !== 'SVG') {
122981
123013
  return MathJax.Hub.setRenderer('SVG');
122982
123014
  }
122983
- },
122984
- function() {
123015
+ };
123016
+
123017
+ var setRenderer3 = function() {
123018
+ originalRenderer = MathJax.config.startup.output;
123019
+ if(originalRenderer !== 'svg') {
123020
+ MathJax.config.startup.output = 'svg';
123021
+ }
123022
+ };
123023
+
123024
+ var initiateMathJax = function() {
122985
123025
  var randomID = 'math-output-' + Lib.randstr({}, 64);
122986
123026
  tmpDiv = d3.select('body').append('div')
122987
123027
  .attr({id: randomID})
122988
- .style({visibility: 'hidden', position: 'absolute'})
122989
- .style({'font-size': _config.fontSize + 'px'})
123028
+ .style({
123029
+ visibility: 'hidden',
123030
+ position: 'absolute',
123031
+ 'font-size': _config.fontSize + 'px'
123032
+ })
122990
123033
  .text(cleanEscapesForTex(_texString));
122991
123034
 
122992
- return MathJax.Hub.Typeset(tmpDiv.node());
122993
- },
122994
- function() {
122995
- var glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
123035
+ var tmpNode = tmpDiv.node();
123036
+
123037
+ return MathJaxVersion === 2 ?
123038
+ MathJax.Hub.Typeset(tmpNode) :
123039
+ MathJax.typeset([tmpNode]);
123040
+ };
122996
123041
 
122997
- if(tmpDiv.select('.MathJax_SVG').empty() || !tmpDiv.select('svg').node()) {
123042
+ var finalizeMathJax = function() {
123043
+ var sel = tmpDiv.select(
123044
+ MathJaxVersion === 2 ? '.MathJax_SVG' : '.MathJax'
123045
+ );
123046
+
123047
+ var node = !sel.empty() && tmpDiv.select('svg').node();
123048
+ if(!node) {
122998
123049
  Lib.log('There was an error in the tex syntax.', _texString);
122999
123050
  _callback();
123000
123051
  } else {
123001
- var svgBBox = tmpDiv.select('svg').node().getBoundingClientRect();
123002
- _callback(tmpDiv.select('.MathJax_SVG'), glyphDefs, svgBBox);
123052
+ var nodeBBox = node.getBoundingClientRect();
123053
+ var glyphDefs;
123054
+ if(MathJaxVersion === 2) {
123055
+ glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
123056
+ } else {
123057
+ glyphDefs = sel.select('defs');
123058
+ }
123059
+ _callback(sel, glyphDefs, nodeBBox);
123003
123060
  }
123004
123061
 
123005
123062
  tmpDiv.remove();
123063
+ };
123006
123064
 
123065
+ var resetRenderer2 = function() {
123007
123066
  if(originalRenderer !== 'SVG') {
123008
123067
  return MathJax.Hub.setRenderer(originalRenderer);
123009
123068
  }
123010
- },
123011
- function() {
123069
+ };
123070
+
123071
+ var resetRenderer3 = function() {
123072
+ if(originalRenderer !== 'svg') {
123073
+ MathJax.config.startup.output = originalRenderer;
123074
+ }
123075
+ };
123076
+
123077
+ var resetConfig2 = function() {
123012
123078
  if(originalProcessSectionDelay !== undefined) {
123013
123079
  MathJax.Hub.processSectionDelay = originalProcessSectionDelay;
123014
123080
  }
123015
123081
  return MathJax.Hub.Config(originalConfig);
123016
- });
123082
+ };
123083
+
123084
+ var resetConfig3 = function() {
123085
+ MathJax.config = originalConfig;
123086
+ };
123087
+
123088
+ if(MathJaxVersion === 2) {
123089
+ MathJax.Hub.Queue(
123090
+ setConfig2,
123091
+ setRenderer2,
123092
+ initiateMathJax,
123093
+ finalizeMathJax,
123094
+ resetRenderer2,
123095
+ resetConfig2
123096
+ );
123097
+ } else if(MathJaxVersion === 3) {
123098
+ setConfig3();
123099
+ setRenderer3();
123100
+ MathJax.startup.defaultReady();
123101
+
123102
+ MathJax.startup.promise.then(function() {
123103
+ initiateMathJax();
123104
+ finalizeMathJax();
123105
+
123106
+ resetRenderer3();
123107
+ resetConfig3();
123108
+ });
123109
+ }
123017
123110
  }
123018
123111
 
123019
123112
  var TAG_STYLES = {
@@ -128859,6 +128952,11 @@ var configAttributes = {
128859
128952
  dflt: false,
128860
128953
  },
128861
128954
 
128955
+ typesetMath: {
128956
+ valType: 'boolean',
128957
+ dflt: true,
128958
+ },
128959
+
128862
128960
  plotlyServerURL: {
128863
128961
  valType: 'string',
128864
128962
  dflt: '',
@@ -160970,7 +161068,7 @@ module.exports = function toSVG(gd, format, scale) {
160970
161068
  var toppaper = fullLayout._toppaper;
160971
161069
  var width = fullLayout.width;
160972
161070
  var height = fullLayout.height;
160973
- var i, k;
161071
+ var i;
160974
161072
 
160975
161073
  // make background color a rect in the svg, then revert after scraping
160976
161074
  // all other alterations have been dealt with by properly preparing the svg
@@ -161043,32 +161141,21 @@ module.exports = function toSVG(gd, format, scale) {
161043
161141
  }
161044
161142
  });
161045
161143
 
161046
- var queryParts = [];
161047
- if(fullLayout._gradientUrlQueryParts) {
161048
- for(k in fullLayout._gradientUrlQueryParts) queryParts.push(k);
161049
- }
161050
-
161051
- if(fullLayout._patternUrlQueryParts) {
161052
- for(k in fullLayout._patternUrlQueryParts) queryParts.push(k);
161053
- }
161054
-
161055
- if(queryParts.length) {
161056
- svg.selectAll(queryParts.join(',')).each(function() {
161057
- var pt = d3.select(this);
161144
+ svg.selectAll('.gradient_filled,.pattern_filled').each(function() {
161145
+ var pt = d3.select(this);
161058
161146
 
161059
- // similar to font family styles above,
161060
- // we must remove " after the SVG DOM has been serialized
161061
- var fill = this.style.fill;
161062
- if(fill && fill.indexOf('url(') !== -1) {
161063
- pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
161064
- }
161147
+ // similar to font family styles above,
161148
+ // we must remove " after the SVG DOM has been serialized
161149
+ var fill = this.style.fill;
161150
+ if(fill && fill.indexOf('url(') !== -1) {
161151
+ pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
161152
+ }
161065
161153
 
161066
- var stroke = this.style.stroke;
161067
- if(stroke && stroke.indexOf('url(') !== -1) {
161068
- pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
161069
- }
161070
- });
161071
- }
161154
+ var stroke = this.style.stroke;
161155
+ if(stroke && stroke.indexOf('url(') !== -1) {
161156
+ pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
161157
+ }
161158
+ });
161072
161159
 
161073
161160
  if(format === 'pdf' || format === 'eps') {
161074
161161
  // these formats make the extra line MathJax adds around symbols look super thick in some cases
@@ -192322,6 +192409,7 @@ var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplat
192322
192409
  var colorScaleAttrs = _dereq_('../../components/colorscale/attributes');
192323
192410
  var fontAttrs = _dereq_('../../plots/font_attributes');
192324
192411
  var dash = _dereq_('../../components/drawing/attributes').dash;
192412
+ var pattern = _dereq_('../../components/drawing/attributes').pattern;
192325
192413
 
192326
192414
  var Drawing = _dereq_('../../components/drawing');
192327
192415
  var constants = _dereq_('./constants');
@@ -192509,6 +192597,7 @@ module.exports = {
192509
192597
  editType: 'style',
192510
192598
  anim: true,
192511
192599
  },
192600
+ fillpattern: pattern,
192512
192601
  marker: extendFlat({
192513
192602
  symbol: {
192514
192603
  valType: 'enumerated',
@@ -193245,6 +193334,7 @@ var handleLineDefaults = _dereq_('./line_defaults');
193245
193334
  var handleLineShapeDefaults = _dereq_('./line_shape_defaults');
193246
193335
  var handleTextDefaults = _dereq_('./text_defaults');
193247
193336
  var handleFillColorDefaults = _dereq_('./fillcolor_defaults');
193337
+ var coercePattern = _dereq_('../../lib').coercePattern;
193248
193338
 
193249
193339
  module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
193250
193340
  function coerce(attr, dflt) {
@@ -193298,6 +193388,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
193298
193388
  if(traceOut.fill !== 'none') {
193299
193389
  handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);
193300
193390
  if(!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);
193391
+ coercePattern(coerce, 'fillpattern', traceOut.fillcolor, false);
193301
193392
  }
193302
193393
 
193303
193394
  var lineColor = (traceOut.line || {}).color;
@@ -194680,11 +194771,11 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
194680
194771
  // the points on the axes are the first two points. Otherwise
194681
194772
  // animations get a little crazy if the number of points changes.
194682
194773
  transition(ownFillEl3).attr('d', 'M' + pt1 + 'L' + pt0 + 'L' + fullpath.substr(1))
194683
- .call(Drawing.singleFillStyle);
194774
+ .call(Drawing.singleFillStyle, gd);
194684
194775
  } else {
194685
194776
  // fill to self: just join the path to itself
194686
194777
  transition(ownFillEl3).attr('d', fullpath + 'Z')
194687
- .call(Drawing.singleFillStyle);
194778
+ .call(Drawing.singleFillStyle, gd);
194688
194779
  }
194689
194780
  }
194690
194781
  } else if(tonext) {
@@ -194696,7 +194787,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
194696
194787
  // This makes strange results if one path is *not* entirely
194697
194788
  // inside the other, but then that is a strange usage.
194698
194789
  transition(tonext).attr('d', fullpath + 'Z' + prevRevpath + 'Z')
194699
- .call(Drawing.singleFillStyle);
194790
+ .call(Drawing.singleFillStyle, gd);
194700
194791
  } else {
194701
194792
  // tonextx/y: for now just connect endpoints with lines. This is
194702
194793
  // the correct behavior if the endpoints are at the same value of
@@ -194704,7 +194795,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
194704
194795
  // things depending on whether the new endpoint projects onto the
194705
194796
  // existing curve or off the end of it
194706
194797
  transition(tonext).attr('d', fullpath + 'L' + prevRevpath.substr(1) + 'Z')
194707
- .call(Drawing.singleFillStyle);
194798
+ .call(Drawing.singleFillStyle, gd);
194708
194799
  }
194709
194800
  trace._polygons = trace._polygons.concat(prevPolygons);
194710
194801
  } else {
@@ -195097,7 +195188,7 @@ function style(gd) {
195097
195188
  .call(Drawing.lineGroupStyle);
195098
195189
 
195099
195190
  s.selectAll('g.trace path.js-fill')
195100
- .call(Drawing.fillGroupStyle);
195191
+ .call(Drawing.fillGroupStyle, gd);
195101
195192
 
195102
195193
  Registry.getComponentMethod('errorbars', 'style')(s);
195103
195194
  }
@@ -208445,7 +208536,7 @@ function getSortFunc(opts, d2c) {
208445
208536
  'use strict';
208446
208537
 
208447
208538
  // package version injected by `npm run preprocess`
208448
- exports.version = '2.9.0';
208539
+ exports.version = '2.10.0';
208449
208540
 
208450
208541
  },{}],934:[function(_dereq_,module,exports){
208451
208542
  (function (global){(function (){