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
@@ -19,6 +19,7 @@ exports.convertToTspans = function(_context, gd, _callback) {
19
19
  // Until we get tex integrated more fully (so it can be used along with non-tex)
20
20
  // allow some elements to prohibit it by attaching 'data-notex' to the original
21
21
  var tex = (!_context.attr('data-notex')) &&
22
+ gd && gd._context.typesetMath &&
22
23
  (typeof MathJax !== 'undefined') &&
23
24
  str.match(FIND_TEX);
24
25
 
@@ -173,70 +174,154 @@ function cleanEscapesForTex(s) {
173
174
  .replace(GT_MATCH, '\\gt ');
174
175
  }
175
176
 
177
+ var inlineMath = [['$', '$'], ['\\(', '\\)']];
178
+
176
179
  function texToSVG(_texString, _config, _callback) {
180
+ var MathJaxVersion = parseInt(
181
+ (MathJax.version || '').split('.')[0]
182
+ );
183
+
184
+ if(
185
+ MathJaxVersion !== 2 &&
186
+ MathJaxVersion !== 3
187
+ ) {
188
+ Lib.warn('No MathJax version:', MathJax.version);
189
+ return;
190
+ }
191
+
177
192
  var originalRenderer,
178
193
  originalConfig,
179
194
  originalProcessSectionDelay,
180
195
  tmpDiv;
181
196
 
182
- MathJax.Hub.Queue(
183
- function() {
197
+ var setConfig2 = function() {
184
198
  originalConfig = Lib.extendDeepAll({}, MathJax.Hub.config);
185
199
 
186
200
  originalProcessSectionDelay = MathJax.Hub.processSectionDelay;
187
201
  if(MathJax.Hub.processSectionDelay !== undefined) {
188
- // MathJax 2.5+
202
+ // MathJax 2.5+ but not 3+
189
203
  MathJax.Hub.processSectionDelay = 0;
190
204
  }
191
205
 
192
206
  return MathJax.Hub.Config({
193
207
  messageStyle: 'none',
194
208
  tex2jax: {
195
- inlineMath: [['$', '$'], ['\\(', '\\)']]
209
+ inlineMath: inlineMath
196
210
  },
197
211
  displayAlign: 'left',
198
212
  });
199
- },
200
- function() {
201
- // Get original renderer
213
+ };
214
+
215
+ var setConfig3 = function() {
216
+ originalConfig = Lib.extendDeepAll({}, MathJax.config);
217
+
218
+ if(!MathJax.config.tex) {
219
+ MathJax.config.tex = {};
220
+ }
221
+
222
+ MathJax.config.tex.inlineMath = inlineMath;
223
+ };
224
+
225
+ var setRenderer2 = function() {
202
226
  originalRenderer = MathJax.Hub.config.menuSettings.renderer;
203
227
  if(originalRenderer !== 'SVG') {
204
228
  return MathJax.Hub.setRenderer('SVG');
205
229
  }
206
- },
207
- function() {
230
+ };
231
+
232
+ var setRenderer3 = function() {
233
+ originalRenderer = MathJax.config.startup.output;
234
+ if(originalRenderer !== 'svg') {
235
+ MathJax.config.startup.output = 'svg';
236
+ }
237
+ };
238
+
239
+ var initiateMathJax = function() {
208
240
  var randomID = 'math-output-' + Lib.randstr({}, 64);
209
241
  tmpDiv = d3.select('body').append('div')
210
242
  .attr({id: randomID})
211
- .style({visibility: 'hidden', position: 'absolute'})
212
- .style({'font-size': _config.fontSize + 'px'})
243
+ .style({
244
+ visibility: 'hidden',
245
+ position: 'absolute',
246
+ 'font-size': _config.fontSize + 'px'
247
+ })
213
248
  .text(cleanEscapesForTex(_texString));
214
249
 
215
- return MathJax.Hub.Typeset(tmpDiv.node());
216
- },
217
- function() {
218
- var glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
250
+ var tmpNode = tmpDiv.node();
251
+
252
+ return MathJaxVersion === 2 ?
253
+ MathJax.Hub.Typeset(tmpNode) :
254
+ MathJax.typeset([tmpNode]);
255
+ };
256
+
257
+ var finalizeMathJax = function() {
258
+ var sel = tmpDiv.select(
259
+ MathJaxVersion === 2 ? '.MathJax_SVG' : '.MathJax'
260
+ );
219
261
 
220
- if(tmpDiv.select('.MathJax_SVG').empty() || !tmpDiv.select('svg').node()) {
262
+ var node = !sel.empty() && tmpDiv.select('svg').node();
263
+ if(!node) {
221
264
  Lib.log('There was an error in the tex syntax.', _texString);
222
265
  _callback();
223
266
  } else {
224
- var svgBBox = tmpDiv.select('svg').node().getBoundingClientRect();
225
- _callback(tmpDiv.select('.MathJax_SVG'), glyphDefs, svgBBox);
267
+ var nodeBBox = node.getBoundingClientRect();
268
+ var glyphDefs;
269
+ if(MathJaxVersion === 2) {
270
+ glyphDefs = d3.select('body').select('#MathJax_SVG_glyphs');
271
+ } else {
272
+ glyphDefs = sel.select('defs');
273
+ }
274
+ _callback(sel, glyphDefs, nodeBBox);
226
275
  }
227
276
 
228
277
  tmpDiv.remove();
278
+ };
229
279
 
280
+ var resetRenderer2 = function() {
230
281
  if(originalRenderer !== 'SVG') {
231
282
  return MathJax.Hub.setRenderer(originalRenderer);
232
283
  }
233
- },
234
- function() {
284
+ };
285
+
286
+ var resetRenderer3 = function() {
287
+ if(originalRenderer !== 'svg') {
288
+ MathJax.config.startup.output = originalRenderer;
289
+ }
290
+ };
291
+
292
+ var resetConfig2 = function() {
235
293
  if(originalProcessSectionDelay !== undefined) {
236
294
  MathJax.Hub.processSectionDelay = originalProcessSectionDelay;
237
295
  }
238
296
  return MathJax.Hub.Config(originalConfig);
239
- });
297
+ };
298
+
299
+ var resetConfig3 = function() {
300
+ MathJax.config = originalConfig;
301
+ };
302
+
303
+ if(MathJaxVersion === 2) {
304
+ MathJax.Hub.Queue(
305
+ setConfig2,
306
+ setRenderer2,
307
+ initiateMathJax,
308
+ finalizeMathJax,
309
+ resetRenderer2,
310
+ resetConfig2
311
+ );
312
+ } else if(MathJaxVersion === 3) {
313
+ setConfig3();
314
+ setRenderer3();
315
+ MathJax.startup.defaultReady();
316
+
317
+ MathJax.startup.promise.then(function() {
318
+ initiateMathJax();
319
+ finalizeMathJax();
320
+
321
+ resetRenderer3();
322
+ resetConfig3();
323
+ });
324
+ }
240
325
  }
241
326
 
242
327
  var TAG_STYLES = {
@@ -22,6 +22,15 @@ var configAttributes = {
22
22
  ].join(' ')
23
23
  },
24
24
 
25
+ typesetMath: {
26
+ valType: 'boolean',
27
+ dflt: true,
28
+ description: [
29
+ 'Determines whether math should be typeset or not,',
30
+ 'when MathJax (either v2 or v3) is present on the page.'
31
+ ].join(' ')
32
+ },
33
+
25
34
  plotlyServerURL: {
26
35
  valType: 'string',
27
36
  dflt: '',
@@ -33,7 +33,7 @@ module.exports = function toSVG(gd, format, scale) {
33
33
  var toppaper = fullLayout._toppaper;
34
34
  var width = fullLayout.width;
35
35
  var height = fullLayout.height;
36
- var i, k;
36
+ var i;
37
37
 
38
38
  // make background color a rect in the svg, then revert after scraping
39
39
  // all other alterations have been dealt with by properly preparing the svg
@@ -106,32 +106,21 @@ module.exports = function toSVG(gd, format, scale) {
106
106
  }
107
107
  });
108
108
 
109
- var queryParts = [];
110
- if(fullLayout._gradientUrlQueryParts) {
111
- for(k in fullLayout._gradientUrlQueryParts) queryParts.push(k);
112
- }
113
-
114
- if(fullLayout._patternUrlQueryParts) {
115
- for(k in fullLayout._patternUrlQueryParts) queryParts.push(k);
116
- }
109
+ svg.selectAll('.gradient_filled,.pattern_filled').each(function() {
110
+ var pt = d3.select(this);
117
111
 
118
- if(queryParts.length) {
119
- svg.selectAll(queryParts.join(',')).each(function() {
120
- var pt = d3.select(this);
121
-
122
- // similar to font family styles above,
123
- // we must remove " after the SVG DOM has been serialized
124
- var fill = this.style.fill;
125
- if(fill && fill.indexOf('url(') !== -1) {
126
- pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
127
- }
112
+ // similar to font family styles above,
113
+ // we must remove " after the SVG DOM has been serialized
114
+ var fill = this.style.fill;
115
+ if(fill && fill.indexOf('url(') !== -1) {
116
+ pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
117
+ }
128
118
 
129
- var stroke = this.style.stroke;
130
- if(stroke && stroke.indexOf('url(') !== -1) {
131
- pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
132
- }
133
- });
134
- }
119
+ var stroke = this.style.stroke;
120
+ if(stroke && stroke.indexOf('url(') !== -1) {
121
+ pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));
122
+ }
123
+ });
135
124
 
