@@ -15,7 +15,6 @@ var createPlot = glPlot3d.createScene;
1515
1616var getContext = require ( 'webgl-context' ) ;
1717var passiveSupported = require ( 'has-passive-events' ) ;
18- var isMobile = require ( 'is-mobile' ) ( { tablet : true } ) ;
1918
2019var Registry = require ( '../../registry' ) ;
2120var Lib = require ( '../../lib' ) ;
@@ -31,6 +30,32 @@ var createAxesOptions = require('./layout/convert');
3130var createSpikeOptions = require ( './layout/spikes' ) ;
3231var computeTickMarks = require ( './layout/tick_marks' ) ;
3332
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+
3459
3560var STATIC_CANVAS , STATIC_CONTEXT ;
3661
@@ -96,7 +121,7 @@ proto.tryCreatePlot = function() {
96121 canvas : scene . canvas ,
97122 gl : scene . gl ,
98123 glOptions : {
99- preserveDrawingBuffer : isMobile ,
124+ preserveDrawingBuffer : tablet ,
100125 premultipliedAlpha : true ,
101126 antialias : true
102127 } ,
0 commit comments