1var wpaicgPlayGround = { 2 init: function(){ 3 var wpaicg_PlayGround = this; 4 var wpaicgFormsShortcode = document.getElementsByClassName('wpaicg-playground-shortcode'); 5 var wpaicgClearButtons = document.getElementsByClassName('wpaicg-prompt-clear'); 6 var wpaicgStopButtons = document.getElementsByClassName('wpaicg-prompt-stop-generate'); 7 var wpaicgSaveButtons = document.getElementsByClassName('wpaicg-prompt-save-draft'); 8 var wpaicgDownloadButtons = document.getElementsByClassName('wpaicg-prompt-download'); 9 if(wpaicgDownloadButtons && wpaicgDownloadButtons.length){ 10 for(var i=0;i < wpaicgDownloadButtons.length;i++) { 11 var wpaicgDownloadButton = wpaicgDownloadButtons[i]; 12 wpaicgDownloadButton.addEventListener('click', function (e) { 13 e.preventDefault(); 14 var wpaicgDownloadButton = e.currentTarget; 15 var wpaicgForm = wpaicgDownloadButton.closest('.wpaicg-prompt-form'); 16 var formID = wpaicgForm.getAttribute('data-id'); 17 var wpaicgFormData = window['wpaicgForm'+formID]; 18 var currentContent = wpaicg_PlayGround.getContent(wp
18aicgFormData.response,formID); 19 var element = document.createElement('a'); 20 currentContent = currentContent.replace(/<br>/g,"\n"); 21 currentContent = currentContent.replace(/<br \/>/g,"\n"); 22 element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(currentContent)); 23 element.setAttribute('download', 'ai-response.txt'); 24 25 element.style.display = 'none'; 26 document.body.appendChild(element); 27 28 element.click(); 29 30 document.body.removeChild(element); 31 }); 32 } 33 } 34 if(wpaicgClearButtons && wpaicgClearButtons.length){ 35 for(var i=0;i < wpaicgClearButtons.length;i++){ 36 var wpaicgClearButton = wpaicgClearButtons[i]; 37 wpaicgClearButton.addEventListener('click', function (e) { 38 e.preventDefault(); 39 var wpaicgClearButton = e.currentTarget; 40 var wpaicgForm = wpaicgClearButton.closest('.wpaicg-prompt-form'); 41 var formID = wpaicgForm.getAttribute('data-id'); 42 var wpaicgFormData = window['wpaicgForm'+formID]; 43 var wpaicgSaveResult = wpaicgForm.getElementsByClassName('wpaicg-prompt-save-result')[0]; 44 wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,''); 45 wpaicgSaveResult.style.display = 'none'; 46 }); 47 } 48 } 49 if(wpaicgStopButtons && wpaicgStopButtons.length){ 50 for(var i=0;i < wpaicgStopButtons.length;i++){ 51 var wpaicgStopButton = wpaicgStopButtons[i]; 52 wpaicgStopButton.addEventListener('click', function (e) { 53 e.preventDefault(); 54 var wpaicgStopButton = e.currentTarget; 55 var wpaicgForm = wpaicgStopButton.closest('.wpaicg-prompt-form'); 56 var eventID = wpaicgStopButton.getAttribute('data-event'); 57 var wpaicgSaveResult = wpaicgForm.getElementsByClassName('wpaicg-prompt-save-result')[0]; 58 var wpaicgGenerateBtn = wpaicgForm.getElementsByClassName('wpaicg-generate-button')[0]; 59 wpaicg_PlayGround.eventClose(eventID,wpaicgStopButton,wpaicgSaveResult,wpaicgGenerateBtn); 60 }); 61 } 62 } 63 if(wpaicgSaveButtons && wpaicgSaveButtons.length){ 64 for(var i=0;i < wpaicgSaveButtons.length;i++){ 65 var wpaicgSaveButton = wpaicgSaveButtons[i]; 66 wpaicgSaveButton.addEventListener('click', function (e) { 67 e.preventDefault(); 68 var wpaicgSaveButton = e.currentTarget; 69 var wpaicgForm = wpaicgSaveButton.closest('.wpaicg-prompt-form'); 70 var formID = wpaicgForm.getAttribute('data-id'); 71 var wpaicgFormData = window['wpaicgForm'+formID]; 72 var title = wpaicgForm.getElementsByClassName('wpaicg-prompt-post_title')[0].value; 73 var content = wpaicg_PlayGround.getContent(wp
73aicgFormData.response,formID); 74 if (title === '') { 75 alert('Please insert title'); 76 } else if (content === '') { 77 alert('Please wait generate content') 78 } else { 79 const xhttp = new XMLHttpRequest(); 80 xhttp.open('POST', wpaicgFormData.ajax); 81 xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 82 xhttp.send('action=wpaicg_save_draft_post_extra&title=' + title + '&content=' + content+'&save_source=promptbase&nonce='+wpaicgFormData.ajax_nonce); 83 wpaicg_PlayGround.loading.add(wpaicgSaveButton); 84 xhttp.onreadystatechange = function (oEvent) { 85 if (xhttp.readyState === 4) { 86 wpaicg_PlayGround.loading.remove(wpaicgSaveButton); 87 if (xhttp.status === 200) { 88 var wpaicg_response = this.responseText; 89 wpaicg_response = JSON.parse(wpaicg_response); 90 if (wpaicg_response.status === 'success') { 91 window.location.href = wpaicgFormData.post+'?post=' + wpaicg_response.id + '&action=edit'; 92 } else { 93 alert(wpaicg_response.msg); 94 } 95 } else { 96 alert('Something went wrong'); 97 } 98 } 99 } 100 } 101 }); 102 } 103 } 104 if(wpaicgFormsShortcode && wpaicgFormsShortcode.length){ 105 for(var i = 0;i< wpaicgFormsShortcode.length;i++){ 106 var wpaicgFormShortcode = wpaicgFormsShortcode[i]; 107 var wpaicgForm = wpaicgFormShortcode.getElementsByClassName('wpaicg-prompt-form')[0]; 108 wpaicgForm.addEventListener('submit', function (e) { 109 e.preventDefault(); 110 var wpaicgForm = e.currentTarget; 111 var formID = wpaicgForm.getAttribute('data-id'); 112 var formSource = wpaicgForm.getAttribute('data-source'); 113 var wpaicgFormData = window['wpaicgForm'+formID]; 114 var wpaicgMaxToken = wpaicgForm.getElementsByClassName('wpaicg-prompt-max_tokens')[0]; 115 var wpaicgTemperature = wpaicgForm.getElementsByClassName('wpaicg-prompt-temperature')[0]; 116 var wpaicgTopP = wpaicgForm.getElementsByClassName('wpaicg-prompt-top_p')[0]; 117 var wpaicgBestOf = wpaicgForm.getElementsByClassName('wpaicg-prompt-best_of')[0]; 118 var wpaicgFP = wpaicgForm.getElementsByClassName('wpaicg-prompt-frequency_penalty')[0]; 119 var wpaicgPP = wpaicgForm.getElementsByClassName('wpaicg-prompt-presence_penalty')[0]; 120 var wpaicgMaxLines = wpaicgForm.getElementsByClassName('wpaicg-prompt-max-lines')[0]; 121 var wpaicgPromptTitle = wpaicgForm.getElementsByClassName('wpaicg-prompt-title')[0]; 122 var wpaicgPromptTitleFilled = wpaicgForm.getElementsByClassName('wpaicg-prompt-title-filled')[0]; 123 var wpaicgGenerateBtn = wpaicgForm.getElementsByClassName('wpaicg-generate-button')[0]; 124 var wpaicgSaveResult = wpaicgForm.getElementsByClassName('wpaicg-prompt-save-result')[0]; 125 var wpaicgStop = wpaicgForm.getElementsByClassName('wpaicg-prompt-stop-generate')[0]; 126 var max_tokens = wpaicgMaxToken.value; 127 var temperature = wpaicgTemperature.value; 128 var top_p = wpaicgTopP.value; 129 var best_of = wpaicgBestOf.value; 130 var frequency_penalty = wpaicgFP.value; 131 var presence_penalty = wpaicgPP.value; 132 var error_message = false;
133 var title = wpaicgPromptTitle.value; 134 if (title === '') { 135 error_message = 'Please insert prompt'; 136 } else if (max_tokens === '') { 137 error_message = 'Please enter max tokens'; 138 } else if (parseFloat(max_tokens) < 1 || parseFloat(max_tokens) > 8000) { 139 error_message = 'Please enter a valid max tokens value between 1 and 8000'; 140 } else if (temperature === '') { 141 error_message = 'Please enter temperature'; 142 } else if (parseFloat(temperature) < 0 || parseFloat(temperature) > 1) { 143 error_message = 'Please enter a valid temperature value between 0 and 1'; 144 } else if (top_p === '') { 145 error_message = 'Please enter Top P'; 146 } else if (parseFloat(top_p) < 0 || parseFloat(top_p) > 1) { 147 error_message = 'Please enter a valid Top P value between 0 and 1'; 148 } else if (best_of === '') { 149 error_message = 'Please enter best of'; 150 } else if (parseFloat(best_of) < 1 || parseFloat(best_of) > 20) { 151 error_message = 'Please enter a valid best of value between 0 and 1'; 152 } else if (frequency_penalty === '') { 153 error_message = 'Please enter frequency penalty'; 154 } else if (parseFloat(frequency_penalty) < 0 || parseFloat(frequency_penalty) > 2) { 155 error_message = 'Please enter a valid frequency penalty value between 0 and 2'; 156 } else if (presence_penalty === '') { 157 error_message = 'Please enter presence penalty'; 158 } else if (parseFloat(presence_penalty) < 0 || parseFloat(presence_penalty) > 2) { 159 error_message = 'Please enter a valid presence penalty value between 0 and 2'; 160 } 161 if (error_message) { 162 alert(error_message); 163 } else { 164 if (typeof wpaicgFormData.fields === 'object') { 165 for (var i = 0; i < wpaicgFormData.fields.length; i++) { 166 var form_field = wpaicgFormData.fields[i]; 167 var field = wpaicgForm.getElementsByClassName('wpaicg-form-field-' + i)[0]; 168 var field_type = form_field['type'] !== undefined ? form_field['type'] : 'text'; 169 var field_label = form_field['label'] !== undefined ? form_field['label'] : ''; 170 var field_min = form_field['min'] !== undefined ? form_field['min'] : ''; 171 var field_max = form_field['max'] !== undefined ? form_field['max'] : ''; 172 if (field_type !== 'radio' && field_type !== 'checkbox') { 173 var field_value = field.value; 174 if (field_type === 'text' || field_type === 'textarea' || field_type === 'email' || field_type === 'url') { 175 if (field_min !== '' && field_value.length < parseInt(field_min)) { 176 error_message = field_label + ' minimum ' + field_min + ' characters'; 177 } else if (field_max !== '' && field_value.length > parseInt(field_max)) { 178 error_message = field_label + ' maximum ' + field_max + ' characters'; 179 } else if (field_type === 'email' && !wpaicg_PlayGround.validate.email(field_value)) { 180 error_message = field_label + ' must be email address'; 181 } else if (field_type === 'url' && !wpaicg_PlayGround.validate.url(field_value)) { 182 error_message = field_label + ' must be url'; 183 } 184 } else if (field_type === 'number') { 185 if (field_min !== '' && parseFloat(field_value) < parseInt(field_min)) { 186 error_message = field_label + ' minimum ' + field_min; 187 } else if (field_max !== '' && parseFloat(field_value) > parseInt(field_max)) { 188 error_message = field_label + ' maximum ' + field_max; 189 } 190 } 191 } else if (field_type === 'checkbox' || field_type === 'radio') { 192 var field_inputs = field.getElementsByTagName('input'); 193 var field_checked = false;
194 if (field_inputs && field_inputs.length) { 195 for (var y = 0; y < field_inputs.length; y++) { 196 var field_input = field_inputs[y]; 197 if (field_input.checked) { 198 field_checked = true; 199 } 200 } 201 } 202 if (!field_checked) { 203 error_message = field_label + ' is required'; 204 } 205 } 206 } 207 } 208 if(error_message){ 209 alert(error_message); 210 } 211 else{ 212 if (typeof wpaicgFormData.fields === 'object') { 213 for (var i = 0; i < wpaicgFormData.fields.length; i++) { 214 var form_field = wpaicgFormData.fields[i]; 215 var field_type = form_field.type; 216 var field = wpaicgForm.getElementsByClassName('wpaicg-form-field-' + i)[0]; 217 var field_name = form_field['id'] !== undefined ? form_field['id'] : ''; 218 var field_value; 219 if (field_type === 'checkbox' || field_type === 'radio') { 220 field_value = ''; 221 var field_inputs = field.getElementsByTagName('input'); 222 if (field_inputs && field_inputs.length) { 223 for (var y = 0; y < field_inputs.length; y++) { 224 var field_input = field_inputs[y]; 225 if (field_input.checked) { 226 var current_field_value = field_input.value; 227 if (current_field_value !== undefined && current_field_value !== '') { 228 field_value += (field_value === '' ? '' : ', ') + current_field_value; 229 } 230 } 231 } 232 } 233 } else { 234 field_value = field.value; 235 } 236 var sRegExInput = new RegExp('{' + field_name + '}', 'g'); 237 title = title.replace(sRegExInput, field_value); 238 } 239 } 240 if(formSource === 'form') { 241 wpaicgPromptTitleFilled.value = title + ".\n\n"; 242 } 243 let queryString = new URLSearchParams(new FormData(wpaicgForm)).toString(); 244 wpaicg_PlayGround.loading.add(wpaicgGenerateBtn); 245 wpaicgSaveResult.style.display = 'none'; 246 wpaicgStop.style.display = 'inline'; 247 wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,''); 248 queryString += '&source_stream='+formSource+'&nonce='+wpaicgFormData.ajax_nonce; 249 var eventID = Math.ceil(Math.random()*1000000); 250 wpaicgStop.setAttribute('data-event',eventID); 251 window['eventGenerator'+eventID] = new EventSource(wpaicgFormData.event + '&' + queryString); 252 if(formSource === 'form'){ 253 queryString += '&action=wpaicg_form_log'; 254 } 255 else{ 256 queryString += '&action=wpaicg_prompt_log'; 257 }
258 wpaicg_PlayGround.process(queryString,eventID,wpaicgFormData,formID,wpaicgStop,wpaicgSaveResult,wpaicgGenerateBtn,wpaicgMaxLines); 259 } 260 } 261 }) 262 } 263 } 264 }, 265 process: function(queryString,eventID,wpaicgFormData,formID,wpaicgStop,wpaicgSaveResult,wpaicgGenerateBtn,wpaicgMaxLines){ 266 var wpaicg_PlayGround = this; 267 var wpaicg_break_newline = wpaicgUserLoggedIn ? '<br/>': '\n'; 268 var startTime = new Date(); 269 var wpaicg_response_events = 0; 270 var wpaicg_newline_before = false; 271 var prompt_response = ''; 272 var wpaicg_limited_token = false; 273 var count_line = 0; 274 var wpaicg_limitLines = parseFloat(wpaicgMaxLines.value); 275 var currentContent = ''; 276 window['eventGenerator'+eventID].onmessage = function (e) { 277 currentContent = wpaicg_PlayGround.getContent(wpaicgFormData.response,formID); 278 if (e.data === "[DONE]") { 279 count_line += 1; 280 wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + wpaicg_break_newline); 281 wpaicg_response_events = 0; 282 } 283 else if (e.data === "[LIMITED]") { 284 wpaicg_limited_token = true; 285 count_line += 1; 286 wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + wpaicg_break_newline); 287 wpaicg_response_events = 0; 288 } else { 289 var result = JSON.parse(e.data); 290 var content_generated = ''; 291 if (result.error !== undefined) { 292 content_generated = result.error.message; 293 } else { 294 content_generated = result.choices[0].delta !== undefined ? (result.choices[0].delta.content !== undefined ? result.choices[0].delta.content : '') : result.choices[0].text; 295 } 296 prompt_response += content_generated; 297 if ((content_generated === '\n' || content_generated === ' \n' || content_generated === '.\n' || content_generated === '\n\n') && wpaicg_response_events > 0 && currentContent !== '') { 298 if (!wpaicg_newline_before) { 299 wpaicg_newline_before = true; 300 wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + wpaicg_break_newline); 301 } 302 } 303 else if(content_generated.indexOf("\n") > -1 && wpaicg_response_events > 0 && currentContent !== ''){ 304 if (!wpaicg_newline_before) { 305 wpaicg_newline_before = true; 306 if(wpaicgFormData.response === 'textarea'){ 307 if(!wpaicg_PlayGround.editor(formID)){ 308 content_generated = content_generated.replace(/\n/g,'<br>'); 309 } 310 } 311 else{ 312 content_generated = content_generated.replace(/\n/g,'<br>'); 313 } 314 wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + content_generated); 315 } 316 } 317 else if (content_generated === '\n' && wpaicg_response_events === 0 && currentContent === '') { 318 319 } else { 320 wpaicg_newline_before = false; 321 wpaicg_response_events += 1; 322 wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + content_generated); 323 } 324 } 325 if (count_line === wpaicg_limitLines) { 326 if(!wpaicg_limited_token) { 327 let endTime = new Date(); 328 let timeDiff = endTime - startTime; 329 timeDiff = timeDiff / 1000; 330 queryString += '&prompt_id=' + wpaicgFormData.id + '&prompt_name=' + wpaicgFormData.name + '&prompt_response=' + prompt_response + '&duration=' + timeDiff + '&_wpnonce=' + wpaicgFormData.nonce + '&source_id=' + wpaicgFormData.sourceID; 331 const xhttp = new XMLHttpRequest(); 332 xhttp.open('POST', wpaicgFormData.ajax); 333 xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 334 xhttp.send(queryString); 335 xhttp.onreadystatechange = function (oEvent) { 336 if (xhttp.readyState === 4) { 337 338 } 339 } 340 }
341 wpaicg_PlayGround.eventClose(eventID,wpaicgStop,wpaicgSaveResult,wpaicgGenerateBtn,wpaicg_limited_token); 342 } 343 } 344 }, 345 editor: function (form_id){ 346 var basicEditor = true; 347 if(wpaicg_prompt_logged){ 348 var editor = tinyMCE.get('wpaicg-prompt-result-'+form_id); 349 if ( document.getElementById('wp-wpaicg-prompt-result-'+form_id+'-wrap').classList.contains('tmce-active') && editor ) { 350 basicEditor = false; 351 } 352 } 353 return basicEditor; 354 }, 355 setContent: function (type,form_id,value){ 356 if(type === 'textarea') { 357 if (this.editor(form_id)) { 358 document.getElementById('wpaicg-prompt-result-'+form_id).value = value; 359 } else { 360 var editor = tinyMCE.get('wpaicg-prompt-result-'+form_id); 361 editor.setContent(value); 362 } 363 } 364 else{ 365 document.getElementById('wpaicg-prompt-result-'+form_id).innerHTML = value; 366 } 367 }, 368 getContent: function (type,form_id){ 369 if(type === 'textarea') { 370 if (this.editor(form_id)) { 371 return document.getElementById('wpaicg-prompt-result-'+form_id).value 372 } else { 373 var editor = tinyMCE.get('wpaicg-prompt-result-'+form_id); 374 var content = editor.getContent(); 375 content = content.replace(/<\/?p(>|$)/g, ""); 376 return content; 377 } 378 } 379 else return document.getElementById('wpaicg-prompt-result-'+form_id).innerHTML; 380 }, 381 loading: { 382 add: function (btn){ 383 btn.setAttribute('disabled','disabled'); 384 btn.innerHTML += '<span class="wpaicg-loader"></span>'; 385 }, 386 remove: function (btn){ 387 btn.removeAttribute('disabled'); 388 btn.removeChild(btn.getElementsByTagName('span')[0]); 389 } 390 }, 391 eventClose: function (eventID,btn,btnResult,btn_generator,wpaicg_limited_token){ 392 btn.style.display = 'none'; 393 if(!wpaicg_limited_token) { 394 btnResult.style.display = 'block'; 395 } 396 this.loading.remove(btn_generator); 397 window['eventGenerator'+eventID].close(); 398 }, 399 validate: { 400 email: function (email){ 401 return String(email) 402 .toLowerCase() 403 .match( 404 /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 405 ); 406 }, 407 url: function (url){ 408 try { 409 new URL(url); 410 return true; 411 } catch (err) { 412 return false; 413 } 414 } 415 } 416} 417wpaicgPlayGround.init();
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.