@@ -95,14 +95,14 @@ $(function() {
9595 */
9696 function updateResults ( img , data ) {
9797 var fileName = currentFile . name
98- var href = img . src
98+ var href = currentFile . url || img . src
9999 var dataURLStart
100100 var content
101101 if ( ! ( img . src || img instanceof HTMLCanvasElement ) ) {
102102 content = $ ( '<span>Loading image file failed</span>' )
103103 } else {
104104 if ( ! href ) {
105- href = img . toDataURL ( currentFile . type + 'REMOVEME' )
105+ href = img . toDataURL ( currentFile . type )
106106 // Check if file type is supported for the dataURL export:
107107 dataURLStart = 'data:' + currentFile . type
108108 if ( href . slice ( 0 , dataURLStart . length ) !== dataURLStart ) {
@@ -125,10 +125,18 @@ $(function() {
125125 * Displays the image
126126 *
127127 * @param {File|Blob|string } file File or Blob object or image URL
128- * @param {object } [options] Options object
129128 */
130- function displayImage ( file , options ) {
131- currentFile = file
129+ function displayImage ( file ) {
130+ var options = {
131+ maxWidth : result . width ( ) ,
132+ canvas : true ,
133+ pixelRatio : window . devicePixelRatio ,
134+ downsamplingRatio : 0.5 ,
135+ orientation : true
136+ }
137+ exifNode . hide ( )
138+ iptcNode . hide ( )
139+ thumbNode . hide ( )
132140 if ( ! loadImage ( file , updateResults , options ) ) {
133141 result
134142 . children ( )
@@ -147,25 +155,29 @@ $(function() {
147155 *
148156 * @param {event } event Drop or file selection change event
149157 */
150- function dropChangeHandler ( event ) {
158+ function fileChangeHandler ( event ) {
151159 event . preventDefault ( )
152160 var originalEvent = event . originalEvent
153161 var target = originalEvent . dataTransfer || originalEvent . target
154162 var file = target && target . files && target . files [ 0 ]
155- var options = {
156- maxWidth : result . width ( ) ,
157- canvas : true ,
158- pixelRatio : window . devicePixelRatio ,
159- downsamplingRatio : 0.5 ,
160- orientation : true
161- }
162163 if ( ! file ) {
163164 return
164165 }
165- exifNode . hide ( )
166- iptcNode . hide ( )
167- thumbNode . hide ( )
168- displayImage ( file , options )
166+ currentFile = file
167+ displayImage ( file )
168+ }
169+
170+ /**
171+ * Handles URL change events
172+ */
173+ function urlChangeHandler ( ) {
174+ var url = $ ( this ) . val ( )
175+ if ( ! url || ( currentFile && currentFile . url === url ) ) return
176+ currentFile = {
177+ name : url . replace ( / ^ .* \/ / g, '' ) ,
178+ url : url
179+ }
180+ displayImage ( url )
169181 }
170182
171183 // Hide URL/FileReader API requirement message in capable browsers:
@@ -182,11 +194,13 @@ $(function() {
182194 . on ( 'dragover' , function ( e ) {
183195 e . preventDefault ( )
184196 var originalEvent = event . originalEvent
185- originalEvent . dataTransfer . dropEffect = 'copy'
197+ if ( originalEvent ) originalEvent . dataTransfer . dropEffect = 'copy'
186198 } )
187- . on ( 'drop' , dropChangeHandler )
199+ . on ( 'drop' , fileChangeHandler )
200+
201+ $ ( '#file-input' ) . on ( 'change' , fileChangeHandler )
188202
189- $ ( '#file-input ' ) . on ( 'change' , dropChangeHandler )
203+ $ ( '#url ' ) . on ( 'change paste input ' , urlChangeHandler )
190204
191205 $ ( '#edit' ) . on ( 'click' , function ( event ) {
192206 event . preventDefault ( )
@@ -243,8 +257,6 @@ $(function() {
243257
244258 $ ( '#cancel' ) . on ( 'click' , function ( event ) {
245259 event . preventDefault ( )
246- if ( jcropAPI ) {
247- jcropAPI . release ( )
248- }
260+ if ( jcropAPI ) jcropAPI . release ( )
249261 } )
250262} )
0 commit comments