function findNativeTextareaInShadowRoot(shadowRoot) { if (!shadowRoot) return null;
const textareaInShadowRoot = shadowRoot.querySelector('.native-textarea'); if (textareaInShadowRoot) { return textareaInShadowRoot; }
return null; }
function findNativeTextareaInThirdLevelShadowRoot(element, depth = 0) { if (!element || depth > 2) return null;
if (element.shadowRoot) { if (depth === 2) { return findNativeTextareaInShadowRoot(element.shadowRoot); }
return findNativeTextareaInThirdLevelShadowRoot(element.shadowRoot, depth + 1); }
for (const child of element.children) { const textareaInChildShadowRoot = findNativeTextareaInThirdLevelShadowRoot(child, depth); if (textareaInChildShadowRoot) { return textareaInChildShadowRoot; } }
return null; }
function limitCharacterCount(textarea, maxLength) { textarea.addEventListener('input', function(event) { const inputText = event.target.value; if (inputText.length > maxLength) { event.target.value = inputText.slice(0, maxLength); } }); }
function enforceCharacterLimit() { function searchForTextarea() { const nativeTextarea = findNativeTextareaInThirdLevelShadowRoot(document.body);
if (!nativeTextarea) { console.error('native-textarea not found within the third level of shadow roots.'); } else { limitCharacterCount(nativeTextarea, 1100); } }
searchForTextarea();
setInterval(searchForTextarea, 1000); }
enforceCharacterLimit();
var typingIndicator;
function blockMouseAndKeyboardControl() { var chatWidget = document.querySelector('chat-widget'); var shadowRoot = chatWidget.shadowRoot; if (shadowRoot) { var chatMessages = shadowRoot.querySelectorAll('chat-message'); var lastChatMessage = chatMessages[chatMessages.length - 1]; if (lastChatMessage) { var lastMessageShadowRoot = lastChatMessage.shadowRoot; if (lastMessageShadowRoot) { var itemContainer = lastMessageShadowRoot.querySelector('.item'); var paneElement = shadowRoot.querySelector('#pane'); if (paneElement && itemContainer) { if (itemContainer.classList.contains('item-has-start-slot')) { paneElement.removeEventListener('mousedown', preventDefaultAction); paneElement.removeEventListener('keydown', preventDefaultAction); hideTypingIndicator(); } else { paneElement.addEventListener('mousedown', preventDefaultAction); paneElement.addEventListener('keydown', preventDefaultAction); showTypingIndicator(shadowRoot); } } else { console.error("#pane element or item container not found within the shadow DOM."); } } else { console.error("Shadow root not found for last chat-message element."); } } else { console.error("Last chat-message element not found within the shadow DOM."); } } else { console.error("Shadow root not found for chat-widget."); } }
function preventDefaultAction(event) { event.preventDefault(); }
function showTypingIndicator(shadowRoot) { if (!typingIndicator) { var chatArea = shadowRoot.querySelector('.chat-pane'); if (chatArea) { typingIndicator = document.createElement('div'); typingIndicator.classList.add('typing-indicator'); typingIndicator.style.marginLeft = '20px';
var gifImage = document.createElement('img'); gifImage.style.maxHeight = '35px';
gifImage.onload = function() { chatArea.scrollTop = chatArea.scrollHeight; document.querySelector('.scroll-y').style.overflowY = 'auto'; document.querySelector('.scroll-x').style.overflowX = 'auto'; document.querySelector('.inner-scroll').style.overflow = 'auto'; };
gifImage.src = 'https://acmeco.columbiacosheriff.com/wp-content/uploads/jfchat.gif';
typingIndicator.appendChild(gifImage); chatArea.appendChild(typingIndicator); } } }
function hideTypingIndicator() { if (typingIndicator) { typingIndicator.remove(); typingIndicator = null; } }
setInterval(blockMouseAndKeyboardControl, 1000);