1jQuery(document).ready(function ($) { 2 3 // signature function for load the signature 4 function uacf7_signature_load() { 5 var forms = $(".wpcf7"); 6 var signs = []; 7 8 forms.each(function (k, form) { 9 var formId = $(this).find('input[name="_wpcf7"]').val(); 10 var fileInput = $('.uacf7-form-' + formId).find('.img_id_special'); 11 12 fileInput.css('display', 'none'); 13 14 var data = []; 15 var pad_bg_color = fileInput.attr('bg-color'); 16 var pen_color = fileInput.attr('pen-color'); 17 18 $(form).find(".signature-pad").each(function (i, wrap) { 19 var canvas = $(wrap).find('canvas').get(0); 20 var signaturePad = new SignaturePad(canvas, { 21 includeBackgroundColor: true, 22 backgroundColor: pad_bg_color, 23 penColor: pen_color, 24 }); 25 26 27 signs[k + '-' + i] = signaturePad; 28 signs[k + '-' + i].addEventListener('endStroke', function (e) { 29 data = signaturePad.toDataURL('image/png'); 30 31 var field_id = $(wrap).attr('data-field-name'); 32 var input_id = $('input[name="' + field_id + '"]'); 33 const image = new Image(); 34 35 image.src = data; 36 image.setAttribute('class', 'uacf7-Uacf7UploadedImageForSign'); 37 image.setAttribute('data-field-name', field_id); 38 39 document.body.appendChild(image); 40 41 const imagePreview = document.querySelector('img[data-field-name="' + field_id + '"]'); 42 const dataUrl = imagePreview.src; 43 const blob = dataURLtoBlob(dataUrl); 44 const fileName = 'signature' + field_id + '.jpg'; 45 const file = new File([blob], fileName); 46 const fileList = new DataTransfer(); 47 48 fileList.items.add(file); 49 input_id.prop("files", fileList.files); 50 image.remove(); 51 52 function dataURLtoBlob(dataUrl) { 53 const parts = dataUrl.split(';base64,'); 54 const contentType = parts[0].split(':')[1]; 55 const raw = window.atob(parts[1]); 56 const rawLength = raw.length; 57 const uint8Array = new Uint8Array(rawLength); 58 59 for (let i = 0; i < rawLength; ++i) { 60 uint8Array[i] = raw.charCodeAt(i); 61 } 62 63 return new Blob([uint8Array], { type: contentType }); 64 } 65 }); 66 67 canvas.style.cursor = "crosshair"; 68 69 //Clearing after form Submission 70 $('.uacf7-form-' + formId).find('.wpcf7-submit').click(function () { 71 signaturePad.clear(); 72 }); 73 74 }); 75 76 // Uacf7 signature clear function handler 77 $('.clear-button').click(function (e) { 78 e.preventDefault(); 79 var signature_canvas = $(this).closest('.wpcf7-form-control-wrap').find('.signature-pad').find('canvas').get(0); 80 var canvas_file_input_field = $(this).closest('.wpcf7-form-control-wrap').find('input[type="file"]'); 81 82 canvas_file_input_field.val(''); 83 84 var signaturePadInstance = new SignaturePad(signature_canvas, { 85 includeBackgroundColor: true, 86 backgroundColor: pad_bg_color, 87 penColor: pen_color, 88 }); 89 90 signaturePadInstance.clear(); 91 signs = []; 92 93 }); 94 95 96 /** Preventing file system opening */ 97 $('.uacf7-form-' + formId).find('.img_id_special').click(function (e) { 98 e.preventDefault(); 99 }); 100 101 }); 102 } 103 104 uacf7_signature_load(); 105 106 // Recall the signature function if repeater addon repeat 107 $(document).on('click', '.uacf7_repeater_add', function () { 108 uacf7_signature_load(); 109 }); 110 111});
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.