136
125
  if(format === 'pdf' || format === 'eps') {
137
126
  // these formats make the extra line MathJax adds around symbols look super thick in some cases
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
4
+ attributes: require('./attributes'),
5
+ supplyDefaults: require('./defaults'),
6
+ calc: require('./calc'),
7
+ colorbar: {
8
+ container: 'line',
9
+ min: 'cmin',
10
+ max: 'cmax'
11
+ },
12
+
13
+ moduleType: 'trace',
14
+ name: 'parcoords',
15
+ basePlotModule: require('./base_plot'),
16
+ categories: ['gl', 'regl', 'noOpacity', 'noHover'],
17
+ meta: {
18
+ description: [
19
+ 'Parallel coordinates for multidimensional exploratory data analysis.',
20
+ 'The samples are specified in `dimensions`.',
21
+ 'The colors are set in `line.color`.'
22
+ ].join(' ')
23
+ }
24
+ };
@@ -1,25 +1,7 @@
1
1
  'use strict';
2
2
 
3
- module.exports = {
4
- attributes: require('./attributes'),
5
- supplyDefaults: require('./defaults'),
6
- calc: require('./calc'),
7
- plot: require('./plot'),
8
- colorbar: {
9
- container: 'line',
10
- min: 'cmin',
11
- max: 'cmax'
12
- },
3
+ var index = require('./base_index');
13
4
 
14
- moduleType: 'trace',
15
- name: 'parcoords',
16
- basePlotModule: require('./base_plot'),
17
- categories: ['gl', 'regl', 'noOpacity', 'noHover'],
18
- meta: {
19
- description: [
20
- 'Parallel coordinates for multidimensional exploratory data analysis.',
21
- 'The samples are specified in `dimensions`.',
22
- 'The colors are set in `line.color`.'
23
- ].join(' ')
24
- }
25
- };
5
+ index.plot = require('./plot');
6
+
7
+ module.exports = index;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var plot = require('./plot');
4
+
5
+ var reglPrecompiled = require('./regl_precompiled');
6
+
7
+ Object.assign(plot.reglPrecompiled, reglPrecompiled);
8
+
9
+ module.exports = plot;
@@ -3,6 +3,7 @@
3
3
  var parcoords = require('./parcoords');
