{"version":3,"file":"questionTypeRendererExtension.chunk.b296cedeb4feb17e40de.js","mappings":"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","sources":["webpack://apexchatwidgets/./widgets/core/hooks/setPlaceholder.js","webpack://apexchatwidgets/./widgets/core/hooks/removeValidationTooltip.js","webpack://apexchatwidgets/./widgets/core/AutoComplete.js","webpack://apexchatwidgets/./widgets/core/hooks/FullTextValidationMessages.js","webpack://apexchatwidgets/./widgets/questiontypes/QuestionTypeRendererExtension.js","webpack://apexchatwidgets/./widgets/core/hooks/showValidationTooltip.js","webpack://apexchatwidgets/./widgets/core/hooks/validateName.js","webpack://apexchatwidgets/./widgets/core/validators/PhoneValidationHandler.js","webpack://apexchatwidgets/./widgets/core/hooks/containsEmoji.js","webpack://apexchatwidgets/./widgets/core/hooks/validateEmailWithEmoji.js","webpack://apexchatwidgets/./widgets/core/validators/PhoneContryData.js","webpack://apexchatwidgets/./widgets/core/Utils.js","webpack://apexchatwidgets/./widgets/core/hooks/enableTypingInput.js","webpack://apexchatwidgets/./widgets/core/hooks/isQTMessageMapped.js","webpack://apexchatwidgets/./widgets/core/validators/PhoneValidator.js","webpack://apexchatwidgets/./widgets/core/hooks/validatePhone.js","webpack://apexchatwidgets/./widgets/core/hooks/toTitleCase.js","webpack://apexchatwidgets/./widgets/core/hooks/disableTypingInput.js","webpack://apexchatwidgets/./widgets/core/hooks/validateZipCode.js","webpack://apexchatwidgets/./widgets/core/hooks/ChatFlowEnableFlag.js","webpack://apexchatwidgets/./widgets/core/hooks/isLastMessage.js","webpack://apexchatwidgets/./widgets/core/hooks/focusInput.js"],"sourcesContent":["const setPlaceholder = (inputElem, tip, textareaIndex) => {\r\n if (!inputElem) {\r\n return;\r\n }\r\n if (inputElem.length === 0) {\r\n return;\r\n }\r\n if (inputElem.children && inputElem.children.length > 0) {\r\n inputElem = inputElem.children[textareaIndex || 0];\r\n } else {\r\n inputElem = Array.isArray(inputElem) ? inputElem[0] : inputElem;\r\n }\r\n inputElem?.setAttribute('placeholder', tip);\r\n};\r\nexport default setPlaceholder;\r\n","const removeValidationTooltip = (element, config) => {\r\n // to remove tooltip just pass tooltip css class name\r\n if (!(config && config.toolTipCss) || !element) {\r\n return;\r\n }\r\n element.querySelector(`span.${config.toolTipCss}_text`)?.remove();\r\n element.classList?.remove(config.toolTipCss);\r\n return element;\r\n}\r\nexport default removeValidationTooltip;","import Browser from \"./hooks/Browser\";\r\n\r\n/**\r\n * This component is developed to render typing area with browser autocomplete feature built-in\r\n */\r\nexport default class AutoComplete {\r\n constructor(options) {\r\n if (options) {\r\n this.name_mapping = {\r\n name: 'name',\r\n fname: 'given-name',\r\n mname: 'additional-name',\r\n lname: 'family-name',\r\n email: 'email',\r\n phone: 'tel',\r\n mobile: 'tel',\r\n region: 'region'\r\n };\r\n this.context = options.context || document;\r\n this.type = options.type || 'name';\r\n this.autocomplete = this.name_mapping[options.type];\r\n this.css = options.className;\r\n this.id = options.id;\r\n this.name = options.name || this.type;\r\n this.placeholder = options.placeholder || 'Please type here';\r\n this.parent =\r\n this.context.querySelector(options.containerSelector) || this.context.body;\r\n this.initialTag = options.autoCompleteInputType || 'INPUT';\r\n this.secTag = options.typingInputType || 'TEXTAREA';\r\n this.triggerEvent = options.eventType || 'keydown';\r\n this.input = options.inputSelector\r\n ? this.context.querySelector(options.inputSelector)\r\n : this.context.createElement(this.initialTag);\r\n this.textarea = options.textareaSelector\r\n ? this.context.querySelector(options.textareaSelector)\r\n : this.context.createElement(this.secTag);\r\n this.frmAutocomplete = this.context.querySelector('#frmAutocomplete');\r\n this.inputLenght = options.inputLenght || 30;\r\n this.enableAutoComplete = options.enableAutoComplete || 'on';\r\n this.makeInputAutoComplete.call(this);\r\n // coloring the inputs for debuging purpose\r\n // if (this.input) {\r\n // this.input.style.backgroundColor = \"blue\";\r\n // }\r\n // if (this.textarea) {\r\n // this.textarea.style.backgroundColor = \"red\";\r\n // }\r\n // register keyup on both elements\r\n if (this.input) {\r\n // null handle check\r\n this.bind.call(this, this.input);\r\n // show/hide on first render\r\n this.toggle.call(this, this.input, true); // show INPUT\r\n }\r\n if (this.textarea) {\r\n // null handle check\r\n this.bind.call(this, this.textarea);\r\n // show/hide on first render\r\n this.toggle.call(this, this.textarea, false); // hide TEXTAREA\r\n }\r\n if (this.enableAutoComplete === 'off') {\r\n this.toggle.call(this, this.input, false);\r\n this.toggle.call(this, this.textarea, true);\r\n }\r\n if (this.frmAutocomplete) {\r\n // null handle check\r\n this.frmAutocomplete.addEventListener('submit', (e) => {\r\n e.preventDefault();\r\n return false;\r\n });\r\n }\r\n }\r\n }\r\n // as per specifications, name attribute vs autocomplete attribute mapping\r\n\r\n /**\r\n * set Auto Complete attributes and classes\r\n */\r\n makeInputAutoComplete() {\r\n // el.id = this.id;\r\n if (!this.input) {\r\n return;\r\n }\r\n this.input.className += ` ${this.css}`;\r\n this.input.name = this.name;\r\n this.input.type = 'text';\r\n this.input.autocomplete = this.enableAutoComplete;\r\n this.input.placeholder = this.placeholder;\r\n }\r\n\r\n /**\r\n *\r\n * @param {el} element\r\n * @param {show} show hide element base on condition\r\n * @param {val} update element value\r\n */\r\n toggle(el, show, val) {\r\n if (!el) {\r\n return;\r\n }\r\n if (show) {\r\n el.style.display = 'block';\r\n if (!Browser.isiOS()) {\r\n el.focus();\r\n }\r\n } else {\r\n el.style.display = 'none';\r\n }\r\n if (el.nodeName == 'TEXTAREA') {\r\n this.frmAutocomplete.style.display = show ? 'none' : 'block';\r\n }\r\n el.value = val || '';\r\n }\r\n\r\n /**\r\n * the dynamic element must check on keyup and toggle when it empties out\r\n */\r\n bind(el) {\r\n const me = this;\r\n el.addEventListener(me.triggerEvent, (e) => {\r\n if (/iPad|iPhone|iPod/.test(navigator.userAgent) || Browser.isAndroid()) {\r\n // do not toggle the inputs in iOs case because it will create flickring effect\r\n return;\r\n }\r\n if (me.input.value.length >= me.inputLenght) {\r\n // if input lenght greater than config length then text area shown\r\n if (me.textarea) {\r\n // null handle check\r\n this.toggle.call(me, me.textarea, true, el.value);\r\n }\r\n if (me.input) {\r\n // null handle check\r\n this.toggle.call(me, me.input, false, el.value); // update input\r\n }\r\n } else {\r\n if (me.textarea) {\r\n // null handle check\r\n this.toggle.call(me, me.textarea, false, el.value);\r\n }\r\n if (me.input) {\r\n // null handle check\r\n this.toggle.call(me, me.input, true, el.value);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","const FullTextValidationMessages = {\r\n FTPhone: 'Please enter a valid phone number (1 555-555-5555)',\r\n FTMessage: 'Type your message...',\r\n FTName: 'Please enter a valid name',\r\n FTEmail: 'Please enter a valid email address',\r\n FTZipcode: 'Please enter a valid zip code (99501)',\r\n FTAddress: 'Please enter a valid address'\r\n};\r\nexport default FullTextValidationMessages;\r\n","/**\r\n * This is just a wrapper over the previous ApexChat.QuestionTypeRenderer\r\n * with extended functionality of handling FullText and QuickReply a sper CHAT-6960 feature-set\r\n *\r\n * */\r\nimport Utils from '../core/Utils';\r\nimport BaseClass from '../core/BaseClass';\r\nimport WidgetTypes from '../core/enums/WidgetTypes';\r\nimport TempCache from '../core/enums/TempCache';\r\nimport AutoComplete from '../core/AutoComplete';\r\nimport PhoneValidationHandler from '../core/validators/PhoneValidationHandler';\r\nimport PhoneCountryData from '../core/validators/PhoneContryData';\r\nimport ChatFlowEnableFlag from '../core/hooks/ChatFlowEnableFlag';\r\nimport ManageFocusOnKeyEvents from '../core/hooks/ManageFocusOnKeyEvents';\r\nimport PipedMessageHandler from '../core/hooks/PipedMessageHandler';\r\nimport { ScriptsQuestionType, SystemMessageType, VisitorResponseType } from '../core/enums/Enum';\r\nimport checkSpanishLanguage from '../core/hooks/checkSpanishLanguage';\r\nimport toTitleCase from '../core/hooks/toTitleCase';\r\nimport isLastMessage from '../core/hooks/isLastMessage';\r\nimport isQTMessageMapped from '../core/hooks/isQTMessageMapped';\r\nimport setPlaceholder from '../core/hooks/setPlaceholder';\r\nimport TempStorageCache from '../core/hooks/TempStorageCache';\r\nimport Browser from '../core/hooks/Browser';\r\nimport FullTextValidationMessages from '../core/hooks/FullTextValidationMessages';\r\nimport validateEmailWithEmoji from '../core/hooks/validateEmailWithEmoji';\r\nimport ScriptsQuestionTypeToolTips from '../core/hooks/ScriptsQuestionTypeToolTips';\r\nimport isMobile from '../isMobile';\r\nimport validateZipCode from '../core/hooks/validateZipCode';\r\nimport validateName from '../core/hooks/validateName';\r\nimport isAcceptKey from '../core/hooks/isAcceptKey';\r\nimport hideElement from '../core/hooks/hideElement';\r\nimport disableTypingInput from '../core/hooks/disableTypingInput';\r\nimport enableTypingInput from '../core/hooks/enableTypingInput';\r\nimport showValidationTooltip from '../core/hooks/showValidationTooltip';\r\nimport removeValidationTooltip from '../core/hooks/removeValidationTooltip';\r\nimport logIt from '../../logIt';\r\n\r\nexport default class QuestionTypeRendererExtentions extends BaseClass {\r\n constructor() {\r\n super({});\r\n logIt('QTEXT:: QuestionTypeRendererExtentions init');\r\n\r\n // do whatever pre-init work u wanna do here\r\n }\r\n\r\n async initComponent(options) {\r\n // we call this method to explicitly initialize things\r\n const me = this;\r\n if (typeof ApexChat.ApexChatJquery === 'function') {\r\n me.$ = ApexChat.ApexChatJquery;\r\n }\r\n me.options = options;\r\n if (options.widgetType === WidgetTypes.PreChat) {\r\n me.inputTitle = FullTextValidationMessages.FTMessage;\r\n } else {\r\n me.inputTitle = me.getQTPlaceHolder();\r\n }\r\n me.initiator = me.options.widgetType;\r\n me.enableFullTextLogic = options.enableFullTextLogic;\r\n me.lastMessage = null;\r\n me.isLastFullTextValidated = false; // this will be used to track last fulltext message response\r\n me.inputContainer = me.options.inputContainer;\r\n me.isChatStarted = true;\r\n const iframeElm = document.querySelector(`.${me.initiator}_frame`);\r\n me.context =\r\n (iframeElm && (iframeElm.contentWindow || iframeElm.contentDocument).document) ||\r\n me.options.context;\r\n const module = await import(/* webpackChunkName: \"questionTypeRenderer\" */ './QuestionTypeRenderer')\r\n const QuestionTypeRenderer = module.default;\r\n me.questionTypeRenderer = new QuestionTypeRenderer(me.options);\r\n logIt(`QTEXT:: chat initiator info:${me.initiator}`);\r\n\r\n // phone validator work start\r\n me.phoneValidator = Object.create(PhoneValidationHandler);\r\n if (me.inputContainer) {\r\n me.textAreaSelector = me.inputContainer.querySelector('textarea');\r\n me.autoCompleteInput = me.inputContainer.querySelector('input');\r\n }\r\n\r\n me.getCountryCode = function (options) {\r\n if (options.countryCode) {\r\n return options.countryCode;\r\n }\r\n if (options.model && options.model.countryCode) {\r\n return options.model.countryCode;\r\n }\r\n return 'OTHER';\r\n };\r\n const countryCode = me.getCountryCode(me.options);\r\n me.phoneValidator.inputField = me.autoCompleteInput;\r\n // me.phoneValidator.inputField = me.textAreaSelector;\r\n me.phoneValidator.phoneCountryData = PhoneCountryData[countryCode];\r\n me.addPhoneNumberPrefixCallback = me.phoneValidator.addPhonePrefixNumber.bind2(\r\n me.phoneValidator\r\n );\r\n // phone validator work end\r\n }\r\n\r\n validateFullTextMessage(res, options) {\r\n // CHAT-7003, CHAT-7004, CHAT-7005: validate FullText\r\n const me = this;\r\n me.isFromPreChat = options && options.isFromPreChat;\r\n me.isPredefinedResponse = options && options.isPredefinedResponse;\r\n let result = true; // for any other messages\r\n const $txt = typeof me.inputContainer === 'string' ?\r\n me.context.querySelector(me.inputContainer)?.getElementsByTagName('textarea')[0]\r\n : me.inputContainer?.getElementsByTagName('textarea')[0];\r\n let titleCaseName = '';\r\n if (!me.enableFullTextLogic) {\r\n return true;\r\n }\r\n logIt(\"QTEXT:: Validating visitor's response...\");\r\n if (me.messageAskingForContactInfo(me.lastMessage)) {\r\n logIt(`QTEXT::last message's response type expected:${me.lastMessage.type}`);\r\n if (me.lastMessage.visitorResponseType == VisitorResponseType.Name) {\r\n result = me.validateName(res);\r\n if (!result) {\r\n if ($txt) {\r\n $txt?.value = '';\r\n }\r\n me.showError(FullTextValidationMessages.FTName);\r\n } else {\r\n titleCaseName = toTitleCase(res); // FT Name in title case\r\n }\r\n } else if (me.lastMessage.visitorResponseType == VisitorResponseType.Phone) {\r\n result = me.phoneValidator.validate(res);\r\n if (!result) {\r\n me.showError(me.phoneValidator.getInvalidMessageText());\r\n }\r\n else {\r\n me.savePhoneNumber(res);\r\n }\r\n } else if (me.lastMessage.visitorResponseType == VisitorResponseType.Email) {\r\n result = me.validateEmail(res);\r\n if (!result) {\r\n if ($txt) {\r\n $txt.value = '';\r\n }\r\n me.showError(FullTextValidationMessages.FTEmail);\r\n }\r\n } else if (me.lastMessage.visitorResponseType == VisitorResponseType.Region) {\r\n result = me.validateZipCode(res);\r\n if (!result && $txt) {\r\n // CHAT-8754 Invalid answer stays on input field for Full Text Region.\r\n $txt.value = '';\r\n me.showError(FullTextValidationMessages.FTZipcode);\r\n }\r\n }\r\n logIt(`QTEXT:: response validated to be:${result}`);\r\n if (result) {\r\n // valid response? call callback\r\n if (\r\n me.options.elements &&\r\n me.$(me.options.elements.textboxContainerSelector, me.context)\r\n ) {\r\n me.$(me.options.elements.textboxContainerSelector, me.context).removeClass(\r\n 'livechat_tooltip_Error_Enabled'\r\n );\r\n }\r\n if (me.inputContainer) {\r\n removeValidationTooltip($txt, {\r\n toolTipCss: 'livechat_validation_tooltip'\r\n });\r\n }\r\n TempStorageCache.del(TempCache.INPUT_OLD_VALUE); // clear cache as FT has passed validation\r\n hideElement(me.context.querySelector('.apexchat_skip_input')) // hide FT skip input button\r\n me.isLastFullTextValidated = true;\r\n const updatedRes = titleCaseName == '' ? res : titleCaseName;\r\n const answerArray = [];\r\n const response = {\r\n chatId: me.lastMessage.chatId,\r\n isSkipped: false,\r\n isPredefinedResponse: me.isPredefinedResponse,\r\n msgText: res,\r\n agentScriptAnswerId: me.lastMessage.scriptAnswerId,\r\n chatLogId: me.lastMessage.id,\r\n questionType: ScriptsQuestionType.FullText\r\n };\r\n response.questionTypeChatLogIdToBeUpdated = me.lastMessage.id;\r\n answerArray.push({ option: updatedRes });\r\n response.answers = JSON.stringify(answerArray);\r\n logIt('FT::disabling input until FT response is processed:');\r\n logIt(response);\r\n me.disableTypingInput();\r\n if (\r\n me.questionTypeRenderer.options &&\r\n me.questionTypeRenderer.options.responseCallback\r\n ) {\r\n me.questionTypeRenderer.options.responseCallback({\r\n res: response,\r\n cb: () => {\r\n if ($txt) {\r\n $txt.value = ''; // we need to explicitely clear input after a valid FT response\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n // me.setLastFullText();//on invalid FT input, don't lose it so visitor has a chance to correct it\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n skipFullText() {\r\n const me = this;\r\n me.$('.apexchat_skip_input', me.context).hide(); // hide FT skip input button\r\n const response = {\r\n chatId: me.lastMessage.chatId,\r\n isSkipped: true,\r\n answers: '[{ \"option\": \"' + '' + '\"}]',\r\n msgText: '',\r\n agentScriptAnswerId: me.lastMessage.scriptAnswerId,\r\n chatLogId: me.lastMessage.id,\r\n questionType: ScriptsQuestionType.FullText\r\n };\r\n if (me.questionTypeRenderer.options && me.questionTypeRenderer.options.responseCallback) {\r\n me.questionTypeRenderer.options.responseCallback({\r\n res: response,\r\n cb() {\r\n logIt('FT:: now input should be enabled');\r\n }\r\n });\r\n }\r\n }\r\n\r\n startChat(settings) {\r\n const me = this;\r\n logIt('QTEXT:: Staring Chat...');\r\n if (!settings) {\r\n return; // no settings? no chat\r\n }\r\n // set or reset context\r\n if (settings && settings.initiator) {\r\n me.setInitiatorInfo(settings.initiator);\r\n }\r\n // call back chat window opening function\r\n if (settings.chatInvoker && typeof settings.chatInvoker === 'function') {\r\n settings.chatInvoker();\r\n me.isChatStarted = true;\r\n }\r\n }\r\n\r\n validateName(res) {\r\n // CHAT-7003\r\n return validateName(res);\r\n }\r\n\r\n validatePhone(res) {\r\n // CHAT-7004\r\n // I found validatePhone()'s regex passing even an invalkid number like 12345; hence making it accept a custom regex just in case we have to\r\n // this wone only passes number of the format: 1 555-555-5555\r\n // sending minimum limit as well along with regex to avoid allowing invalid phoneno lengths.\r\n return validatePhone(res, [\r\n {\r\n regex: /^(1\\s?)?((\\([0-9]{3}\\))|[0-9]{3})[\\s\\-]?[\\0-9]{3}[\\s\\-]?[0-9]{4}$/g,\r\n minLimit: 10\r\n },\r\n {\r\n regex: /^((\\+61\\s?)?(\\((0|02|03|04|07|08)\\))?)?\\s?\\d{1,4}\\s?\\d{1,4}\\s?\\d{0,4}$/g,\r\n minLimit: 8\r\n }\r\n ]);\r\n }\r\n\r\n validateEmail(res) {\r\n // CHAT-7005\r\n return validateEmailWithEmoji(res);\r\n }\r\n\r\n validateZipCode(res) {\r\n return validateZipCode(res);\r\n }\r\n\r\n handlePreChatMessages(args) {\r\n const me = this;\r\n me.phoneValidator.lastMessage = me.lastMessage;\r\n // apply custom config as per prechat UI\r\n me.inputContainer = `#apexchat_question_type_text_input_${args.msg.id}`;\r\n const sendButton = me.context.querySelector(`#apexchat-btn-confirm-${args.msg.id}`);\r\n const validateInput = function (e) {\r\n const value = me.context.querySelector(me.inputContainer).value;\r\n if (me.isLastMessageFullText()) {\r\n if (me.validateFullTextMessage(value, { isFromPreChat: args.meta.isFromPreChat })) {\r\n me.questionTypeRenderer.sendResponse(e, args.msg, value);\r\n }\r\n }\r\n };\r\n sendButton?.addEventListener('click', validateInput.bind2(me));\r\n me.phoneValidator.inputField = me.context.querySelector(me.inputContainer);\r\n if (args.msg.visitorResponseType === VisitorResponseType.Phone) {\r\n me.phoneValidator.inputField.addEventListener('focus', me.addPhoneNumberPrefixCallback);\r\n } else {\r\n me.phoneValidator.removePhonePrefixNumber(me.addPhoneNumberPrefixCallback);\r\n }\r\n sendButton?.addEventListener('keyup', (e) => {\r\n if (e.keyCode == 13) {\r\n validateInput(e);\r\n }\r\n });\r\n me.context.querySelector(me.inputContainer)?.addEventListener('keyup', (e) => {\r\n if (e.keyCode == 13) {\r\n validateInput(e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Check the last phone number response is validated.\r\n */\r\n isLastPhoneTypeValidated() {\r\n const me = this;\r\n return (\r\n me.isLastMessageFullText() &&\r\n !me.isLastFullTextValidated &&\r\n me.lastMessage &&\r\n me.lastMessage.visitorResponseType === VisitorResponseType.Phone\r\n );\r\n }\r\n\r\n enableTypingAreaForNonRD() {\r\n const me = this;\r\n me.$('.livechat_user_input', me.context)\r\n .removeClass('apexchat_disabled_element')\r\n .css('pointer-events', 'auto');\r\n }\r\n\r\n afterRenderMessage(args) {\r\n const me = this;\r\n const isSmsOptin = args.msg.systemMessageType === SystemMessageType.SMSOptIn;\r\n if (isSmsOptin) {\r\n return;\r\n }\r\n me.phoneValidator.lastMessage = this.lastMessage;\r\n const isNextQuestionMapped =\r\n args.msg.isNextQuestionMapped ||\r\n (args.msg.agentScript ? args.msg.agentScript.isNextQuestionMapped : false); // check is next question mapped or not for Non RD case\r\n if (!me.enableFullTextLogic && !isNextQuestionMapped) {\r\n // do nothing after rendering a message\r\n me.enableTypingInput(me.enableTypingAreaForNonRD.bind2(me)); // Classical Standard/Image\r\n return true;\r\n }\r\n if (args.meta.isFromPreChat) {\r\n // this is custom logic plugged in for PreChat\r\n me.handlePreChatMessages(args);\r\n }\r\n\r\n me.currentMsgTypeIsFullText = me.messageAskingForContactInfo(args.msg);\r\n me.lastMsgTypeIsFullText = me.messageAskingForContactInfo(me.lastMessage);\r\n // enable visitor to input name/phone/email/message if required or else disable input field\r\n if (me.isVisitorResponse(args.msg)) {\r\n const isMapped = isQTMessageMapped(this.lastMessage, args.msg.text || ''); // check if the selection of the last message was mapped\r\n logIt('QTEXT:: #isVisitorResponse - Disabling typing Input');\r\n // check last message FT and ismapped then disable typing area\r\n if (\r\n (me.lastMsgTypeIsFullText && isMapped) ||\r\n (me.options.scriptBotEnabled && !me.isTransferredToLiveAgent() && !me.options.model.aiBotEnabled)\r\n ) {\r\n // during wait for next question textbox should be disabled on scriptbot\r\n args.meta.instruction = me.getQTPlaceHolder(); // asking visitor for wait while textbox is already disabled.\r\n me.disableTypingInput();\r\n } else if (isMapped) {\r\n me.disableTypingInput();\r\n } else {\r\n args.meta.instruction = me.inputTitle; // set default\r\n me.enableTypingInput();\r\n }\r\n // me.textAreaSelector.unbind('focus');\r\n // me.phoneValidator.inputField.val('');\r\n me.phoneValidator.removePhonePrefixNumber(me.addPhoneNumberPrefixCallback);\r\n me.setAutocompletePlaceHolder(args.meta.instruction);\r\n } else {\r\n // is current agent msg FullText? enable with tool tip\r\n if (me.currentMsgTypeIsFullText) {\r\n me.isLastFullTextValidated = false; // reset the flag\r\n args.meta.instruction = args.msg.messagePlaceholder\r\n ? args.msg.messagePlaceholder // is a custom placeholder coming with msg? use it\r\n : me.getInstructionByResponseType(args.msg.visitorResponseType); // fall back on defaults\r\n me.makeAutocomplete(args); // when FT messages render then make input autocomplete\r\n if (args.msg.visitorResponseType === VisitorResponseType.Phone) {\r\n me.phoneValidator.inputField.addEventListener('focus', me.addPhoneNumberPrefixCallback);\r\n // me.textAreaSelector.on('focus', me.addPhoneNumberPrefixCallback);\r\n } else {\r\n me.phoneValidator.removePhonePrefixNumber(me.addPhoneNumberPrefixCallback);\r\n }\r\n if (args.msg.isLastSplitMessage) {\r\n me.enableTypingInput();\r\n } else if (args.msg.isSplitMessage) {\r\n args.meta.instruction = ScriptsQuestionTypeToolTips.Eng.FTEllipses;\r\n me.disableTypingInput();\r\n } else {\r\n me.enableTypingInput();\r\n }\r\n } else {\r\n // normal agent msg? disbale if QT or else enable\r\n me.phoneValidator.removePhonePrefixNumber(me.addPhoneNumberPrefixCallback);\r\n if (me.isMessageQT(args.msg)) {\r\n logIt('QTEXT:: # Handle enable/disable for an Agent QT Message');\r\n // when visitor selected an option switch DOM to windowed to check visitor selected option mapped or not\r\n var isMapped = isQTMessageMapped(\r\n args.msg,\r\n args.msg.visitorSelectedOptions || ''\r\n );\r\n if (!isMapped) {\r\n // if not mapped, enable typing area\r\n if (me.options.scriptBotEnabled && !me.isTransferredToLiveAgent() && (!me.options.model.aiBotEnabled || me.options.msg.isRequiredByAI)) {\r\n me.disableTypingInput();\r\n } else {\r\n args.meta.instruction = args.meta.instruction || me.inputTitle;\r\n if (args.msg.isSplitMessage && isMapped) {\r\n // when piped messages are mapped then disable typing area\r\n me.disableTypingInput();\r\n } else {\r\n me.enableTypingInput();\r\n }\r\n }\r\n } else {\r\n // mapped? disable typing area\r\n me.disableTypingInput();\r\n }\r\n // CHAT-7194-Mobile-Keyboard-Sliding-In-Out\r\n // If message is QT we should hide keyboard regardless of map question in mobile device.\r\n if (Browser.isAndroid() || Browser.isiOS()) {\r\n // me.$(me.inputContainer, me.context).find('textarea').trigger('blur');\r\n let inputElem = me.inputContainer;\r\n if (typeof me.inputContainer === 'string') {\r\n inputElem = me.context.querySelector(me.inputContainer);\r\n }\r\n const textarea = me.inputContainer.querySelector('textarea');\r\n if (textarea) {\r\n textarea.blur();\r\n }\r\n }\r\n } else {\r\n // [Removed \"isSplitMessage\" Condition] - The code is handled above (in Parent IF)\r\n // secondly, it was not correct logically, if the plaintext was splitted or FullText was splitted\r\n // system expects the visitor response and it was disabling the textbox.\r\n // CHAT-8360 once the end chat msg appeared we need to enable the input field.\r\n if (\r\n me.options.scriptBotEnabled &&\r\n args.msg &&\r\n !args.msg.isChatEnded &&\r\n !me.isTransferredToLiveAgent()\r\n && !me.options.model.aiBotEnabled\r\n ) {\r\n // CHAT-7200 ScriptBot- plain text from preChat should disable input field\r\n args.meta.instruction = ScriptsQuestionTypeToolTips.Eng.FTEllipses;\r\n me.disableTypingInput();\r\n } else {\r\n var isMapped = isQTMessageMapped(args.msg);\r\n args.meta.instruction = me.inputTitle;\r\n logIt('QTEXT:: # Agent Plain Message - Enabling typing Input...');\r\n if ((args.msg.isSplitMessage && isMapped) || args.msg.systemMessageType == SystemMessageType.WebToSMSTransferCompleted) { // when piped messages are mapped then disable typing area\r\n if (args.msg.systemMessageType == SystemMessageType.WebToSMSTransferCompleted) {\r\n //setting scriptBotEnabled true so input can be disabled\r\n me.options.scriptBotEnabled = true;\r\n disableTypingInput.bind2(me)(me, me.inputContainer);\r\n } else {\r\n me.disableTypingInput();\r\n }\r\n } else {\r\n me.enableTypingInput(); // we need input enabled for non-QT, FT and none-QT. Hence commenting out the following lines.\r\n }\r\n // if (args.msg.isSplitMessage) {\r\n // me.disableTypingInput();\r\n // }\r\n // else {\r\n // me.enableTypingInput();///needs to be dbl chkd as to how we will get here\r\n // }\r\n // if (args.msg.questionType == ScriptsQuestionType.FullText) { // split message and FT Predefined enable input field\r\n // me.enableTypingInput();\r\n // }\r\n }\r\n }\r\n me.setAutocompletePlaceHolder(args.meta.instruction);\r\n }\r\n }\r\n if (!isLastMessage(args.msg)) {\r\n // Show instruction of last message only.\r\n // CHAT-8442 After load chat, instruction of last message should be visible only on rest message it should show ellipses\r\n args.meta.instruction = ScriptsQuestionTypeToolTips.Eng.FTEllipses;\r\n }\r\n if (isLastMessage(args.msg)) {\r\n // this condition handle refresh case\r\n me.displaySkipButton(args.msg);\r\n }\r\n me.setInstruction(args.meta.instruction);\r\n me.setAutoCompleteAttributes(args.msg);\r\n const autoSendScriptMessage =\r\n me.options.autoSendScriptMessage || me.options.model?.autoSendScriptMessage;\r\n const isLastQuestionMapped =\r\n me.lastMessage &&\r\n (me.lastMessage.isNextQuestionMapped ||\r\n (me.lastMessage.agentScript\r\n ? me.lastMessage.agentScript.isNextQuestionMapped\r\n : false));\r\n const continueMapping =\r\n (autoSendScriptMessage ||\r\n (me.options.scriptBotEnabled && !me.isTransferredToLiveAgent())) &&\r\n isLastQuestionMapped; //check is next question mapped or not for Non RD case\r\n me.lastMessage = args.msg;\r\n if (\r\n !me.currentMsgTypeIsFullText\r\n && args.msg.questionType != ScriptsQuestionType.WebToSMSNotification\r\n && !(args.msg.questionType == ScriptsQuestionType.None && !args.msg.isSplitMessage && !continueMapping)\r\n ) {\r\n // when current QT is not FullText then enable text area\r\n logIt(`QTEXT:: input toggled msg rendered:${args.msg.text}`);\r\n me.toggleInputTextArea();\r\n }\r\n me.lastMessage.isFullText = args.msg.questionType == ScriptsQuestionType.FullText; // for phone, email, name\r\n // This is the most appropriate place to do actions after a message is possibly completely rendered\r\n if (args.msg.beepAfterRender) {\r\n // playSound functionality now embeded inside a message\r\n args.msg.beepAfterRender();\r\n }\r\n if (args.cb) {\r\n // optional callback: stopPolling\r\n const PipedMessageHandlerSingleton = new PipedMessageHandler();\r\n args.cb.bind2(PipedMessageHandlerSingleton)();\r\n }\r\n logIt(`QTEXT:: last msg: ${me.lastMessage.text} rendered; now do else...`);\r\n }\r\n\r\n toggleInputTextArea() {\r\n const me = this;\r\n const inputSelector =\r\n me.initiator === WidgetTypes.ExitPopup\r\n ? '#apexchat_ep_textarea_input'\r\n : '#apexchat_rd_msg_box';\r\n me.context.querySelector('#txtAutocompleteInput')?.style.display = 'none';\r\n me.context.querySelector('#frmAutocomplete')?.style.display = 'none';\r\n me.context.querySelector(inputSelector)?.style.display = 'block';\r\n }\r\n\r\n setAutoCompleteAttributes(msg) {\r\n // CHAT-6999: set tool tip on input field\r\n const me = this;\r\n let inputElem = ''\r\n if (typeof me.inputContainer === 'string') {\r\n inputElem = me.context.querySelector(me.inputContainer);\r\n } else {\r\n inputElem = me.inputContainer\r\n }\r\n if (me.initiator !== WidgetTypes.PreChat) {\r\n if (typeof me.inputContainer === 'string') {\r\n inputElem = me.context.querySelector(me.autoCompleteInput);\r\n } else {\r\n inputElem = me.autoCompleteInput\r\n }\r\n }\r\n if (!inputElem) return;\r\n switch (msg.visitorResponseType) {\r\n case VisitorResponseType.Phone:\r\n inputElem.setAttribute('name', 'phone');\r\n inputElem.setAttribute('autocomplete', 'phone');\r\n break;\r\n case VisitorResponseType.Email:\r\n inputElem.setAttribute('name', 'email');\r\n inputElem.setAttribute('autocomplete', 'email');\r\n break;\r\n case VisitorResponseType.Region:\r\n inputElem.setAttribute('name', 'region');\r\n inputElem.setAttribute('autocomplete', 'region');\r\n break;\r\n case VisitorResponseType.Name:\r\n inputElem.setAttribute('name', 'name');\r\n inputElem.setAttribute('autocomplete', 'name');\r\n break;\r\n case VisitorResponseType.Address:\r\n inputElem.setAttribute('name', 'address');\r\n inputElem.setAttribute('autocomplete', 'address');\r\n break;\r\n default:\r\n // remove setAttributeibutes\r\n inputElem.setAttribute('autocomplete', 'off');\r\n inputElem.setAttribute('name', 'text');\r\n break;\r\n }\r\n }\r\n\r\n displaySkipButton(msg) {\r\n const me = this;\r\n let skipButtonText = ''\r\n\r\n if (msg && msg.isSkippable) {\r\n switch (msg.visitorResponseType) {\r\n case VisitorResponseType.Name:\r\n skipButtonText = 'Skip Name';\r\n break;\r\n case VisitorResponseType.Phone:\r\n skipButtonText = 'Skip Phone Number';\r\n break;\r\n case VisitorResponseType.Email:\r\n skipButtonText = 'Skip Email Address';\r\n break;\r\n case VisitorResponseType.Region:\r\n skipButtonText = 'Skip Region';\r\n break;\r\n case VisitorResponseType.Message:\r\n skipButtonText = 'Skip Message';\r\n break;\r\n case VisitorResponseType.Address:\r\n skipButtonText = 'Skip Address';\r\n break;\r\n }\r\n const skipButton = me.context.querySelector('.apexchat_skip_input');\r\n if (skipButton) {\r\n // check skip button exists or not\r\n me.skipFTButtonADA(skipButton, skipButtonText); // skip button function for ADA\r\n }\r\n } else {\r\n me.context.querySelector('.apexchat_skip_input')?.style.display = 'none'\r\n }\r\n }\r\n\r\n skipFTButtonADA(element, skipButtonText) {\r\n const me = this;\r\n const $element = me.$(element, me.context);\r\n $element.unbind(); // unbind all existing event\r\n $element[0].innerText = skipButtonText;\r\n $element[0].title = skipButtonText;\r\n ManageFocusOnKeyEvents(element); // on focus border show\r\n $element.show();\r\n\r\n me.$($element).on('keyup click', (e) => {\r\n // check if button already not selected then do the action\r\n e.stopPropagation();\r\n if (e.type == 'click' || (e.type == 'keyup' && isAcceptKey(e))) {\r\n me.skipFullText.bind2(me)();\r\n }\r\n });\r\n }\r\n // skipFTButtonADA(element, skipButtonText) {\r\n // const me = this;\r\n\r\n // // Remove all existing event listeners\r\n // const newElement = element.cloneNode(true);\r\n // element.replaceWith(newElement);\r\n // element = newElement; // Update reference to the new element\r\n\r\n // // Set button text and title\r\n // element.innerText = skipButtonText;\r\n // element.title = skipButtonText;\r\n\r\n // // Manage focus styling\r\n // ManageFocusOnKeyEvents(element);\r\n\r\n // // Make element visible\r\n // element.style.display = 'block';\r\n\r\n // // Add event listeners\r\n // element.addEventListener('click', (e) => {\r\n // e.stopPropagation();\r\n // me.skipFullText.bind2(me)();\r\n // });\r\n\r\n // element.addEventListener('keyup', (e) => {\r\n // e.stopPropagation();\r\n // if (isAcceptKey(e)) {\r\n // me.skipFullText.bind2(me)();\r\n // }\r\n // });\r\n // }\r\n\r\n isMessageQT(msg) {\r\n const me = this;\r\n // IF QuestionType is greater than 0 but no 8 (which is FullText)\r\n return (\r\n msg && msg.questionType > 0 && msg.questionType != ScriptsQuestionType.FullText\r\n );\r\n }\r\n\r\n isVisitorResponse(msg) {\r\n const me = this;\r\n const lastMsg = msg || me.lastMessage;\r\n return lastMsg.questionType == 0 && !lastMsg.userId;\r\n }\r\n\r\n isLastPlainMessage() {\r\n const me = this;\r\n return (\r\n me.lastMessage &&\r\n me.lastMessage.questionType == 0 &&\r\n me.lastMessage.visitorResponseType == VisitorResponseType.Message\r\n );\r\n }\r\n\r\n messageAskingForContactInfo(msg) {\r\n // CHAT-6979-detect if it is FullText type of Name/Phone/Email\r\n const me = this;\r\n return (\r\n msg &&\r\n msg.questionType === ScriptsQuestionType.FullText &&\r\n ((msg.visitorResponseType &&\r\n msg.visitorResponseType == VisitorResponseType.Name) ||\r\n msg.visitorResponseType == VisitorResponseType.Phone ||\r\n msg.visitorResponseType == VisitorResponseType.Email ||\r\n msg.visitorResponseType == VisitorResponseType.Region ||\r\n msg.visitorResponseType == VisitorResponseType.Message ||\r\n msg.visitorResponseType == VisitorResponseType.Address)\r\n );\r\n }\r\n\r\n getInstructionByResponseType(type) {\r\n const me = this;\r\n switch (type) {\r\n case VisitorResponseType.Name:\r\n return checkSpanishLanguage(me.options)\r\n ? ScriptsQuestionTypeToolTips.Spa.FTName\r\n : ScriptsQuestionTypeToolTips.Eng.FTName;\r\n case VisitorResponseType.Email:\r\n return checkSpanishLanguage(me.options)\r\n ? ScriptsQuestionTypeToolTips.Spa.FTEmail\r\n : ScriptsQuestionTypeToolTips.Eng.FTEmail;\r\n case VisitorResponseType.Phone:\r\n return checkSpanishLanguage(me.options)\r\n ? ScriptsQuestionTypeToolTips.Spa.FTPhone\r\n : ScriptsQuestionTypeToolTips.Eng.FTPhone;\r\n case VisitorResponseType.Message:\r\n return checkSpanishLanguage(me.options)\r\n ? ScriptsQuestionTypeToolTips.Spa.FTMessage\r\n : ScriptsQuestionTypeToolTips.Eng.FTMessage;\r\n case VisitorResponseType.Region:\r\n return checkSpanishLanguage(me.options)\r\n ? ScriptsQuestionTypeToolTips.Spa.FTZipcode\r\n : ScriptsQuestionTypeToolTips.Eng.FTZipcode;\r\n case VisitorResponseType.Address:\r\n return checkSpanishLanguage(me.options)\r\n ? ScriptsQuestionTypeToolTips.Spa.FTAddress\r\n : ScriptsQuestionTypeToolTips.Eng.FTAddress;\r\n default:\r\n return checkSpanishLanguage(me.options)\r\n ? ScriptsQuestionTypeToolTips.Spa.FTMessage\r\n : ScriptsQuestionTypeToolTips.Eng.FTMessage;\r\n }\r\n }\r\n\r\n isLastMessageFullText() {\r\n const me = this;\r\n return me.lastMessage && me.lastMessage.isFullText;\r\n }\r\n\r\n resizePreChat() {\r\n const me = this;\r\n me.postMessage({\r\n event: 'prechat-auto-resizing',\r\n data: {\r\n isErrorMsgForFT: true,\r\n errorMsgHeight: 160\r\n }\r\n });\r\n }\r\n\r\n showError(error) {\r\n // CHAT-7038:\r\n const me = this;\r\n const inputContainer = typeof me.inputContainer === 'string' ? me.context.querySelector(me.inputContainer) : me.inputContainer;\r\n logIt('QTEXT:: input field is showing error on on invalid input');\r\n const toolTipCss = me.isFromPreChat\r\n ? 'apexchat_prechat_fulltext_error'\r\n : 'livechat_validation_tooltip';\r\n showValidationTooltip(inputContainer, {\r\n toolTipText: error,\r\n toolTipCss,\r\n isPreChatText: me.isFromPreChat\r\n });\r\n if (inputContainer.classList.contains('livechat_validation_tooltip')) {\r\n // check class exists\r\n me.context.querySelector(me.options.elements.textboxContainerSelector,).classList.add(\r\n 'livechat_tooltip_Error_Enabled'\r\n );\r\n }\r\n me.resizePreChat();\r\n }\r\n\r\n disableTypingInput(instruction) {\r\n // CHAT-7038: disable input\r\n const shouldDisableInputContainer = function (msg) {\r\n if (msg) {\r\n return msg.questionType != ScriptsQuestionType.Text;\r\n }\r\n };\r\n const me = this;\r\n if (!me.enableFullTextLogic) {\r\n return;\r\n }\r\n logIt('QTEXT:: input field is disabled now.');\r\n if (\r\n me.options &&\r\n (me.options.autoSendScriptMessage == ChatFlowEnableFlag.Auto_Send ||\r\n me.options.scriptBotEnabled)\r\n ) {\r\n // if scriptBotEnabled true, we need input field to be locked no matter auto send true or false\r\n if (shouldDisableInputContainer(me.options.msg) && (!me.options.model.aiBotEnabled || me.options.msg.isRequiredByAI)) {\r\n disableTypingInput.bind2(me)(me, me.inputContainer, instruction);\r\n } else {\r\n me.enableTypingInput();\r\n disableTypingInput.bind2(me)(me, me.textAreaSelector, instruction);\r\n }\r\n }\r\n }\r\n\r\n enableTypingInput(cb) {\r\n // CHAT-7038: enable input\r\n const me = this;\r\n logIt('QTEXT:: input field is enabled now.');\r\n if (typeof me.inputContainer === 'string') {\r\n enableTypingInput.bind2(me)(me, me.context.querySelector(me.inputContainer));\r\n } else {\r\n enableTypingInput.bind2(me)(me, me.inputContainer);\r\n }\r\n\r\n if (cb && typeof cb === 'function') {\r\n // callback function\r\n cb();\r\n }\r\n }\r\n\r\n setInstruction(placeholderText) {\r\n // CHAT-6999: set placeholderText on input field\r\n const me = this;\r\n if (!me.isChatStarted) {\r\n return;\r\n }\r\n const textAreaIndex = me.initiator === WidgetTypes.ExitPopup ? 1 : 0; // index of textarea in EP is different from DOM so we need to mention index where textarea lie\r\n let inputElem = ''\r\n if (typeof me.inputContainer === 'string') {\r\n inputElem = me.context.querySelector(me.inputContainer);\r\n } else {\r\n inputElem = me.inputContainer\r\n }\r\n\r\n if (inputElem) {\r\n const textarea = inputElem.querySelector('textarea');\r\n if (textarea) {\r\n setPlaceholder(textarea, placeholderText, textAreaIndex);\r\n }\r\n }\r\n\r\n setPlaceholder(inputElem, placeholderText, textAreaIndex);\r\n logIt(`QTEXT:: has a placeholderText: ${placeholderText}`);\r\n }\r\n\r\n // this either sets a new text value or an old one\r\n setLastFullText(text) {\r\n const me = this;\r\n text = text || TempStorageCache.get(TempCache.INPUT_OLD_VALUE); // if no text specified, set oldVal\r\n try {\r\n // const $txt = me.$(me.inputContainer, me.context).first().find('textarea');\r\n if (typeof me.inputContainer === 'string') {\r\n inputElem = me.context.querySelector(me.inputContainer);\r\n } else {\r\n inputElem = me.inputContainer\r\n }\r\n const txt = me.inputContainer.querySelector('textarea');\r\n\r\n if (txt) {\r\n txt.value = text;\r\n }\r\n } catch (e) {\r\n // must be breaking due to some null\r\n logIt(`setLastFullText:${e.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * return visitor response type\r\n */\r\n toAutocompleteType(visitorResponseType) {\r\n switch (visitorResponseType) {\r\n case VisitorResponseType.Name:\r\n return 'name';\r\n case VisitorResponseType.Email:\r\n return 'email';\r\n case VisitorResponseType.Phone:\r\n return 'phone';\r\n case VisitorResponseType.Region:\r\n return 'region';\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param {args} args initialize auto complete options\r\n */\r\n makeAutocomplete(args) {\r\n const me = this;\r\n if (me.options.widgetType === WidgetTypes.PreChat) {\r\n // do not show autocomplete if inputSelectorhat\r\n // if we put message type in this condition it will create other issues.\r\n return;\r\n }\r\n const autoComplete = new AutoComplete({\r\n enableAutoComplete:\r\n args.msg.visitorResponseType === VisitorResponseType.Message ||\r\n isMobile()\r\n ? 'off'\r\n : 'on',\r\n type: me.toAutocompleteType(args.msg.visitorResponseType),\r\n // id: 'apexchat_rd_msg_box',\r\n className: 'apexchat_ada_compliance',\r\n placeholder: args.meta.instruction,\r\n title: 'Type your response and press Return or Send',\r\n // containerSelector: me.options.elements.inputContainerSelector,\r\n // autocompleteOnOff: 'off',\r\n inputSelector: '#txtAutocompleteInput',\r\n textareaSelector:\r\n me.initiator === WidgetTypes.ExitPopup\r\n ? '#apexchat_ep_textarea_input'\r\n : '#apexchat_rd_msg_box',\r\n context: me.context\r\n });\r\n }\r\n\r\n setAutocompletePlaceHolder(tip) {\r\n const me = this;\r\n me.context.querySelector('#txtAutocompleteInput')?.setAttribute('placeholder', tip);\r\n me.context.querySelector('#txtAutocompleteInput')?.setAttribute('name', '');\r\n me.context.querySelector('#txtAutocompleteInput')?.setAttribute('autocomplete', 'off');\r\n }\r\n}\r\n","const showValidationTooltip = (element, config) => {\r\n // to show tooltip just pass tooltip text and css class name\r\n if (!(config && config.toolTipText)) {\r\n return;\r\n }\r\n if (config.isPreChatText) {\r\n var wrapper = document.createElement('div');\r\n wrapper.innerHTML = `