$1
').replace(/\*\*([^*]+)\*\*/g, '$1').replace(/\*([^*]+)\*/g, '$1')
13 | }
14 |
15 | s.replace(/^\s+|\r|\s+$/g, '').replace(/\t/g, ' ').split(/\n\n+/).forEach(function (b, f, R) {
16 | R = {
17 | '*': [/\n\* /, '', '
', '\n'],
20 | '>': [/\n> /, '', '', '\n'] 21 | }[f = b[0]]; 22 | h += R ? R[1] + ('\n' + b).split(R[0]).slice(1).map(R[3] ? E : I).join(R[3] || '\n
' + I(b) + '
' 23 | }); 24 | let p = document.createElement('p'); 25 | p.innerHTML = h; 26 | return p 27 | } 28 | 29 | function getImageBlob(event) { 30 | const items = (event.clipboardData || event.originalEvent.clipboardData).items; 31 | for (let i in items) { 32 | const item = items[i]; 33 | if (item.kind === 'file') { 34 | return item.getAsFile(); 35 | } 36 | } 37 | } 38 | 39 | function uploadBlob(blob) { 40 | const reader = new FileReader(); 41 | reader.onload = function (event) { 42 | 43 | clearResults(); 44 | const results_el = gebi('output'); 45 | const pl = mkPreloader(); 46 | results_el.appendChild(pl); 47 | 48 | const form = new FormData(); 49 | form.append('fname', 'image'); 50 | form.append('data', event.target.result); 51 | 52 | const request = new XMLHttpRequest(); 53 | request.open("POST", 'upload', true); 54 | request.send(form); 55 | request.onreadystatechange = function () { 56 | if (request.readyState === 4) { 57 | if (request.status === 200) { 58 | const json = JSON.parse(request.responseText); 59 | gebi("search").value = json.url; 60 | handleSearchResponse(request.responseText); 61 | pl.remove(); 62 | } else { 63 | console.log(request.responseText) 64 | } 65 | } 66 | }; 67 | }; 68 | reader.readAsDataURL(blob); 69 | } 70 | 71 | 72 | window.onload = function () { 73 | M.Modal.init(document.querySelectorAll(".modal"), {}); 74 | M.Tabs.init(document.getElementById("rri_menu"), {}); 75 | M.Tabs.init(document.getElementById("search-menu"), {}); 76 | helpModal = M.Modal.getInstance(document.getElementById("help")); 77 | get_subreddits(); 78 | get_status(); 79 | gebi("search").addEventListener("paste", function (e) { 80 | const blob = getImageBlob(e); 81 | if (blob) { 82 | uploadBlob(blob) 83 | } 84 | }, false); 85 | }; 86 | 87 | 88 | function gebi(id) { 89 | return document.getElementById(id); 90 | } 91 | 92 | function get_subreddits() { 93 | const request = new XMLHttpRequest(); 94 | request.open("GET", 'subreddits', true); 95 | request.send(null); 96 | request.onreadystatechange = function () { 97 | if (request.readyState === 4) { 98 | if (request.status === 200) { 99 | gebi('subreddit_err').classList.remove("active"); 100 | 101 | const json = JSON.parse(request.responseText); 102 | 103 | if (json['error'] != null) { 104 | gebi('subreddits').innerText = 'error: ' + json["error"]; 105 | return; 106 | } 107 | 108 | const subreddits = json['subreddits']; 109 | let output = '