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