4
4
  var prepareRegl = require('../../lib/prepare_regl');
5
5
  var isVisible = require('./helpers').isVisible;
6
+ var reglPrecompiled = {};
6
7
 
7
8
  function newIndex(visibleIndices, orig, dim) {
8
9
  var origIndex = orig.indexOf(dim);
@@ -23,10 +24,10 @@ function sorter(visibleIndices, orig) {
23
24
  };
24
25
  }
25
26
 
26
- module.exports = function plot(gd, cdModule) {
27
+ var exports = module.exports = function plot(gd, cdModule) {
27
28
  var fullLayout = gd._fullLayout;
28
29
 
29
- var success = prepareRegl(gd);
30
+ var success = prepareRegl(gd, [], reglPrecompiled);
30
31
  if(!success) return;
31
32
 
32
33
  var currentDims = {};
@@ -143,3 +144,5 @@ module.exports = function plot(gd, cdModule) {
143
144
  }
144
145
  );
145
146
  };
147
+
148
+ exports.reglPrecompiled = reglPrecompiled;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+ var v0 = require('../../generated/regl-codegen/909861c036d6f1ef40ba2dfcc33ef32489d2fe05fa7b7984d5ff315ddceb17b1');
3
+ var v1 = require('../../generated/regl-codegen/4df455b48c9de7d9f1de4b9481b505c09613ba7f90d2b4e360e673839566688e');
4
+ var v2 = require('../../generated/regl-codegen/59568c77bcbe6343ee6109df49ceeb78c8a8a8a81872e88fb077f9a3d6dc0567');
5
+ var v3 = require('../../generated/regl-codegen/c759965c8d66b2b356ae7455825df829f2ba7d4e7e903236f8c8d3bc5f45bd44');
6
+
7
+ module.exports = {
8
+ '909861c036d6f1ef40ba2dfcc33ef32489d2fe05fa7b7984d5ff315ddceb17b1': v0,
9
+ '4df455b48c9de7d9f1de4b9481b505c09613ba7f90d2b4e360e673839566688e': v1,
10
+ '59568c77bcbe6343ee6109df49ceeb78c8a8a8a81872e88fb077f9a3d6dc0567': v2,
11
+ 'c759965c8d66b2b356ae7455825df829f2ba7d4e7e903236f8c8d3bc5f45bd44': v3
12
+ };
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var index = require('./base_index');
4
+
5
+ index.plot = require('./plot-strict');
6
+
7
+ module.exports = index;
@@ -6,6 +6,7 @@ var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplat
6
6
  var colorScaleAttrs = require('../../components/colorscale/attributes');
