@@ -15,7 +15,6 @@ var createPlot = glPlot3d.createScene;
15
15
16
16
var getContext = require ( 'webgl-context' ) ;
17
17
var passiveSupported = require ( 'has-passive-events' ) ;
18
- var isMobile = require ( 'is-mobile' ) ( { tablet : true } ) ;
19
18
20
19
var Registry = require ( '../../registry' ) ;
21
20
var Lib = require ( '../../lib' ) ;
@@ -31,6 +30,32 @@ var createAxesOptions = require('./layout/convert');
31
30
var createSpikeOptions = require ( './layout/spikes' ) ;
32
31
var computeTickMarks = require ( './layout/tick_marks' ) ;
33
32
33
+ var isMobile = require ( 'is-mobile' ) ;
34
+ var tablet = isTablet ( ) ;
35
+
36
+ function isTablet ( ) {
37
+ var navigator = window . navigator ;
38
+ var userAgent = navigator . userAgent ;
39
+
40
+ var result = isMobile ( {
41
+ ua : userAgent ,
42
+ tablet : true
43
+ } ) ;
44
+
45
+ // handle iPad pro or iPad with iOs 13 using Safari
46
+ // see https://github.com/plotly/plotly.js/issues/4502
47
+ if (
48
+ result === false &&
49
+ userAgent . indexOf ( 'Macintosh' ) !== - 1 &&
50
+ userAgent . indexOf ( 'Safari' ) !== - 1 &&
51
+ navigator . maxTouchPoints > 1
52
+ ) {
53
+ result = true ;
54
+ }
55
+
56
+ return result ;
57
+ }
58
+
34
59
35
60
var STATIC_CANVAS , STATIC_CONTEXT ;
36
61
@@ -96,7 +121,7 @@ proto.tryCreatePlot = function() {
96
121
canvas : scene . canvas ,
97
122
gl : scene . gl ,
98
123
glOptions : {
99
- preserveDrawingBuffer : isMobile ,
124
+ preserveDrawingBuffer : tablet ,
100
125
premultipliedAlpha : true ,
101
126
antialias : true
102
127
} ,
0 commit comments