PageSourceSearch

https://www.mirfundmerch.com/wp-content/plugins/drag-and-drop-mult…/js/codedropz-uploader-min.js?ver=1.3.9.7

js mirfundmerch.com collected 2026-10-06 02:10:41 UTC 14,528 bytes, 174 lines download raw bytes

1/**
2 * CodeDropz Uploader
3 * Copyright 2018 Glen Mongaya
4 * CodeDrop Drag&Drop Uploader
5 * @version 1.3.9.7
6 * @author CodeDropz, Glen Don L. Mongaya
7 * @license The MIT License (MIT)
8 */
9
10// CodeDropz Drag and Drop Plugin
11!function(){let e=function(e){let t=document.querySelector("form.wpcf7-form");if(t){let a=new FormData;a.append("action","_wpcf7_check_nonce"),a.append("_ajax_nonce",dnd_cf7_uploader.ajax_nonce),fetch(dnd_cf7_uploader.ajax_url,{method:"POST",body:a}).then(e=>e.json()).then(({data:e,success:t})=>t&&(dnd_cf7_uploader.ajax_nonce=e)).catch(console.error)}let r=function(e=20){let t=new Uint8Array(16);crypto.getRandomValues(t),t[6]=15&t[6]|64,t[8]=63&t[8]|128;let a=Array.from(t,e=>e.toString(16).padStart(2,"0")).join("");return a.replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/,"$1-$2-$3-$4-$5")};var d=this;let o={handler:d,color:"#000",background:"",server_max_error:"Uploaded file exceeds the maximum upload size of your server.",max_file:d.dataset.max?d.dataset.max:10,max_upload_size:d.dataset.limit?d.dataset.limit:"10485760",supported_type:d.dataset.type?d.dataset.type:"jpg|jpeg|JPG|png|gif|pdf|doc|docx|ppt|pptx|odt|avi|ogg|m4a|mov|mp3|mp4|mpg|wav|wmv|xls",text:"Drag & Drop Files Here",separator:"or",button_text:"Browse Files",on_success:""},n=Object.assign({},o,e);var s=d.dataset.name+"_count_files";localStorage.setItem(s,1);var l=dnd_upload_cf7_unique_id(),p=l?localStorage.getItem("dnd_cf7_token_"+l):null;l&&p||(l=r(),p=r(),localStorage.setItem("dnd_wpcf7_session_id",JSON.stringify({value:l,savedAt:Date.now()})),localStorage.setItem("dnd_cf7_token_"+l,p));let i=`
12            <div class="codedropz-upload-handler">
13                <div class="codedropz-upload-container">
14                <div class="codedropz-upload-inner">
15                    <${dnd_cf7_uploader.drag_n_drop_upload.tag}>${n.text}</${dnd_cf7_uploader.drag_n_drop_upload.tag}>
16                    <span>${n.separator}</span>
17                    <div class="codedropz-btn-wrap"><a class="cd-upload-btn" href="#">${n.button_text}</a></div>
18                </div>
19                </div>
20                <span class="dnd-upload-counter"><span>0</span> ${dnd_cf7_uploader.dnd_text_counter} ${parseInt(n.max_file)}</span>
21            </div>
22        `,c=document.createElement("div");c.classList.add("codedropz-upload-wrapper"),n.handler.parentNode.insertBefore(c,n.handler),c.appendChild(n.handler),n.supported_type=n.supported_type.replace(/[^a-zA-Z0-9| ]/g,"");let u=n.handler.closest("form"),m=n.handler.closest(".codedropz-upload-wrapper"),f=u.querySelector('input[type="submit"], button[type="submit"]');n.handler.insertAdjacentHTML("afterend",i),["drag","dragstart","dragend","dragover","dragenter","dragleave","drop"].forEach(function(e){m.querySelector(".codedropz-upload-handler").addEventListener(e,function(e){e.preventDefault(),e.stopPropagation()})}),["dragover","dragenter"].forEach(function(e){m.querySelector(".codedropz-upload-handler").addEventListener(e,function(e){m.querySelector(".codedropz-upload-handler").classList.add("codedropz-dragover")})}),["dragleave","dragend","drop"].forEach(function(e){m.querySelector(".codedropz-upload-handler").addEventListener(e,function(e){m.querySelector(".codedropz-upload-handler").classList.remove("codedropz-dragover")})}),m.querySelector(".cd-upload-btn").addEventListener("click",function(e){e.preventDefault(),n.handler.value=null,n.handler.click()}),m.querySelector(".codedropz-upload-handler").addEventListener("drop",function(e){g(e.dataTransfer.files,"drop")}),n.handler.addEventListener("change",function(e){g(this.files,"click")}),/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&d.removeAttribute("accept");var g=function(e,t){if(0==e.length)return;var a=new FormData;a.append("action","dnd_codedropz_upload"),a.append("type",t),a.append("security",dnd_cf7_uploader.ajax_nonce),a.append("form_id",d.dataset.id),a.append("upload_name",d.dataset.name),a.append("upload_folder",l),a.append("token",p);let r=n.handler.querySelector(".has-error"),o=m.querySelector(".codedropz-upload-handler");for(let i of(r&&r.remove(),e)){if(void 0!==a.delete&&a.delete("upload-file"),Number(localStorage.getItem(s))>n.max_file){if(!m.querySelector("span.has-error-msg")){var c=dnd_cf7_uploader.drag_n_drop_upload.max_file_limit,f=document.createElement("span");f.className="has-error-msg",f.textContent=c.replace("%count%",n.max_file),o.parentNode.insertBefore(f,o.nextSibling)}return!1}let g=v.createProgressBar(i);var h=!1;if(i.size>n.max_upload_size){let y=document.getElementById(g),x=document.createElement("span");x.classList.add("has-error"),x.textContent=dnd_cf7_uploader.drag_n_drop_upload.large_file,y.querySelector(".dnd-upload-details").appendChild(x),h=!0}if(regex_type=RegExp("(.*?).("+n.supported_type+")$"),!1!==h||regex_type.test(i.name.toLowerCase())||(document.querySelector("#"+g+" .dnd-upload-details").insertAdjacentHTML("beforeend",'<span class="has-error">'+dnd_cf7_uploader.drag_n_drop_upload.inavalid_type+"</span>"),h=!0),localStorage.setItem(s,Number(localStorage.getItem(s))+1),!1===h){a.append("upload-file",i);var $=new XMLHttpRequest;let S=document.getElementById(g),b=S.querySelector(".dnd-progress-bar"),q=S.querySelector(".dnd-upload-details"),L=u.querySelector('input[type="submit"], button[type="submit"]');$.open(u.getAttribute("method"),n.ajax_url),$.onreadystatechange=function(){if(4===this.readyState){if(200===this.status){var e=JSON.parse(this.responseText);e.success?(v.setProgressBar(g,100),"function"==typeof n.on_success&&n.on_success.call(this,d,g,e)):(b.remove(),q.insertAdjacentHTML("beforeend",'<span class="has-error">'+e.data+"</span>"),L&&(L.classList.remove("disabled"),L.removeAttribute("disabled")),S.classList.remove("in-progress"))}else b.remove(),q.insertAdjacentHTML("beforeend",'<span class="has-error">'+n.server_max_error+"</span>"),L&&(L.classList.remove("disabled"),L.removeAttribute("disabled")),S.classList.remove("in-progress")}},$.upload.addEventListener("progress",function(e){if(e.lengthComputable){var t=parseInt(100*(e.loaded/e.total));v.setProgressBar(g,t-1)}},!1),$.send(a)}}},v={createProgressBar:function(e){var t=m.querySelector(".codedropz-upload-handler"),a="dnd-file-"+Math.random().toString(36).substr(2,9),r=`
23                    <div class="dnd-upload-image">
24                        <span class="file"></span>
25                    </div>
26                    <div class="dnd-upload-details">
27                        <span class="name"><span>${e.name}</span><em>(${v.bytesToSize(e.size)})</em></span>
28                        <a href="#" title="${dnd_cf7_uploader.drag_n_drop_upload.delete.title}" class="remove-file" data-storage="${s}">
29                        <span class="dnd-icon-remove"></span>
30                        </a>
31                        <span class="dnd-progress-bar"><span></span></span>
32                    </div>
33                `,d=document.createElement("div");return d.id=a,d.className="dnd-upload-status",d.innerHTML=r,t.parentNode.insertBefore(d,t.nextSibling),a},setProgressBar:function(e,t){let a=document.getElementById(e),r=a.querySelector(".dnd-progress-bar");if(r){f&&v.disableBtn(f);let d=t*r.offsetWidth/100;a.classList.add("in-progress"),100==t?(r.querySelector("span").style.width="100%",r.querySelector("span").textContent=`${t}% `):(r.querySelector("span").style.width=d+"px",r.querySelector("span").textContent=`${t}% `),100==t&&(a.classList.add("complete"),a.classList.remove("in-progress"))}return!1},bytesToSize:function(e){return 0===e?"0":fileSize=(kBytes=e/1024)>=1024?(kBytes/1024).toFixed(2)+"MB":kBytes.toFixed(2)+"KB"},disableBtn:function(e){e&&(e.classList.add("disabled"),e.disabled=!0)}}};document.addEventListener("click",function(e){if(e.target.classList.contains("dnd-icon-remove")){e.preventDefault();var t=e.target,a=t.closest(".dnd-upload-status"),r=t.closest(".codedropz-upload-wrapper"),d=t.parentElement.getAttribute("data-storage"),o=Number(localStorage.getItem(d)),n=dnd_upload_cf7_unique_id();if(a.classList.contains("in-progress")||a.querySelector(".has-error"))return a.remove(),localStorage.setItem(d,o-1),!1;t.classList.add("deleting"),t.textContent=dnd_cf7_uploader.drag_n_drop_upload.delete.text+"...";var s=new XMLHttpRequest;s.open("POST",dnd_cf7_uploader.ajax_url),s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.onload=function(){if(200===this.status){var e=JSON.parse(this.responseText);if(e.success)a.remove(),localStorage.setItem(d,o-1),r.querySelectorAll(".dnd-upload-status").length<=1&&r.querySelector(".has-error-msg")&&r.querySelector(".has-error-msg").remove(),r.querySelector(".dnd-upload-counter span").textContent=Number(localStorage.getItem(d))-1;else{let t=a.querySelector(".dnd-upload-details");if(t){let n=document.createElement("span");n.classList.add("has-error-msg"),n.textContent=e.data,t.appendChild(n)}}}},s.send("path="+a.querySelector('input[type="hidden"]').value+"&action=dnd_codedropz_upload_delete&security="+dnd_cf7_uploader.ajax_nonce+"&upload_folder="+n+"&token="+localStorage.getItem("dnd_cf7_token_"+n)),document.querySelectorAll(".has-error-msg").forEach(function(e){e.remove()})}}),HTMLElement.prototype.CodeDropz_Uploader=e}();
34// END: CodeDropz Uploader function
35
36// Custom JS hook event
37var dnd_upload_cf7_event = function(target, name, data) {
38	// Create a custom event with the specified name and data
39	var event = new CustomEvent('dnd_upload_cf7_' + name, {
40		bubbles: true,
41		detail: data
42	});
43	target.dispatchEvent(event);
44}
45
46// Get unique id. (reset after 24hours)
47function dnd_upload_cf7_unique_id() {
48	const item = localStorage.getItem('dnd_wpcf7_session_id');
49	if ( ! item ) {
50		return null;
51	}
52
53	// Parse item
54	const data = JSON.parse( item );
55
56	// Expired? then remove value from localstorage.
57	if ( Date.now() - data.savedAt > ( 24 * 60 * 60 * 1000 ) ) {
58		localStorage.removeItem('dnd_cf7_token_' + data.value ); // delete token
59		localStorage.removeItem('dnd_wpcf7_session_id');         // delete session id
60		return null;
61	}
62
63	return data.value;
64}
65
66// BEGIN: initialize upload
67document.addEventListener('DOMContentLoaded', function() {
68
69	// Fires when an Ajax form submission has completed successfully, and mail has been sent.
70    document.addEventListener( 'wpcf7mailsent', function( event ) {
71
72        // Get form
73        const form = event.target;
74
75        // Get input type file element
76        var inputFile = form.querySelectorAll('.wpcf7-drag-n-drop-file');
77        var status = form.querySelectorAll('.dnd-upload-status');
78        var counter = form.querySelector('.dnd-upload-counter span');
79        var error = form.querySelectorAll('span.has-error-msg');
80
81        // Reset upload list for multiple fields
82        if ( inputFile.length > 0 ) {
83            inputFile.forEach( function(input) {
84                localStorage.setItem( input.getAttribute('data-name') + '_count_files', 1 ); // Reset file counts
85            });
86        }
87
88        // Remove status / progress bar
89        if (status) {
90            status.forEach(function(statEl){
91                statEl.remove();
92            });
93        }
94
95        if (counter) {
96            counter.textContent = '0';
97        }
98
99        if (error) {
100            error.forEach(function(errEl){
101                errEl.remove();
102            });
103        }
104
105    }, false );
106
107	window.initDragDrop = function () {
108
109		// Get text object options/settings from localize script
110		var TextOJB = dnd_cf7_uploader.drag_n_drop_upload;
111        var fileUpload = document.querySelectorAll('.wpcf7-drag-n-drop-file');
112
113        fileUpload.forEach(function(Upload) {
114
115            // Support Multiple Fileds
116            Upload.CodeDropz_Uploader({
117                'color': '#fff',
118                'ajax_url': dnd_cf7_uploader.ajax_url,
119                'text': TextOJB.text,
120                'separator': TextOJB.or_separator,
121                'button_text': TextOJB.browse,
122                'server_max_error': TextOJB.server_max_error,
123                'on_success': function(input, progressBar, response) {
124
125                    // Progressbar Object
126                    var progressDetails = document.querySelector('.codedropz-upload-wrapper #' + progressBar);
127                    var form = input.closest('form');
128                    var span = form.querySelector('.wpcf7-acceptance');
129                    var checkboxInput = ( span ? span.querySelector('input[type="checkbox"]') : '' );
130
131                    // Remove 'required' error message
132                    const requiredMessage = input.closest('.codedropz-upload-wrapper').nextElementSibling;
133                    if( requiredMessage && requiredMessage.classList.contains('wpcf7-not-valid-tip') ){
134                        requiredMessage.remove();
135                    }
136
137                    // If it's complete remove disabled attribute in button
138                    if ( ( span && span.classList.contains('optional') ) || ! span || checkboxInput.checked || form.classList.contains('wpcf7-acceptance-as-validation')) {
139                        setTimeout(function(){
140                            const submitButton = form.querySelector('button[type=submit], input[type=submit]');
141                            if( submitButton ){
142								submitButton.classList.remove('disabled');
143                                submitButton.removeAttribute('disabled');
144                            }
145                        }, 1);
146                    }
147
148                    // Append hidden input field
149                    var detailsElement = progressDetails.querySelector('.dnd-upload-details');
150                    var inputHTML = '<span><input type="hidden" name="' + input.dataset.name + '[]" value="' + response.data.path + '/' + response.data.file + '"></span>';
151                    detailsElement.insertAdjacentHTML('beforeend', inputHTML);
152
153                    // Update counter
154                    var filesCounter = ( Number( localStorage.getItem( input.dataset.name + '_count_files' ) ) - 1);
155                    var counterElement = input.closest('.codedropz-upload-wrapper').querySelector('.dnd-upload-counter span');
156                    counterElement.textContent = filesCounter;
157
158					// Add custom event
159					dnd_upload_cf7_event( progressDetails, 'success', response );
160                }
161            });
162
163        });
164
165	}
166
167	window.initDragDrop();
168
169	// Usage: Custom js hook after success upload
170	/*document.addEventListener( 'dnd_upload_cf7_success', function( event ) {
171		console.log(event.detail);
172	});*/
173
174});

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.