7
7
  var fontAttrs = require('../../plots/font_attributes');
8
8
  var dash = require('../../components/drawing/attributes').dash;
9
+ var pattern = require('../../components/drawing/attributes').pattern;
9
10
 
10
11
  var Drawing = require('../../components/drawing');
11
12
  var constants = require('./constants');
@@ -363,6 +364,7 @@ module.exports = {
363
364
  'marker color, or marker line color, whichever is available.'
364
365
  ].join(' ')
365
366
  },
367
+ fillpattern: pattern,
366
368
  marker: extendFlat({
367
369
  symbol: {
368
370
  valType: 'enumerated',
@@ -14,6 +14,7 @@ var handleLineDefaults = require('./line_defaults');
14
14
  var handleLineShapeDefaults = require('./line_shape_defaults');
15
15
  var handleTextDefaults = require('./text_defaults');
16
16
  var handleFillColorDefaults = require('./fillcolor_defaults');
17
+ var coercePattern = require('../../lib').coercePattern;
17
18
 
18
19
  module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
19
20
  function coerce(attr, dflt) {
@@ -67,6 +68,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
67
68
  if(traceOut.fill !== 'none') {
68
69
  handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);
69
70
  if(!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);
71
+ coercePattern(coerce, 'fillpattern', traceOut.fillcolor, false);
70
72
  }
71
73
 
72
74
  var lineColor = (traceOut.line || {}).color;
@@ -304,11 +304,11 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
304
304
  // the points on the axes are the first two points. Otherwise
305
305
  // animations get a little crazy if the number of points changes.
306
306
  transition(ownFillEl3).attr('d', 'M' + pt1 + 'L' + pt0 + 'L' + fullpath.substr(1))
307
- .call(Drawing.singleFillStyle);
307
+ .call(Drawing.singleFillStyle, gd);
308
308
  } else {
309
309
  // fill to self: just join the path to itself
310
310
  transition(ownFillEl3).attr('d', fullpath + 'Z')
311
- .call(Drawing.singleFillStyle);
311
+ .call(Drawing.singleFillStyle, gd);
312
312
  }
313
313
  }
314
314
  } else if(tonext) {
@@ -320,7 +320,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
320
320
  // This makes strange results if one path is *not* entirely
321
321
  // inside the other, but then that is a strange usage.
322
322
  transition(tonext).attr('d', fullpath + 'Z' + prevRevpath + 'Z')
323
- .call(Drawing.singleFillStyle);
323
+ .call(Drawing.singleFillStyle, gd);
324
324
  } else {
325
325
  // tonextx/y: for now just connect endpoints with lines. This is
326
326
  // the correct behavior if the endpoints are at the same value of
@@ -328,7 +328,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
328
328
  // things depending on whether the new endpoint projects onto the
329
329
  // existing curve or off the end of it
330
330
  transition(tonext).attr('d', fullpath + 'L' + prevRevpath.substr(1) + 'Z')
331
- .call(Drawing.singleFillStyle);
331
+ .call(Drawing.singleFillStyle, gd);
332
332
  }
