PageSourceSearch

https://www.senf.de/theme/89cae7e7d71661978c076ac121eb4b99/js/web-…-la--contact-form-file-upload.js?1788938512

js senf.de collected 2026-10-06 01:41:27 UTC 2,599 bytes, 1 lines download raw bytes

1(()=>{var g=(r,a)=>()=>(r&&(a=r(r=0)),a);var v=(r,a)=>()=>(a||r((a={exports:{}}).exports,a),a.exports);var b,o,m=g(()=>{({PluginBaseClass:b}=window),o=class extends b{init(){this.allFiles=new DataTransfer,this.addEventListeners()}addEventListeners(){let a=this.el.querySelectorAll(".drop-zone__input"),s=this.el.querySelector(".drop-zone");a.forEach(i=>{let n=s?.querySelector(".upload-preview");!s||!n||(i.addEventListener("change",()=>{let e=i.files;if(e){for(let t=0;t<e.length;t++){let l=e.item(t);this.allFiles.items.add(l)}i.files=this.allFiles.files,this.updateThumbnail(n,i.files)}}),s.addEventListener("dragover",e=>{e.preventDefault(),s.classList.add("drop-zone--over")}),["dragleave","dragend"].forEach(e=>{s.addEventListener(e,()=>{s.classList.remove("drop-zone--over")})}),s.addEventListener("drop",e=>{if(e.preventDefault(),e.dataTransfer&&e.dataTransfer.files.length){for(let t of e.dataTransfer.files)this.allFiles.items.add(t);i.files=this.allFiles.files,this.updateThumbnail(n,i.files)}}))})}updateRemoveButtons(a){let s=document.querySelectorAll(".remove-button");s&&s.forEach(i=>{i.addEventListener("click",n=>{n.preventDefault();let t=n.currentTarget.dataset.removeHash,l=a.parentElement?.querySelector(".drop-zone__input"),d=l.files,f=new DataTransfer;if(d)for(let h=0;h<d.length;h++){let c=d.item(h);if(c){let p=c.name;this.hashCode(p).toString()!==t&&f.items.add(c)}}this.allFiles=f,l.files=this.allFiles.files,this.updateThumbnail(a,l.files)})})}updateThumbnail(a,s){a.replaceChildren();for(let i=0;i<s.length;i++){let n=s.item(i),e=a.querySelector(".drop-zone__thumb"+this.hashCode(n.name));if(!e){e=document.createElement("div"),e.classList.add("drop-zone__thumb"),e.classList.add("drop-zone__thumb"+this.hashCode(n.name));let t=document.createElement("button");t.type="button",t.classList.add("btn","btn-secondary","remove-button","drop-zone__remove-btn"),t.innerHTML="&times;",t.dataset.removeHash=this.hashCode(n.name).toString(),e.appendChild(t),a.appendChild(e)}if(e.dataset.label=n.name,e.dataset.fileHash=this.hashCode(n.name).toString(),n.type.startsWith("image/")){let t=new FileReader;t.readAsDataURL(n),t.onload=()=>{e.style.backgroundImage=`url('${t.result}')`}}else{let t=document.createElement("span");t.classList.add("drop-zone__filename"),t.textContent=n.name,e.appendChild(t),e.style.backgroundImage=""}}this.updateRemoveButtons(a)}hashCode(a){return Array.from(a).reduce((s,i)=>Math.imul(31,s)+i.charCodeAt(0)|0,0)}}});var _=v((w,u)=>{m();var L=window.PluginManager;L.register("FileUploadPlugin",o,"[data-file-upload]");u.hot&&u.hot.accept()});_();})();

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.