Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit bd21327

Browse filesBrowse files
committed
make a lib function to get preserve drawing buffer
1 parent 4bb651f commit bd21327
Copy full SHA for bd21327

File tree

Expand file treeCollapse file tree

3 files changed

+64
-56
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+64
-56
lines changed

‎src/lib/index.js

Copy file name to clipboardExpand all lines: src/lib/index.js
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ lib.getElementAndAncestors = domModule.getElementAndAncestors;
154154
lib.equalDomRects = domModule.equalDomRects;
155155

156156
lib.clearResponsive = require('./clear_responsive');
157+
lib.preserveDrawingBuffer = require('./preserve_drawing_buffer');
157158

158159
lib.makeTraceGroups = require('./make_trace_groups');
159160

‎src/lib/preserve_drawing_buffer.js

Copy file name to clipboard
+62Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/**
2+
* Copyright 2012-2020, Plotly, Inc.
3+
* All rights reserved.
4+
*
5+
* This source code is licensed under the MIT license found in the
6+
* LICENSE file in the root directory of this source tree.
7+
*/
8+
9+
'use strict';
10+
11+
var isNumeric = require('fast-isnumeric');
12+
var isMobileOrTablet = require('is-mobile');
13+
14+
module.exports = function getPreserveDrawingBuffer() {
15+
var ua = getUserAgent();
16+
if(typeof ua !== 'string') return true;
17+
18+
var hasDrawingBuffer = isMobileOrTablet({
19+
ua: ua,
20+
tablet: true,
21+
featureDetect: true
22+
});
23+
24+
if(!hasDrawingBuffer) {
25+
var allParts = ua.split(' ');
26+
for(var i = 1; i < allParts.length; i++) {
27+
var part = allParts[i];
28+
if(part.indexOf('Safari') !== -1) {
29+
// find Safari version
30+
var prevPart = allParts[i - 1];
31+
if(prevPart.substr(0, 8) === 'Version/') {
32+
var v = prevPart.substr(8).split('.')[0];
33+
34+
if(isNumeric(v)) v = +v;
35+
36+
// to fix https://github.com/plotly/plotly.js/issues/5158
37+
if(v >= 14) return true;
38+
}
39+
}
40+
}
41+
}
42+
43+
return hasDrawingBuffer;
44+
};
45+
46+
function getUserAgent() {
47+
// similar to https://github.com/juliangruber/is-mobile/blob/91ca39ccdd4cfc5edfb5391e2515b923a730fbea/index.js#L14-L17
48+
var ua;
49+
if(typeof navigator !== 'undefined') {
50+
ua = navigator.userAgent;
51+
}
52+
53+
if(
54+
ua &&
55+
ua.headers &&
56+
typeof ua.headers['user-agent'] === 'string'
57+
) {
58+
ua = ua.headers['user-agent'];
59+
}
60+
61+
return ua;
62+
}

‎src/plots/gl3d/scene.js

Copy file name to clipboardExpand all lines: src/plots/gl3d/scene.js
+1-56Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99

1010
'use strict';
1111

12-
var isNumeric = require('fast-isnumeric');
13-
1412
var glPlot3d = require('gl-plot3d');
1513
var createCamera = glPlot3d.createCamera;
1614
var createPlot = glPlot3d.createScene;
@@ -20,6 +18,7 @@ var passiveSupported = require('has-passive-events');
2018

2119
var Registry = require('../../registry');
2220
var Lib = require('../../lib');
21+
var preserveDrawingBuffer = Lib.preserveDrawingBuffer();
2322

2423
var Axes = require('../../plots/cartesian/axes');
2524
var Fx = require('../../components/fx');
@@ -32,60 +31,6 @@ var createAxesOptions = require('./layout/convert');
3231
var createSpikeOptions = require('./layout/spikes');
3332
var computeTickMarks = require('./layout/tick_marks');
3433

35-
var isMobileOrTablet = require('is-mobile');
36-
var preserveDrawingBuffer = getPreserveDrawingBuffer();
37-
38-
function getPreserveDrawingBuffer() {
39-
var ua = getUserAgent();
40-
if(typeof ua !== 'string') return true;
41-
42-
var hasDrawingBuffer = isMobileOrTablet({
43-
ua: ua,
44-
tablet: true,
45-
featureDetect: true
46-
});
47-
48-
if(!hasDrawingBuffer) {
49-
var allParts = ua.split(' ');
50-
for(var i = 1; i < allParts.length; i++) {
51-
var part = allParts[i];
52-
if(part.indexOf('Safari') !== -1) {
53-
// find Safari version
54-
var prevPart = allParts[i - 1];
55-
if(prevPart.substr(0, 8) === 'Version/') {
56-
var v = prevPart.substr(8).split('.')[0];
57-
58-
if(isNumeric(v)) v = +v;
59-
60-
// to fix https://github.com/plotly/plotly.js/issues/5158
61-
if(v >= 14) return true;
62-
}
63-
}
64-
}
65-
}
66-
67-
return hasDrawingBuffer;
68-
}
69-
70-
function getUserAgent() {
71-
// similar to https://github.com/juliangruber/is-mobile/blob/91ca39ccdd4cfc5edfb5391e2515b923a730fbea/index.js#L14-L17
72-
var ua;
73-
if(typeof navigator !== 'undefined') {
74-
ua = navigator.userAgent;
75-
}
76-
77-
if(
78-
ua &&
79-
ua.headers &&
80-
typeof ua.headers['user-agent'] === 'string'
81-
) {
82-
ua = ua.headers['user-agent'];
83-
}
84-
85-
return ua;
86-
}
87-
88-
8934
var STATIC_CANVAS, STATIC_CONTEXT;
9035

9136
function Scene(options, fullLayout) {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.