Your IP : 3.139.82.4


Current Path : /proc/self/root/home/sudancam/public_html/wp-content/plugins/wpforms-lite/assets/js/integrations/ai/
Upload File :
Current File : //proc/self/root/home/sudancam/public_html/wp-content/plugins/wpforms-lite/assets/js/integrations/ai/wpforms-ai-chat-element.min.js

Promise.all([import(`./modules/api${wpforms_ai_chat_element.min}.js`),import(`./modules/helpers-text${wpforms_ai_chat_element.min}.js`),import(`./modules/helpers-choices${wpforms_ai_chat_element.min}.js`)]).then(([e,t,s])=>{window.WPFormsAi={api:e.default(),helpers:{text:t.default,choices:s.default}},customElements.define("wpforms-ai-chat",WPFormsAIChatHTMLElement)});class WPFormsAIChatHTMLElement extends HTMLElement{constructor(){super()}connectedCallback(){this.chatMode=this.getAttribute("mode")??"text",this.fieldId=this.getAttribute("field-id")??"",this.modeStrings=wpforms_ai_chat_element[this.chatMode]??{},this.loadingState=!1,this.modeHelpers=this.getHelpers(this),this.modeHelpers?(this.innerHTML=this.getInnerHTML(),this.wrapper=this.querySelector(".wpforms-ai-chat"),this.input=this.querySelector(".wpforms-ai-chat-message-input input"),this.welcomeScreenSamplePrompts=this.querySelector(".wpforms-ai-chat-welcome-screen-sample-prompts"),this.sendButton=this.querySelector(".wpforms-ai-chat-send"),this.stopButton=this.querySelector(".wpforms-ai-chat-stop"),this.messageList=this.querySelector(".wpforms-ai-chat-message-list"),navigator.userAgent.includes("Macintosh")||this.messageList.classList.add("wpforms-scrollbar-compact"),this.events()):console.error(`WPFormsAI error: chat mode "${this.chatMode}" helpers not found`)}getInnerHTML(){return`
			<div class="wpforms-ai-chat">
				<div class="wpforms-ai-chat-message-list">
					${this.getWelcomeScreen()}
				</div>
				<div class="wpforms-ai-chat-message-input">
					<input type="text" placeholder="${this.modeStrings.placeholder}" />
					<button type="button" class="wpforms-ai-chat-send"></button>
					<button type="button" class="wpforms-ai-chat-stop wpforms-hidden"></button>
				</div>
			</div>
		`}getWelcomeScreen(){var e=this.modeStrings.samplePrompts,t=[];let s="";if(this.modeHelpers.isWelcomeScreen()){for(const i in e)t.push(`
				<li>
					<i class="${e[i].icon}"></i>
					<a href="#">${e[i].title}</a>
				</li>
			`);s=`<ul class="wpforms-ai-chat-welcome-screen-sample-prompts">
						${t.join("")}
					</ul>`}else this.messagePreAdded=!0,s=this.modeHelpers.getWarningMessage();return`
			<div class="wpforms-ai-chat-message-item item-primary">
				<div class="wpforms-ai-chat-welcome-screen">
					<div class="wpforms-ai-chat-header">
						<h3 class="wpforms-ai-chat-header-title">${this.modeStrings.title}</h3>
						<span class="wpforms-ai-chat-header-description">${this.modeStrings.description}
							<a href="${this.modeStrings.learnMoreUrl}" target="_blank" rel="noopener noreferrer">${this.modeStrings.learnMore}</a>.
						</span>
					</div>
					${s}
				</div>
			</div>
		`}getSpinnerSvg(){return'<svg class="wpforms-ai-chat-spinner-dots" width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>.spinner_S1WN{animation:spinner_MGfb .8s linear infinite;animation-delay:-.8s; fill: #999;}.spinner_Km9P{animation-delay:-.65s}.spinner_JApP{animation-delay:-.5s}@keyframes spinner_MGfb{93.75%,100%{opacity:.2}}</style><circle class="spinner_S1WN" cx="4" cy="12" r="3"/><circle class="spinner_S1WN spinner_Km9P" cx="12" cy="12" r="3"/><circle class="spinner_S1WN spinner_JApP" cx="20" cy="12" r="3"/></svg>'}events(){this.sendButton.addEventListener("click",this.sendMessage.bind(this)),this.stopButton.addEventListener("click",this.stopLoading.bind(this)),this.input.addEventListener("keyup",this.keyUp.bind(this)),this.bindWelcomeScreenEvents()}bindWelcomeScreenEvents(){null!==this.welcomeScreenSamplePrompts&&this.welcomeScreenSamplePrompts.querySelectorAll("li").forEach(e=>{e.addEventListener("click",this.clickDefaultItem.bind(this)),e.addEventListener("keydown",e=>{"Enter"===e.code&&(e.preventDefault(),this.clickDefaultItem(e))})})}keyUp(e){switch(e.code){case"Enter":e.preventDefault(),this.sendMessage();break;case"ArrowUp":this.arrowUp();break;case"ArrowDown":this.arrowDown();break;default:this.history.update({question:this.input.value})}}sendMessage(){var e=this.input.value;e&&(this.triggerEvent("wpformsAIChatBeforeSendMessage",{fieldId:this.fieldId}),this.addFirstMessagePre(),this.welcomeScreenSamplePrompts?.remove(),this.input.value="",this.addMessage(e,!0),this.startLoading(),""===e.trim()?this.addEmptyResultsError():this.getAiApi().prompt(e,this.sessionId).then(e=>{this.addAnswer(e)}).catch(e=>{429===e.cause?this.addError(this.modeStrings.errors.rate_limit||wpforms_ai_chat_element.errors.rate_limit,this.modeStrings.reasons.rate_limit||wpforms_ai_chat_element.reasons.rate_limit):500===e.cause?this.addEmptyResultsError():(this.addError(e||this.modeStrings.errors.default||wpforms_ai_chat_element.errors.default,this.modeStrings.reasons.default||wpforms_ai_chat_element.reasons.default),console.log("WPFormsAI error: "+e))}))}addFirstMessagePre(){var e;this.sessionId||this.messagePreAdded||(this.messagePreAdded=!0,(e=document.createElement("div")).classList.add("wpforms-ai-chat-divider"),this.messageList.appendChild(e))}clickDefaultItem(e){e=("LI"===e.target.nodeName?e.target:e.target.closest("li")).querySelector("a")?.textContent;e&&(this.input.value=e,this.sendMessage())}clickDislikeButton(e){var e=e.target,t=e?.closest(".wpforms-chat-item-answer");t&&(e.classList.add("clicked"),e.setAttribute("disabled",!0),e=t.getAttribute("data-response-id"),this.wpformsAiApi.rate(!1,e))}async clickRefreshButton(){this.triggerEvent("wpformsAIChatBeforeRefreshConfirm",{fieldId:this.fieldId}),WPFormsAIModal.confirmModal({title:wpforms_ai_chat_element.confirm.refreshTitle,content:wpforms_ai_chat_element.confirm.refreshMessage,onConfirm:()=>{this.messageList.innerHTML=this.getWelcomeScreen(),this.welcomeScreenSamplePrompts=this.querySelector(".wpforms-ai-chat-welcome-screen-sample-prompts"),this.bindWelcomeScreenEvents(),this.scrollMessagesTo("top"),this.wpformsAiApi=null,this.sessionId=null,this.messagePreAdded=null,this.wrapper.removeAttribute("data-session-id"),this.history.clear(),this.triggerEvent("wpformsAIChatAfterRefresh",{fieldId:this.fieldId})},onCancel:()=>{this.triggerEvent("wpformsAIChatCancelRefresh",{fieldId:this.fieldId})}})}startLoading(){this.loadingState=!0,this.sendButton.classList.add("wpforms-hidden"),this.stopButton.classList.remove("wpforms-hidden"),this.input.setAttribute("disabled",!0),this.input.setAttribute("placeholder",this.modeStrings.waiting)}stopLoading(){this.loadingState=!1,this.messageList.querySelector(".wpforms-chat-item-answer-waiting")?.remove(),this.sendButton.classList.remove("wpforms-hidden"),this.stopButton.classList.add("wpforms-hidden"),this.input.removeAttribute("disabled"),this.input.setAttribute("placeholder",this.modeStrings.placeholder),this.input.focus()}arrowUp(){var e=this.history.prev()?.question;void 0!==e&&(this.input.value=e)}arrowDown(){var e=this.history.next()?.question;void 0!==e&&(this.input.value=e)}getAiApi(){return this.wpformsAiApi||(this.sessionId=this.wrapper.getAttribute("data-session-id")||null,this.wpformsAiApi=window.WPFormsAi.api(this.chatMode,this.sessionId)),this.wpformsAiApi}scrollMessagesTo(e="bottom"){"top"===e?this.messageList.scrollTop=0:this.messageList.scrollHeight-this.messageList.scrollTop<22||(this.messageList.scrollTop=this.messageList.scrollHeight)}addMessage(e,t,s=null){var i,r=this["messageList"],a=document.createElement("div");return a.classList.add("wpforms-chat-item"),r.appendChild(a),t?(a.innerText=e,a.classList.add("wpforms-chat-item-question"),t=document.createElement("div"),i=document.createElement("div"),t.classList.add("wpforms-chat-item-answer-waiting"),i.classList.add("wpforms-chat-item-spinner"),i.innerHTML=this.getSpinnerSvg(),t.appendChild(i),r.appendChild(t),this.history.push({})):((i=document.createElement("div")).classList.add("wpforms-chat-item-content"),a.appendChild(i),r.querySelector(".wpforms-chat-item-answer-waiting")?.remove(),a.classList.add("wpforms-chat-item-answer"),a.classList.add("wpforms-chat-item-typing"),a.classList.add("wpforms-chat-item-"+this.chatMode),a.setAttribute("data-response-id",s?.responseId??""),this.history.update({answer:e}),this.typeText(i,e,this.addedAnswer.bind(this))),this.scrollMessagesTo("bottom"),a}addError(e,t){let s="";this.loadingState&&(e&&(s+=`<h4>${e}</h4>`),t&&(s+=`<span>${t}</span>`),e=document.createElement("div"),t=document.createElement("div"),e.classList.add("wpforms-chat-item"),e.classList.add("wpforms-chat-item-error"),t.classList.add("wpforms-chat-item-content"),e.appendChild(t),this.messageList.querySelector(".wpforms-chat-item-answer-waiting")?.remove(),this.messageList.appendChild(e),this.typeText(t,s,()=>{this.stopLoading()}))}addEmptyResultsError(){this.addError(this.modeStrings.errors.empty||wpforms_ai_chat_element.errors.empty,this.modeStrings.reasons.empty||wpforms_ai_chat_element.reasons.empty)}addAnswer(e){var t;this.loadingState&&e&&((t=this.modeHelpers.getAnswer(e))?(this.sessionId=e.sessionId,this.wrapper.setAttribute("data-session-id",this.sessionId),this.addMessage(t,!1,e)):this.addEmptyResultsError())}addedAnswer(e){e.innerHTML+=this.getAnswerButtons(),e.parentElement.classList.remove("wpforms-chat-item-typing"),wpf.initTooltips(),this.stopLoading(),e.querySelector(".wpforms-ai-chat-answer-button.dislike")?.addEventListener("click",this.clickDislikeButton.bind(this)),e.querySelector(".wpforms-ai-chat-answer-button.refresh")?.addEventListener("click",this.clickRefreshButton.bind(this)),this.modeHelpers.addedAnswer(e)}getAnswerButtons(){return`
			<div class="wpforms-ai-chat-answer-buttons">
				${this.modeHelpers.getAnswerButtonsPre()}
				<div class="wpforms-ai-chat-answer-buttons-response">
					<button type="button" class="wpforms-ai-chat-answer-button dislike wpforms-help-tooltip" data-tooltip-position="top" title="${wpforms_ai_chat_element.dislike}"></button>
					<button type="button" class="wpforms-ai-chat-answer-button refresh wpforms-help-tooltip" data-tooltip-position="top" title="${wpforms_ai_chat_element.refresh}">
						<i class="fa fa-trash-o"></i>
					</button>
				</div>
			</div>
		`}typeText(s,i,r){const a=this;let n=0,o="";!function e(){var t=i.substring(n,n+5);o+=t,s.innerHTML=o.replace(/<[^>]*$/g,""),(n+=5)<i.length&&a.loadingState?setTimeout(e,20):"function"==typeof r&&r(s),a.scrollMessagesTo("bottom")}()}getHelpers(e){return window.WPFormsAi.helpers[e.chatMode](e)??null}htmlSpecialChars(e){return e.replace(/[<>]/g,e=>"&#0"+e.charCodeAt(0)+";")}triggerEvent(e,t={}){e=new CustomEvent(e,{detail:t});return document.dispatchEvent(e),e}history={data:[],pointer:0,defaultItem:{question:"",answer:null},get(e=null){return e&&(this.pointer=e),this.pointer<1?this.pointer=0:this.pointer>=this.data.length&&(this.pointer=this.data.length-1),this.data[this.pointer]??{}},prev(){return--this.pointer,this.get()},next(){return this.pointer+=1,this.get()},push(e){e.answer?this.data[this.data.length-1].answer=e.answer:(this.data.push({...this.defaultItem,...e}),this.pointer=this.data.length-1)},update(e){var t=0<this.data.length?this.data.length-1:0,s=this.data[t]??this.defaultItem;this.pointer=t,this.data[t]={...s,...e}},clear(){this.data=[],this.pointer=0}}}