quikchat 1.2.6 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/build-manifest.json +57 -57
- package/dist/quikchat-md-full.cjs.js +98 -5
- package/dist/quikchat-md-full.cjs.js.map +1 -1
- package/dist/quikchat-md-full.cjs.min.js +3 -3
- package/dist/quikchat-md-full.cjs.min.js.map +1 -1
- package/dist/quikchat-md-full.esm.js +98 -5
- package/dist/quikchat-md-full.esm.js.map +1 -1
- package/dist/quikchat-md-full.esm.min.js +3 -3
- package/dist/quikchat-md-full.esm.min.js.map +1 -1
- package/dist/quikchat-md-full.umd.js +98 -5
- package/dist/quikchat-md-full.umd.js.map +1 -1
- package/dist/quikchat-md-full.umd.min.js +3 -3
- package/dist/quikchat-md-full.umd.min.js.map +1 -1
- package/dist/quikchat-md.cjs.js +98 -5
- package/dist/quikchat-md.cjs.js.map +1 -1
- package/dist/quikchat-md.cjs.min.js +3 -3
- package/dist/quikchat-md.cjs.min.js.map +1 -1
- package/dist/quikchat-md.esm.js +98 -5
- package/dist/quikchat-md.esm.js.map +1 -1
- package/dist/quikchat-md.esm.min.js +3 -3
- package/dist/quikchat-md.esm.min.js.map +1 -1
- package/dist/quikchat-md.umd.js +98 -5
- package/dist/quikchat-md.umd.js.map +1 -1
- package/dist/quikchat-md.umd.min.js +3 -3
- package/dist/quikchat-md.umd.min.js.map +1 -1
- package/dist/quikchat.cjs.js +2 -2
- package/dist/quikchat.cjs.js.map +1 -1
- package/dist/quikchat.cjs.min.js +1 -1
- package/dist/quikchat.cjs.min.js.map +1 -1
- package/dist/quikchat.esm.js +2 -2
- package/dist/quikchat.esm.js.map +1 -1
- package/dist/quikchat.esm.min.js +1 -1
- package/dist/quikchat.esm.min.js.map +1 -1
- package/dist/quikchat.umd.js +2 -2
- package/dist/quikchat.umd.js.map +1 -1
- package/dist/quikchat.umd.min.js +1 -1
- package/dist/quikchat.umd.min.js.map +1 -1
- package/package.json +2 -2
package/dist/quikchat.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quikchat.esm.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n *\n * @param string or DOM element parentElement\n * @param {*} meta\n */\n constructor(parentElement, onSend = () => { }, options = {}) {\n const defaultOpts = {\n theme: 'quikchat-theme-light',\n trackHistory: true,\n showTimestamps: false,\n titleArea: { title: \"Chat\", show: false, align: \"center\" },\n messagesArea: { alternating: true },\n };\n const meta = { ...defaultOpts, ...options }; // merge options with defaults\n\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for onSend\n this._messageFormatter = meta.messageFormatter || null;\n this._sanitize = meta.sanitize || false;\n this._createWidget();\n // title area\n if (meta.titleArea) {\n this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);\n if (meta.titleArea.show === true) {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n // messages area\n if (meta.messagesArea) {\n this.messagesAreaAlternateColors(meta.messagesArea.alternating);\n }\n // timestamps\n if (meta.showTimestamps) {\n this.messagesAreaShowTimestamps(true);\n }\n // direction (ltr/rtl)\n if (meta.direction) {\n this.setDirection(meta.direction);\n }\n // plumbing\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory !== false;\n this._historyLimit = 10000000;\n this._history = [];\n }\n\n _createWidget() {\n const widgetHTML =\n `\n <div class=\"quikchat-base ${this.theme}\">\n <div class=\"quikchat-title-area\"></div>\n <div class=\"quikchat-messages-wrapper\"><div class=\"quikchat-messages-area\" role=\"log\" aria-live=\"polite\" aria-label=\"Chat messages\"></div><button class=\"quikchat-scroll-bottom\" aria-label=\"Scroll to bottom\"></button></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\" rows=\"1\" aria-label=\"Type a message\"></textarea>\n <button class=\"quikchat-input-send-btn\">Send</button>\n </div>\n </div>\n `;\n\n this._parentElement.innerHTML = widgetHTML;\n this._chatWidget = this._parentElement.querySelector('.quikchat-base');\n this._titleArea = this._chatWidget.querySelector('.quikchat-title-area');\n this._messagesWrapper = this._chatWidget.querySelector('.quikchat-messages-wrapper');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._scrollBottomBtn = this._messagesWrapper.querySelector('.quikchat-scroll-bottom');\n this._inputArea = this._chatWidget.querySelector('.quikchat-input-area');\n this._textEntry = this._inputArea.querySelector('.quikchat-input-textbox');\n this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');\n this.msgid = 0;\n }\n\n /**\n * Attach event listeners to the widget\n */\n _attachEventListeners() {\n this._sendButton.addEventListener('click', () => {\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n });\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n event.preventDefault();\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n }\n });\n\n // Auto-grow textarea\n this._textEntry.addEventListener('input', () => this._autoGrowTextarea());\n\n this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight - 1;\n this._updateScrollBottomBtn();\n });\n\n // Scroll-to-bottom button\n this._scrollBottomBtn.addEventListener('click', () => this.scrollToBottom());\n\n // Ctrl+End to scroll to bottom\n this._chatWidget.addEventListener('keydown', (event) => {\n if (event.ctrlKey && event.key === 'End') {\n event.preventDefault();\n this.scrollToBottom();\n }\n });\n\n // Use ResizeObserver to detect parent container resize\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(() => this._handleContainerResize());\n this._resizeObserver.observe(this._parentElement);\n }\n }\n\n // set the onSend function callback.\n setCallbackOnSend(callback) {\n this._onSend = callback;\n }\n // set a callback for everytime a message is added (listener)\n setCallbackonMessageAdded(callback) {\n this._onMessageAdded = callback;\n }\n setCallbackonMessageAppend(callback) {\n this._onMessageAppend = callback;\n }\n setCallbackonMessageReplace(callback) {\n this._onMessageReplace = callback;\n }\n setCallbackonMessageDelete(callback) {\n this._onMessageDelete = callback;\n }\n\n // Public methods\n titleAreaToggle() {\n if (this._titleArea.style.display === 'none') {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n }\n\n titleAreaSetContents(title, align = 'center') {\n this._titleArea.innerHTML = title;\n this._titleArea.style.textAlign = align;\n }\n\n titleAreaGetContents() {\n return this._titleArea.innerHTML;\n }\n\n inputAreaToggle() {\n if (this._inputArea.style.display === 'none') {\n this.inputAreaShow();\n } else {\n this.inputAreaHide();\n }\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n }\n\n inputAreaSetEnabled(enabled) {\n this._textEntry.disabled = !enabled;\n this._sendButton.disabled = !enabled;\n }\n\n inputAreaSetButtonText(text) {\n this._sendButton.textContent = text;\n }\n\n inputAreaGetButtonText() {\n return this._sendButton.textContent;\n }\n\n setDirection(dir) {\n const d = dir === 'rtl' ? 'rtl' : 'ltr';\n this._chatWidget.setAttribute('dir', d);\n if (d === 'rtl') {\n this._chatWidget.classList.add('quikchat-rtl');\n } else {\n this._chatWidget.classList.remove('quikchat-rtl');\n }\n }\n\n getDirection() {\n return this._chatWidget.getAttribute('dir') || 'ltr';\n }\n\n _handleContainerResize() {\n // Layout is handled by CSS flexbox — no JS height calculation needed.\n // This hook exists for future use or custom resize callbacks.\n }\n\n scrollToBottom() {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n this.userScrolledUp = false;\n this._updateScrollBottomBtn();\n }\n\n _updateScrollBottomBtn() {\n if (this.userScrolledUp) {\n this._scrollBottomBtn.classList.add('quikchat-scroll-bottom-visible');\n } else {\n this._scrollBottomBtn.classList.remove('quikchat-scroll-bottom-visible');\n }\n }\n\n _autoGrowTextarea() {\n const el = this._textEntry;\n el.style.height = 'auto';\n const maxHeight = 120;\n el.style.height = Math.min(el.scrollHeight, maxHeight) + 'px';\n el.style.overflowY = el.scrollHeight > maxHeight ? 'auto' : 'hidden';\n }\n\n _formatTimestamp(isoString) {\n const d = new Date(isoString);\n const h = d.getHours();\n const m = String(d.getMinutes()).padStart(2, '0');\n const ampm = h >= 12 ? 'PM' : 'AM';\n const h12 = h % 12 || 12;\n return h12 + ':' + m + ' ' + ampm;\n }\n\n messagesAreaShowTimestamps(show) {\n if (show) {\n this._messagesArea.classList.add('quikchat-show-timestamps');\n } else {\n this._messagesArea.classList.remove('quikchat-show-timestamps');\n }\n }\n\n messagesAreaShowTimestampsGet() {\n return this._messagesArea.classList.contains('quikchat-show-timestamps');\n }\n\n messagesAreaShowTimestampsToggle() {\n this._messagesArea.classList.toggle('quikchat-show-timestamps');\n }\n\n _escapeHTML(str) {\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n }\n\n _processContent(content) {\n if (this._sanitize === true) {\n content = this._escapeHTML(content);\n } else if (typeof this._sanitize === 'function') {\n content = this._sanitize(content);\n }\n if (this._messageFormatter) {\n content = this._messageFormatter(content);\n }\n return content;\n }\n\n //messagesArea functions\n messagesAreaAlternateColors(alt = true) {\n if (alt) {\n this._messagesArea.classList.add('quikchat-messages-area-alt');\n }\n else {\n this._messagesArea.classList.remove('quikchat-messages-area-alt');\n }\n return alt === true;\n }\n messagesAreaAlternateColorsToggle() {\n this._messagesArea.classList.toggle('quikchat-messages-area-alt');\n }\n messagesAreaAlternateColorsGet() {\n return this._messagesArea.classList.contains('quikchat-messages-area-alt');\n }\n // message functions\n messageAddFull(input = { content: \"\", userString: \"user\", align: \"right\", role: \"user\", userID: -1 }) {\n const msgid = this.msgid;\n const messageDiv = document.createElement('div');\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n messageDiv.classList.add('quikchat-message', msgidClass);\n messageDiv.classList.add('quikchat-role-' + (input.role || 'user'));\n messageDiv.classList.add('quikchat-align-' + (input.align || 'right'));\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n\n // Visibility: default true, hidden messages get display:none\n const visible = input.visible !== false;\n if (!visible) {\n messageDiv.style.display = 'none';\n }\n\n // Tags: array of strings for group-based visibility control\n const tags = Array.isArray(input.tags) ? input.tags.slice() : [];\n\n const userDiv = document.createElement('div');\n userDiv.classList.add('quikchat-user-label');\n userDiv.style.textAlign = input.align;\n userDiv.innerHTML = input.userString;\n\n const contentDiv = document.createElement('div');\n contentDiv.classList.add('quikchat-message-content');\n contentDiv.style.textAlign = input.align;\n contentDiv.innerHTML = this._processContent(input.content);\n\n const timestamp = new Date().toISOString();\n const timestampSpan = document.createElement('span');\n timestampSpan.classList.add('quikchat-timestamp');\n timestampSpan.textContent = this._formatTimestamp(timestamp);\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n messageDiv.appendChild(timestampSpan);\n this._messagesArea.appendChild(messageDiv);\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n\n this._textEntry.value = '';\n this._autoGrowTextarea();\n const updatedtime = timestamp;\n\n if (this.trackHistory) {\n this._history.push({ msgid, ...input, visible, tags, timestamp, updatedtime, messageDiv });\n if (this._history.length > this._historyLimit) {\n this._history.shift();\n }\n }\n\n if (this._onMessageAdded) {\n this._onMessageAdded(this, msgid);\n }\n\n return msgid;\n }\n\n\n messageAddNew(content = \"\", userString = \"user\", align = \"right\", role = \"user\") {\n return this.messageAddFull(\n { content: content, userString: userString, align: align, role: role }\n );\n }\n messageRemove(n) {\n let success = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n success = true;\n }\n catch (_error) {\n // Message ID not found\n }\n if (success) {\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n if (this._onMessageDelete) {\n this._onMessageDelete(this, n);\n }\n }\n return success;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n }\n catch (_error) {\n // Message ID not found\n }\n return msg;\n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\";\n try {\n content = this._history.filter((item) => item.msgid === n)[0].content;\n }\n catch (_error) {\n // Message ID not found\n }\n return content;\n }\n\n messageSetVisible(n, visible) {\n const msgEl = this.messageGetDOMObject(n);\n if (!msgEl) return false;\n msgEl.style.display = visible ? '' : 'none';\n const item = this._history.find((entry) => entry.msgid === n);\n if (item) item.visible = visible;\n return true;\n }\n\n messageGetVisible(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item ? item.visible !== false : false;\n }\n\n messageToggleVisible(n) {\n const current = this.messageGetVisible(n);\n return this.messageSetVisible(n, !current);\n }\n\n messageSetVisibleByTag(tag, visible) {\n let count = 0;\n for (const item of this._history) {\n if (item.tags && item.tags.includes(tag)) {\n this.messageSetVisible(item.msgid, visible);\n count++;\n }\n }\n return count;\n }\n\n messageGetTags(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item && item.tags ? item.tags.slice() : [];\n }\n\n messageSetTags(n, tags) {\n const item = this._history.find((entry) => entry.msgid === n);\n if (!item) return false;\n item.tags = Array.isArray(tags) ? tags.slice() : [];\n return true;\n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(item.content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageAppend) {\n this._onMessageAppend(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content = content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageReplace) {\n this._onMessageReplace(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n messageAddTypingIndicator(userString = '', align = 'left') {\n const msgid = this.messageAddFull({\n content: '',\n userString: userString,\n align: align,\n role: 'assistant',\n });\n const msgEl = this.messageGetDOMObject(msgid);\n msgEl.classList.add('quikchat-typing');\n const contentDiv = msgEl.querySelector('.quikchat-message-content');\n contentDiv.innerHTML = '<span class=\"quikchat-typing-dots\"><span>.</span><span>.</span><span>.</span></span>';\n return msgid;\n }\n\n setMessageFormatter(formatter) {\n this._messageFormatter = formatter;\n }\n\n setSanitize(sanitize) {\n this._sanitize = sanitize;\n }\n\n // history functions\n /**\n *\n * @param {*} n\n * @param {*} m\n * @returns array of history messages\n */\n historyGet(n, m) {\n if (n === undefined) {\n return this._history.slice();\n }\n if (m === undefined) {\n if (n < 0) {\n return this._history.slice(n);\n }\n return this._history.slice(n, n + 1);\n }\n return this._history.slice(n, m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n }\n\n historyGetLength() {\n return this._history.length;\n }\n\n historyGetMessage(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n];\n }\n return {};\n }\n\n historyGetMessageContent(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n].content;\n }\n return \"\";\n }\n\n historyExport() {\n return this._history.map((item) => ({\n msgid: item.msgid,\n content: item.content,\n userString: item.userString,\n align: item.align,\n role: item.role,\n userID: item.userID,\n visible: item.visible,\n tags: item.tags ? item.tags.slice() : [],\n timestamp: item.timestamp,\n updatedtime: item.updatedtime,\n }));\n }\n\n historyImport(data) {\n // Clear existing messages from DOM and history\n this._messagesArea.innerHTML = '';\n this._history = [];\n this.msgid = 0;\n\n for (const entry of data) {\n this.messageAddFull({\n content: entry.content || '',\n userString: entry.userString || 'user',\n align: entry.align || 'right',\n role: entry.role || 'user',\n userID: entry.userID,\n visible: entry.visible,\n tags: entry.tags,\n });\n }\n }\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static version() {\n return { \"version\": \"1.2.6\", \"license\": \"BSD-2\", \"url\": \"https://github/deftio/quikchat\" };\n }\n\n /**\n * quikchat.loremIpsum() - Generate a simple string of Lorem Ipsum text (sample typographer's text) of numChars in length.\n * borrowed from github.com/deftio/bitwrench.js\n * @param {number} numChars - The number of characters to generate (random btw 25 and 150 if undefined).\n * @param {number} [startSpot=0] - The starting index in the Lorem Ipsum text. If undefined, a random startSpot will be generated.\n * @param {boolean} [startWithCapitalLetter=true] - If true, capitalize the first character or inject a capital letter if the first character isn't a capital letter.\n *\n * @returns {string} A string of Lorem Ipsum text.\n *\n * @example\n * // Returns 200 characters of Lorem Ipsum starting from index 50\n * loremIpsum(200, 50);\n *\n * @example\n * //Returns a 200 Lorem Ipsum characters starting from a random index\n * loremIpsum(200);\n */\n\n static loremIpsum(numChars, startSpot = undefined, startWithCapitalLetter = true) {\n const loremText = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \";\n\n if (typeof numChars !== \"number\") {\n numChars = Math.floor(Math.random() * 126) + 25;\n }\n\n if (startSpot === undefined) {\n startSpot = Math.floor(Math.random() * loremText.length);\n }\n\n startSpot = startSpot % loremText.length;\n\n // Move startSpot to the next non-whitespace and non-punctuation character\n while (loremText[startSpot] === ' ' || /[.,:;!?]/.test(loremText[startSpot])) {\n startSpot = (startSpot + 1) % loremText.length;\n }\n\n const l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\n\n let s = \"\";\n while (numChars > 0) {\n s += numChars < l.length ? l.substring(0, numChars) : l;\n numChars -= l.length;\n }\n\n if (s[s.length - 1] === \" \") {\n s = s.substring(0, s.length - 1) + \".\"; // always end on non-whitespace. \".\" was chosen arbitrarily.\n }\n\n if (startWithCapitalLetter) {\n s = s[0].toUpperCase() + s.substring(1);\n }\n\n return s;\n };\n\n\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","onSend","arguments","length","undefined","options","_classCallCheck","defaultOpts","theme","trackHistory","showTimestamps","titleArea","title","show","align","messagesArea","alternating","meta","_objectSpread","document","querySelector","_parentElement","_theme","_onSend","_messageFormatter","messageFormatter","_sanitize","sanitize","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","messagesAreaShowTimestamps","direction","setDirection","_attachEventListeners","_historyLimit","_history","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesWrapper","_messagesArea","_scrollBottomBtn","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","text","trim","event","shiftKey","keyCode","preventDefault","_autoGrowTextarea","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","_updateScrollBottomBtn","scrollToBottom","ctrlKey","ResizeObserver","_resizeObserver","_handleContainerResize","observe","setCallbackOnSend","callback","setCallbackonMessageAdded","_onMessageAdded","setCallbackonMessageAppend","_onMessageAppend","setCallbackonMessageReplace","_onMessageReplace","setCallbackonMessageDelete","_onMessageDelete","titleAreaToggle","style","display","textAlign","titleAreaGetContents","inputAreaToggle","inputAreaShow","inputAreaHide","inputAreaSetEnabled","enabled","disabled","inputAreaSetButtonText","textContent","inputAreaGetButtonText","dir","d","setAttribute","classList","add","remove","getDirection","getAttribute","el","height","maxHeight","Math","min","overflowY","_formatTimestamp","isoString","Date","h","getHours","m","String","getMinutes","padStart","ampm","h12","messagesAreaShowTimestampsGet","contains","messagesAreaShowTimestampsToggle","toggle","_escapeHTML","str","div","createElement","_processContent","content","alt","messagesAreaAlternateColorsToggle","messagesAreaAlternateColorsGet","messageAddFull","input","userString","role","userID","messageDiv","msgidClass","children","visible","tags","Array","isArray","slice","userDiv","contentDiv","timestamp","toISOString","timestampSpan","appendChild","updatedtime","push","shift","messageAddNew","messageRemove","n","success","removeChild","_error","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","filter","messageSetVisible","msgEl","find","entry","messageGetVisible","messageToggleVisible","current","messageSetVisibleByTag","tag","count","_iterator","_createForOfIteratorHelper","_step","s","done","includes","err","e","f","messageGetTags","messageSetTags","messageAppendContent","messageReplaceContent","messageAddTypingIndicator","setMessageFormatter","formatter","setSanitize","historyGet","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","historyExport","map","historyImport","data","_iterator2","_step2","changeTheme","newTheme","get","version","loremIpsum","numChars","startSpot","startWithCapitalLetter","loremText","floor","random","test","l","substring","toUpperCase"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quikchat.esm.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n *\n * @param string or DOM element parentElement\n * @param {*} meta\n */\n constructor(parentElement, onSend = () => { }, options = {}) {\n const defaultOpts = {\n theme: 'quikchat-theme-light',\n trackHistory: true,\n showTimestamps: false,\n titleArea: { title: \"Chat\", show: false, align: \"center\" },\n messagesArea: { alternating: true },\n };\n const meta = { ...defaultOpts, ...options }; // merge options with defaults\n\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for onSend\n this._messageFormatter = meta.messageFormatter || null;\n this._sanitize = meta.sanitize || false;\n this._createWidget();\n // title area\n if (meta.titleArea) {\n this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);\n if (meta.titleArea.show === true) {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n // messages area\n if (meta.messagesArea) {\n this.messagesAreaAlternateColors(meta.messagesArea.alternating);\n }\n // timestamps\n if (meta.showTimestamps) {\n this.messagesAreaShowTimestamps(true);\n }\n // direction (ltr/rtl)\n if (meta.direction) {\n this.setDirection(meta.direction);\n }\n // plumbing\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory !== false;\n this._historyLimit = 10000000;\n this._history = [];\n }\n\n _createWidget() {\n const widgetHTML =\n `\n <div class=\"quikchat-base ${this.theme}\">\n <div class=\"quikchat-title-area\"></div>\n <div class=\"quikchat-messages-wrapper\"><div class=\"quikchat-messages-area\" role=\"log\" aria-live=\"polite\" aria-label=\"Chat messages\"></div><button class=\"quikchat-scroll-bottom\" aria-label=\"Scroll to bottom\"></button></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\" rows=\"1\" aria-label=\"Type a message\"></textarea>\n <button class=\"quikchat-input-send-btn\">Send</button>\n </div>\n </div>\n `;\n\n this._parentElement.innerHTML = widgetHTML;\n this._chatWidget = this._parentElement.querySelector('.quikchat-base');\n this._titleArea = this._chatWidget.querySelector('.quikchat-title-area');\n this._messagesWrapper = this._chatWidget.querySelector('.quikchat-messages-wrapper');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._scrollBottomBtn = this._messagesWrapper.querySelector('.quikchat-scroll-bottom');\n this._inputArea = this._chatWidget.querySelector('.quikchat-input-area');\n this._textEntry = this._inputArea.querySelector('.quikchat-input-textbox');\n this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');\n this.msgid = 0;\n }\n\n /**\n * Attach event listeners to the widget\n */\n _attachEventListeners() {\n this._sendButton.addEventListener('click', () => {\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n });\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n event.preventDefault();\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n }\n });\n\n // Auto-grow textarea\n this._textEntry.addEventListener('input', () => this._autoGrowTextarea());\n\n this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight - 1;\n this._updateScrollBottomBtn();\n });\n\n // Scroll-to-bottom button\n this._scrollBottomBtn.addEventListener('click', () => this.scrollToBottom());\n\n // Ctrl+End to scroll to bottom\n this._chatWidget.addEventListener('keydown', (event) => {\n if (event.ctrlKey && event.key === 'End') {\n event.preventDefault();\n this.scrollToBottom();\n }\n });\n\n // Use ResizeObserver to detect parent container resize\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(() => this._handleContainerResize());\n this._resizeObserver.observe(this._parentElement);\n }\n }\n\n // set the onSend function callback.\n setCallbackOnSend(callback) {\n this._onSend = callback;\n }\n // set a callback for everytime a message is added (listener)\n setCallbackonMessageAdded(callback) {\n this._onMessageAdded = callback;\n }\n setCallbackonMessageAppend(callback) {\n this._onMessageAppend = callback;\n }\n setCallbackonMessageReplace(callback) {\n this._onMessageReplace = callback;\n }\n setCallbackonMessageDelete(callback) {\n this._onMessageDelete = callback;\n }\n\n // Public methods\n titleAreaToggle() {\n if (this._titleArea.style.display === 'none') {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n }\n\n titleAreaSetContents(title, align = 'center') {\n this._titleArea.innerHTML = title;\n this._titleArea.style.textAlign = align;\n }\n\n titleAreaGetContents() {\n return this._titleArea.innerHTML;\n }\n\n inputAreaToggle() {\n if (this._inputArea.style.display === 'none') {\n this.inputAreaShow();\n } else {\n this.inputAreaHide();\n }\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n }\n\n inputAreaSetEnabled(enabled) {\n this._textEntry.disabled = !enabled;\n this._sendButton.disabled = !enabled;\n }\n\n inputAreaSetButtonText(text) {\n this._sendButton.textContent = text;\n }\n\n inputAreaGetButtonText() {\n return this._sendButton.textContent;\n }\n\n setDirection(dir) {\n const d = dir === 'rtl' ? 'rtl' : 'ltr';\n this._chatWidget.setAttribute('dir', d);\n if (d === 'rtl') {\n this._chatWidget.classList.add('quikchat-rtl');\n } else {\n this._chatWidget.classList.remove('quikchat-rtl');\n }\n }\n\n getDirection() {\n return this._chatWidget.getAttribute('dir') || 'ltr';\n }\n\n _handleContainerResize() {\n // Layout is handled by CSS flexbox — no JS height calculation needed.\n // This hook exists for future use or custom resize callbacks.\n }\n\n scrollToBottom() {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n this.userScrolledUp = false;\n this._updateScrollBottomBtn();\n }\n\n _updateScrollBottomBtn() {\n if (this.userScrolledUp) {\n this._scrollBottomBtn.classList.add('quikchat-scroll-bottom-visible');\n } else {\n this._scrollBottomBtn.classList.remove('quikchat-scroll-bottom-visible');\n }\n }\n\n _autoGrowTextarea() {\n const el = this._textEntry;\n el.style.height = 'auto';\n const maxHeight = 120;\n el.style.height = Math.min(el.scrollHeight, maxHeight) + 'px';\n el.style.overflowY = el.scrollHeight > maxHeight ? 'auto' : 'hidden';\n }\n\n _formatTimestamp(isoString) {\n const d = new Date(isoString);\n const h = d.getHours();\n const m = String(d.getMinutes()).padStart(2, '0');\n const ampm = h >= 12 ? 'PM' : 'AM';\n const h12 = h % 12 || 12;\n return h12 + ':' + m + ' ' + ampm;\n }\n\n messagesAreaShowTimestamps(show) {\n if (show) {\n this._messagesArea.classList.add('quikchat-show-timestamps');\n } else {\n this._messagesArea.classList.remove('quikchat-show-timestamps');\n }\n }\n\n messagesAreaShowTimestampsGet() {\n return this._messagesArea.classList.contains('quikchat-show-timestamps');\n }\n\n messagesAreaShowTimestampsToggle() {\n this._messagesArea.classList.toggle('quikchat-show-timestamps');\n }\n\n _escapeHTML(str) {\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n }\n\n _processContent(content) {\n if (this._sanitize === true) {\n content = this._escapeHTML(content);\n } else if (typeof this._sanitize === 'function') {\n content = this._sanitize(content);\n }\n if (this._messageFormatter) {\n content = this._messageFormatter(content);\n }\n return content;\n }\n\n //messagesArea functions\n messagesAreaAlternateColors(alt = true) {\n if (alt) {\n this._messagesArea.classList.add('quikchat-messages-area-alt');\n }\n else {\n this._messagesArea.classList.remove('quikchat-messages-area-alt');\n }\n return alt === true;\n }\n messagesAreaAlternateColorsToggle() {\n this._messagesArea.classList.toggle('quikchat-messages-area-alt');\n }\n messagesAreaAlternateColorsGet() {\n return this._messagesArea.classList.contains('quikchat-messages-area-alt');\n }\n // message functions\n messageAddFull(input = { content: \"\", userString: \"user\", align: \"right\", role: \"user\", userID: -1 }) {\n const msgid = this.msgid;\n const messageDiv = document.createElement('div');\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n messageDiv.classList.add('quikchat-message', msgidClass);\n messageDiv.classList.add('quikchat-role-' + (input.role || 'user'));\n messageDiv.classList.add('quikchat-align-' + (input.align || 'right'));\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n\n // Visibility: default true, hidden messages get display:none\n const visible = input.visible !== false;\n if (!visible) {\n messageDiv.style.display = 'none';\n }\n\n // Tags: array of strings for group-based visibility control\n const tags = Array.isArray(input.tags) ? input.tags.slice() : [];\n\n const userDiv = document.createElement('div');\n userDiv.classList.add('quikchat-user-label');\n userDiv.style.textAlign = input.align;\n userDiv.innerHTML = input.userString;\n\n const contentDiv = document.createElement('div');\n contentDiv.classList.add('quikchat-message-content');\n contentDiv.style.textAlign = input.align;\n contentDiv.innerHTML = this._processContent(input.content);\n\n const timestamp = new Date().toISOString();\n const timestampSpan = document.createElement('span');\n timestampSpan.classList.add('quikchat-timestamp');\n timestampSpan.textContent = this._formatTimestamp(timestamp);\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n messageDiv.appendChild(timestampSpan);\n this._messagesArea.appendChild(messageDiv);\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n\n this._textEntry.value = '';\n this._autoGrowTextarea();\n const updatedtime = timestamp;\n\n if (this.trackHistory) {\n this._history.push({ msgid, ...input, visible, tags, timestamp, updatedtime, messageDiv });\n if (this._history.length > this._historyLimit) {\n this._history.shift();\n }\n }\n\n if (this._onMessageAdded) {\n this._onMessageAdded(this, msgid);\n }\n\n return msgid;\n }\n\n\n messageAddNew(content = \"\", userString = \"user\", align = \"right\", role = \"user\") {\n return this.messageAddFull(\n { content: content, userString: userString, align: align, role: role }\n );\n }\n messageRemove(n) {\n let success = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n success = true;\n }\n catch (_error) {\n // Message ID not found\n }\n if (success) {\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n if (this._onMessageDelete) {\n this._onMessageDelete(this, n);\n }\n }\n return success;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n }\n catch (_error) {\n // Message ID not found\n }\n return msg;\n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\";\n try {\n content = this._history.filter((item) => item.msgid === n)[0].content;\n }\n catch (_error) {\n // Message ID not found\n }\n return content;\n }\n\n messageSetVisible(n, visible) {\n const msgEl = this.messageGetDOMObject(n);\n if (!msgEl) return false;\n msgEl.style.display = visible ? '' : 'none';\n const item = this._history.find((entry) => entry.msgid === n);\n if (item) item.visible = visible;\n return true;\n }\n\n messageGetVisible(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item ? item.visible !== false : false;\n }\n\n messageToggleVisible(n) {\n const current = this.messageGetVisible(n);\n return this.messageSetVisible(n, !current);\n }\n\n messageSetVisibleByTag(tag, visible) {\n let count = 0;\n for (const item of this._history) {\n if (item.tags && item.tags.includes(tag)) {\n this.messageSetVisible(item.msgid, visible);\n count++;\n }\n }\n return count;\n }\n\n messageGetTags(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item && item.tags ? item.tags.slice() : [];\n }\n\n messageSetTags(n, tags) {\n const item = this._history.find((entry) => entry.msgid === n);\n if (!item) return false;\n item.tags = Array.isArray(tags) ? tags.slice() : [];\n return true;\n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(item.content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageAppend) {\n this._onMessageAppend(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content = content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageReplace) {\n this._onMessageReplace(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n messageAddTypingIndicator(userString = '', align = 'left') {\n const msgid = this.messageAddFull({\n content: '',\n userString: userString,\n align: align,\n role: 'assistant',\n });\n const msgEl = this.messageGetDOMObject(msgid);\n msgEl.classList.add('quikchat-typing');\n const contentDiv = msgEl.querySelector('.quikchat-message-content');\n contentDiv.innerHTML = '<span class=\"quikchat-typing-dots\"><span>.</span><span>.</span><span>.</span></span>';\n return msgid;\n }\n\n setMessageFormatter(formatter) {\n this._messageFormatter = formatter;\n }\n\n setSanitize(sanitize) {\n this._sanitize = sanitize;\n }\n\n // history functions\n /**\n *\n * @param {*} n\n * @param {*} m\n * @returns array of history messages\n */\n historyGet(n, m) {\n if (n === undefined) {\n return this._history.slice();\n }\n if (m === undefined) {\n if (n < 0) {\n return this._history.slice(n);\n }\n return this._history.slice(n, n + 1);\n }\n return this._history.slice(n, m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n }\n\n historyGetLength() {\n return this._history.length;\n }\n\n historyGetMessage(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n];\n }\n return {};\n }\n\n historyGetMessageContent(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n].content;\n }\n return \"\";\n }\n\n historyExport() {\n return this._history.map((item) => ({\n msgid: item.msgid,\n content: item.content,\n userString: item.userString,\n align: item.align,\n role: item.role,\n userID: item.userID,\n visible: item.visible,\n tags: item.tags ? item.tags.slice() : [],\n timestamp: item.timestamp,\n updatedtime: item.updatedtime,\n }));\n }\n\n historyImport(data) {\n // Clear existing messages from DOM and history\n this._messagesArea.innerHTML = '';\n this._history = [];\n this.msgid = 0;\n\n for (const entry of data) {\n this.messageAddFull({\n content: entry.content || '',\n userString: entry.userString || 'user',\n align: entry.align || 'right',\n role: entry.role || 'user',\n userID: entry.userID,\n visible: entry.visible,\n tags: entry.tags,\n });\n }\n }\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static version() {\n return { \"version\": \"1.2.7\", \"license\": \"BSD-2\", \"url\": \"https://github.com/deftio/quikchat\" };\n }\n\n /**\n * quikchat.loremIpsum() - Generate a simple string of Lorem Ipsum text (sample typographer's text) of numChars in length.\n * borrowed from github.com/deftio/bitwrench.js\n * @param {number} numChars - The number of characters to generate (random btw 25 and 150 if undefined).\n * @param {number} [startSpot=0] - The starting index in the Lorem Ipsum text. If undefined, a random startSpot will be generated.\n * @param {boolean} [startWithCapitalLetter=true] - If true, capitalize the first character or inject a capital letter if the first character isn't a capital letter.\n *\n * @returns {string} A string of Lorem Ipsum text.\n *\n * @example\n * // Returns 200 characters of Lorem Ipsum starting from index 50\n * loremIpsum(200, 50);\n *\n * @example\n * //Returns a 200 Lorem Ipsum characters starting from a random index\n * loremIpsum(200);\n */\n\n static loremIpsum(numChars, startSpot = undefined, startWithCapitalLetter = true) {\n const loremText = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \";\n\n if (typeof numChars !== \"number\") {\n numChars = Math.floor(Math.random() * 126) + 25;\n }\n\n if (startSpot === undefined) {\n startSpot = Math.floor(Math.random() * loremText.length);\n }\n\n startSpot = startSpot % loremText.length;\n\n // Move startSpot to the next non-whitespace and non-punctuation character\n while (loremText[startSpot] === ' ' || /[.,:;!?]/.test(loremText[startSpot])) {\n startSpot = (startSpot + 1) % loremText.length;\n }\n\n const l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\n\n let s = \"\";\n while (numChars > 0) {\n s += numChars < l.length ? l.substring(0, numChars) : l;\n numChars -= l.length;\n }\n\n if (s[s.length - 1] === \" \") {\n s = s.substring(0, s.length - 1) + \".\"; // always end on non-whitespace. \".\" was chosen arbitrarily.\n }\n\n if (startWithCapitalLetter) {\n s = s[0].toUpperCase() + s.substring(1);\n }\n\n return s;\n };\n\n\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","onSend","arguments","length","undefined","options","_classCallCheck","defaultOpts","theme","trackHistory","showTimestamps","titleArea","title","show","align","messagesArea","alternating","meta","_objectSpread","document","querySelector","_parentElement","_theme","_onSend","_messageFormatter","messageFormatter","_sanitize","sanitize","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","messagesAreaShowTimestamps","direction","setDirection","_attachEventListeners","_historyLimit","_history","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesWrapper","_messagesArea","_scrollBottomBtn","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","text","trim","event","shiftKey","keyCode","preventDefault","_autoGrowTextarea","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","_updateScrollBottomBtn","scrollToBottom","ctrlKey","ResizeObserver","_resizeObserver","_handleContainerResize","observe","setCallbackOnSend","callback","setCallbackonMessageAdded","_onMessageAdded","setCallbackonMessageAppend","_onMessageAppend","setCallbackonMessageReplace","_onMessageReplace","setCallbackonMessageDelete","_onMessageDelete","titleAreaToggle","style","display","textAlign","titleAreaGetContents","inputAreaToggle","inputAreaShow","inputAreaHide","inputAreaSetEnabled","enabled","disabled","inputAreaSetButtonText","textContent","inputAreaGetButtonText","dir","d","setAttribute","classList","add","remove","getDirection","getAttribute","el","height","maxHeight","Math","min","overflowY","_formatTimestamp","isoString","Date","h","getHours","m","String","getMinutes","padStart","ampm","h12","messagesAreaShowTimestampsGet","contains","messagesAreaShowTimestampsToggle","toggle","_escapeHTML","str","div","createElement","_processContent","content","alt","messagesAreaAlternateColorsToggle","messagesAreaAlternateColorsGet","messageAddFull","input","userString","role","userID","messageDiv","msgidClass","children","visible","tags","Array","isArray","slice","userDiv","contentDiv","timestamp","toISOString","timestampSpan","appendChild","updatedtime","push","shift","messageAddNew","messageRemove","n","success","removeChild","_error","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","filter","messageSetVisible","msgEl","find","entry","messageGetVisible","messageToggleVisible","current","messageSetVisibleByTag","tag","count","_iterator","_createForOfIteratorHelper","_step","s","done","includes","err","e","f","messageGetTags","messageSetTags","messageAppendContent","messageReplaceContent","messageAddTypingIndicator","setMessageFormatter","formatter","setSanitize","historyGet","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","historyExport","map","historyImport","data","_iterator2","_step2","changeTheme","newTheme","get","version","loremIpsum","numChars","startSpot","startWithCapitalLetter","loremText","floor","random","test","l","substring","toUpperCase"],"mappings":"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"}
|
package/dist/quikchat.esm.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var s=0,i=Array(t);s<t;s++)i[s]=e[s];return i}function t(e,t){for(var s=0;s<t.length;s++){var i=t[s];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function s(t,s){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,s){if(t){if("string"==typeof t)return e(t,s);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,s):void 0}}(t))||s){i&&(t=i);var a=0,n=function(){};return{s:n,n:function(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var e=i.next();return o=e.done,e},e:function(e){l=!0,r=e},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw r}}}}function i(e,t,s){return(t=r(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function a(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,i)}return s}function n(e){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{};t%2?a(Object(s),!0).forEach((function(t){i(e,t,s[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):a(Object(s)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(s,t))}))}return e}function r(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,t);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}var o=function(){return e=function e(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var a=n(n({},{theme:"quikchat-theme-light",trackHistory:!0,showTimestamps:!1,titleArea:{title:"Chat",show:!1,align:"center"},messagesArea:{alternating:!0}}),i);"string"==typeof t&&(t=document.querySelector(t)),this._parentElement=t,this._theme=a.theme,this._onSend=s||function(){},this._messageFormatter=a.messageFormatter||null,this._sanitize=a.sanitize||!1,this._createWidget(),a.titleArea&&(this.titleAreaSetContents(a.titleArea.title,a.titleArea.align),!0===a.titleArea.show?this.titleAreaShow():this.titleAreaHide()),a.messagesArea&&this.messagesAreaAlternateColors(a.messagesArea.alternating),a.showTimestamps&&this.messagesAreaShowTimestamps(!0),a.direction&&this.setDirection(a.direction),this._attachEventListeners(),this.trackHistory=!1!==a.trackHistory,this._historyLimit=1e7,this._history=[]},i=[{key:"_createWidget",value:function(){var e='\n <div class="quikchat-base '.concat(this.theme,'">\n <div class="quikchat-title-area"></div>\n <div class="quikchat-messages-wrapper"><div class="quikchat-messages-area" role="log" aria-live="polite" aria-label="Chat messages"></div><button class="quikchat-scroll-bottom" aria-label="Scroll to bottom"></button></div>\n <div class="quikchat-input-area">\n <textarea class="quikchat-input-textbox" rows="1" aria-label="Type a message"></textarea>\n <button class="quikchat-input-send-btn">Send</button>\n </div>\n </div>\n ');this._parentElement.innerHTML=e,this._chatWidget=this._parentElement.querySelector(".quikchat-base"),this._titleArea=this._chatWidget.querySelector(".quikchat-title-area"),this._messagesWrapper=this._chatWidget.querySelector(".quikchat-messages-wrapper"),this._messagesArea=this._chatWidget.querySelector(".quikchat-messages-area"),this._scrollBottomBtn=this._messagesWrapper.querySelector(".quikchat-scroll-bottom"),this._inputArea=this._chatWidget.querySelector(".quikchat-input-area"),this._textEntry=this._inputArea.querySelector(".quikchat-input-textbox"),this._sendButton=this._inputArea.querySelector(".quikchat-input-send-btn"),this.msgid=0}},{key:"_attachEventListeners",value:function(){var e=this;this._sendButton.addEventListener("click",(function(){var t=e._textEntry.value.trim();""!==t&&e._onSend(e,t)})),this._textEntry.addEventListener("keydown",(function(t){if(t.shiftKey&&13===t.keyCode){t.preventDefault();var s=e._textEntry.value.trim();if(""===s)return;e._onSend(e,s)}})),this._textEntry.addEventListener("input",(function(){return e._autoGrowTextarea()})),this._messagesArea.addEventListener("scroll",(function(){var t=e._messagesArea,s=t.scrollTop,i=t.scrollHeight,a=t.clientHeight;e.userScrolledUp=s+a<i-1,e._updateScrollBottomBtn()})),this._scrollBottomBtn.addEventListener("click",(function(){return e.scrollToBottom()})),this._chatWidget.addEventListener("keydown",(function(t){t.ctrlKey&&"End"===t.key&&(t.preventDefault(),e.scrollToBottom())})),"undefined"!=typeof ResizeObserver&&(this._resizeObserver=new ResizeObserver((function(){return e._handleContainerResize()})),this._resizeObserver.observe(this._parentElement))}},{key:"setCallbackOnSend",value:function(e){this._onSend=e}},{key:"setCallbackonMessageAdded",value:function(e){this._onMessageAdded=e}},{key:"setCallbackonMessageAppend",value:function(e){this._onMessageAppend=e}},{key:"setCallbackonMessageReplace",value:function(e){this._onMessageReplace=e}},{key:"setCallbackonMessageDelete",value:function(e){this._onMessageDelete=e}},{key:"titleAreaToggle",value:function(){"none"===this._titleArea.style.display?this.titleAreaShow():this.titleAreaHide()}},{key:"titleAreaShow",value:function(){this._titleArea.style.display=""}},{key:"titleAreaHide",value:function(){this._titleArea.style.display="none"}},{key:"titleAreaSetContents",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"center";this._titleArea.innerHTML=e,this._titleArea.style.textAlign=t}},{key:"titleAreaGetContents",value:function(){return this._titleArea.innerHTML}},{key:"inputAreaToggle",value:function(){"none"===this._inputArea.style.display?this.inputAreaShow():this.inputAreaHide()}},{key:"inputAreaShow",value:function(){this._inputArea.style.display=""}},{key:"inputAreaHide",value:function(){this._inputArea.style.display="none"}},{key:"inputAreaSetEnabled",value:function(e){this._textEntry.disabled=!e,this._sendButton.disabled=!e}},{key:"inputAreaSetButtonText",value:function(e){this._sendButton.textContent=e}},{key:"inputAreaGetButtonText",value:function(){return this._sendButton.textContent}},{key:"setDirection",value:function(e){var t="rtl"===e?"rtl":"ltr";this._chatWidget.setAttribute("dir",t),"rtl"===t?this._chatWidget.classList.add("quikchat-rtl"):this._chatWidget.classList.remove("quikchat-rtl")}},{key:"getDirection",value:function(){return this._chatWidget.getAttribute("dir")||"ltr"}},{key:"_handleContainerResize",value:function(){}},{key:"scrollToBottom",value:function(){this._messagesArea.scrollTop=this._messagesArea.scrollHeight,this.userScrolledUp=!1,this._updateScrollBottomBtn()}},{key:"_updateScrollBottomBtn",value:function(){this.userScrolledUp?this._scrollBottomBtn.classList.add("quikchat-scroll-bottom-visible"):this._scrollBottomBtn.classList.remove("quikchat-scroll-bottom-visible")}},{key:"_autoGrowTextarea",value:function(){var e=this._textEntry;e.style.height="auto",e.style.height=Math.min(e.scrollHeight,120)+"px",e.style.overflowY=e.scrollHeight>120?"auto":"hidden"}},{key:"_formatTimestamp",value:function(e){var t=new Date(e),s=t.getHours();return(s%12||12)+":"+String(t.getMinutes()).padStart(2,"0")+" "+(s>=12?"PM":"AM")}},{key:"messagesAreaShowTimestamps",value:function(e){e?this._messagesArea.classList.add("quikchat-show-timestamps"):this._messagesArea.classList.remove("quikchat-show-timestamps")}},{key:"messagesAreaShowTimestampsGet",value:function(){return this._messagesArea.classList.contains("quikchat-show-timestamps")}},{key:"messagesAreaShowTimestampsToggle",value:function(){this._messagesArea.classList.toggle("quikchat-show-timestamps")}},{key:"_escapeHTML",value:function(e){var t=document.createElement("div");return t.textContent=e,t.innerHTML}},{key:"_processContent",value:function(e){return!0===this._sanitize?e=this._escapeHTML(e):"function"==typeof this._sanitize&&(e=this._sanitize(e)),this._messageFormatter&&(e=this._messageFormatter(e)),e}},{key:"messagesAreaAlternateColors",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return e?this._messagesArea.classList.add("quikchat-messages-area-alt"):this._messagesArea.classList.remove("quikchat-messages-area-alt"),!0===e}},{key:"messagesAreaAlternateColorsToggle",value:function(){this._messagesArea.classList.toggle("quikchat-messages-area-alt")}},{key:"messagesAreaAlternateColorsGet",value:function(){return this._messagesArea.classList.contains("quikchat-messages-area-alt")}},{key:"messageAddFull",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{content:"",userString:"user",align:"right",role:"user",userID:-1},t=this.msgid,s=document.createElement("div"),i="quikchat-msgid-"+String(t).padStart(10,"0");s.classList.add("quikchat-message",i),s.classList.add("quikchat-role-"+(e.role||"user")),s.classList.add("quikchat-align-"+(e.align||"right")),this.msgid++,s.classList.add(this._messagesArea.children.length%2==1?"quikchat-message-1":"quikchat-message-2");var a=!1!==e.visible;a||(s.style.display="none");var r=Array.isArray(e.tags)?e.tags.slice():[],o=document.createElement("div");o.classList.add("quikchat-user-label"),o.style.textAlign=e.align,o.innerHTML=e.userString;var l=document.createElement("div");l.classList.add("quikchat-message-content"),l.style.textAlign=e.align,l.innerHTML=this._processContent(e.content);var u=(new Date).toISOString(),c=document.createElement("span");c.classList.add("quikchat-timestamp"),c.textContent=this._formatTimestamp(u),s.appendChild(o),s.appendChild(l),s.appendChild(c),this._messagesArea.appendChild(s),this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._textEntry.value="",this._autoGrowTextarea();var h=u;return this.trackHistory&&(this._history.push(n(n({msgid:t},e),{},{visible:a,tags:r,timestamp:u,updatedtime:h,messageDiv:s})),this._history.length>this._historyLimit&&this._history.shift()),this._onMessageAdded&&this._onMessageAdded(this,t),t}},{key:"messageAddNew",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"user",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"right",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user";return this.messageAddFull({content:e,userString:t,align:s,role:i})}},{key:"messageRemove",value:function(e){var t=!1;try{this._messagesArea.removeChild(this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))),t=!0}catch(e){}return t&&(this._history.splice(this._history.findIndex((function(t){return t.msgid===e})),1),this._onMessageDelete&&this._onMessageDelete(this,e)),t}},{key:"messageGetDOMObject",value:function(e){var t=null;try{t=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))}catch(e){}return t}},{key:"messageGetContent",value:function(e){var t="";try{t=this._history.filter((function(t){return t.msgid===e}))[0].content}catch(e){}return t}},{key:"messageSetVisible",value:function(e,t){var s=this.messageGetDOMObject(e);if(!s)return!1;s.style.display=t?"":"none";var i=this._history.find((function(t){return t.msgid===e}));return i&&(i.visible=t),!0}},{key:"messageGetVisible",value:function(e){var t=this._history.find((function(t){return t.msgid===e}));return!!t&&!1!==t.visible}},{key:"messageToggleVisible",value:function(e){var t=this.messageGetVisible(e);return this.messageSetVisible(e,!t)}},{key:"messageSetVisibleByTag",value:function(e,t){var i,a=0,n=s(this._history);try{for(n.s();!(i=n.n()).done;){var r=i.value;r.tags&&r.tags.includes(e)&&(this.messageSetVisible(r.msgid,t),a++)}}catch(e){n.e(e)}finally{n.f()}return a}},{key:"messageGetTags",value:function(e){var t=this._history.find((function(t){return t.msgid===e}));return t&&t.tags?t.tags.slice():[]}},{key:"messageSetTags",value:function(e,t){var s=this._history.find((function(t){return t.msgid===e}));return!!s&&(s.tags=Array.isArray(t)?t.slice():[],!0)}},{key:"messageAppendContent",value:function(e,t){var s=!1;try{var i=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))),a=this._history.filter((function(t){return t.msgid===e}))[0];a.content+=t,a.updatedtime=(new Date).toISOString(),i.querySelector(".quikchat-message-content").innerHTML=this._processContent(a.content),i.classList.remove("quikchat-typing"),s=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageAppend&&this._onMessageAppend(this,e,t)}catch(e){}return s}},{key:"messageReplaceContent",value:function(e,t){var s=!1;try{var i=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))),a=this._history.filter((function(t){return t.msgid===e}))[0];a.content=t,a.updatedtime=(new Date).toISOString(),i.querySelector(".quikchat-message-content").innerHTML=this._processContent(t),i.classList.remove("quikchat-typing"),s=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageReplace&&this._onMessageReplace(this,e,t)}catch(e){}return s}},{key:"messageAddTypingIndicator",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"left",s=this.messageAddFull({content:"",userString:e,align:t,role:"assistant"}),i=this.messageGetDOMObject(s);return i.classList.add("quikchat-typing"),i.querySelector(".quikchat-message-content").innerHTML='<span class="quikchat-typing-dots"><span>.</span><span>.</span><span>.</span></span>',s}},{key:"setMessageFormatter",value:function(e){this._messageFormatter=e}},{key:"setSanitize",value:function(e){this._sanitize=e}},{key:"historyGet",value:function(e,t){return void 0===e?this._history.slice():void 0===t?e<0?this._history.slice(e):this._history.slice(e,e+1):this._history.slice(e,t)}},{key:"historyClear",value:function(){this.msgid=0,this._history=[]}},{key:"historyGetLength",value:function(){return this._history.length}},{key:"historyGetMessage",value:function(e){return e>=0&&e<this._history.length?this._history[e]:{}}},{key:"historyGetMessageContent",value:function(e){return e>=0&&e<this._history.length?this._history[e].content:""}},{key:"historyExport",value:function(){return this._history.map((function(e){return{msgid:e.msgid,content:e.content,userString:e.userString,align:e.align,role:e.role,userID:e.userID,visible:e.visible,tags:e.tags?e.tags.slice():[],timestamp:e.timestamp,updatedtime:e.updatedtime}}))}},{key:"historyImport",value:function(e){this._messagesArea.innerHTML="",this._history=[],this.msgid=0;var t,i=s(e);try{for(i.s();!(t=i.n()).done;){var a=t.value;this.messageAddFull({content:a.content||"",userString:a.userString||"user",align:a.align||"right",role:a.role||"user",userID:a.userID,visible:a.visible,tags:a.tags})}}catch(e){i.e(e)}finally{i.f()}}},{key:"changeTheme",value:function(e){this._chatWidget.classList.remove(this._theme),this._chatWidget.classList.add(e),this._theme=e}},{key:"theme",get:function(){return this._theme}}],a=[{key:"version",value:function(){return{version:"1.2.6",license:"BSD-2",url:"https://github/deftio/quikchat"}}},{key:"loremIpsum",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. ";for("number"!=typeof e&&(e=Math.floor(126*Math.random())+25),void 0===t&&(t=Math.floor(446*Math.random())),t%=446;" "===i[t]||/[.,:;!?]/.test(i[t]);)t=(t+1)%446;for(var a=i.substring(t)+i.substring(0,t),n="";e>0;)n+=e<a.length?a.substring(0,e):a,e-=a.length;return" "===n[n.length-1]&&(n=n.substring(0,n.length-1)+"."),s&&(n=n[0].toUpperCase()+n.substring(1)),n}}],i&&t(e.prototype,i),a&&t(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,i,a}();export{o as default};
|
|
1
|
+
function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var s=0,i=Array(t);s<t;s++)i[s]=e[s];return i}function t(e,t){for(var s=0;s<t.length;s++){var i=t[s];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function s(t,s){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,s){if(t){if("string"==typeof t)return e(t,s);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,s):void 0}}(t))||s){i&&(t=i);var a=0,n=function(){};return{s:n,n:function(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var e=i.next();return o=e.done,e},e:function(e){l=!0,r=e},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw r}}}}function i(e,t,s){return(t=r(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function a(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,i)}return s}function n(e){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{};t%2?a(Object(s),!0).forEach((function(t){i(e,t,s[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):a(Object(s)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(s,t))}))}return e}function r(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,t);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}var o=function(){return e=function e(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var a=n(n({},{theme:"quikchat-theme-light",trackHistory:!0,showTimestamps:!1,titleArea:{title:"Chat",show:!1,align:"center"},messagesArea:{alternating:!0}}),i);"string"==typeof t&&(t=document.querySelector(t)),this._parentElement=t,this._theme=a.theme,this._onSend=s||function(){},this._messageFormatter=a.messageFormatter||null,this._sanitize=a.sanitize||!1,this._createWidget(),a.titleArea&&(this.titleAreaSetContents(a.titleArea.title,a.titleArea.align),!0===a.titleArea.show?this.titleAreaShow():this.titleAreaHide()),a.messagesArea&&this.messagesAreaAlternateColors(a.messagesArea.alternating),a.showTimestamps&&this.messagesAreaShowTimestamps(!0),a.direction&&this.setDirection(a.direction),this._attachEventListeners(),this.trackHistory=!1!==a.trackHistory,this._historyLimit=1e7,this._history=[]},i=[{key:"_createWidget",value:function(){var e='\n <div class="quikchat-base '.concat(this.theme,'">\n <div class="quikchat-title-area"></div>\n <div class="quikchat-messages-wrapper"><div class="quikchat-messages-area" role="log" aria-live="polite" aria-label="Chat messages"></div><button class="quikchat-scroll-bottom" aria-label="Scroll to bottom"></button></div>\n <div class="quikchat-input-area">\n <textarea class="quikchat-input-textbox" rows="1" aria-label="Type a message"></textarea>\n <button class="quikchat-input-send-btn">Send</button>\n </div>\n </div>\n ');this._parentElement.innerHTML=e,this._chatWidget=this._parentElement.querySelector(".quikchat-base"),this._titleArea=this._chatWidget.querySelector(".quikchat-title-area"),this._messagesWrapper=this._chatWidget.querySelector(".quikchat-messages-wrapper"),this._messagesArea=this._chatWidget.querySelector(".quikchat-messages-area"),this._scrollBottomBtn=this._messagesWrapper.querySelector(".quikchat-scroll-bottom"),this._inputArea=this._chatWidget.querySelector(".quikchat-input-area"),this._textEntry=this._inputArea.querySelector(".quikchat-input-textbox"),this._sendButton=this._inputArea.querySelector(".quikchat-input-send-btn"),this.msgid=0}},{key:"_attachEventListeners",value:function(){var e=this;this._sendButton.addEventListener("click",(function(){var t=e._textEntry.value.trim();""!==t&&e._onSend(e,t)})),this._textEntry.addEventListener("keydown",(function(t){if(t.shiftKey&&13===t.keyCode){t.preventDefault();var s=e._textEntry.value.trim();if(""===s)return;e._onSend(e,s)}})),this._textEntry.addEventListener("input",(function(){return e._autoGrowTextarea()})),this._messagesArea.addEventListener("scroll",(function(){var t=e._messagesArea,s=t.scrollTop,i=t.scrollHeight,a=t.clientHeight;e.userScrolledUp=s+a<i-1,e._updateScrollBottomBtn()})),this._scrollBottomBtn.addEventListener("click",(function(){return e.scrollToBottom()})),this._chatWidget.addEventListener("keydown",(function(t){t.ctrlKey&&"End"===t.key&&(t.preventDefault(),e.scrollToBottom())})),"undefined"!=typeof ResizeObserver&&(this._resizeObserver=new ResizeObserver((function(){return e._handleContainerResize()})),this._resizeObserver.observe(this._parentElement))}},{key:"setCallbackOnSend",value:function(e){this._onSend=e}},{key:"setCallbackonMessageAdded",value:function(e){this._onMessageAdded=e}},{key:"setCallbackonMessageAppend",value:function(e){this._onMessageAppend=e}},{key:"setCallbackonMessageReplace",value:function(e){this._onMessageReplace=e}},{key:"setCallbackonMessageDelete",value:function(e){this._onMessageDelete=e}},{key:"titleAreaToggle",value:function(){"none"===this._titleArea.style.display?this.titleAreaShow():this.titleAreaHide()}},{key:"titleAreaShow",value:function(){this._titleArea.style.display=""}},{key:"titleAreaHide",value:function(){this._titleArea.style.display="none"}},{key:"titleAreaSetContents",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"center";this._titleArea.innerHTML=e,this._titleArea.style.textAlign=t}},{key:"titleAreaGetContents",value:function(){return this._titleArea.innerHTML}},{key:"inputAreaToggle",value:function(){"none"===this._inputArea.style.display?this.inputAreaShow():this.inputAreaHide()}},{key:"inputAreaShow",value:function(){this._inputArea.style.display=""}},{key:"inputAreaHide",value:function(){this._inputArea.style.display="none"}},{key:"inputAreaSetEnabled",value:function(e){this._textEntry.disabled=!e,this._sendButton.disabled=!e}},{key:"inputAreaSetButtonText",value:function(e){this._sendButton.textContent=e}},{key:"inputAreaGetButtonText",value:function(){return this._sendButton.textContent}},{key:"setDirection",value:function(e){var t="rtl"===e?"rtl":"ltr";this._chatWidget.setAttribute("dir",t),"rtl"===t?this._chatWidget.classList.add("quikchat-rtl"):this._chatWidget.classList.remove("quikchat-rtl")}},{key:"getDirection",value:function(){return this._chatWidget.getAttribute("dir")||"ltr"}},{key:"_handleContainerResize",value:function(){}},{key:"scrollToBottom",value:function(){this._messagesArea.scrollTop=this._messagesArea.scrollHeight,this.userScrolledUp=!1,this._updateScrollBottomBtn()}},{key:"_updateScrollBottomBtn",value:function(){this.userScrolledUp?this._scrollBottomBtn.classList.add("quikchat-scroll-bottom-visible"):this._scrollBottomBtn.classList.remove("quikchat-scroll-bottom-visible")}},{key:"_autoGrowTextarea",value:function(){var e=this._textEntry;e.style.height="auto",e.style.height=Math.min(e.scrollHeight,120)+"px",e.style.overflowY=e.scrollHeight>120?"auto":"hidden"}},{key:"_formatTimestamp",value:function(e){var t=new Date(e),s=t.getHours();return(s%12||12)+":"+String(t.getMinutes()).padStart(2,"0")+" "+(s>=12?"PM":"AM")}},{key:"messagesAreaShowTimestamps",value:function(e){e?this._messagesArea.classList.add("quikchat-show-timestamps"):this._messagesArea.classList.remove("quikchat-show-timestamps")}},{key:"messagesAreaShowTimestampsGet",value:function(){return this._messagesArea.classList.contains("quikchat-show-timestamps")}},{key:"messagesAreaShowTimestampsToggle",value:function(){this._messagesArea.classList.toggle("quikchat-show-timestamps")}},{key:"_escapeHTML",value:function(e){var t=document.createElement("div");return t.textContent=e,t.innerHTML}},{key:"_processContent",value:function(e){return!0===this._sanitize?e=this._escapeHTML(e):"function"==typeof this._sanitize&&(e=this._sanitize(e)),this._messageFormatter&&(e=this._messageFormatter(e)),e}},{key:"messagesAreaAlternateColors",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return e?this._messagesArea.classList.add("quikchat-messages-area-alt"):this._messagesArea.classList.remove("quikchat-messages-area-alt"),!0===e}},{key:"messagesAreaAlternateColorsToggle",value:function(){this._messagesArea.classList.toggle("quikchat-messages-area-alt")}},{key:"messagesAreaAlternateColorsGet",value:function(){return this._messagesArea.classList.contains("quikchat-messages-area-alt")}},{key:"messageAddFull",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{content:"",userString:"user",align:"right",role:"user",userID:-1},t=this.msgid,s=document.createElement("div"),i="quikchat-msgid-"+String(t).padStart(10,"0");s.classList.add("quikchat-message",i),s.classList.add("quikchat-role-"+(e.role||"user")),s.classList.add("quikchat-align-"+(e.align||"right")),this.msgid++,s.classList.add(this._messagesArea.children.length%2==1?"quikchat-message-1":"quikchat-message-2");var a=!1!==e.visible;a||(s.style.display="none");var r=Array.isArray(e.tags)?e.tags.slice():[],o=document.createElement("div");o.classList.add("quikchat-user-label"),o.style.textAlign=e.align,o.innerHTML=e.userString;var l=document.createElement("div");l.classList.add("quikchat-message-content"),l.style.textAlign=e.align,l.innerHTML=this._processContent(e.content);var u=(new Date).toISOString(),c=document.createElement("span");c.classList.add("quikchat-timestamp"),c.textContent=this._formatTimestamp(u),s.appendChild(o),s.appendChild(l),s.appendChild(c),this._messagesArea.appendChild(s),this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._textEntry.value="",this._autoGrowTextarea();var h=u;return this.trackHistory&&(this._history.push(n(n({msgid:t},e),{},{visible:a,tags:r,timestamp:u,updatedtime:h,messageDiv:s})),this._history.length>this._historyLimit&&this._history.shift()),this._onMessageAdded&&this._onMessageAdded(this,t),t}},{key:"messageAddNew",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"user",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"right",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user";return this.messageAddFull({content:e,userString:t,align:s,role:i})}},{key:"messageRemove",value:function(e){var t=!1;try{this._messagesArea.removeChild(this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))),t=!0}catch(e){}return t&&(this._history.splice(this._history.findIndex((function(t){return t.msgid===e})),1),this._onMessageDelete&&this._onMessageDelete(this,e)),t}},{key:"messageGetDOMObject",value:function(e){var t=null;try{t=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))}catch(e){}return t}},{key:"messageGetContent",value:function(e){var t="";try{t=this._history.filter((function(t){return t.msgid===e}))[0].content}catch(e){}return t}},{key:"messageSetVisible",value:function(e,t){var s=this.messageGetDOMObject(e);if(!s)return!1;s.style.display=t?"":"none";var i=this._history.find((function(t){return t.msgid===e}));return i&&(i.visible=t),!0}},{key:"messageGetVisible",value:function(e){var t=this._history.find((function(t){return t.msgid===e}));return!!t&&!1!==t.visible}},{key:"messageToggleVisible",value:function(e){var t=this.messageGetVisible(e);return this.messageSetVisible(e,!t)}},{key:"messageSetVisibleByTag",value:function(e,t){var i,a=0,n=s(this._history);try{for(n.s();!(i=n.n()).done;){var r=i.value;r.tags&&r.tags.includes(e)&&(this.messageSetVisible(r.msgid,t),a++)}}catch(e){n.e(e)}finally{n.f()}return a}},{key:"messageGetTags",value:function(e){var t=this._history.find((function(t){return t.msgid===e}));return t&&t.tags?t.tags.slice():[]}},{key:"messageSetTags",value:function(e,t){var s=this._history.find((function(t){return t.msgid===e}));return!!s&&(s.tags=Array.isArray(t)?t.slice():[],!0)}},{key:"messageAppendContent",value:function(e,t){var s=!1;try{var i=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))),a=this._history.filter((function(t){return t.msgid===e}))[0];a.content+=t,a.updatedtime=(new Date).toISOString(),i.querySelector(".quikchat-message-content").innerHTML=this._processContent(a.content),i.classList.remove("quikchat-typing"),s=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageAppend&&this._onMessageAppend(this,e,t)}catch(e){}return s}},{key:"messageReplaceContent",value:function(e,t){var s=!1;try{var i=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))),a=this._history.filter((function(t){return t.msgid===e}))[0];a.content=t,a.updatedtime=(new Date).toISOString(),i.querySelector(".quikchat-message-content").innerHTML=this._processContent(t),i.classList.remove("quikchat-typing"),s=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageReplace&&this._onMessageReplace(this,e,t)}catch(e){}return s}},{key:"messageAddTypingIndicator",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"left",s=this.messageAddFull({content:"",userString:e,align:t,role:"assistant"}),i=this.messageGetDOMObject(s);return i.classList.add("quikchat-typing"),i.querySelector(".quikchat-message-content").innerHTML='<span class="quikchat-typing-dots"><span>.</span><span>.</span><span>.</span></span>',s}},{key:"setMessageFormatter",value:function(e){this._messageFormatter=e}},{key:"setSanitize",value:function(e){this._sanitize=e}},{key:"historyGet",value:function(e,t){return void 0===e?this._history.slice():void 0===t?e<0?this._history.slice(e):this._history.slice(e,e+1):this._history.slice(e,t)}},{key:"historyClear",value:function(){this.msgid=0,this._history=[]}},{key:"historyGetLength",value:function(){return this._history.length}},{key:"historyGetMessage",value:function(e){return e>=0&&e<this._history.length?this._history[e]:{}}},{key:"historyGetMessageContent",value:function(e){return e>=0&&e<this._history.length?this._history[e].content:""}},{key:"historyExport",value:function(){return this._history.map((function(e){return{msgid:e.msgid,content:e.content,userString:e.userString,align:e.align,role:e.role,userID:e.userID,visible:e.visible,tags:e.tags?e.tags.slice():[],timestamp:e.timestamp,updatedtime:e.updatedtime}}))}},{key:"historyImport",value:function(e){this._messagesArea.innerHTML="",this._history=[],this.msgid=0;var t,i=s(e);try{for(i.s();!(t=i.n()).done;){var a=t.value;this.messageAddFull({content:a.content||"",userString:a.userString||"user",align:a.align||"right",role:a.role||"user",userID:a.userID,visible:a.visible,tags:a.tags})}}catch(e){i.e(e)}finally{i.f()}}},{key:"changeTheme",value:function(e){this._chatWidget.classList.remove(this._theme),this._chatWidget.classList.add(e),this._theme=e}},{key:"theme",get:function(){return this._theme}}],a=[{key:"version",value:function(){return{version:"1.2.7",license:"BSD-2",url:"https://github.com/deftio/quikchat"}}},{key:"loremIpsum",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. ";for("number"!=typeof e&&(e=Math.floor(126*Math.random())+25),void 0===t&&(t=Math.floor(446*Math.random())),t%=446;" "===i[t]||/[.,:;!?]/.test(i[t]);)t=(t+1)%446;for(var a=i.substring(t)+i.substring(0,t),n="";e>0;)n+=e<a.length?a.substring(0,e):a,e-=a.length;return" "===n[n.length-1]&&(n=n.substring(0,n.length-1)+"."),s&&(n=n[0].toUpperCase()+n.substring(1)),n}}],i&&t(e.prototype,i),a&&t(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,i,a}();export{o as default};
|
|
2
2
|
//# sourceMappingURL=quikchat.esm.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quikchat.esm.min.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n *\n * @param string or DOM element parentElement\n * @param {*} meta\n */\n constructor(parentElement, onSend = () => { }, options = {}) {\n const defaultOpts = {\n theme: 'quikchat-theme-light',\n trackHistory: true,\n showTimestamps: false,\n titleArea: { title: \"Chat\", show: false, align: \"center\" },\n messagesArea: { alternating: true },\n };\n const meta = { ...defaultOpts, ...options }; // merge options with defaults\n\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for onSend\n this._messageFormatter = meta.messageFormatter || null;\n this._sanitize = meta.sanitize || false;\n this._createWidget();\n // title area\n if (meta.titleArea) {\n this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);\n if (meta.titleArea.show === true) {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n // messages area\n if (meta.messagesArea) {\n this.messagesAreaAlternateColors(meta.messagesArea.alternating);\n }\n // timestamps\n if (meta.showTimestamps) {\n this.messagesAreaShowTimestamps(true);\n }\n // direction (ltr/rtl)\n if (meta.direction) {\n this.setDirection(meta.direction);\n }\n // plumbing\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory !== false;\n this._historyLimit = 10000000;\n this._history = [];\n }\n\n _createWidget() {\n const widgetHTML =\n `\n <div class=\"quikchat-base ${this.theme}\">\n <div class=\"quikchat-title-area\"></div>\n <div class=\"quikchat-messages-wrapper\"><div class=\"quikchat-messages-area\" role=\"log\" aria-live=\"polite\" aria-label=\"Chat messages\"></div><button class=\"quikchat-scroll-bottom\" aria-label=\"Scroll to bottom\"></button></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\" rows=\"1\" aria-label=\"Type a message\"></textarea>\n <button class=\"quikchat-input-send-btn\">Send</button>\n </div>\n </div>\n `;\n\n this._parentElement.innerHTML = widgetHTML;\n this._chatWidget = this._parentElement.querySelector('.quikchat-base');\n this._titleArea = this._chatWidget.querySelector('.quikchat-title-area');\n this._messagesWrapper = this._chatWidget.querySelector('.quikchat-messages-wrapper');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._scrollBottomBtn = this._messagesWrapper.querySelector('.quikchat-scroll-bottom');\n this._inputArea = this._chatWidget.querySelector('.quikchat-input-area');\n this._textEntry = this._inputArea.querySelector('.quikchat-input-textbox');\n this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');\n this.msgid = 0;\n }\n\n /**\n * Attach event listeners to the widget\n */\n _attachEventListeners() {\n this._sendButton.addEventListener('click', () => {\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n });\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n event.preventDefault();\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n }\n });\n\n // Auto-grow textarea\n this._textEntry.addEventListener('input', () => this._autoGrowTextarea());\n\n this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight - 1;\n this._updateScrollBottomBtn();\n });\n\n // Scroll-to-bottom button\n this._scrollBottomBtn.addEventListener('click', () => this.scrollToBottom());\n\n // Ctrl+End to scroll to bottom\n this._chatWidget.addEventListener('keydown', (event) => {\n if (event.ctrlKey && event.key === 'End') {\n event.preventDefault();\n this.scrollToBottom();\n }\n });\n\n // Use ResizeObserver to detect parent container resize\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(() => this._handleContainerResize());\n this._resizeObserver.observe(this._parentElement);\n }\n }\n\n // set the onSend function callback.\n setCallbackOnSend(callback) {\n this._onSend = callback;\n }\n // set a callback for everytime a message is added (listener)\n setCallbackonMessageAdded(callback) {\n this._onMessageAdded = callback;\n }\n setCallbackonMessageAppend(callback) {\n this._onMessageAppend = callback;\n }\n setCallbackonMessageReplace(callback) {\n this._onMessageReplace = callback;\n }\n setCallbackonMessageDelete(callback) {\n this._onMessageDelete = callback;\n }\n\n // Public methods\n titleAreaToggle() {\n if (this._titleArea.style.display === 'none') {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n }\n\n titleAreaSetContents(title, align = 'center') {\n this._titleArea.innerHTML = title;\n this._titleArea.style.textAlign = align;\n }\n\n titleAreaGetContents() {\n return this._titleArea.innerHTML;\n }\n\n inputAreaToggle() {\n if (this._inputArea.style.display === 'none') {\n this.inputAreaShow();\n } else {\n this.inputAreaHide();\n }\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n }\n\n inputAreaSetEnabled(enabled) {\n this._textEntry.disabled = !enabled;\n this._sendButton.disabled = !enabled;\n }\n\n inputAreaSetButtonText(text) {\n this._sendButton.textContent = text;\n }\n\n inputAreaGetButtonText() {\n return this._sendButton.textContent;\n }\n\n setDirection(dir) {\n const d = dir === 'rtl' ? 'rtl' : 'ltr';\n this._chatWidget.setAttribute('dir', d);\n if (d === 'rtl') {\n this._chatWidget.classList.add('quikchat-rtl');\n } else {\n this._chatWidget.classList.remove('quikchat-rtl');\n }\n }\n\n getDirection() {\n return this._chatWidget.getAttribute('dir') || 'ltr';\n }\n\n _handleContainerResize() {\n // Layout is handled by CSS flexbox — no JS height calculation needed.\n // This hook exists for future use or custom resize callbacks.\n }\n\n scrollToBottom() {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n this.userScrolledUp = false;\n this._updateScrollBottomBtn();\n }\n\n _updateScrollBottomBtn() {\n if (this.userScrolledUp) {\n this._scrollBottomBtn.classList.add('quikchat-scroll-bottom-visible');\n } else {\n this._scrollBottomBtn.classList.remove('quikchat-scroll-bottom-visible');\n }\n }\n\n _autoGrowTextarea() {\n const el = this._textEntry;\n el.style.height = 'auto';\n const maxHeight = 120;\n el.style.height = Math.min(el.scrollHeight, maxHeight) + 'px';\n el.style.overflowY = el.scrollHeight > maxHeight ? 'auto' : 'hidden';\n }\n\n _formatTimestamp(isoString) {\n const d = new Date(isoString);\n const h = d.getHours();\n const m = String(d.getMinutes()).padStart(2, '0');\n const ampm = h >= 12 ? 'PM' : 'AM';\n const h12 = h % 12 || 12;\n return h12 + ':' + m + ' ' + ampm;\n }\n\n messagesAreaShowTimestamps(show) {\n if (show) {\n this._messagesArea.classList.add('quikchat-show-timestamps');\n } else {\n this._messagesArea.classList.remove('quikchat-show-timestamps');\n }\n }\n\n messagesAreaShowTimestampsGet() {\n return this._messagesArea.classList.contains('quikchat-show-timestamps');\n }\n\n messagesAreaShowTimestampsToggle() {\n this._messagesArea.classList.toggle('quikchat-show-timestamps');\n }\n\n _escapeHTML(str) {\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n }\n\n _processContent(content) {\n if (this._sanitize === true) {\n content = this._escapeHTML(content);\n } else if (typeof this._sanitize === 'function') {\n content = this._sanitize(content);\n }\n if (this._messageFormatter) {\n content = this._messageFormatter(content);\n }\n return content;\n }\n\n //messagesArea functions\n messagesAreaAlternateColors(alt = true) {\n if (alt) {\n this._messagesArea.classList.add('quikchat-messages-area-alt');\n }\n else {\n this._messagesArea.classList.remove('quikchat-messages-area-alt');\n }\n return alt === true;\n }\n messagesAreaAlternateColorsToggle() {\n this._messagesArea.classList.toggle('quikchat-messages-area-alt');\n }\n messagesAreaAlternateColorsGet() {\n return this._messagesArea.classList.contains('quikchat-messages-area-alt');\n }\n // message functions\n messageAddFull(input = { content: \"\", userString: \"user\", align: \"right\", role: \"user\", userID: -1 }) {\n const msgid = this.msgid;\n const messageDiv = document.createElement('div');\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n messageDiv.classList.add('quikchat-message', msgidClass);\n messageDiv.classList.add('quikchat-role-' + (input.role || 'user'));\n messageDiv.classList.add('quikchat-align-' + (input.align || 'right'));\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n\n // Visibility: default true, hidden messages get display:none\n const visible = input.visible !== false;\n if (!visible) {\n messageDiv.style.display = 'none';\n }\n\n // Tags: array of strings for group-based visibility control\n const tags = Array.isArray(input.tags) ? input.tags.slice() : [];\n\n const userDiv = document.createElement('div');\n userDiv.classList.add('quikchat-user-label');\n userDiv.style.textAlign = input.align;\n userDiv.innerHTML = input.userString;\n\n const contentDiv = document.createElement('div');\n contentDiv.classList.add('quikchat-message-content');\n contentDiv.style.textAlign = input.align;\n contentDiv.innerHTML = this._processContent(input.content);\n\n const timestamp = new Date().toISOString();\n const timestampSpan = document.createElement('span');\n timestampSpan.classList.add('quikchat-timestamp');\n timestampSpan.textContent = this._formatTimestamp(timestamp);\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n messageDiv.appendChild(timestampSpan);\n this._messagesArea.appendChild(messageDiv);\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n\n this._textEntry.value = '';\n this._autoGrowTextarea();\n const updatedtime = timestamp;\n\n if (this.trackHistory) {\n this._history.push({ msgid, ...input, visible, tags, timestamp, updatedtime, messageDiv });\n if (this._history.length > this._historyLimit) {\n this._history.shift();\n }\n }\n\n if (this._onMessageAdded) {\n this._onMessageAdded(this, msgid);\n }\n\n return msgid;\n }\n\n\n messageAddNew(content = \"\", userString = \"user\", align = \"right\", role = \"user\") {\n return this.messageAddFull(\n { content: content, userString: userString, align: align, role: role }\n );\n }\n messageRemove(n) {\n let success = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n success = true;\n }\n catch (_error) {\n // Message ID not found\n }\n if (success) {\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n if (this._onMessageDelete) {\n this._onMessageDelete(this, n);\n }\n }\n return success;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n }\n catch (_error) {\n // Message ID not found\n }\n return msg;\n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\";\n try {\n content = this._history.filter((item) => item.msgid === n)[0].content;\n }\n catch (_error) {\n // Message ID not found\n }\n return content;\n }\n\n messageSetVisible(n, visible) {\n const msgEl = this.messageGetDOMObject(n);\n if (!msgEl) return false;\n msgEl.style.display = visible ? '' : 'none';\n const item = this._history.find((entry) => entry.msgid === n);\n if (item) item.visible = visible;\n return true;\n }\n\n messageGetVisible(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item ? item.visible !== false : false;\n }\n\n messageToggleVisible(n) {\n const current = this.messageGetVisible(n);\n return this.messageSetVisible(n, !current);\n }\n\n messageSetVisibleByTag(tag, visible) {\n let count = 0;\n for (const item of this._history) {\n if (item.tags && item.tags.includes(tag)) {\n this.messageSetVisible(item.msgid, visible);\n count++;\n }\n }\n return count;\n }\n\n messageGetTags(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item && item.tags ? item.tags.slice() : [];\n }\n\n messageSetTags(n, tags) {\n const item = this._history.find((entry) => entry.msgid === n);\n if (!item) return false;\n item.tags = Array.isArray(tags) ? tags.slice() : [];\n return true;\n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(item.content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageAppend) {\n this._onMessageAppend(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content = content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageReplace) {\n this._onMessageReplace(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n messageAddTypingIndicator(userString = '', align = 'left') {\n const msgid = this.messageAddFull({\n content: '',\n userString: userString,\n align: align,\n role: 'assistant',\n });\n const msgEl = this.messageGetDOMObject(msgid);\n msgEl.classList.add('quikchat-typing');\n const contentDiv = msgEl.querySelector('.quikchat-message-content');\n contentDiv.innerHTML = '<span class=\"quikchat-typing-dots\"><span>.</span><span>.</span><span>.</span></span>';\n return msgid;\n }\n\n setMessageFormatter(formatter) {\n this._messageFormatter = formatter;\n }\n\n setSanitize(sanitize) {\n this._sanitize = sanitize;\n }\n\n // history functions\n /**\n *\n * @param {*} n\n * @param {*} m\n * @returns array of history messages\n */\n historyGet(n, m) {\n if (n === undefined) {\n return this._history.slice();\n }\n if (m === undefined) {\n if (n < 0) {\n return this._history.slice(n);\n }\n return this._history.slice(n, n + 1);\n }\n return this._history.slice(n, m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n }\n\n historyGetLength() {\n return this._history.length;\n }\n\n historyGetMessage(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n];\n }\n return {};\n }\n\n historyGetMessageContent(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n].content;\n }\n return \"\";\n }\n\n historyExport() {\n return this._history.map((item) => ({\n msgid: item.msgid,\n content: item.content,\n userString: item.userString,\n align: item.align,\n role: item.role,\n userID: item.userID,\n visible: item.visible,\n tags: item.tags ? item.tags.slice() : [],\n timestamp: item.timestamp,\n updatedtime: item.updatedtime,\n }));\n }\n\n historyImport(data) {\n // Clear existing messages from DOM and history\n this._messagesArea.innerHTML = '';\n this._history = [];\n this.msgid = 0;\n\n for (const entry of data) {\n this.messageAddFull({\n content: entry.content || '',\n userString: entry.userString || 'user',\n align: entry.align || 'right',\n role: entry.role || 'user',\n userID: entry.userID,\n visible: entry.visible,\n tags: entry.tags,\n });\n }\n }\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static version() {\n return { \"version\": \"1.2.6\", \"license\": \"BSD-2\", \"url\": \"https://github/deftio/quikchat\" };\n }\n\n /**\n * quikchat.loremIpsum() - Generate a simple string of Lorem Ipsum text (sample typographer's text) of numChars in length.\n * borrowed from github.com/deftio/bitwrench.js\n * @param {number} numChars - The number of characters to generate (random btw 25 and 150 if undefined).\n * @param {number} [startSpot=0] - The starting index in the Lorem Ipsum text. If undefined, a random startSpot will be generated.\n * @param {boolean} [startWithCapitalLetter=true] - If true, capitalize the first character or inject a capital letter if the first character isn't a capital letter.\n *\n * @returns {string} A string of Lorem Ipsum text.\n *\n * @example\n * // Returns 200 characters of Lorem Ipsum starting from index 50\n * loremIpsum(200, 50);\n *\n * @example\n * //Returns a 200 Lorem Ipsum characters starting from a random index\n * loremIpsum(200);\n */\n\n static loremIpsum(numChars, startSpot = undefined, startWithCapitalLetter = true) {\n const loremText = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \";\n\n if (typeof numChars !== \"number\") {\n numChars = Math.floor(Math.random() * 126) + 25;\n }\n\n if (startSpot === undefined) {\n startSpot = Math.floor(Math.random() * loremText.length);\n }\n\n startSpot = startSpot % loremText.length;\n\n // Move startSpot to the next non-whitespace and non-punctuation character\n while (loremText[startSpot] === ' ' || /[.,:;!?]/.test(loremText[startSpot])) {\n startSpot = (startSpot + 1) % loremText.length;\n }\n\n const l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\n\n let s = \"\";\n while (numChars > 0) {\n s += numChars < l.length ? l.substring(0, numChars) : l;\n numChars -= l.length;\n }\n\n if (s[s.length - 1] === \" \") {\n s = s.substring(0, s.length - 1) + \".\"; // always end on non-whitespace. \".\" was chosen arbitrarily.\n }\n\n if (startWithCapitalLetter) {\n s = s[0].toUpperCase() + s.substring(1);\n }\n\n return s;\n };\n\n\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","onSend","arguments","length","undefined","options","_classCallCheck","meta","_objectSpread","theme","trackHistory","showTimestamps","titleArea","title","show","align","messagesArea","alternating","document","querySelector","this","_parentElement","_theme","_onSend","_messageFormatter","messageFormatter","_sanitize","sanitize","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","messagesAreaShowTimestamps","direction","setDirection","_attachEventListeners","_historyLimit","_history","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesWrapper","_messagesArea","_scrollBottomBtn","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","text","trim","event","shiftKey","keyCode","preventDefault","_autoGrowTextarea","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","_updateScrollBottomBtn","scrollToBottom","ctrlKey","ResizeObserver","_resizeObserver","_handleContainerResize","observe","callback","_onMessageAdded","_onMessageAppend","_onMessageReplace","_onMessageDelete","style","display","textAlign","inputAreaShow","inputAreaHide","enabled","disabled","textContent","dir","d","setAttribute","classList","add","remove","getAttribute","el","height","Math","min","overflowY","isoString","Date","h","getHours","String","getMinutes","padStart","contains","toggle","str","div","createElement","content","_escapeHTML","alt","input","userString","role","userID","messageDiv","msgidClass","children","visible","tags","Array","isArray","slice","userDiv","contentDiv","_processContent","timestamp","toISOString","timestampSpan","_formatTimestamp","appendChild","updatedtime","push","shift","messageAddFull","n","success","removeChild","_error","splice","findIndex","item","msg","filter","msgEl","messageGetDOMObject","find","entry","current","messageGetVisible","messageSetVisible","tag","_step","count","_iterator","_createForOfIteratorHelper","s","done","includes","err","e","f","formatter","m","map","data","_step2","_iterator2","newTheme","get","version","license","url","numChars","startSpot","startWithCapitalLetter","loremText","floor","random","test","l","substring","toUpperCase"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quikchat.esm.min.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n *\n * @param string or DOM element parentElement\n * @param {*} meta\n */\n constructor(parentElement, onSend = () => { }, options = {}) {\n const defaultOpts = {\n theme: 'quikchat-theme-light',\n trackHistory: true,\n showTimestamps: false,\n titleArea: { title: \"Chat\", show: false, align: \"center\" },\n messagesArea: { alternating: true },\n };\n const meta = { ...defaultOpts, ...options }; // merge options with defaults\n\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for onSend\n this._messageFormatter = meta.messageFormatter || null;\n this._sanitize = meta.sanitize || false;\n this._createWidget();\n // title area\n if (meta.titleArea) {\n this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);\n if (meta.titleArea.show === true) {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n // messages area\n if (meta.messagesArea) {\n this.messagesAreaAlternateColors(meta.messagesArea.alternating);\n }\n // timestamps\n if (meta.showTimestamps) {\n this.messagesAreaShowTimestamps(true);\n }\n // direction (ltr/rtl)\n if (meta.direction) {\n this.setDirection(meta.direction);\n }\n // plumbing\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory !== false;\n this._historyLimit = 10000000;\n this._history = [];\n }\n\n _createWidget() {\n const widgetHTML =\n `\n <div class=\"quikchat-base ${this.theme}\">\n <div class=\"quikchat-title-area\"></div>\n <div class=\"quikchat-messages-wrapper\"><div class=\"quikchat-messages-area\" role=\"log\" aria-live=\"polite\" aria-label=\"Chat messages\"></div><button class=\"quikchat-scroll-bottom\" aria-label=\"Scroll to bottom\"></button></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\" rows=\"1\" aria-label=\"Type a message\"></textarea>\n <button class=\"quikchat-input-send-btn\">Send</button>\n </div>\n </div>\n `;\n\n this._parentElement.innerHTML = widgetHTML;\n this._chatWidget = this._parentElement.querySelector('.quikchat-base');\n this._titleArea = this._chatWidget.querySelector('.quikchat-title-area');\n this._messagesWrapper = this._chatWidget.querySelector('.quikchat-messages-wrapper');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._scrollBottomBtn = this._messagesWrapper.querySelector('.quikchat-scroll-bottom');\n this._inputArea = this._chatWidget.querySelector('.quikchat-input-area');\n this._textEntry = this._inputArea.querySelector('.quikchat-input-textbox');\n this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');\n this.msgid = 0;\n }\n\n /**\n * Attach event listeners to the widget\n */\n _attachEventListeners() {\n this._sendButton.addEventListener('click', () => {\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n });\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n event.preventDefault();\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n }\n });\n\n // Auto-grow textarea\n this._textEntry.addEventListener('input', () => this._autoGrowTextarea());\n\n this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight - 1;\n this._updateScrollBottomBtn();\n });\n\n // Scroll-to-bottom button\n this._scrollBottomBtn.addEventListener('click', () => this.scrollToBottom());\n\n // Ctrl+End to scroll to bottom\n this._chatWidget.addEventListener('keydown', (event) => {\n if (event.ctrlKey && event.key === 'End') {\n event.preventDefault();\n this.scrollToBottom();\n }\n });\n\n // Use ResizeObserver to detect parent container resize\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(() => this._handleContainerResize());\n this._resizeObserver.observe(this._parentElement);\n }\n }\n\n // set the onSend function callback.\n setCallbackOnSend(callback) {\n this._onSend = callback;\n }\n // set a callback for everytime a message is added (listener)\n setCallbackonMessageAdded(callback) {\n this._onMessageAdded = callback;\n }\n setCallbackonMessageAppend(callback) {\n this._onMessageAppend = callback;\n }\n setCallbackonMessageReplace(callback) {\n this._onMessageReplace = callback;\n }\n setCallbackonMessageDelete(callback) {\n this._onMessageDelete = callback;\n }\n\n // Public methods\n titleAreaToggle() {\n if (this._titleArea.style.display === 'none') {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n }\n\n titleAreaSetContents(title, align = 'center') {\n this._titleArea.innerHTML = title;\n this._titleArea.style.textAlign = align;\n }\n\n titleAreaGetContents() {\n return this._titleArea.innerHTML;\n }\n\n inputAreaToggle() {\n if (this._inputArea.style.display === 'none') {\n this.inputAreaShow();\n } else {\n this.inputAreaHide();\n }\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n }\n\n inputAreaSetEnabled(enabled) {\n this._textEntry.disabled = !enabled;\n this._sendButton.disabled = !enabled;\n }\n\n inputAreaSetButtonText(text) {\n this._sendButton.textContent = text;\n }\n\n inputAreaGetButtonText() {\n return this._sendButton.textContent;\n }\n\n setDirection(dir) {\n const d = dir === 'rtl' ? 'rtl' : 'ltr';\n this._chatWidget.setAttribute('dir', d);\n if (d === 'rtl') {\n this._chatWidget.classList.add('quikchat-rtl');\n } else {\n this._chatWidget.classList.remove('quikchat-rtl');\n }\n }\n\n getDirection() {\n return this._chatWidget.getAttribute('dir') || 'ltr';\n }\n\n _handleContainerResize() {\n // Layout is handled by CSS flexbox — no JS height calculation needed.\n // This hook exists for future use or custom resize callbacks.\n }\n\n scrollToBottom() {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n this.userScrolledUp = false;\n this._updateScrollBottomBtn();\n }\n\n _updateScrollBottomBtn() {\n if (this.userScrolledUp) {\n this._scrollBottomBtn.classList.add('quikchat-scroll-bottom-visible');\n } else {\n this._scrollBottomBtn.classList.remove('quikchat-scroll-bottom-visible');\n }\n }\n\n _autoGrowTextarea() {\n const el = this._textEntry;\n el.style.height = 'auto';\n const maxHeight = 120;\n el.style.height = Math.min(el.scrollHeight, maxHeight) + 'px';\n el.style.overflowY = el.scrollHeight > maxHeight ? 'auto' : 'hidden';\n }\n\n _formatTimestamp(isoString) {\n const d = new Date(isoString);\n const h = d.getHours();\n const m = String(d.getMinutes()).padStart(2, '0');\n const ampm = h >= 12 ? 'PM' : 'AM';\n const h12 = h % 12 || 12;\n return h12 + ':' + m + ' ' + ampm;\n }\n\n messagesAreaShowTimestamps(show) {\n if (show) {\n this._messagesArea.classList.add('quikchat-show-timestamps');\n } else {\n this._messagesArea.classList.remove('quikchat-show-timestamps');\n }\n }\n\n messagesAreaShowTimestampsGet() {\n return this._messagesArea.classList.contains('quikchat-show-timestamps');\n }\n\n messagesAreaShowTimestampsToggle() {\n this._messagesArea.classList.toggle('quikchat-show-timestamps');\n }\n\n _escapeHTML(str) {\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n }\n\n _processContent(content) {\n if (this._sanitize === true) {\n content = this._escapeHTML(content);\n } else if (typeof this._sanitize === 'function') {\n content = this._sanitize(content);\n }\n if (this._messageFormatter) {\n content = this._messageFormatter(content);\n }\n return content;\n }\n\n //messagesArea functions\n messagesAreaAlternateColors(alt = true) {\n if (alt) {\n this._messagesArea.classList.add('quikchat-messages-area-alt');\n }\n else {\n this._messagesArea.classList.remove('quikchat-messages-area-alt');\n }\n return alt === true;\n }\n messagesAreaAlternateColorsToggle() {\n this._messagesArea.classList.toggle('quikchat-messages-area-alt');\n }\n messagesAreaAlternateColorsGet() {\n return this._messagesArea.classList.contains('quikchat-messages-area-alt');\n }\n // message functions\n messageAddFull(input = { content: \"\", userString: \"user\", align: \"right\", role: \"user\", userID: -1 }) {\n const msgid = this.msgid;\n const messageDiv = document.createElement('div');\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n messageDiv.classList.add('quikchat-message', msgidClass);\n messageDiv.classList.add('quikchat-role-' + (input.role || 'user'));\n messageDiv.classList.add('quikchat-align-' + (input.align || 'right'));\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n\n // Visibility: default true, hidden messages get display:none\n const visible = input.visible !== false;\n if (!visible) {\n messageDiv.style.display = 'none';\n }\n\n // Tags: array of strings for group-based visibility control\n const tags = Array.isArray(input.tags) ? input.tags.slice() : [];\n\n const userDiv = document.createElement('div');\n userDiv.classList.add('quikchat-user-label');\n userDiv.style.textAlign = input.align;\n userDiv.innerHTML = input.userString;\n\n const contentDiv = document.createElement('div');\n contentDiv.classList.add('quikchat-message-content');\n contentDiv.style.textAlign = input.align;\n contentDiv.innerHTML = this._processContent(input.content);\n\n const timestamp = new Date().toISOString();\n const timestampSpan = document.createElement('span');\n timestampSpan.classList.add('quikchat-timestamp');\n timestampSpan.textContent = this._formatTimestamp(timestamp);\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n messageDiv.appendChild(timestampSpan);\n this._messagesArea.appendChild(messageDiv);\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n\n this._textEntry.value = '';\n this._autoGrowTextarea();\n const updatedtime = timestamp;\n\n if (this.trackHistory) {\n this._history.push({ msgid, ...input, visible, tags, timestamp, updatedtime, messageDiv });\n if (this._history.length > this._historyLimit) {\n this._history.shift();\n }\n }\n\n if (this._onMessageAdded) {\n this._onMessageAdded(this, msgid);\n }\n\n return msgid;\n }\n\n\n messageAddNew(content = \"\", userString = \"user\", align = \"right\", role = \"user\") {\n return this.messageAddFull(\n { content: content, userString: userString, align: align, role: role }\n );\n }\n messageRemove(n) {\n let success = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n success = true;\n }\n catch (_error) {\n // Message ID not found\n }\n if (success) {\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n if (this._onMessageDelete) {\n this._onMessageDelete(this, n);\n }\n }\n return success;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n }\n catch (_error) {\n // Message ID not found\n }\n return msg;\n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\";\n try {\n content = this._history.filter((item) => item.msgid === n)[0].content;\n }\n catch (_error) {\n // Message ID not found\n }\n return content;\n }\n\n messageSetVisible(n, visible) {\n const msgEl = this.messageGetDOMObject(n);\n if (!msgEl) return false;\n msgEl.style.display = visible ? '' : 'none';\n const item = this._history.find((entry) => entry.msgid === n);\n if (item) item.visible = visible;\n return true;\n }\n\n messageGetVisible(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item ? item.visible !== false : false;\n }\n\n messageToggleVisible(n) {\n const current = this.messageGetVisible(n);\n return this.messageSetVisible(n, !current);\n }\n\n messageSetVisibleByTag(tag, visible) {\n let count = 0;\n for (const item of this._history) {\n if (item.tags && item.tags.includes(tag)) {\n this.messageSetVisible(item.msgid, visible);\n count++;\n }\n }\n return count;\n }\n\n messageGetTags(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item && item.tags ? item.tags.slice() : [];\n }\n\n messageSetTags(n, tags) {\n const item = this._history.find((entry) => entry.msgid === n);\n if (!item) return false;\n item.tags = Array.isArray(tags) ? tags.slice() : [];\n return true;\n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(item.content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageAppend) {\n this._onMessageAppend(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content = content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageReplace) {\n this._onMessageReplace(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n messageAddTypingIndicator(userString = '', align = 'left') {\n const msgid = this.messageAddFull({\n content: '',\n userString: userString,\n align: align,\n role: 'assistant',\n });\n const msgEl = this.messageGetDOMObject(msgid);\n msgEl.classList.add('quikchat-typing');\n const contentDiv = msgEl.querySelector('.quikchat-message-content');\n contentDiv.innerHTML = '<span class=\"quikchat-typing-dots\"><span>.</span><span>.</span><span>.</span></span>';\n return msgid;\n }\n\n setMessageFormatter(formatter) {\n this._messageFormatter = formatter;\n }\n\n setSanitize(sanitize) {\n this._sanitize = sanitize;\n }\n\n // history functions\n /**\n *\n * @param {*} n\n * @param {*} m\n * @returns array of history messages\n */\n historyGet(n, m) {\n if (n === undefined) {\n return this._history.slice();\n }\n if (m === undefined) {\n if (n < 0) {\n return this._history.slice(n);\n }\n return this._history.slice(n, n + 1);\n }\n return this._history.slice(n, m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n }\n\n historyGetLength() {\n return this._history.length;\n }\n\n historyGetMessage(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n];\n }\n return {};\n }\n\n historyGetMessageContent(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n].content;\n }\n return \"\";\n }\n\n historyExport() {\n return this._history.map((item) => ({\n msgid: item.msgid,\n content: item.content,\n userString: item.userString,\n align: item.align,\n role: item.role,\n userID: item.userID,\n visible: item.visible,\n tags: item.tags ? item.tags.slice() : [],\n timestamp: item.timestamp,\n updatedtime: item.updatedtime,\n }));\n }\n\n historyImport(data) {\n // Clear existing messages from DOM and history\n this._messagesArea.innerHTML = '';\n this._history = [];\n this.msgid = 0;\n\n for (const entry of data) {\n this.messageAddFull({\n content: entry.content || '',\n userString: entry.userString || 'user',\n align: entry.align || 'right',\n role: entry.role || 'user',\n userID: entry.userID,\n visible: entry.visible,\n tags: entry.tags,\n });\n }\n }\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static version() {\n return { \"version\": \"1.2.7\", \"license\": \"BSD-2\", \"url\": \"https://github.com/deftio/quikchat\" };\n }\n\n /**\n * quikchat.loremIpsum() - Generate a simple string of Lorem Ipsum text (sample typographer's text) of numChars in length.\n * borrowed from github.com/deftio/bitwrench.js\n * @param {number} numChars - The number of characters to generate (random btw 25 and 150 if undefined).\n * @param {number} [startSpot=0] - The starting index in the Lorem Ipsum text. If undefined, a random startSpot will be generated.\n * @param {boolean} [startWithCapitalLetter=true] - If true, capitalize the first character or inject a capital letter if the first character isn't a capital letter.\n *\n * @returns {string} A string of Lorem Ipsum text.\n *\n * @example\n * // Returns 200 characters of Lorem Ipsum starting from index 50\n * loremIpsum(200, 50);\n *\n * @example\n * //Returns a 200 Lorem Ipsum characters starting from a random index\n * loremIpsum(200);\n */\n\n static loremIpsum(numChars, startSpot = undefined, startWithCapitalLetter = true) {\n const loremText = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \";\n\n if (typeof numChars !== \"number\") {\n numChars = Math.floor(Math.random() * 126) + 25;\n }\n\n if (startSpot === undefined) {\n startSpot = Math.floor(Math.random() * loremText.length);\n }\n\n startSpot = startSpot % loremText.length;\n\n // Move startSpot to the next non-whitespace and non-punctuation character\n while (loremText[startSpot] === ' ' || /[.,:;!?]/.test(loremText[startSpot])) {\n startSpot = (startSpot + 1) % loremText.length;\n }\n\n const l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\n\n let s = \"\";\n while (numChars > 0) {\n s += numChars < l.length ? l.substring(0, numChars) : l;\n numChars -= l.length;\n }\n\n if (s[s.length - 1] === \" \") {\n s = s.substring(0, s.length - 1) + \".\"; // always end on non-whitespace. \".\" was chosen arbitrarily.\n }\n\n if (startWithCapitalLetter) {\n s = s[0].toUpperCase() + s.substring(1);\n }\n\n return s;\n };\n\n\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","onSend","arguments","length","undefined","options","_classCallCheck","meta","_objectSpread","theme","trackHistory","showTimestamps","titleArea","title","show","align","messagesArea","alternating","document","querySelector","this","_parentElement","_theme","_onSend","_messageFormatter","messageFormatter","_sanitize","sanitize","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","messagesAreaShowTimestamps","direction","setDirection","_attachEventListeners","_historyLimit","_history","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesWrapper","_messagesArea","_scrollBottomBtn","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","text","trim","event","shiftKey","keyCode","preventDefault","_autoGrowTextarea","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","_updateScrollBottomBtn","scrollToBottom","ctrlKey","ResizeObserver","_resizeObserver","_handleContainerResize","observe","callback","_onMessageAdded","_onMessageAppend","_onMessageReplace","_onMessageDelete","style","display","textAlign","inputAreaShow","inputAreaHide","enabled","disabled","textContent","dir","d","setAttribute","classList","add","remove","getAttribute","el","height","Math","min","overflowY","isoString","Date","h","getHours","String","getMinutes","padStart","contains","toggle","str","div","createElement","content","_escapeHTML","alt","input","userString","role","userID","messageDiv","msgidClass","children","visible","tags","Array","isArray","slice","userDiv","contentDiv","_processContent","timestamp","toISOString","timestampSpan","_formatTimestamp","appendChild","updatedtime","push","shift","messageAddFull","n","success","removeChild","_error","splice","findIndex","item","msg","filter","msgEl","messageGetDOMObject","find","entry","current","messageGetVisible","messageSetVisible","tag","_step","count","_iterator","_createForOfIteratorHelper","s","done","includes","err","e","f","formatter","m","map","data","_step2","_iterator2","newTheme","get","version","license","url","numChars","startSpot","startWithCapitalLetter","loremText","floor","random","test","l","substring","toUpperCase"],"mappings":"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"}
|
package/dist/quikchat.umd.js
CHANGED
|
@@ -862,9 +862,9 @@
|
|
|
862
862
|
key: "version",
|
|
863
863
|
value: function version() {
|
|
864
864
|
return {
|
|
865
|
-
"version": "1.2.
|
|
865
|
+
"version": "1.2.7",
|
|
866
866
|
"license": "BSD-2",
|
|
867
|
-
"url": "https://github/deftio/quikchat"
|
|
867
|
+
"url": "https://github.com/deftio/quikchat"
|
|
868
868
|
};
|
|
869
869
|
}
|
|
870
870
|
|