333
333
  trace._polygons = trace._polygons.concat(prevPolygons);
334
334
  } else {
@@ -27,7 +27,7 @@ function style(gd) {
27
27
  .call(Drawing.lineGroupStyle);
28
28
 
29
29
  s.selectAll('g.trace path.js-fill')
30
- .call(Drawing.fillGroupStyle);
30
+ .call(Drawing.fillGroupStyle, gd);
31
31
 
32
32
  Registry.getComponentMethod('errorbars', 'style')(s);
33
33
  }
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var hover = require('./hover');
4
+
5
+ module.exports = {
6
+ moduleType: 'trace',
7
+ name: 'scattergl',
8
+ basePlotModule: require('../../plots/cartesian'),
9
+ categories: ['gl', 'regl', 'cartesian', 'symbols', 'errorBarsOK', 'showLegend', 'scatter-like'],
10
+
11
+ attributes: require('./attributes'),
12
+ supplyDefaults: require('./defaults'),
13
+ crossTraceDefaults: require('../scatter/cross_trace_defaults'),
14
+ colorbar: require('../scatter/marker_colorbar'),
15
+ formatLabels: require('./format_labels'),
16
+ calc: require('./calc'),
17
+ hoverPoints: hover.hoverPoints,
18
+ selectPoints: require('./select'),
19
+
20
+ meta: {
21
+ hrName: 'scatter_gl',
22
+ description: [
23
+ 'The data visualized as scatter point or lines is set in `x` and `y`',
24
+ 'using the WebGL plotting engine.',
25
+ 'Bubble charts are achieved by setting `marker.size` and/or `marker.color`',
26
+ 'to a numerical arrays.'
27
+ ].join(' ')
28
+ }
29
+ };
@@ -1,30 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var hover = require('./hover');
3
+ var index = require('./base_index');
4
4
 
5
- module.exports = {
6
- moduleType: 'trace',
7
- name: 'scattergl',
8
- basePlotModule: require('../../plots/cartesian'),
9
- categories: ['gl', 'regl', 'cartesian', 'symbols', 'errorBarsOK', 'showLegend', 'scatter-like'],
5
+ index.plot = require('./plot');
10
6
 
11
- attributes: require('./attributes'),
12
- supplyDefaults: require('./defaults'),
13
- crossTraceDefaults: require('../scatter/cross_trace_defaults'),
14
- colorbar: require('../scatter/marker_colorbar'),
15
- formatLabels: require('./format_labels'),
16
- calc: require('./calc'),
17
- plot: require('./plot'),
18
- hoverPoints: hover.hoverPoints,
19
- selectPoints: require('./select'),
20
-
21
- meta: {
22
- hrName: 'scatter_gl',
23
- description: [
24
- 'The data visualized as scatter point or lines is set in `x` and `y`',
25
- 'using the WebGL plotting engine.',
26
- 'Bubble charts are achieved by setting `marker.size` and/or `marker.color`',
27
- 'to a numerical arrays.'
28
- ].join(' ')
29
- }
30
- };
7
+ module.exports = index;
@@ -14,6 +14,7 @@ var linkTraces = require('../scatter/link_traces');
14
14
 
15
15
  var styleTextSelection = require('./edit_style').styleTextSelection;
16
16
 
17
+ var reglPrecompiled = {};
17
18
 
18
19
  function getViewport(fullLayout, xaxis, yaxis, plotGlPixelRatio) {
19
20
  var gs = fullLayout._size;
@@ -34,7 +35,7 @@ function getViewport(fullLayout, xaxis, yaxis, plotGlPixelRatio) {
34
35
  ];
35
36
  }
36
37
 
37
- module.exports = function plot(gd, subplot, cdata) {
38
+ var exports = module.exports = function plot(gd, subplot, cdata) {
38
39
  if(!cdata.length) return;
39
40
 
40
41
  var fullLayout = gd._fullLayout;
@@ -46,7 +47,7 @@ module.exports = function plot(gd, subplot, cdata) {
46
47
  // we may have more subplots than initialized data due to Axes.getSubplots method
47
48
  if(!scene) return;
48
49
 
49
- var success = prepareRegl(gd, ['ANGLE_instanced_arrays', 'OES_element_index_uint']);
50
+ var success = prepareRegl(gd, ['ANGLE_instanced_arrays', 'OES_element_index_uint'], reglPrecompiled);
50
51
  if(!success) {
51
52
  scene.init();
52
53
  return;
@@ -369,3 +370,5 @@ module.exports = function plot(gd, subplot, cdata) {
369
370
  scene.glText.forEach(function(text) { text.update(vpRange0); });
370
371
  }
371
372
  };
373
+
374
+ exports.reglPrecompiled = reglPrecompiled;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var plot = require('./plot');
4
+
5
+ var reglPrecompiled = require('./regl_precompiled');
6
+
7
+ Object.assign(plot.reglPrecompiled, reglPrecompiled);
8
+
9
+ module.exports = plot;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+ var v0 = require('../../generated/regl-codegen/53f2bf051e4ba66c90f343d29aa8da9e4029454c0d428f8e46e94dfddc97c8c6');
3
+ var v1 = require('../../generated/regl-codegen/8a43b073e4f3e9c0e499c8ac9c253f2aa1e3d3de2febfccc6526b52295dbf770');
4
+ var v2 = require('../../generated/regl-codegen/ff8495670417d5d0e4caa9942ad63b4dff0242a390ac1cb807c78ca326d6f3ce');
5
+ var v3 = require('../../generated/regl-codegen/21cec01aa93887c70e86d7f1bc84d6837da0b1f5c1ff4cadd42ac6eb37f9f316');
6
+ var v4 = require('../../generated/regl-codegen/f9448a214a3e3cd439b767559aa71a4d1ccf5a8f39b8b756973e71acd33ff956');
7
+ var v5 = require('../../generated/regl-codegen/0919c57b995304312da30a5af7873a319bfb7b7e22ff6b4fa203ecbd5774ebfc');
8
+ var v6 = require('../../generated/regl-codegen/13c0ae156483f2bcbd7ff29404f0abfd8689ff43f41791a6c7469868690a4260');
9
+ var v7 = require('../../generated/regl-codegen/19769c875db736c08a744c0a6aabe28276ed06aa24fdb7c36506a9f4c1f56f13');
10
+ var v8 = require('../../generated/regl-codegen/6c3ff5a68d2906faf59307b58a799389f916ebdd3f7732ce75967575041988fc');
11
+ var v9 = require('../../generated/regl-codegen/7c8e7f36e693904898ece5f7f8b49b23c69d98397567c3915a45647209eb7da4');
12
+
13
+ module.exports = {
14
+ '53f2bf051e4ba66c90f343d29aa8da9e4029454c0d428f8e46e94dfddc97c8c6': v0,
15
+ '8a43b073e4f3e9c0e499c8ac9c253f2aa1e3d3de2febfccc6526b52295dbf770': v1,
16
+ 'ff8495670417d5d0e4caa9942ad63b4dff0242a390ac1cb807c78ca326d6f3ce': v2,
17
+ '21cec01aa93887c70e86d7f1bc84d6837da0b1f5c1ff4cadd42ac6eb37f9f316': v3,
18
+ 'f9448a214a3e3cd439b767559aa71a4d1ccf5a8f39b8b756973e71acd33ff956': v4,
19
+ '0919c57b995304312da30a5af7873a319bfb7b7e22ff6b4fa203ecbd5774ebfc': v5,
20
+ '13c0ae156483f2bcbd7ff29404f0abfd8689ff43f41791a6c7469868690a4260': v6,
21
+ '19769c875db736c08a744c0a6aabe28276ed06aa24fdb7c36506a9f4c1f56f13': v7,
22
+ '6c3ff5a68d2906faf59307b58a799389f916ebdd3f7732ce75967575041988fc': v8,
23
+ '7c8e7f36e693904898ece5f7f8b49b23c69d98397567c3915a45647209eb7da4': v9
24
+ };
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var index = require('./base_index');
4
+
5
+ index.plot = require('./plot_strict');
6
+
7
+ module.exports = index;
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
4
+ moduleType: 'trace',
5
+ name: 'scatterpolargl',
6
+ basePlotModule: require('../../plots/polar'),
7
+ categories: ['gl', 'regl', 'polar', 'symbols', 'showLegend', 'scatter-like'],
8
+
9
+ attributes: require('./attributes'),
10
+ supplyDefaults: require('./defaults'),
11
+ colorbar: require('../scatter/marker_colorbar'),
12
+ formatLabels: require('./format_labels'),
13
+
14
+ calc: require('./calc'),
15
+ hoverPoints: require('./hover').hoverPoints,
16
+ selectPoints: require('../scattergl/select'),
17
+
18
+ meta: {
19
+ hrName: 'scatter_polar_gl',
20
+ description: [
21
+ 'The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts',
22
+ 'in polar coordinates using the WebGL plotting engine.',
23
+ 'The data visualized as scatter point or lines is set in',
24
+ '`r` (radial) and `theta` (angular) coordinates',
25
+ 'Bubble charts are achieved by setting `marker.size` and/or `marker.color`',
26
+ 'to numerical arrays.'
27
+ ].join(' ')
28
+ }
29
+ };
@@ -1,30 +1,7 @@
1
1
  'use strict';
2
2
 
3
- module.exports = {
4
- moduleType: 'trace',
5
- name: 'scatterpolargl',
6
- basePlotModule: require('../../plots/polar'),
7
- categories: ['gl', 'regl', 'polar', 'symbols', 'showLegend', 'scatter-like'],
3
+ var index = require('./base_index');
8
4
 
9
- attributes: require('./attributes'),
10
- supplyDefaults: require('./defaults'),
11
- colorbar: require('../scatter/marker_colorbar'),
12
- formatLabels: require('./format_labels'),
5
+ index.plot = require('./plot');
13
6
 
14
- calc: require('./calc'),
15
- plot: require('./plot'),
16
- hoverPoints: require('./hover').hoverPoints,
17
- selectPoints: require('../scattergl/select'),
18
-
19
- meta: {
20
- hrName: 'scatter_polar_gl',
21
- description: [
22
- 'The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts',
23
- 'in polar coordinates using the WebGL plotting engine.',
24
- 'The data visualized as scatter point or lines is set in',
25
- '`r` (radial) and `theta` (angular) coordinates',
26
- 'Bubble charts are achieved by setting `marker.size` and/or `marker.color`',
27
- 'to numerical arrays.'
28
- ].join(' ')
29
- }
30
- };
7
+ module.exports = index;