var wpaicgPDFBtns=document.querySelectorAll('.wpaicg-pdf-icon');
var wpaicgPDFFiles=document.querySelectorAll('.wpaicg-pdf-file');
var wpaicgPDFRemoves=document.querySelectorAll('.wpaicg-pdf-remove');
function wpaicgPDFEvent(btn){
var fileInput=btn.parentElement.querySelector('.wpaicg-pdf-file');
fileInput.click();
}
function wpaicgPDFEmbedding(start,namespace,filename,nonce,contents,type,bot_id,chat,callback){
var result='';
var next=start+1;
var pageContent=contents[start];
var embeddingData=new FormData();
var embeddingRequest=new XMLHttpRequest();
embeddingData.append('nonce', nonce);
embeddingData.append('action', 'wpaicg_pdf_embedding');
embeddingData.append('content', pageContent);
embeddingData.append('page', next);
embeddingData.append('namespace', namespace);
embeddingData.append('type', type);
embeddingData.append('bot_id', bot_id);
embeddingData.append('filename', filename);
embeddingRequest.open("POST", wpaicgParams.ajax_url,true);
embeddingRequest.send(embeddingData);
embeddingRequest.onreadystatechange=function (oEvent){
if(embeddingRequest.readyState===4){
if(embeddingRequest.status===200){
result=this.responseText;
result=JSON.parse(result);
if(result.status==='success'){
if(next===contents.length){
callback(result)
}else{
wpaicgPDFEmbedding(next, namespace, filename, nonce, contents, type, bot_id,chat, callback);
}}else{
alert(result.msg);
}}
}}
}
async function wpaicgPDFChange(input){
var type=input.getAttribute('data-type');
var chat,class_ai_item;
if(type==='widget'){
chat=input.closest('.wpaicg-chatbox');
class_ai_item='wpaicg-chat-ai-message';
}else{
chat=input.closest('.wpaicg-chat-shortcode');
class_ai_item='wpaicg-ai-message';
}
let wpaicg_ai_bg=chat.getAttribute('data-ai-bg-color');
let wpaicg_font_color=chat.getAttribute('data-color');
let wpaicg_font_size=chat.getAttribute('data-fontsize');
let wpaicg_nonce=chat.getAttribute('data-nonce');
let wpaicg_ai_name=chat.getAttribute('data-ai-name') + ':';
let wpaicg_use_avatar=parseInt(chat.getAttribute('data-use-avatar'));
let wpaicg_ai_avatar=chat.getAttribute('data-ai-avatar');
if(wpaicg_use_avatar){
wpaicg_ai_name='';
}
var pdfLoading=input.parentElement.querySelector('.wpaicg-pdf-loading');
var pdfIcon=input.parentElement.querySelector('.wpaicg-pdf-icon');
var pdfRemove=input.parentElement.querySelector('.wpaicg-pdf-remove');
var limitPage=parseInt(input.getAttribute('data-limit'));
if(input.files.length){
pdfIcon.style.display='none';
pdfRemove.style.display='none';
pdfLoading.style.display='block';
var _OBJECT_URL=URL.createObjectURL(input.files[0])
var loadingTask=pdfjsLib.getDocument({url: _OBJECT_URL});
var pageContents=[];
var pdfTextContent='';
var pageNumbers=0;
var filename=input.files[0].name;
await loadingTask.promise.then(async function (pdf){
pageNumbers=pdf.numPages;
for (var i=1; i <=pageNumbers; i++){
var page=await pdf.getPage(i);
var textContent=await page.getTextContent();
pageContents.push(textContent.items.map(u=> u.str).join("\n"));
pdfTextContent +=textContent.items.map(u=> u.str).join("\n");
}});
if(pageContents.length){
if(pageNumbers > limitPage){
pdfIcon.style.display='block';
pdfLoading.style.display='none';
pdfRemove.style.display='none';
input.value='';
alert('Your PDF exceeds the page limit of '+limitPage+'. Please upload a smaller one.');
}else{
var namespace='gptpdf_'+Math.ceil(Math.random()*100000);
var type=chat.getAttribute('data-type');
var bot_id=parseInt(chat.getAttribute('data-bot-id'));
wpaicgPDFEmbedding(0,namespace,filename,wpaicg_nonce,pageContents,type,bot_id,chat,function(result){
if(result.status==='success'){
var firstWords=wpaicggetWords(pdfTextContent,1000);
var questionData=new FormData();
var questionRequest=new XMLHttpRequest();
questionData.append('type', type);
questionData.append('bot_id', bot_id);
questionData.append('nonce', wpaicg_nonce);
questionData.append('action', 'wpaicg_example_questions');
questionData.append('content', firstWords);
questionRequest.open("POST", wpaicgParams.ajax_url);
questionRequest.send(questionData);
questionRequest.onload=function (oEvent){
result=this.responseText;
if(result!==''){
result=result.replace(/\n/g, ' ');
result=JSON.parse(result);
if(result.status==='success'){
var wpaicg_randomnum=Math.floor((Math.random() * 100000) + 1);
result.data=result.data.replace(/\n/g,' ');
var wpaicg_message='
' + wpaicg_ai_name + ''+result.data+'
';
if(type==='widget'){
chat.querySelector('.wpaicg-chatbox-messages').innerHTML +=wpaicg_message;
}else{
chat.querySelector('.wpaicg-chat-shortcode-messages').innerHTML +=wpaicg_message;
}
chat.setAttribute('data-pdf', namespace);
pdfIcon.style.display='none';
pdfLoading.style.display='none';
pdfRemove.style.display='flex';
}else{
pdfRemove.style.display='none';
pdfIcon.style.display='block';
pdfLoading.style.display='none';
alert(result.msg);
}}
}}else{
pdfIcon.style.display='block';
pdfLoading.style.display='none';
pdfRemove.style.display='none';
alert(result.msg);
}});
}}else{
alert('Your pdf is empty.');
pdfIcon.style.display='block';
pdfLoading.style.display='none';
input.value='';
}}
}
function wpaicggetWords(str,limit){
return str.split(/\s+/).slice(0,limit).join(" ");
}
if(wpaicgPDFBtns&&wpaicgPDFBtns.length){
for (let i=0; i < wpaicgPDFBtns.length; i++){
wpaicgPDFBtns[i].addEventListener('click', function (){
wpaicgPDFEvent(wpaicgPDFBtns[i]);
});
}}
if(wpaicgPDFFiles&&wpaicgPDFFiles.length){
for (let i=0; i < wpaicgPDFFiles.length; i++){
wpaicgPDFFiles[i].addEventListener('change', function (e){
wpaicgPDFChange(e.currentTarget);
});
}}
if(wpaicgPDFRemoves&&wpaicgPDFRemoves.length){
for (let i=0; i < wpaicgPDFRemoves.length; i++){
wpaicgPDFRemoves[i].addEventListener('click', function (e){
var chat;
var btn=e.currentTarget;
var type=btn.getAttribute('data-type');
if(type==='shortcode'){
chat=btn.closest('.wpaicg-chat-shortcode');
chat.setAttribute('data-pdf','');
chat.querySelector('.wpaicg-chat-shortcode-messages').innerHTML +='
';
}
btn.style.display='none';
btn.parentElement.querySelector('.wpaicg-pdf-icon').style.display='block';
});
}};
var resetFeedbackButtons=function(){
document.getElementById('wpaicg-prompt-thumbs_up').disabled=false;
document.getElementById('wpaicg-prompt-thumbs_up').style.display='inline-block';
document.getElementById('wpaicg-prompt-thumbs_down').disabled=false;
document.getElementById('wpaicg-prompt-thumbs_down').style.display='inline-block';
};
var wpaicgPlayGround={
init: function(){
var wpaicg_PlayGround=this;
var wpaicgFormsShortcode=document.getElementsByClassName('wpaicg-playground-shortcode');
var wpaicgClearButtons=document.getElementsByClassName('wpaicg-prompt-clear');
var wpaicgStopButtons=document.getElementsByClassName('wpaicg-prompt-stop-generate');
var wpaicgSaveButtons=document.getElementsByClassName('wpaicg-prompt-save-draft');
var wpaicgDownloadButtons=document.getElementsByClassName('wpaicg-prompt-download');
var wpaicgCopyButtons=document.getElementsByClassName('wpaicg-prompt-copy_button');
var wpaicgThumbsUpButtons=document.getElementsByClassName('wpaicg-prompt-thumbs_up');
var wpaicgThumbsDownButtons=document.getElementsByClassName('wpaicg-prompt-thumbs_down');
if(wpaicgDownloadButtons&&wpaicgDownloadButtons.length){
for(var i=0;i < wpaicgDownloadButtons.length;i++){
var wpaicgDownloadButton=wpaicgDownloadButtons[i];
wpaicgDownloadButton.addEventListener('click', function (e){
e.preventDefault();
var wpaicgDownloadButton=e.currentTarget;
var wpaicgForm=wpaicgDownloadButton.closest('.wpaicg-prompt-form');
var formID=wpaicgForm.getAttribute('data-id');
var wpaicgFormData=window['wpaicgForm'+formID];
var currentContent=wpaicg_PlayGround.getContent(wpaicgFormData.response,formID);
currentContent=currentContent.replace(/ /g, ' ');
var element=document.createElement('a');
currentContent=currentContent.replace(/ /g,"\n");
currentContent=currentContent.replace(/ /g,"\n");
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(currentContent));
element.setAttribute('download', 'response.txt');
element.style.display='none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
});
}}
if(wpaicgCopyButtons&&wpaicgCopyButtons.length){
for(var i=0; i < wpaicgCopyButtons.length; i++){
var wpaicgCopyButton=wpaicgCopyButtons[i];
wpaicgCopyButton.addEventListener('click', function (e){
e.preventDefault();
var wpaicgCopyButton=e.currentTarget;
var originalText=wpaicgCopyButton.textContent;
wpaicgCopyButton.textContent="👍";
setTimeout(function(){
wpaicgCopyButton.textContent=originalText;
}, 2000);
var wpaicgForm=wpaicgCopyButton.closest('.wpaicg-prompt-form');
var formID=wpaicgForm.getAttribute('data-id');
var wpaicgFormData=window['wpaicgForm'+formID];
var responseText=wpaicgPlayGround.getContent(wpaicgFormData.response, formID);
responseText=responseText.replace(/ /g, ' ');
responseText=responseText.replace(/ /g, '\r\n');
responseText=responseText.replace(/\r\n\r\n/g, '\r\n\r\n');
navigator.clipboard.writeText(responseText).then(function(){
console.log('Text successfully copied to clipboard');
}).catch(function(err){
console.error('Unable to copy text to clipboard', err);
});
});
}}
if(wpaicgClearButtons&&wpaicgClearButtons.length){
for(var i=0;i < wpaicgClearButtons.length;i++){
var wpaicgClearButton=wpaicgClearButtons[i];
wpaicgClearButton.addEventListener('click', function (e){
e.preventDefault();
var wpaicgClearButton=e.currentTarget;
var wpaicgForm=wpaicgClearButton.closest('.wpaicg-prompt-form');
var formID=wpaicgForm.getAttribute('data-id');
var wpaicgFormData=window['wpaicgForm'+formID];
var wpaicgSaveResult=wpaicgForm.getElementsByClassName('wpaicg-prompt-save-result')[0];
wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,'');
wpaicgSaveResult.style.display='none';
});
}}
if(wpaicgStopButtons&&wpaicgStopButtons.length){
for(var i=0;i < wpaicgStopButtons.length;i++){
var wpaicgStopButton=wpaicgStopButtons[i];
wpaicgStopButton.addEventListener('click', function (e){
e.preventDefault();
var wpaicgStopButton=e.currentTarget;
var wpaicgForm=wpaicgStopButton.closest('.wpaicg-prompt-form');
var eventID=wpaicgStopButton.getAttribute('data-event');
var wpaicgSaveResult=wpaicgForm.getElementsByClassName('wpaicg-prompt-save-result')[0];
var wpaicgGenerateBtn=wpaicgForm.getElementsByClassName('wpaicg-generate-button')[0];
wpaicg_PlayGround.eventClose(eventID,wpaicgStopButton,wpaicgSaveResult,wpaicgGenerateBtn);
});
}}
if(wpaicgSaveButtons&&wpaicgSaveButtons.length){
for(var i=0;i < wpaicgSaveButtons.length;i++){
var wpaicgSaveButton=wpaicgSaveButtons[i];
wpaicgSaveButton.addEventListener('click', function (e){
e.preventDefault();
var wpaicgSaveButton=e.currentTarget;
var wpaicgForm=wpaicgSaveButton.closest('.wpaicg-prompt-form');
var formID=wpaicgForm.getAttribute('data-id');
var wpaicgFormData=window['wpaicgForm'+formID];
var title=wpaicgForm.getElementsByClassName('wpaicg-prompt-post_title')[0].value;
var content=wpaicg_PlayGround.getContent(wpaicgFormData.response,formID);
if(title===''){
alert('Please insert title');
}else if(content===''){
alert('Please wait generate content')
}else{
const xhttp=new XMLHttpRequest();
xhttp.open('POST', wpaicgFormData.ajax);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send('action=wpaicg_save_draft_post_extra&title=' + title + '&content=' + content+'&save_source=promptbase&nonce='+wpaicgFormData.ajax_nonce);
wpaicg_PlayGround.loading.add(wpaicgSaveButton);
xhttp.onreadystatechange=function (oEvent){
if(xhttp.readyState===4){
wpaicg_PlayGround.loading.remove(wpaicgSaveButton);
if(xhttp.status===200){
var wpaicg_response=this.responseText;
wpaicg_response=JSON.parse(wpaicg_response);
if(wpaicg_response.status==='success'){
window.location.href=wpaicgFormData.post+'?post=' + wpaicg_response.id + '&action=edit';
}else{
alert(wpaicg_response.msg);
}}else{
alert('Something went wrong');
}}
}}
});
}}
if(wpaicgFormsShortcode&&wpaicgFormsShortcode.length){
for(var i=0;i< wpaicgFormsShortcode.length;i++){
var wpaicgFormShortcode=wpaicgFormsShortcode[i];
var wpaicgForm=wpaicgFormShortcode.getElementsByClassName('wpaicg-prompt-form')[0];
wpaicgForm.addEventListener('submit', function (e){
e.preventDefault();
var wpaicgForm=e.currentTarget;
var formID=wpaicgForm.getAttribute('data-id');
var formSource=wpaicgForm.getAttribute('data-source');
var wpaicgFormData=window['wpaicgForm'+formID];
if(wpaicgFormData&&wpaicgFormData.feedback_buttons==='yes'){
resetFeedbackButtons();
}
var wpaicgMaxToken=wpaicgForm.getElementsByClassName('wpaicg-prompt-max_tokens')[0];
var wpaicgTemperature=wpaicgForm.getElementsByClassName('wpaicg-prompt-temperature')[0];
var wpaicgTopP=wpaicgForm.getElementsByClassName('wpaicg-prompt-top_p')[0];
var wpaicgBestOf=wpaicgForm.getElementsByClassName('wpaicg-prompt-best_of')[0];
var wpaicgFP=wpaicgForm.getElementsByClassName('wpaicg-prompt-frequency_penalty')[0];
var wpaicgPP=wpaicgForm.getElementsByClassName('wpaicg-prompt-presence_penalty')[0];
var wpaicgMaxLines=wpaicgForm.getElementsByClassName('wpaicg-prompt-max-lines')[0];
var wpaicgPromptTitle=wpaicgForm.getElementsByClassName('wpaicg-prompt-title')[0];
var wpaicgPromptTitleFilled=wpaicgForm.getElementsByClassName('wpaicg-prompt-title-filled')[0];
var wpaicgGenerateBtn=wpaicgForm.getElementsByClassName('wpaicg-generate-button')[0];
var wpaicgSaveResult=wpaicgForm.getElementsByClassName('wpaicg-prompt-save-result')[0];
var wpaicgStop=wpaicgForm.getElementsByClassName('wpaicg-prompt-stop-generate')[0];
var max_tokens=wpaicgMaxToken.value;
var temperature=wpaicgTemperature.value;
var top_p=wpaicgTopP.value;
var best_of=wpaicgBestOf.value;
var frequency_penalty=wpaicgFP.value;
var presence_penalty=wpaicgPP.value;
var error_message=false;
var title=wpaicgPromptTitle.value;
if(title===''){
error_message='Please insert prompt';
}else if(max_tokens===''){
error_message='Please enter max tokens';
}else if(parseFloat(max_tokens) < 1||parseFloat(max_tokens) > 8000){
error_message='Please enter a valid max tokens value between 1 and 8000';
}else if(temperature===''){
error_message='Please enter temperature';
}else if(parseFloat(temperature) < 0||parseFloat(temperature) > 1){
error_message='Please enter a valid temperature value between 0 and 1';
}else if(top_p===''){
error_message='Please enter Top P';
}else if(parseFloat(top_p) < 0||parseFloat(top_p) > 1){
error_message='Please enter a valid Top P value between 0 and 1';
}else if(best_of===''){
error_message='Please enter best of';
}else if(parseFloat(best_of) < 1||parseFloat(best_of) > 20){
error_message='Please enter a valid best of value between 0 and 1';
}else if(frequency_penalty===''){
error_message='Please enter frequency penalty';
}else if(parseFloat(frequency_penalty) < 0||parseFloat(frequency_penalty) > 2){
error_message='Please enter a valid frequency penalty value between 0 and 2';
}else if(presence_penalty===''){
error_message='Please enter presence penalty';
}else if(parseFloat(presence_penalty) < 0||parseFloat(presence_penalty) > 2){
error_message='Please enter a valid presence penalty value between 0 and 2';
}
if(error_message){
alert(error_message);
}else{
if(typeof wpaicgFormData.fields==='object'){
for (var i=0; i < wpaicgFormData.fields.length; i++){
var form_field=wpaicgFormData.fields[i];
var field=wpaicgForm.getElementsByClassName('wpaicg-form-field-' + i)[0];
var field_type=form_field['type']!==undefined ? form_field['type']:'text';
var field_label=form_field['label']!==undefined ? form_field['label']:'';
var field_min=form_field['min']!==undefined ? form_field['min']:'';
var field_max=form_field['max']!==undefined ? form_field['max']:'';
if(field_type!=='radio'&&field_type!=='checkbox'){
var field_value=field.value;
if(field_type==='text'||field_type==='textarea'||field_type==='email'||field_type==='url'){
if(field_min!==''&&field_value.length < parseInt(field_min)){
error_message=field_label + ' minimum ' + field_min + ' characters';
}else if(field_max!==''&&field_value.length > parseInt(field_max)){
error_message=field_label + ' maximum ' + field_max + ' characters';
}else if(field_type==='email'&&!wpaicg_PlayGround.validate.email(field_value)){
error_message=field_label + ' must be email address';
}else if(field_type==='url'&&!wpaicg_PlayGround.validate.url(field_value)){
error_message=field_label + ' must be url';
}}else if(field_type==='number'){
if(field_min!==''&&parseFloat(field_value) < parseInt(field_min)){
error_message=field_label + ' minimum ' + field_min;
}else if(field_max!==''&&parseFloat(field_value) > parseInt(field_max)){
error_message=field_label + ' maximum ' + field_max;
}}
}else if(field_type==='checkbox'||field_type==='radio'){
var field_inputs=field.getElementsByTagName('input');
var field_checked=false;
if(field_inputs&&field_inputs.length){
for (var y=0; y < field_inputs.length; y++){
var field_input=field_inputs[y];
if(field_input.checked){
field_checked=true;
}}
}
if(!field_checked){
error_message=field_label + ' is required';
}}
}}
if(error_message){
alert(error_message);
}else{
if(typeof wpaicgFormData.fields==='object'){
for (var i=0; i < wpaicgFormData.fields.length; i++){
var form_field=wpaicgFormData.fields[i];
var field_type=form_field.type;
var field=wpaicgForm.getElementsByClassName('wpaicg-form-field-' + i)[0];
var field_name=form_field['id']!==undefined ? form_field['id']:'';
var field_value;
if(field_type==='checkbox'||field_type==='radio'){
field_value='';
var field_inputs=field.getElementsByTagName('input');
if(field_inputs&&field_inputs.length){
for (var y=0; y < field_inputs.length; y++){
var field_input=field_inputs[y];
if(field_input.checked){
var current_field_value=field_input.value;
if(current_field_value!==undefined&¤t_field_value!==''){
field_value +=(field_value==='' ? '':', ') + current_field_value;
}}
}}
}else{
field_value=field.value;
}
var sRegExInput=new RegExp('{' + field_name + '}', 'g');
title=title.replace(sRegExInput, field_value);
}}
if(formSource==='form'){
wpaicgPromptTitleFilled.value=title + ".\n\n";
}
let queryString=new URLSearchParams(new FormData(wpaicgForm)).toString();
wpaicg_PlayGround.loading.add(wpaicgGenerateBtn);
wpaicgSaveResult.style.display='none';
wpaicgStop.style.display='inline';
wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,'');
queryString +='&source_stream='+formSource+'&nonce='+wpaicgFormData.ajax_nonce;
var eventID=Math.ceil(Math.random()*1000000);
for (var i=0; i < wpaicgThumbsUpButtons.length; i++){
wpaicgThumbsUpButtons[i].setAttribute('data-eventid', eventID);
}
for (var i=0; i < wpaicgThumbsDownButtons.length; i++){
wpaicgThumbsDownButtons[i].setAttribute('data-eventid', eventID);
}
wpaicgStop.setAttribute('data-event',eventID);
window['eventGenerator'+eventID]=new EventSource(wpaicgFormData.event + '&' + queryString);
if(formSource==='form'){
queryString +='&action=wpaicg_form_log';
}else{
queryString +='&action=wpaicg_prompt_log';
}
wpaicg_PlayGround.process(queryString,eventID,wpaicgFormData,formID,wpaicgStop,wpaicgSaveResult,wpaicgGenerateBtn,wpaicgMaxLines);
}}
})
}
var handleFeedbackButtonClick=function(e){
e.preventDefault();
var button=e.currentTarget;
var formID=button.getAttribute('data-id');
var eventID=button.getAttribute('data-eventid');
var feedbackType=button.id.replace('wpaicg-prompt-', '');
var wpaicgFormData=window['wpaicgForm' + formID];
var modal=jQuery('#wpaicg_feedbackModal');
var datasource=wpaicgFormData.datasource;
var textareaID=wpaicgFormData.feedbackID;
modal.find('.emoji').text(feedbackType=='thumbs_up' ? '👍':'👎');
modal.fadeIn();
jQuery('.wpaicg_feedbackModal-overlay').fadeIn();
var myaction=(datasource==='promptbase') ? 'wpaicg_save_prompt_feedback':'wpaicg_save_feedback';
jQuery('#wpaicg_submitFeedback').off('click').on('click', function(){
modal.find('textarea').attr('id', textareaID);
var comment=jQuery('#' + textareaID).val();
console.log('comment: ' + comment);
var responseText=wpaicgPlayGround.getContent(wpaicgFormData.response, formID);
responseText=responseText.replace(/ /g, ' ');
responseText=responseText.replace(/ /g, '\r\n');
responseText=responseText.replace(/\r\n\r\n/g, '\r\n\r\n');
const xhttp=new XMLHttpRequest();
xhttp.open('POST', wpaicgFormData.ajax);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send('action=' + myaction + '&formID=' + formID + '&feedback=' + feedbackType + '&comment=' + encodeURIComponent(comment) + '&nonce=' + wpaicgFormData.ajax_nonce + '&formname=' + wpaicgFormData.name + '&sourceID=' + wpaicgFormData.sourceID + '&response=' + responseText + '&eventID=' + eventID);
xhttp.onreadystatechange=function(oEvent){
if(xhttp.readyState===4){
if(xhttp.status===200){
var response=JSON.parse(xhttp.responseText);
if(response.status==='success'){
if(feedbackType==='thumbs_up'){
document.getElementById('wpaicg-prompt-thumbs_up').disabled=true;
document.getElementById('wpaicg-prompt-thumbs_down').style.display='none';
}else{
document.getElementById('wpaicg-prompt-thumbs_down').disabled=true;
document.getElementById('wpaicg-prompt-thumbs_up').style.display='none';
}
jQuery('#' + textareaID).val('');
}else{
alert(response.msg);
}}else{
alert('Error: ' + xhttp.status + ' - ' + xhttp.statusText + '\n\n' + xhttp.responseText);
}
modal.fadeOut();
jQuery('.wpaicg_feedbackModal-overlay').fadeOut();
}}
});
jQuery('#closeFeedbackModal').off('click').on('click', function(){
modal.fadeOut();
jQuery('.wpaicg_feedbackModal-overlay').fadeOut();
});
};
for (var k=0; k < wpaicgThumbsUpButtons.length; k++){
wpaicgThumbsUpButtons[k].addEventListener('click', handleFeedbackButtonClick);
}
for (var k=0; k < wpaicgThumbsDownButtons.length; k++){
wpaicgThumbsDownButtons[k].addEventListener('click', handleFeedbackButtonClick);
}}
},
process: function(queryString,eventID,wpaicgFormData,formID,wpaicgStop,wpaicgSaveResult,wpaicgGenerateBtn,wpaicgMaxLines){
var wpaicg_PlayGround=this;
var wpaicg_break_newline=wpaicgParams.logged_in==="1" ? '
';
}}
}}
},
imageModal: function (id){
var item=document.getElementById('wpaicg-image-item-'+id);
var alt=item.querySelectorAll('.wpaicg-image-item-alt')[0].value;
var title=item.querySelectorAll('.wpaicg-image-item-title')[0].value;
var caption=item.querySelectorAll('.wpaicg-image-item-caption')[0].value;
var description=item.querySelectorAll('.wpaicg-image-item-description')[0].value;
var url=item.querySelectorAll('input[type=checkbox]')[0].value;
document.querySelectorAll('.wpaicg_modal_content')[0].innerHTML='';
document.querySelectorAll('.wpaicg-overlay')[0].style.display='block';
document.querySelectorAll('.wpaicg_modal')[0].style.display='block';
document.querySelectorAll('.wpaicg_modal_title')[0].innerHTML=wpaicgParams.languages.edit_image;
var html='
';
html +='';
html +='
';
html +='';
html +='';
html +='';
html +='';
html +='';
html +='
';
html +='
';
document.querySelectorAll('.wpaicg_modal_content')[0].innerHTML=html;
wpaicgImageCloseModal();
},
image_generator: function(data, start, max, multi_steps,form_action){
let that=this;
const xhttp=new XMLHttpRequest();
xhttp.open('POST', wpaicgParams.ajax_url);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(data);
xhttp.onreadystatechange=function(oEvent){
if(xhttp.readyState===4){
if(xhttp.status===200){
var wpaicg_response=this.responseText;
res=JSON.parse(wpaicg_response);
if(res.status==='success'){
for(var idx=0; idx < res.imgs.length; idx++){
let idImageBox=idx;
if(multi_steps){
idImageBox=start -1;
}
var img=res.imgs[idx];
var html='
';
if(wpaicgParams.logged_in==='1'){
html +='';
}
html +='';
html +='';
html +='';
html +='';
if(wpaicgParams.logged_in==='1'){
html +='';
}else{
html +='';
}
html +='
';
that.wpaicgImageGrid.innerHTML +=html;
}
if(multi_steps){
if(start===max){
wpaicgImageRmLoading(that.wpaicgImageGenerateBtn);
that.wpaicgImageSelectAll.classList.remove('selectall')
that.wpaicgImageSelectAll.innerHTML=wpaicgSelectAllText;
that.wpaicgImageSelectAll.style.display='block';
that.wpaicgImageLoading.style.display='none';
that.wpaicgImageSaveBtn.style.display='block';
}else{
that.image_generator(data, start+1, max, multi_steps,form_action)
}}else{
if(form_action==='wpaicg_image_generator'){
let endTime=new Date();
let timeDiff=endTime - that.wpaicgStartTime;
timeDiff=timeDiff/1000;
data +='&action=wpaicg_image_log&duration='+timeDiff+'&_wpnonce_image_log='+wpaicgImageNonce+'&shortcode=['+wpaicgImageShortcode+']&source_id='+wpaicgImageSourceID;
const xhttp=new XMLHttpRequest();
xhttp.open('POST', wpaicgParams.ajax_url);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(data);
xhttp.onreadystatechange=function (oEvent){
if(xhttp.readyState===4){
}}
}
wpaicgImageRmLoading(that.wpaicgImageGenerateBtn);
that.wpaicgImageSelectAll.classList.remove('selectall')
that.wpaicgImageSelectAll.innerHTML='';
that.wpaicgImageSelectAll.style.display='block';
that.wpaicgImageLoading.style.display='none';
that.wpaicgImageSaveBtn.style.display='block';
}}else{
wpaicgImageRmLoading(that.wpaicgImageGenerateBtn);
that.wpaicgImageLoading.style.display='none';
let errorMessage=document.createElement('div');
errorMessage.style.color='#f00';
errorMessage.classList.add('wpaicg-image-error');
errorMessage.innerHTML=res.msg;
that.wpaicgImageGenerated.prepend(errorMessage);
setTimeout(function (){
errorMessage.remove();
},3000);
}}else{
that.wpaicgImageLoading.style.display='none';
wpaicgImageRmLoading(that.wpaicgImageGenerateBtn);
alert('Something went wrong');
}}
}},
save_image: function (items,start){
let that=this;
if(start >=items.length){
that.wpaicgImageConvertBar.getElementsByTagName('small')[0].innerHTML=items.length+'/'+items.length;
that.wpaicgImageConvertBar.getElementsByTagName('span')[0].style.width='100%';
that.wpaicgImageMessage.innerHTML=wpaicgParams.languages.save_image_success;
wpaicgImageRmLoading(that.wpaicgImageSaveBtn);
setTimeout(function (){
that.wpaicgImageMessage.innerHTML='';
},2000)
}else{
var id=items[start];
var item=document.getElementById('wpaicg-image-item-'+id);
var data='action=wpaicg_save_image_media';
data +='&image_alt='+item.querySelectorAll('.wpaicg-image-item-alt')[0].value;
data +='&image_title='+item.querySelectorAll('.wpaicg-image-item-title')[0].value;
data +='&image_caption='+item.querySelectorAll('.wpaicg-image-item-caption')[0].value;
data +='&image_description='+item.querySelectorAll('.wpaicg-image-item-description')[0].value;
data +='&image_url='+encodeURIComponent(item.querySelectorAll('.wpaicg-image-item-select')[0].value);
data +='&nonce='+wpaicgImageSaveNonce;
const xhttp=new XMLHttpRequest();
xhttp.open('POST', wpaicgParams.ajax_url);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(data);
xhttp.onreadystatechange=function(oEvent){
if(xhttp.readyState===4){
if(xhttp.status===200){
var wpaicg_response=this.responseText;
res=JSON.parse(wpaicg_response);
if(res.status==='success'){
var currentPos=start+1;
var percent=Math.ceil(currentPos*100/items.length);
that.wpaicgImageConvertBar.getElementsByTagName('small')[0].innerHTML=currentPos+'/'+items.length;
that.wpaicgImageConvertBar.getElementsByTagName('span')[0].style.width=percent+'%';
that.save_image(items, start+1);
}else{
that.wpaicgImageConvertBar.classList.add('wpaicg_error');
wpaicgImageRmLoading(that.wpaicgImageSaveBtn);
alert(res.msg);
}}else{
alert(wpaicgParams.languages.wrong);
that.wpaicgImageConvertBar.classList.add('wpaicg_error');
wpaicgImageRmLoading(that.wpaicgImageSaveBtn);
}}
}}
},
image: function (){
let that=this;
let wpaicgImageForm=document.getElementById('wpaicg-image-generator-form');
if(wpaicgImageForm){
this.wpaicgImageForm=wpaicgImageForm;
this.wpaicgImageGenerated=wpaicgImageForm.getElementsByClassName('image-generated')[0];
this.wpaicgImageGrid=wpaicgImageForm.getElementsByClassName('image-grid')[0];
this.wpaicgImageLoading=wpaicgImageForm.getElementsByClassName('image-generate-loading')[0];
this.wpaicgImageSaveBtn=wpaicgImageForm.getElementsByClassName('image-generator-save')[0];
this.wpaicgImageMessage=wpaicgImageForm.getElementsByClassName('wpaicg_message')[0];
this.wpaicgImageConvertBar=wpaicgImageForm.getElementsByClassName('wpaicg-convert-bar')[0];
this.wpaicg_image_modal_close=wpaicgImageForm.getElementsByClassName('wpaicg_image_modal_close');
this.wpaicgNumberImages=wpaicgImageForm.querySelector('select[name=num_images]');
this.wpaicgImageGenerateBtn=wpaicgImageForm.getElementsByClassName('wpaicg_button_generate')[0];
this.wpaicgImageSelectAll=wpaicgImageForm.getElementsByClassName('wpaicg_image_select_all')[0];
this.wpaicgImageSaveBtn.addEventListener('click', function (e){
var items=[];
document.querySelectorAll('.wpaicg-image-item input[type=checkbox]').forEach(function (item){
if(item.checked){
items.push(item.getAttribute('data-id'));
}});
if(items.length){
that.wpaicgImageConvertBar.style.display='block';
that.wpaicgImageConvertBar.classList.remove('wpaicg_error');
that.wpaicgImageConvertBar.getElementsByTagName('small')[0].innerHTML='0/' + items.length;
that.wpaicgImageConvertBar.getElementsByTagName('span')[0].style.width=0;
that.wpaicgImageMessage.innerHTML='';
wpaicgImageLoadingEffect(that.wpaicgImageSaveBtn);
that.save_image(items, 0);
}else{
alert(wpaicgParams.languages.select_save_error);
}})
this.wpaicgImageSelectAll.addEventListener('click', function (e){
if(that.wpaicgImageSelectAll.classList.contains('selectall')){
that.wpaicgImageSelectAll.classList.remove('selectall');
that.wpaicgImageSelectAll.innerHTML=wpaicgSelectAllText;
document.querySelectorAll('.wpaicg-image-item input[type=checkbox]').forEach(function (item){
item.checked=false;
})
}else{
that.wpaicgImageSelectAll.classList.add('selectall');
that.wpaicgImageSelectAll.innerHTML=wpaicgParams.languages.unselect;
document.querySelectorAll('.wpaicg-image-item input[type=checkbox]').forEach(function (item){
item.checked=true;
})
}});
wpaicgImageForm.addEventListener('submit', function (e){
e.preventDefault();
var form_action=wpaicgImageForm.querySelectorAll('input[name=action]')[0].value;
if(form_action==='wpaicg_image_stable_diffusion'){
that.wpaicgNumberImages=wpaicgImageForm.querySelector('select[name=num_outputs]');
}
var num_images=parseInt(that.wpaicgNumberImages.value);
if(num_images > 0){
var wpaicg_error=false;
if(form_action==='wpaicg_image_stable_diffusion'){
var prompt_strength=parseFloat(document.getElementById('prompt_strength').value);
var num_inference_steps=parseFloat(document.getElementById('num_inference_steps').value);
var guidance_scale=parseFloat(document.getElementById('guidance_scale').value);
if(prompt_strength < 0||prompt_strength > 1){
wpaicg_error=wpaicgParams.languages.prompt_strength
}else if(num_inference_steps < 1||num_inference_steps > 500){
wpaicg_error=wpaicgParams.languages.num_inference_steps
}else if(guidance_scale < 1||guidance_scale > 20){
wpaicg_error=wpaicgParams.languages.guidance_scale
}}
if(wpaicg_error){
alert(wpaicg_error);
}else{
const queryString=new URLSearchParams(new FormData(wpaicgImageForm)).toString();
that.wpaicgImageSaveBtn.style.display='none';
wpaicgImageLoadingEffect(that.wpaicgImageGenerateBtn);
that.wpaicgImageConvertBar.style.display='none';
that.wpaicgImageLoading.style.display='flex';
that.wpaicgImageGrid.innerHTML='';
that.wpaicgImageSelectAll.style.display='none';
let wpaicgImageError=document.getElementsByClassName('wpaicg-image-error');
if(wpaicgImageError.length){
wpaicgImageError[0].remove();
}
if(form_action==='wpaicg_image_stable_diffusion'){
that.image_generator(queryString, 1, num_images, true, form_action);
}else{
that.wpaicgStartTime=new Date();
that.image_generator(queryString, 1, num_images, false, form_action);
}}
}else{
alert(wpaicgParams.languages.error_image)
}
return false;
});
}}
}
window['wpaicgInit']=wpaicgInit.init();
var globalChatbotIdentity='';
var globalClientID='';
function wpaicgChatShortcodeSize(){
var wpaicgWindowWidth=window.innerWidth;
var wpaicgWindowHeight=window.innerHeight;
var chatShortcodes=document.getElementsByClassName('wpaicg-chat-shortcode');
if(chatShortcodes!==null&&chatShortcodes.length){
for(var i=0;i 0; i--){
messagesBox.removeChild(messages[i]);
}}
}
var chatWidgets=document.getElementsByClassName('wpaicg_chat_widget_content');
if(chatWidgets!==null&&chatWidgets.length){
for (var i=0; i < chatWidgets.length; i++){
var chatWidget=chatWidgets[i];
var messagesBox=chatWidget.getElementsByClassName('wpaicg-chatbox-messages')[0];
clearMessagesExceptFirst(messagesBox);
}}
var chatShortcodes=document.getElementsByClassName('wpaicg-chat-shortcode');
if(chatShortcodes!==null&&chatShortcodes.length){
for (var i=0; i < chatShortcodes.length; i++){
var chatShortcode=chatShortcodes[i];
var messagesBox=chatShortcode.getElementsByClassName('wpaicg-chat-shortcode-messages')[0];
clearMessagesExceptFirst(messagesBox);
}}
}
function wpaicgFullScreen(btn){
var type=btn.getAttribute('data-type');
if(type==='shortcode'){
var wpaicgChatShortcode=btn.closest('.wpaicg-chat-shortcode');
if(btn.classList.contains('wpaicg-fullscreen-box')){
btn.classList.remove('wpaicg-fullscreen-box');
var chatWidth=wpaicgChatShortcode.getAttribute('data-old-width');
var chatHeight=wpaicgChatShortcode.getAttribute('data-old-height');
wpaicgChatShortcode.setAttribute('data-width', chatWidth);
wpaicgChatShortcode.setAttribute('data-height', chatHeight);
wpaicgChatShortcode.style.position='';
wpaicgChatShortcode.style.top='';
wpaicgChatShortcode.style.left='';
wpaicgChatShortcode.style.zIndex='';
wpaicgChatShortcode.classList.remove('wpaicg-fullscreened');
}else{
var newChatBoxWidth=document.body.offsetWidth;
var chatWidth=wpaicgChatShortcode.getAttribute('data-width');
var chatHeight=wpaicgChatShortcode.getAttribute('data-height');
wpaicgChatShortcode.setAttribute('data-old-width', chatWidth);
wpaicgChatShortcode.setAttribute('data-old-height', chatHeight);
wpaicgChatShortcode.setAttribute('data-width', newChatBoxWidth);
wpaicgChatShortcode.setAttribute('data-height', '100%');
btn.classList.add('wpaicg-fullscreen-box');
wpaicgChatShortcode.style.position='fixed';
wpaicgChatShortcode.style.top=0;
wpaicgChatShortcode.style.left=0;
wpaicgChatShortcode.style.zIndex=999999999;
wpaicgChatShortcode.classList.add('wpaicg-fullscreened');
}
wpaicgChatShortcodeSize();
}else{
var wpaicgWidgetContent=btn.closest('.wpaicg_chat_widget_content');
var chatbox=wpaicgWidgetContent.getElementsByClassName('wpaicg-chatbox')[0];
if(btn.classList.contains('wpaicg-fullscreen-box')){
btn.classList.remove('wpaicg-fullscreen-box');
var chatWidth=chatbox.getAttribute('data-old-width');
var chatHeight=chatbox.getAttribute('data-old-height');
chatbox.setAttribute('data-width', chatWidth);
chatbox.setAttribute('data-height', chatHeight);
wpaicgWidgetContent.style.position='absolute';
wpaicgWidgetContent.style.bottom='';
wpaicgWidgetContent.style.left='';
wpaicgWidgetContent.classList.remove('wpaicg-fullscreened');
}else{
var newChatBoxWidth=document.body.offsetWidth;
var chatWidth=chatbox.getAttribute('data-width');
var chatHeight=chatbox.getAttribute('data-height');
chatbox.setAttribute('data-old-width', chatWidth);
chatbox.setAttribute('data-old-height', chatHeight);
chatbox.setAttribute('data-width', newChatBoxWidth);
chatbox.setAttribute('data-height', '100%');
btn.classList.add('wpaicg-fullscreen-box');
wpaicgWidgetContent.style.position='fixed';
wpaicgWidgetContent.style.bottom=0;
wpaicgWidgetContent.style.left=0;
wpaicgWidgetContent.classList.add('wpaicg-fullscreened');
}
wpaicgChatBoxSize();
}}
if(wpaicgChatFullScreens.length){
for(var i=0; i < wpaicgChatFullScreens.length; i++){
var wpaicgChatFullScreen=wpaicgChatFullScreens[i];
wpaicgChatFullScreen.addEventListener('click', function (e){
wpaicgFullScreen(e.currentTarget);
})
}}
window.addEventListener('resize', function (){
wpaicgChatBoxSize();
wpaicgChatShortcodeSize();
if(wpaicg_chat_widgets!==null&&wpaicg_chat_widgets.length){
for(var i=0;i/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
function wpaicgstartChatRecording(){
let constraints={audio: true, video: false}
navigator.mediaDevices.getUserMedia(constraints).then(function (stream){
wpaicgaudioContext=new wpaicgChatAudioContext();
wpaicgChatStream=stream;
wpaicgInput=wpaicgaudioContext.createMediaStreamSource(stream);
wpaicgChatRec=new Recorder(wpaicgInput, {numChannels: 1});
wpaicgChatRec.record();
})
}
function wpaicgstopChatRecording(mic){
wpaicgChatRec.stop();
wpaicgChatStream.getAudioTracks()[0].stop();
wpaicgChatRec.exportWAV(function (blob){
let type=mic.getAttribute('data-type');
let parentChat;
let chatContent;
let chatTyping;
if(type==='widget'){
parentChat=mic.closest('.wpaicg-chatbox');
chatContent=parentChat.querySelectorAll('.wpaicg-chatbox-content')[0];
chatTyping=parentChat.querySelectorAll('.wpaicg-chatbox-typing')[0];
}else{
parentChat=mic.closest('.wpaicg-chat-shortcode');
chatContent=parentChat.querySelectorAll('.wpaicg-chat-shortcode-content')[0];
chatTyping=parentChat.querySelectorAll('.wpaicg-chat-shortcode-typing')[0];
}
wpaicgSendChatMessage(parentChat, chatTyping, type, blob);
});
}
function generateRandomString(length){
let result='';
let characters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let charactersLength=characters.length;
for (let i=0; i < length; i++){
result +=characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
function wpaicgSendChatMessage(chat, typing, type, blob){
let wpaicg_box_typing=typing;
let wpaicg_ai_thinking, wpaicg_messages_box, class_user_item, class_ai_item;
let wpaicgMessage='';
let wpaicgData=new FormData();
let wpaicg_you=chat.getAttribute('data-you') + ':';
let wpaicg_ai_name=chat.getAttribute('data-ai-name') + ':';
let wpaicg_nonce=chat.getAttribute('data-nonce');
let wpaicg_use_avatar=parseInt(chat.getAttribute('data-use-avatar'));
let wpaicg_bot_id=parseInt(chat.getAttribute('data-bot-id'));
let wpaicg_user_avatar=chat.getAttribute('data-user-avatar');
let wpaicg_ai_avatar=chat.getAttribute('data-ai-avatar');
let wpaicg_user_bg=chat.getAttribute('data-user-bg-color');
let wpaicg_font_size=chat.getAttribute('data-fontsize');
let wpaicg_speech=chat.getAttribute('data-speech');
let wpaicg_voice=chat.getAttribute('data-voice');
let elevenlabs_model=chat.getAttribute('data-elevenlabs-model');
if(elevenlabs_model===null||elevenlabs_model===undefined){
elevenlabs_model=chat.getAttribute('data-elevenlabs_model');
}
let elevenlabs_voice=chat.getAttribute('data-elevenlabs-voice');
if(elevenlabs_voice===null||elevenlabs_voice===undefined){
elevenlabs_voice=chat.getAttribute('data-elevenlabs_voice');
}
let wpaicg_voice_error=chat.getAttribute('data-voice-error');
let url=chat.getAttribute('data-url');
let post_id=chat.getAttribute('data-post-id');
let wpaicg_ai_bg=chat.getAttribute('data-ai-bg-color');
let wpaicg_font_color=chat.getAttribute('data-color');
let voice_service=chat.getAttribute('data-voice_service');
let voice_language=chat.getAttribute('data-voice_language');
let voice_name=chat.getAttribute('data-voice_name');
let voice_device=chat.getAttribute('data-voice_device');
let openai_model=chat.getAttribute('data-openai_model');
let openai_voice=chat.getAttribute('data-openai_voice');
let openai_output_format=chat.getAttribute('data-openai_output_format');
let openai_voice_speed=chat.getAttribute('data-openai_voice_speed');
let openai_stream_nav=chat.getAttribute('data-openai_stream_nav');
let voice_speed=chat.getAttribute('data-voice_speed');
let voice_pitch=chat.getAttribute('data-voice_pitch');
var chat_pdf=chat.getAttribute('data-pdf');
if(type==='widget'){
wpaicg_ai_thinking=chat.getElementsByClassName('wpaicg-bot-thinking')[0];
wpaicg_messages_box=chat.getElementsByClassName('wpaicg-chatbox-messages')[0];
class_user_item='wpaicg-chat-user-message';
class_ai_item='wpaicg-chat-ai-message';
}else{
wpaicg_ai_thinking=chat.getElementsByClassName('wpaicg-bot-thinking')[0];
wpaicg_messages_box=chat.getElementsByClassName('wpaicg-chat-shortcode-messages')[0];
class_user_item='wpaicg-user-message';
class_ai_item='wpaicg-ai-message';
}
if(wpaicg_use_avatar){
wpaicg_you='';
wpaicg_ai_name='';
}
wpaicg_ai_thinking.style.display='block';
let wpaicg_question=wpaicgescapeHtml(wpaicg_box_typing.value);
wpaicgMessage +='