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.
- package/.circleci/config.yml +39 -1
- package/.circleci/test.sh +14 -1
- package/CHANGELOG.md +24 -1
- package/CONTRIBUTING.md +18 -1
- package/README.md +12 -4
- package/dist/README.md +28 -28
- package/dist/plot-schema.json +98 -0
- package/dist/plotly-basic.js +174 -83
- package/dist/plotly-basic.min.js +3 -3
- package/dist/plotly-cartesian.js +174 -83
- package/dist/plotly-cartesian.min.js +4 -4
- package/dist/plotly-finance.js +174 -83
- package/dist/plotly-finance.min.js +3 -3
- package/dist/plotly-geo-assets.js +2 -2
- package/dist/plotly-geo.js +174 -83
- package/dist/plotly-geo.min.js +3 -3
- package/dist/plotly-gl2d.js +601 -433
- package/dist/plotly-gl2d.min.js +10 -10
- package/dist/plotly-gl3d.js +223 -91
- package/dist/plotly-gl3d.min.js +8 -8
- package/dist/plotly-mapbox.js +174 -83
- package/dist/plotly-mapbox.min.js +2 -2
- package/dist/plotly-strict.js +40414 -1028
- package/dist/plotly-strict.min.js +11 -11
- package/dist/plotly-with-meta.js +881 -704
- package/dist/plotly.js +848 -675
- package/dist/plotly.min.js +4 -4
- package/lib/index-strict.js +5 -0
- package/package.json +13 -9
- package/src/components/drawing/index.js +28 -24
- package/src/components/legend/style.js +10 -6
- package/src/generated/regl-codegen/0919c57b995304312da30a5af7873a319bfb7b7e22ff6b4fa203ecbd5774ebfc +1462 -0
- package/src/generated/regl-codegen/13c0ae156483f2bcbd7ff29404f0abfd8689ff43f41791a6c7469868690a4260 +3391 -0
- package/src/generated/regl-codegen/19769c875db736c08a744c0a6aabe28276ed06aa24fdb7c36506a9f4c1f56f13 +3375 -0
- package/src/generated/regl-codegen/21cec01aa93887c70e86d7f1bc84d6837da0b1f5c1ff4cadd42ac6eb37f9f316 +2488 -0
- package/src/generated/regl-codegen/4df455b48c9de7d9f1de4b9481b505c09613ba7f90d2b4e360e673839566688e +662 -0
- package/src/generated/regl-codegen/53f2bf051e4ba66c90f343d29aa8da9e4029454c0d428f8e46e94dfddc97c8c6 +459 -0
- package/src/generated/regl-codegen/59568c77bcbe6343ee6109df49ceeb78c8a8a8a81872e88fb077f9a3d6dc0567 +637 -0
- package/src/generated/regl-codegen/6c3ff5a68d2906faf59307b58a799389f916ebdd3f7732ce75967575041988fc +2226 -0
- package/src/generated/regl-codegen/7c8e7f36e693904898ece5f7f8b49b23c69d98397567c3915a45647209eb7da4 +2052 -0
- package/src/generated/regl-codegen/8a43b073e4f3e9c0e499c8ac9c253f2aa1e3d3de2febfccc6526b52295dbf770 +664 -0
- package/src/generated/regl-codegen/909861c036d6f1ef40ba2dfcc33ef32489d2fe05fa7b7984d5ff315ddceb17b1 +454 -0
- package/src/generated/regl-codegen/c759965c8d66b2b356ae7455825df829f2ba7d4e7e903236f8c8d3bc5f45bd44 +2116 -0
- package/src/generated/regl-codegen/f9448a214a3e3cd439b767559aa71a4d1ccf5a8f39b8b756973e71acd33ff956 +2755 -0
- package/src/generated/regl-codegen/ff8495670417d5d0e4caa9942ad63b4dff0242a390ac1cb807c78ca326d6f3ce +639 -0
- package/src/lib/prepare_regl.js +7 -3
- package/src/lib/svg_text_utils.js +106 -21
- package/src/plot_api/plot_config.js +9 -0
- package/src/snapshot/tosvg.js +14 -25
- package/src/traces/parcoords/base_index.js +24 -0
- package/src/traces/parcoords/index.js +4 -22
- package/src/traces/parcoords/plot-strict.js +9 -0
- package/src/traces/parcoords/plot.js +5 -2
- package/src/traces/parcoords/regl_precompiled.js +12 -0
- package/src/traces/parcoords/strict.js +7 -0
- package/src/traces/scatter/attributes.js +2 -0
- package/src/traces/scatter/defaults.js +2 -0
- package/src/traces/scatter/plot.js +4 -4
- package/src/traces/scatter/style.js +1 -1
- package/src/traces/scattergl/base_index.js +29 -0
- package/src/traces/scattergl/index.js +3 -26
- package/src/traces/scattergl/plot.js +5 -2
- package/src/traces/scattergl/plot_strict.js +9 -0
- package/src/traces/scattergl/regl_precompiled.js +24 -0
- package/src/traces/scattergl/strict.js +7 -0
- package/src/traces/scatterpolargl/base_index.js +29 -0
- package/src/traces/scatterpolargl/index.js +3 -26
- package/src/traces/scatterpolargl/plot.js +4 -0
- package/src/traces/scatterpolargl/plot_strict.js +13 -0
- package/src/traces/scatterpolargl/regl_precompiled.js +24 -0
- package/src/traces/scatterpolargl/strict.js +7 -0
- package/src/traces/splom/base_index.js +36 -0
- package/src/traces/splom/base_plot.js +5 -2
- package/src/traces/splom/base_plot_strict.js +9 -0
- package/src/traces/splom/index.js +3 -33
- package/src/traces/splom/regl_precompiled.js +24 -0
- package/src/traces/splom/strict.js +7 -0
- package/src/version.js +1 -1
- package/stackgl_modules/index.js +49 -8
- package/stackgl_modules/package-lock.json +10 -10
- package/stackgl_modules/package.json +2 -2
- package/tasks/bundle.js +18 -0
- package/tasks/noci_test.sh +1 -1
- package/tasks/partial_bundle.js +26 -23
- package/tasks/stats.js +3 -3
- 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
|
-
|
|
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
|
-
|
|
201
|
-
|
|
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
|
-
|
|
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({
|
|
212
|
-
|
|
243
|
+
.style({
|
|
244
|
+
visibility: 'hidden',
|
|
245
|
+
position: 'absolute',
|
|
246
|
+
'font-size': _config.fontSize + 'px'
|
|
247
|
+
})
|
|
213
248
|
.text(cleanEscapesForTex(_texString));
|
|
214
249
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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
|
-
|
|
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
|
|
225
|
-
|
|
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
|
-
|
|
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: '',
|
package/src/snapshot/tosvg.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
110
|
-
|
|
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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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;
|
|
@@ -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
|
+
};
|
|
@@ -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 {
|
|
@@ -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
|
|
3
|
+
var index = require('./base_index');
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
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,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,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
|
-
|
|
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
|
-
|
|
10
|
-
supplyDefaults: require('./defaults'),
|
|
11
|
-
colorbar: require('../scatter/marker_colorbar'),
|
|
12
|
-
formatLabels: require('./format_labels'),
|
|
5
|
+
index.plot = require('./plot');
|
|
13
6
|
|
|
14
|
-
|
|
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;
|