9
9
'use strict' ;
10
10
11
11
var Lib = require ( '../lib' ) ;
12
+ var helpers = require ( './helpers' ) ;
12
13
13
14
/*
14
15
* substantial portions of this code from FileSaver.js
@@ -45,23 +46,23 @@ function fileSaver(url, name, format) {
45
46
if ( Lib . isIE ( ) ) {
46
47
// At this point we are only dealing with a decoded SVG as
47
48
// a data URL (since IE only supports SVG)
48
- blob = createBlob ( url , format ) ;
49
+ blob = helpers . createBlob ( url , 'svg' ) ;
49
50
window . navigator . msSaveBlob ( blob , name ) ;
50
51
blob = null ;
51
52
return resolve ( name ) ;
52
53
}
53
54
54
55
if ( canUseSaveLink ) {
55
- blob = createBlob ( url , format ) ;
56
- objectUrl = window . URL . createObjectURL ( blob ) ;
56
+ blob = helpers . createBlob ( url , format ) ;
57
+ objectUrl = helpers . createObjectURL ( blob ) ;
57
58
58
59
saveLink . href = objectUrl ;
59
60
saveLink . download = name ;
60
61
document . body . appendChild ( saveLink ) ;
61
62
saveLink . click ( ) ;
62
63
63
64
document . body . removeChild ( saveLink ) ;
64
- window . URL . revokeObjectURL ( objectUrl ) ;
65
+ helpers . revokeObjectURL ( objectUrl ) ;
65
66
blob = null ;
66
67
67
68
return resolve ( name ) ;
@@ -81,24 +82,4 @@ function isIE9orBelow() {
81
82
) ;
82
83
}
83
84
84
- // Taken from https://bl.ocks.org/nolanlawson/0eac306e4dac2114c752
85
- function fixBinary ( b ) {
86
- var len = b . length ;
87
- var buf = new ArrayBuffer ( len ) ;
88
- var arr = new Uint8Array ( buf ) ;
89
- for ( var i = 0 ; i < len ; i ++ ) {
90
- arr [ i ] = b . charCodeAt ( i ) ;
91
- }
92
- return buf ;
93
- }
94
-
95
- function createBlob ( url , format ) {
96
- if ( format === 'svg' ) {
97
- return new window . Blob ( [ url ] ) ;
98
- } else {
99
- var binary = fixBinary ( window . atob ( url ) ) ;
100
- return new window . Blob ( [ binary ] , { type : 'image/' + format } ) ;
101
- }
102
- }
103
-
104
85
module . exports = fileSaver ;
0 commit comments