(function($) { 'use strict'; function AysChatGPTChatBoxPublic(element, options){ this.el = element; this.$el = $(element); this.ajaxAction = 'ays_chatgpt_admin_ajax'; this.globalSettings = JSON.parse(atob(window.AysChatGPTChatSettings)); // DEFINE PREFIXES this.CHATGPT_ASSISTANT_CLASS_PREFIX = 'ays-chatgpt-assistant'; this.CHATGPT_ASSISTANT_ID_PREFIX = 'ays-chatgpt-assistant'; this.CHATGPT_ASSISTANT_NAME_PREFIX = 'ays_chatgpt_assistant'; this.CHATGPT_ASSISTANT_OPTIONS_PREFIX = 'chatgpt_assistant_'; this.dbOptions = undefined; // Chat prompt defaults this.chatConversation = []; // Text For old models this.promptFirstM = 'Converse as if you are an AI assistant. '; this.promptSecondM = 'Answer the question as truthfully as possible. '; // Text For new models this.messageFirstM = ''; // OpenAI settings this.REQUEST_URL = ""; this.API_MAIN_URL = "https://api.openai.com/v1"; this.API_COMPLETIONS_URL = "/completions"; this.API_CHAT_COMPLETIONS_URL = "/chat/completions"; this.requestCount = 0; this.init(); return this; } AysChatGPTChatBoxPublic.prototype.init = function() { var _this = this; _this.$el.show(); _this.setEvents(); }; // Set events AysChatGPTChatBoxPublic.prototype.setEvents = function(e){ var _this = this; _this.setDbOptions(); _this.setUpPromptParametrs(); _this.setUpRequestParametrs(); _this.makeResizableDiv(".ays-assistant-chatbox .ays-assistant-chatbox-main-container"); var promptEl = _this.$el.find('#ays-assistant-chatbox-prompt'); autosize(promptEl); _this.$el.find('.ays-assistant-chatbox-closed-view').one('click', function () { if(_this.dbOptions.chatGreetingMessage){ _this.setGreetingMessage(); } if (_this.dbOptions.iconTextShowOnce) { _this.$el.find('.ays-assistant-chatbox-closed-view-text').remove(); } }); _this.$el.find('.ays-assistant-chatbox-closed-view').on('click', function () { $(this).hide(); var container = _this.$el.find('.ays-assistant-chatbox-main-container'); var bg = _this.$el.find('.ays-assistant-chatbox-maximized-bg'); if (container.hasClass('ays-assistant-chatbox-main-container-maximized-view')) { bg.show(); $('body').addClass('ays-assistant-chatbox-disabled-scroll-body'); } container.show(); _this.$el.find('.ays-assistant-chatbox-prompt-input').focus(); }); _this.$el.on('click', '.ays-assistant-chatbox-close-bttn' ,function () { var container = $(this).parents('.ays-assistant-chatbox-main-container'); var bg = _this.$el.find('.ays-assistant-chatbox-maximized-bg'); if (container.hasClass('ays-assistant-chatbox-main-container-maximized-view')) { bg.hide(); $('body').removeClass('ays-assistant-chatbox-disabled-scroll-body'); } container.hide(); _this.$el.find('.ays-assistant-chatbox-closed-view').show(); }); _this.$el.on('click', '.ays-assistant-chatbox-end-bttn' ,function () { var modal = _this.$el.find('.ays-assistant-chatbox-main-chat-modal'); modal.find('.ays-assistant-chatbox-main-chat-modal-body-image').append(''); modal.find('.ays-assistant-chatbox-main-chat-modal-body-text').append(_this.globalSettings.translations.endChat.warningMsg); modal.find('.ays-assistant-chatbox-main-chat-modal-footer-button').append(''); modal.css('display', 'flex'); _this.$el.find('.ays-assistant-chatbox-more-menu').hide(); modal.on('click', function (e) { if ($(e.target).attr('data-modal-action') === 'confirm') { window.speechSynthesis.cancel(); _this.$el.find('.ays-assistant-chatbox-messages-box').find('.ays-assistant-chatbox-ai-message-box').remove(); _this.$el.find('.ays-assistant-chatbox-messages-box').find('.ays-assistant-chatbox-user-message-box').remove(); _this.$el.find('.ays-assistant-chatbox-rate-chat-row').css('display', 'flex'); if (_this.dbOptions.chatGreetingMessage) { _this.setGreetingMessage(); } _this.chatConversation = []; modal.hide('fast'); modal.find('.ays-assistant-chatbox-main-chat-modal-body-image').empty(); modal.find('.ays-assistant-chatbox-main-chat-modal-body-text').empty(); modal.find('.ays-assistant-chatbox-main-chat-modal-footer-button').empty(); var container = $(this).parents('.ays-assistant-chatbox-main-container'); var bg = _this.$el.find('.ays-assistant-chatbox-maximized-bg'); if (container.hasClass('ays-assistant-chatbox-main-container-maximized-view')) { bg.hide(); $('body').removeClass('ays-assistant-chatbox-disabled-scroll-body'); } container.hide(); _this.$el.find('.ays-assistant-chatbox-closed-view').show(); } else if ($(e.target).attr('data-modal-action') === 'close') { modal.hide('fast'); modal.find('.ays-assistant-chatbox-main-chat-modal-body-image').empty(); modal.find('.ays-assistant-chatbox-main-chat-modal-body-text').empty(); modal.find('.ays-assistant-chatbox-main-chat-modal-footer-button').empty(); } }) }); _this.$el.find('.ays-assistant-chatbox-resize-bttn').on('click', function () { var container = $(this).parents('.ays-assistant-chatbox-main-container'); var bg = _this.$el.find('.ays-assistant-chatbox-maximized-bg'); var src = $(this).attr('src'); if (!container.hasClass('ays-assistant-chatbox-main-container-maximized-view')) { $(this).attr('src', src.replace('maximize', 'minimize')); $(this).attr('alt', "Minimize"); container.addClass('ays-assistant-chatbox-main-container-maximized-view'); bg.show(); $('body').addClass('ays-assistant-chatbox-disabled-scroll-body'); } else { $(this).attr('src', src.replace('minimize', 'maximize')); $(this).attr('alt', "Maximize"); container.removeClass('ays-assistant-chatbox-main-container-maximized-view'); bg.hide(); $('body').removeClass('ays-assistant-chatbox-disabled-scroll-body'); } }); $(document).on('mouseup', function(e) { var container = _this.$el.find('.ays-assistant-chatbox-main-container'); if (container.hasClass('ays-assistant-chatbox-main-container-maximized-view') && container.css('display') !== 'none') { if (!container.is(e.target) && container.has(e.target).length === 0) { _this.$el.find('.ays-assistant-chatbox-resize-bttn').trigger("click"); } } }); _this.$el.find('.ays-assistant-chatbox-prompt-input').on('input', function () { var sendBttn = _this.$el.find('.ays-assistant-chatbox-send-button'); if ($(this).val().trim() != "") { sendBttn.prop('disabled', false); } else { sendBttn.prop('disabled', true); } }); _this.$el.find('.ays-assistant-chatbox-regenerate-response-button').on('click', function () { var prompt = _this.$el.find('.ays-assistant-chatbox-user-message-box:last').text(); _this.$el.find('.ays-assistant-chatbox-prompt-input').val(prompt); _this.$el.find('.ays-assistant-chatbox-send-button').trigger('click', true); }); _this.$el.find('.ays-assistant-chatbox-send-button').on('click', function (event, noUserMessage) { var key = _this.dbOptions.chatAK; var prompt = _this.$el.find('.ays-assistant-chatbox-prompt-input').val(); var loader = _this.$el.find('.ays-assistant-chatbox-loading-box'); var sendBttn = _this.$el.find('.ays-assistant-chatbox-send-button'); if (noUserMessage === undefined) { var userProfilePicture = ''; if (_this.dbOptions.chatboxTheme == 'chatgpt') { userProfilePicture = '
'; } var userMessage = $("