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 (mapbox) v2.9.0
2
+ * plotly.js (mapbox) v2.10.0
3
3
  * Copyright 2012-2022, Plotly, Inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the MIT license
@@ -71753,24 +71753,42 @@ drawing.dashStyle = function(dash, lineWidth) {
71753
71753
  return dash;
71754
71754
  };
71755
71755
 
71756
+ function setFillStyle(sel, trace, gd) {
71757
+ var markerPattern = trace.fillpattern;
71758
+ var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, 0, '');
71759
+ if(patternShape) {
71760
+ var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, 0, null);
71761
+ var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, 0, null);
71762
+ var patternFGOpacity = markerPattern.fgopacity;
71763
+ var patternSize = drawing.getPatternAttr(markerPattern.size, 0, 8);
71764
+ var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, 0, 0.3);
71765
+ var patternID = trace.uid;
71766
+ drawing.pattern(sel, 'point', gd, patternID,
71767
+ patternShape, patternSize, patternSolidity,
71768
+ undefined, markerPattern.fillmode,
71769
+ patternBGColor, patternFGColor, patternFGOpacity
71770
+ );
71771
+ } else if(trace.fillcolor) {
71772
+ sel.call(Color.fill, trace.fillcolor);
71773
+ }
71774
+ }
71775
+
71756
71776
  // Same as fillGroupStyle, except in this case the selection may be a transition
