PageSourceSearch

https://bombabooks.it/wp-content/plugins/drag-and-drop-file-upload…/js/drap_drop_file_upload.js?ver=1790655041

js bombabooks.it collected 2026-09-29 04:12:07 UTC 9,912 bytes, 229 lines download raw bytes

1(function($) {
2  "use strict";
3    jQuery(document).ready(function($){
4      function cf7_sendFileToServer(formData,status,obj){
5        var uploadURL = elementor_file_upload.ajax_url; //Upload URL
6        var extraData ={}; //Extra Data.
7        var jqXHR=jQuery.ajax({
8                xhr: function() {
9                  var xhrobj = jQuery.ajaxSettings.xhr();
10                  if (xhrobj.upload) {
11                          xhrobj.upload.addEventListener('progress', function(event) {
12                              var percent = 0;
13                              var position = event.loaded || event.position;
14                              var total = event.total;
15                              if (event.lengthComputable) {
16                                  percent = Math.ceil(position / total * 100);
17                                  percent = percent -1;
18                              }
19                              //Set progress
20                              status.setProgress(percent);
21                          }, false);
22                      }
23                  return xhrobj;
24            },
25            url: uploadURL,
26            type: "POST",
27            contentType:false,
28            processData: false,
29            cache: false,
30            data: formData,
31            success: function(data){
32              status.setProgress(100);
33              if( data.status =="ok" ) {
34                  status.name_upload(data.text);
35                  var name = obj.closest('.elementor-field-type-file_upload').find(".elementor-upload-field-drap_drop").val();
36                if(name == "" ) {
37                    name = data.text;
38                }else{
39                  name = name +"|"+data.text;
40                }
41                obj.closest('.elementor-field-type-file_upload').find(".elementor-upload-field-drap_drop").val(name); 
42              }else{
43                  if( !data.text ) {
44                    status.text("Error:");
45                  }else{
46                      status.text(data.text);
47                  }
48              }
49          },
50          error: function (request, status, error) {
51            status.text("Server file type is not allowed.");
52          }
53          }); 
54        status.setAbort(jqXHR);
55      }
56      var rowCount=0;
57      function cf7_createStatusbar(obj){
58        rowCount++;
59        var row="odd";
60        if(rowCount %2 ==0) row ="even";
61          this.statusbar = jQuery("<div class='elementor-drop-statusbar "+row+"'></div>");
62          this.type = jQuery("<div class='elementor-drop-type'></div>").appendTo(this.statusbar);
63          this.type_file = jQuery("<div class='elementor-drop-type_file'></div>").appendTo(this.statusbar);
64          this.img = jQuery('<div style="display:none" class="elementor-drop-img" ></div>').appendTo(this.statusbar);
65          this.filename = jQuery("<span class='elementor-drop-filename'></span>").appendTo(this.statusbar);
66          this.size = jQuery("<span class='elementor-drop-filesize'></span>").appendTo(this.statusbar);
67          this.abort = jQuery('<div class="elementor-drop-abort"></div>').appendTo(this.statusbar);
68          this.remove = jQuery('<div style="display:none" class="elementor_file_upload_remove" ></div>').appendTo(this.statusbar);
69          this.progressBar = jQuery("<div class='elementor-drop-progressBar'><div></div></div>").appendTo(this.statusbar);
70          this.error = jQuery("<div class='elementor-drop-text-error'></div>").appendTo(this.statusbar);
71          obj.after(this.statusbar);
72          this.text = function(txt){   
73                this.error.addClass("elementor-text-error").html(txt);
74                this.progressBar.addClass("elementor-text-error-pro");
75          }
76          this.name_upload = function(txt){   
77                this.remove.attr('data-name', txt);
78          }
79          this.setFileSize = function(txt){   
80                this.type_file.html(txt);
81          }
82          this.setFileImg = function(txt){   
83            this.img.html('<img src="'+txt+'" />');
84            this.img.css("display","inline-block");
85            this.type.css("display","none","important");
86            this.type_file.css("display","none","important");
87          }
88          this.setFileNameSize = function(name,size)
89          {
90            var sizeStr="";
91            var sizeKB = size/1024;
92            if(parseInt(sizeKB) > 1024)
93            {
94              var sizeMB = sizeKB/1024;
95              sizeStr = "("+sizeMB.toFixed(2)+" MB)";
96            }
97            else
98            {
99              sizeStr = "("+sizeKB.toFixed(2)+" KB)";
100            }
101            this.filename.html(name);
102            this.size.html(sizeStr);
103          }
104          this.setProgress = function(progress){   
105            var progressBarWidth =progress*this.progressBar.width()/ 100;  
106            this.progressBar.find('div').animate({ width: progressBarWidth }, 10).html(progress + "%&nbsp;");
107            if(parseInt(progress) >= 100)
108            {
109              this.abort.hide();
110              this.remove.show();
111            }
112          }
113        this.setAbort = function(jqxhr){
114          var sb = this.statusbar;
115          this.abort.click(function()
116          {
117            jqxhr.abort();
118            sb.hide();
119          });
120        }
121      }
122      function upload_file(file,obj){
123        const validImageTypes = ['gif', 'jpeg','jpg', 'png','webp'];
124        var fd = new FormData();
125        fd.append('file', file);
126        fd.append('size', obj.data("size") );
127        fd.append('type', obj.data("type") );
128        fd.append('type_nonce', obj.data("nonce") );
129        fd.append('nonce', elementor_file_upload.nonce );
130        fd.append('type_upload', obj.closest('.wpcf7').find(".elementor-droptype").val() );
131        fd.append('action', "elementor_file_upload" );
132        var status = new cf7_createStatusbar(obj); //Using this we can set progress.
133        var file_type = file.name.split('.');
134        file_type = file_type.slice(-1).pop()
135        status.setFileNameSize(file.name,file.size);
136        status.setFileSize(file_type);
137        const fileReader = new FileReader()
138        if (validImageTypes.includes(file_type)) {
139            fileReader.readAsDataURL(file);
140            fileReader.onload = function() {
141              const url = fileReader.result
142              status.setFileImg(url);
143            }
144      }
145        cf7_sendFileToServer(fd,status,obj);
146      }
147      function cf7_handleFileUpload(files,obj){
148        var max = obj.attr("data-max");
149        var name = obj.closest('.elementor-field-type-file_upload').find(".elementor-upload-field-drap_drop").val();
150        var count = (name.match(/\|/g) || []).length;
151        if(name != "" ){
152            count++;
153        }
154        if( max == "" ){
155          max = 0;
156        }
157        var max_limit = max - count + 1;
158        if ( max != 0 && parseInt(files.length)>=max_limit){
159            alert(elementor_file_upload.text_maximum +" "+max);
160          }else{
161            for (var i = 0; i < files.length; i++) {
162              setTimeout(upload_file(files[i],obj), 500);
163            }
164        }
165      }
166      var obj = $(".elementor-dragandrophandler");
167      $( "body" ).on('dragenter',".elementor-dragandrophandler", function (e){
168        e.stopPropagation();
169        e.preventDefault();
170        $(this).css('border', '2px solid #0B85A1');
171      });
172      $( "body" ).on('dragover',".elementor-dragandrophandler", function (e){
173        e.stopPropagation();
174        e.preventDefault();
175      });
176      $( "body" ).on('drop',".elementor-dragandrophandler", function (e) {
177        obj= $(this);
178        $(this).css('border', '2px dotted #0B85A1');
179        e.preventDefault();
180        var files = e.originalEvent.dataTransfer.files;
181        //We need to send dropped files to Server
182        cf7_handleFileUpload(files,obj);
183      });
184      $(document).on('dragenter', function (e) {
185        e.stopPropagation();
186        e.preventDefault();
187      });
188      $(document).on('dragover', function (e) {
189        e.stopPropagation();
190        e.preventDefault();
191        obj.css('border', '2px dotted #0B85A1');
192      });
193      $(document).on('drop', function (e) {
194        e.stopPropagation();
195        e.preventDefault();
196      });
197      $( "body" ).on('click',".elementor-dragandrophandler a", function (e) {
198        e.preventDefault();
199        $(this).closest(".elementor-dragandrophandler-container").find('.input-uploads').click();
200      });
201      $( "body" ).on('change',".input-uploads", function (e){
202        var files = this.files;
203        //We need to send dropped files to Server
204        obj= $(this).closest('.elementor-field-type-file_upload').find('.elementor-dragandrophandler');
205        cf7_handleFileUpload(files,obj);
206      });
207      $("body").on("click",".elementor_file_upload_remove",function(e){
208        e.preventDefault();
209        var cr_name = $(this).data("name") ;
210        console.log(cr_name);
211        var data = {
212          'action': 'elementor_file_upload_remove',
213          'name': cr_name,
214          'nonce': elementor_file_upload.nonce
215        };
216        var name = $(this).closest('.elementor-field-type-file_upload').find('.elementor-upload-field-drap_drop').val().split("|");
217        for (var i=name.length-1; i>=0; i--) {
218            if (name[i] === cr_name) {
219                name.splice(i, 1);
220            }
221        }
222        $(this).closest('.elementor-field-type-file_upload').find('.elementor-upload-field-drap_drop').val( name.join("|") );
223        $(this).closest('.elementor-drop-statusbar').remove();
224        jQuery.post(elementor_file_upload.ajax_url, data, function(response) {
225        });
226         return false;
227      })
228    })
229  })(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.