71757
- drawing.singleFillStyle = function(sel) {
71777
+ drawing.singleFillStyle = function(sel, gd) {
71758
71778
  var node = d3.select(sel.node());
71759
71779
  var data = node.data();
71760
- var fillcolor = (((data[0] || [])[0] || {}).trace || {}).fillcolor;
71761
- if(fillcolor) {
71762
- sel.call(Color.fill, fillcolor);
71763
- }
71780
+ var trace = ((data[0] || [])[0] || {}).trace || {};
71781
+ setFillStyle(sel, trace, gd);
71764
71782
  };
71765
71783
 
71766
- drawing.fillGroupStyle = function(s) {
71784
+ drawing.fillGroupStyle = function(s, gd) {
71767
71785
  s.style('stroke-width', 0)
71768
71786
  .each(function(d) {
71769
71787
  var shape = d3.select(this);
71770
71788
  // N.B. 'd' won't be a calcdata item when
71771
71789
  // fill !== 'none' on a segment-less and marker-less trace
71772
71790
  if(d[0].trace) {
71773
- shape.call(Color.fill, d[0].trace.fillcolor);
71791
+ setFillStyle(shape, d[0].trace, gd);
71774
71792
  }
71775
71793
  });
71776
71794
  };
@@ -71923,12 +71941,7 @@ drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) {
71923
71941
  sel.style(prop, getFullUrl(fullID, gd))
71924
71942
  .style(prop + '-opacity', null);
71925
71943
 
71926
- var className2query = function(s) {
71927
- return '.' + s.attr('class').replace(/\s/g, '.');
71928
- };
71929
- var k = className2query(d3.select(sel.node().parentNode)) +
71930
- '>' + className2query(sel);
71931
- fullLayout._gradientUrlQueryParts[k] = 1;
71944
+ sel.classed('gradient_filled', true);
71932
71945
  };
71933
71946
 
71934
71947
  /**
@@ -72135,11 +72148,6 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
72135
72148
  .style('fill-opacity', null);
72136
72149
 
72137
72150
  sel.classed('pattern_filled', true);
72138
- var className2query = function(s) {
72139
- return '.' + s.attr('class').replace(/\s/g, '.');
72140
- };
72141
- var k = className2query(d3.select(sel.node().parentNode)) + '>.pattern_filled';
72142
- fullLayout._patternUrlQueryParts[k] = 1;
72143
72151
  };
72144
72152
 
72145
72153
  /*
@@ -72155,9 +72163,7 @@ drawing.initGradients = function(gd) {
72155
72163
  var gradientsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'gradients');
72156
72164
  gradientsGroup.selectAll('linearGradient,radialGradient').remove();
72157
72165
 
72158
- // initialize stash of query parts filled in Drawing.gradient,
72159
- // used to fix URL strings during image exports
72160
- fullLayout._gradientUrlQueryParts = {};
72166
+ d3.select(gd).selectAll('.gradient_filled').classed('gradient_filled', false);
72161
72167
  };
72162
72168
 
72163
72169
  drawing.initPatterns = function(gd) {
@@ -72166,9 +72172,7 @@ drawing.initPatterns = function(gd) {
72166
72172
  var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns');
72167
72173
  patternsGroup.selectAll('pattern').remove();
72168
72174
 
72169
- // initialize stash of query parts filled in Drawing.pattern,
72170
- // used to fix URL strings during image exports
72171
- fullLayout._patternUrlQueryParts = {};
72175
+ d3.select(gd).selectAll('.pattern_filled').classed('pattern_filled', false);
72172
72176
  };
72173
72177
 
72174
72178
  drawing.getPatternAttr = function(mp, i, dflt) {
@@ -79505,12 +79509,16 @@ module.exports = function style(s, gd, legend) {
79505
79509
  var colorscale = cOpts.colorscale;
79506
79510
  var reversescale = cOpts.reversescale;
79507
79511
 
79508
- var fillGradient = function(s) {
79512
+ var fillStyle = function(s) {
79509
79513
  if(s.size()) {
79510
- var gradientID = 'legendfill-' + trace.uid;
79511
- Drawing.gradient(s, gd, gradientID,
79512
- getGradientDirection(reversescale),
79513
- colorscale, 'fill');
79514
+ if(showFill) {
79515
+ Drawing.fillGroupStyle(s, gd);
79516
+ } else {
79517
+ var gradientID = 'legendfill-' + trace.uid;
79518
+ Drawing.gradient(s, gd, gradientID,
79519
+ getGradientDirection(reversescale),
79520
+ colorscale, 'fill');
79521
+ }
79514
79522
  }
79515
79523
  };
79516
79524
 
@@ -79539,7 +79547,7 @@ module.exports = function style(s, gd, legend) {
79539
79547
  fill.enter().append('path').classed('js-fill', true);
79540
79548
  fill.exit().remove();
79541
79549
  fill.attr('d', pathStart + 'h' + itemWidth + 'v6h-' + itemWidth + 'z')
79542
- .call(showFill ? Drawing.fillGroupStyle : fillGradient);
79550
+ .call(fillStyle);
79543
79551
 
79544
79552
  if(showLine || showGradientLine) {
79545
79553
  var lw = boundLineWidth(undefined, trace.line, MAX_LINE_WIDTH, CST_LINE_WIDTH);
@@ -94651,6 +94659,7 @@ exports.convertToTspans = function(_context, gd, _callback) {
94651
94659
  // Until we get tex integrated more fully (so it can be used along with non-tex)
94652
94660
  // allow some elements to prohibit it by attaching 'data-notex' to the original
94653
94661
  var tex = (!_context.attr('data-notex')) &&
94662
+ gd && gd._context.typesetMath &&
94654
94663
  (typeof MathJax !== 'undefined') &&
94655
94664
  str.match(FIND_TEX);
94656
94665
 
@@ -94805,70 +94814,154 @@ function cleanEscapesForTex(s) {
94805
94814
  .replace(GT_MATCH, '\\gt ');
94806
94815
  }
94807
94816
 
94817
+ var inlineMath = [['$', '$'], ['\\(', '\\)']];
94818
+
94808
94819
  function texToSVG(_texString, _config, _callback) {
94820
+ var MathJaxVersion = parseInt(
94821
+ (MathJax.version || '').split('.')[0]
94822
+ );
94823
+
94824
+ if(
94825
+ MathJaxVersion !== 2 &&
94826
+ MathJaxVersion !== 3
94827
+ ) {
94828
+ Lib.warn('No MathJax version:', MathJax.version);
94829
+ return;
94830
+ }
94831
+
94809
94832
  var originalRenderer,
94810
94833
  originalConfig,
94811
94834
  originalProcessSectionDelay,
94812
94835
  tmpDiv;
94813
94836
 
94814
- MathJax.Hub.Queue(
94815
- function() {
94837
+ var setConfig2 = function() {
94816
94838
  originalConfig = Lib.extendDeepAll({}, MathJax.Hub.config);
94817
94839
 
94818
94840
  originalProcessSectionDelay = MathJax.Hub.processSectionDelay;
94819
94841
  if(MathJax.Hub.processSectionDelay !== undefined) {
94820
- // MathJax 2.5+
94842
+ // MathJax 2.5+ but not 3+
94821
94843
  MathJax.Hub.processSectionDelay = 0;
94822
94844
  }
94823
94845
 
94824
94846
  return MathJax.Hub.Config({
94825
94847
  messageStyle: 'none',
94826
94848
  tex2jax: {
94827
- inlineMath: [['$', '$'], ['\\(', '\\)']]
94849
+ inlineMath: inlineMath
94828
94850
  },
94829
94851
  displayAlign: 'left',
94830
94852
  });
94831
- },
94832
- function() {
94833
- // Get original renderer
94853
+ };
94854
+
94855
+ var setConfig3 = function() {
94856
+ originalConfig = Lib.extendDeepAll({}, MathJax.config);
94857
+
94858
+ if(!MathJax.config.tex) {
94859
+ MathJax.config.tex = {};
94860
+ }
94861
+
94862
+ MathJax.config.tex.inlineMath = inlineMath;
94863
+ };
94864
+
94865
+ var setRenderer2 = function() {
94834
94866
  originalRenderer = MathJax.Hub.config.menuSettings.renderer;
94835
94867
  if(originalRenderer !== 'SVG') {
94836
94868
  return MathJax.Hub.setRenderer('SVG');
94837
94869
  }
94838
- },
94839
- function() {
94870
+ };
94871
+
94872
+ var setRenderer3 = function() {
94873
+ originalRenderer = MathJax.config.startup.output;
94874
+ if(originalRenderer !== 'svg') {
94875
+ MathJax.config.startup.output = 'svg';
94876
+ }
94877
+ };
94878
+
94879
+ var initiateMathJax = function() {
94840
94880
  var randomID = 'math-output-' + Lib.randstr({}, 64);
94841
94881
  tmpDiv = d3.select('body').append('div')
94842
94882
  .attr({id: randomID})
94843
- .style({visibility: 'hidden', position: 'absolute'})
94844
- .style({'font-size': _config.fontSize + 'px'})
94883
+ .style({
94884
+ visibility: 'hidden',
94885
+ position: 'absolute',
94886
+ 'font-size': _config.fontSize + 'px'
94887
+ })
94845
94888
  .text(cleanEscapesForTex(_texString));
94846
94889
 
94847
- return MathJax.Hub.Typeset(tmpDiv.node());
94848
- },
94849
- function() {
94850
- var glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
94890
+ var tmpNode = tmpDiv.node();
94851
94891
 
94852
- if(tmpDiv.select('.MathJax_SVG').empty() || !tmpDiv.select('svg').node()) {
94892
+ return MathJaxVersion === 2 ?
94893
+ MathJax.Hub.Typeset(tmpNode) :
94894
+ MathJax.typeset([tmpNode]);
94895
+ };
94896
+
94897
+ var finalizeMathJax = function() {
94898
+ var sel = tmpDiv.select(
94899
+ MathJaxVersion === 2 ? '.MathJax_SVG' : '.MathJax'
94900
+ );
94901
+
94902
+ var node = !sel.empty() && tmpDiv.select('svg').node();
94903
+ if(!node) {
94853
94904
  Lib.log('There was an error in the tex syntax.', _texString);
94854
94905
  _callback();
94855
94906
  } else {
94856
- var svgBBox = tmpDiv.select('svg').node().getBoundingClientRect();
94857
- _callback(tmpDiv.select('.MathJax_SVG'), glyphDefs, svgBBox);
94907
+ var nodeBBox = node.getBoundingClientRect();
94908
+ var glyphDefs;
94909
+ if(MathJaxVersion === 2) {
94910
+ glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
94911
+ } else {
94912
+ glyphDefs = sel.select('defs');
94913
+ }
94914
+ _callback(sel, glyphDefs, nodeBBox);
94858
94915
  }
94859
94916
 
94860
94917
  tmpDiv.remove();
94918
+ };
94861
94919
 
94920
+ var resetRenderer2 = function() {
94862
94921
  if(originalRenderer !== 'SVG') {
94863
94922
  return MathJax.Hub.setRenderer(originalRenderer);
94864
94923
  }
94865
- },
94866
- function() {
94924
+ };
94925
+
94926
+ var resetRenderer3 = function() {
94927
+ if(originalRenderer !== 'svg') {
94928
+ MathJax.config.startup.output = originalRenderer;
94929
+ }
94930
+ };
94931
+
94932
+ var resetConfig2 = function() {
94867
94933
  if(originalProcessSectionDelay !== undefined) {
94868
94934
  MathJax.Hub.processSectionDelay = originalProcessSectionDelay;
94869
94935
  }
94870
94936
  return MathJax.Hub.Config(originalConfig);
94871
- });
94937
+ };
94938
+
94939
+ var resetConfig3 = function() {
94940
+ MathJax.config = originalConfig;
94941
+ };
94942
+
94943
+ if(MathJaxVersion === 2) {
94944
+ MathJax.Hub.Queue(
94945
+ setConfig2,
94946
+ setRenderer2,
94947
+ initiateMathJax,
94948
+ finalizeMathJax,
94949
+ resetRenderer2,
94950
+ resetConfig2
94951
+ );
94952
+ } else if(MathJaxVersion === 3) {
94953
+ setConfig3();
94954
+ setRenderer3();
94955
+ MathJax.startup.defaultReady();
94956
+
94957
+ MathJax.startup.promise.then(function() {
94958
+ initiateMathJax();
94959
+ finalizeMathJax();
94960
+
94961
+ resetRenderer3();
94962
+ resetConfig3();
94963
+ });
94964
+ }
94872
94965
  }
94873
94966
 
94874
94967
  var TAG_STYLES = {
@@ -100688,6 +100781,11 @@ var configAttributes = {
100688
100781
  dflt: false,
100689
100782
  },
100690
100783
 
100784
+ typesetMath: {
100785
+ valType: 'boolean',
100786
+ dflt: true,
100787
+ },
100788
+
100691
100789
  plotlyServerURL: {
100692
100790
  valType: 'string',
100693
100791
  dflt: '',
@@ -123519,7 +123617,7 @@ module.exports = function toSVG(gd, format, scale) {
123519
123617
  var toppaper = fullLayout._toppaper;
123520
123618
  var width = fullLayout.width;
123521
123619
  var height = fullLayout.height;
123522
- var i, k;
123620
+ var i;
123523
123621
 
123524
123622
  // make background color a rect in the svg, then revert after scraping
123525
123623
  // all other alterations have been dealt with by properly preparing the svg
@@ -123592,32 +123690,21 @@ module.exports = function toSVG(gd, format, scale) {
123592
123690
  }
123593
123691
  });
123594
123692
 
123595
- var queryParts = [];
123596
- if(fullLayout._gradientUrlQueryParts) {
123597
- for(k in fullLayout._gradientUrlQueryParts) queryParts.push(k);
123598
- }
123599
-
123600
- if(fullLayout._patternUrlQueryParts) {
123601
- for(k in fullLayout._patternUrlQueryParts) queryParts.push(k);
123602
- }
123603
-
123604
- if(queryParts.length) {
123605
- svg.selectAll(queryParts.join(',')).each(function() {
123606
- var pt = d3.select(this);
123693
+ svg.selectAll('.gradient_filled,.pattern_filled').each(function() {
123694
+ var pt = d3.select(this);
123607
123695
 
123608
- // similar to font family styles above,
123609
- // we must remove " after the SVG DOM has been serialized
123610
- var fill = this.style.fill;
123611
- if(fill && fill.indexOf('url(') !== -1) {
123612
- pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
123613
- }
123696
+ // similar to font family styles above,
123697
+ // we must remove " after the SVG DOM has been serialized
123698
+ var fill = this.style.fill;
123699
+ if(fill && fill.indexOf('url(') !== -1) {
123700
+ pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
123701
+ }
123614
123702
 
123615
- var stroke = this.style.stroke;
123616
- if(stroke && stroke.indexOf('url(') !== -1) {
123617
- pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
123618
- }
123619
- });
123620
- }
123703
+ var stroke = this.style.stroke;
123704
+ if(stroke && stroke.indexOf('url(') !== -1) {
123705
+ pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
123706
+ }
123707
+ });
123621
123708
 
123622
123709
  if(format === 'pdf' || format === 'eps') {
123623
123710
  // these formats make the extra line MathJax adds around symbols look super thick in some cases
@@ -124956,6 +125043,7 @@ var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplat
124956
125043
  var colorScaleAttrs = _dereq_('../../components/colorscale/attributes');
124957
125044
  var fontAttrs = _dereq_('../../plots/font_attributes');
124958
125045
  var dash = _dereq_('../../components/drawing/attributes').dash;
125046
+ var pattern = _dereq_('../../components/drawing/attributes').pattern;
124959
125047
 
124960
125048
  var Drawing = _dereq_('../../components/drawing');
124961
125049
  var constants = _dereq_('./constants');
@@ -125143,6 +125231,7 @@ module.exports = {
125143
125231
  editType: 'style',
125144
125232
  anim: true,
125145
125233
  },
125234
+ fillpattern: pattern,
125146
125235
  marker: extendFlat({
125147
125236
  symbol: {
125148
125237
  valType: 'enumerated',
@@ -125879,6 +125968,7 @@ var handleLineDefaults = _dereq_('./line_defaults');
125879
125968
  var handleLineShapeDefaults = _dereq_('./line_shape_defaults');
125880
125969
  var handleTextDefaults = _dereq_('./text_defaults');
125881
125970
  var handleFillColorDefaults = _dereq_('./fillcolor_defaults');
125971
+ var coercePattern = _dereq_('../../lib').coercePattern;
125882
125972
 
125883
125973
  module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
125884
125974
  function coerce(attr, dflt) {
@@ -125932,6 +126022,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
125932
126022
  if(traceOut.fill !== 'none') {
125933
126023
  handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);
125934
126024
  if(!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);
126025
+ coercePattern(coerce, 'fillpattern', traceOut.fillcolor, false);
125935
126026
  }
125936
126027
 
125937
126028
  var lineColor = (traceOut.line || {}).color;
@@ -127314,11 +127405,11 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
127314
127405
  // the points on the axes are the first two points. Otherwise
127315
127406
  // animations get a little crazy if the number of points changes.
127316
127407
  transition(ownFillEl3).attr('d', 'M' + pt1 + 'L' + pt0 + 'L' + fullpath.substr(1))
127317
- .call(Drawing.singleFillStyle);
127408
+ .call(Drawing.singleFillStyle, gd);
127318
127409
  } else {
127319
127410
  // fill to self: just join the path to itself
127320
127411
  transition(ownFillEl3).attr('d', fullpath + 'Z')
127321
- .call(Drawing.singleFillStyle);
127412
+ .call(Drawing.singleFillStyle, gd);
127322
127413
  }
127323
127414
  }
127324
127415
  } else if(tonext) {
@@ -127330,7 +127421,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
127330
127421
  // This makes strange results if one path is *not* entirely
127331
127422
  // inside the other, but then that is a strange usage.
127332
127423
  transition(tonext).attr('d', fullpath + 'Z' + prevRevpath + 'Z')
127333
- .call(Drawing.singleFillStyle);
127424
+ .call(Drawing.singleFillStyle, gd);
127334
127425
  } else {
127335
127426
  // tonextx/y: for now just connect endpoints with lines. This is
127336
127427
  // the correct behavior if the endpoints are at the same value of
@@ -127338,7 +127429,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
127338
127429
  // things depending on whether the new endpoint projects onto the
127339
127430
  // existing curve or off the end of it
127340
127431
  transition(tonext).attr('d', fullpath + 'L' + prevRevpath.substr(1) + 'Z')
127341
- .call(Drawing.singleFillStyle);
127432
+ .call(Drawing.singleFillStyle, gd);
127342
127433
  }
127343
127434
  trace._polygons = trace._polygons.concat(prevPolygons);
127344
127435
  } else {
@@ -127731,7 +127822,7 @@ function style(gd) {
127731
127822
  .call(Drawing.lineGroupStyle);
127732
127823
 
127733
127824
  s.selectAll('g.trace path.js-fill')
127734
- .call(Drawing.fillGroupStyle);
127825
+ .call(Drawing.fillGroupStyle, gd);
127735
127826
 
127736
127827
  Registry.getComponentMethod('errorbars', 'style')(s);
127737
127828
  }
@@ -129904,7 +129995,7 @@ function getSortFunc(opts, d2c) {
129904
129995
  'use strict';
129905
129996
 
129906
129997
  // package version injected by `npm run preprocess`
129907
- exports.version = '2.9.0';
129998
+ exports.version = '2.10.0';
129908
129999
 
129909
130000
  },{}]},{},[9])(9)
129910
130001
  });