quikchat 1.1.16 → 1.2.4
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 +160 -354
- package/dist/build-manifest.json +157 -0
- package/dist/quikchat-md-full.cjs.js +2742 -0
- package/dist/quikchat-md-full.cjs.js.map +1 -0
- package/dist/quikchat-md-full.cjs.min.js +10 -0
- package/dist/quikchat-md-full.cjs.min.js.map +1 -0
- package/dist/quikchat-md-full.esm.js +2740 -0
- package/dist/quikchat-md-full.esm.js.map +1 -0
- package/dist/quikchat-md-full.esm.min.js +10 -0
- package/dist/quikchat-md-full.esm.min.js.map +1 -0
- package/dist/quikchat-md-full.umd.js +2748 -0
- package/dist/quikchat-md-full.umd.js.map +1 -0
- package/dist/quikchat-md-full.umd.min.js +10 -0
- package/dist/quikchat-md-full.umd.min.js.map +1 -0
- package/dist/quikchat-md.cjs.js +1641 -0
- package/dist/quikchat-md.cjs.js.map +1 -0
- package/dist/quikchat-md.cjs.min.js +8 -0
- package/dist/quikchat-md.cjs.min.js.map +1 -0
- package/dist/quikchat-md.esm.js +1639 -0
- package/dist/quikchat-md.esm.js.map +1 -0
- package/dist/quikchat-md.esm.min.js +8 -0
- package/dist/quikchat-md.esm.min.js.map +1 -0
- package/dist/quikchat-md.umd.js +1647 -0
- package/dist/quikchat-md.umd.js.map +1 -0
- package/dist/quikchat-md.umd.min.js +8 -0
- package/dist/quikchat-md.umd.min.js.map +1 -0
- package/dist/quikchat.cjs.js +449 -1421
- 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.css +753 -226
- package/dist/quikchat.esm.js +449 -1421
- 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.min.css +1 -1
- package/dist/quikchat.umd.js +449 -1421
- 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 +59 -34
- package/dist/quikchat.d.ts +0 -194
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quikchat-md-full.cjs.js","sources":["../src/quikchat.js","../node_modules/quikdown/dist/quikdown_bd.esm.js","../src/quikchat-md-full.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 = parseInt(getComputedStyle(el).getPropertyValue('--quikchat-input-max-height')) || 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.4\", \"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","/**\n * quikdown_bd - Bidirectional Markdown Parser\n * @version 1.1.1\n * @license BSD-2-Clause\n * @copyright DeftIO 2025\n */\n/**\n * quikdown - A minimal markdown parser optimized for chat/LLM output\n * Supports tables, code blocks, lists, and common formatting\n * @param {string} markdown - The markdown source text\n * @param {Object} options - Optional configuration object\n * @param {Function} options.fence_plugin - Custom renderer for fenced code blocks\n * (content, fence_string) => html string\n * @param {boolean} options.inline_styles - If true, uses inline styles instead of classes\n * @param {boolean} options.bidirectional - If true, adds data-qd attributes for source tracking\n * @param {boolean} options.lazy_linefeeds - If true, single newlines become <br> tags\n * @returns {string} - The rendered HTML\n */\n\n// Version will be injected at build time \nconst quikdownVersion = '1.1.1';\n\n// Constants for reuse\nconst CLASS_PREFIX = 'quikdown-';\nconst PLACEHOLDER_CB = '§CB';\nconst PLACEHOLDER_IC = '§IC';\n\n// Escape map at module level\nconst ESC_MAP = {'&':'&','<':'<','>':'>','\"':'"',\"'\":'''};\n\n// Single source of truth for all style definitions - optimized\nconst QUIKDOWN_STYLES = {\n h1: 'font-size:2em;font-weight:600;margin:.67em 0;text-align:left',\n h2: 'font-size:1.5em;font-weight:600;margin:.83em 0',\n h3: 'font-size:1.25em;font-weight:600;margin:1em 0',\n h4: 'font-size:1em;font-weight:600;margin:1.33em 0',\n h5: 'font-size:.875em;font-weight:600;margin:1.67em 0',\n h6: 'font-size:.85em;font-weight:600;margin:2em 0',\n pre: 'background:#f4f4f4;padding:10px;border-radius:4px;overflow-x:auto;margin:1em 0',\n code: 'background:#f0f0f0;padding:2px 4px;border-radius:3px;font-family:monospace',\n blockquote: 'border-left:4px solid #ddd;margin-left:0;padding-left:1em',\n table: 'border-collapse:collapse;width:100%;margin:1em 0',\n th: 'border:1px solid #ddd;padding:8px;background-color:#f2f2f2;font-weight:bold;text-align:left',\n td: 'border:1px solid #ddd;padding:8px;text-align:left',\n hr: 'border:none;border-top:1px solid #ddd;margin:1em 0',\n img: 'max-width:100%;height:auto',\n a: 'color:#06c;text-decoration:underline',\n strong: 'font-weight:bold',\n em: 'font-style:italic',\n del: 'text-decoration:line-through',\n ul: 'margin:.5em 0;padding-left:2em',\n ol: 'margin:.5em 0;padding-left:2em',\n li: 'margin:.25em 0',\n // Task list specific styles\n 'task-item': 'list-style:none',\n 'task-checkbox': 'margin-right:.5em'\n};\n\n// Factory function to create getAttr for a given context\nfunction createGetAttr(inline_styles, styles) {\n return function(tag, additionalStyle = '') {\n if (inline_styles) {\n let style = styles[tag];\n if (!style && !additionalStyle) return '';\n \n // Remove default text-align if we're adding a different alignment\n if (additionalStyle && additionalStyle.includes('text-align') && style && style.includes('text-align')) {\n style = style.replace(/text-align:[^;]+;?/, '').trim();\n if (style && !style.endsWith(';')) style += ';';\n }\n \n /* istanbul ignore next - defensive: additionalStyle without style doesn't occur with current tags */\n const fullStyle = additionalStyle ? (style ? `${style}${additionalStyle}` : additionalStyle) : style;\n return ` style=\"${fullStyle}\"`;\n } else {\n const classAttr = ` class=\"${CLASS_PREFIX}${tag}\"`;\n // Apply inline styles for alignment even when using CSS classes\n if (additionalStyle) {\n return `${classAttr} style=\"${additionalStyle}\"`;\n }\n return classAttr;\n }\n };\n}\n\nfunction quikdown(markdown, options = {}) {\n if (!markdown || typeof markdown !== 'string') {\n return '';\n }\n \n const { fence_plugin, inline_styles = false, bidirectional = false, lazy_linefeeds = false } = options;\n const styles = QUIKDOWN_STYLES; // Use module-level styles\n const getAttr = createGetAttr(inline_styles, styles); // Create getAttr once\n\n // Escape HTML entities to prevent XSS\n function escapeHtml(text) {\n return text.replace(/[&<>\"']/g, m => ESC_MAP[m]);\n }\n \n // Helper to add data-qd attributes for bidirectional support\n const dataQd = bidirectional ? (marker) => ` data-qd=\"${escapeHtml(marker)}\"` : () => '';\n \n // Sanitize URLs to prevent XSS attacks\n function sanitizeUrl(url, allowUnsafe = false) {\n /* istanbul ignore next - defensive programming, regex ensures url is never empty */\n if (!url) return '';\n \n // If unsafe URLs are explicitly allowed, return as-is\n if (allowUnsafe) return url;\n \n const trimmedUrl = url.trim();\n const lowerUrl = trimmedUrl.toLowerCase();\n \n // Block dangerous protocols\n const dangerousProtocols = ['javascript:', 'vbscript:', 'data:'];\n \n for (const protocol of dangerousProtocols) {\n if (lowerUrl.startsWith(protocol)) {\n // Exception: Allow data:image/* for images\n if (protocol === 'data:' && lowerUrl.startsWith('data:image/')) {\n return trimmedUrl;\n }\n // Return safe empty link for dangerous protocols\n return '#';\n }\n }\n \n return trimmedUrl;\n }\n\n // Process the markdown in phases\n let html = markdown;\n \n // Phase 1: Extract and protect code blocks and inline code\n const codeBlocks = [];\n const inlineCodes = [];\n \n // Extract fenced code blocks first (supports both ``` and ~~~)\n // Match paired fences - ``` with ``` and ~~~ with ~~~\n // Fence must be at start of line\n html = html.replace(/^(```|~~~)([^\\n]*)\\n([\\s\\S]*?)^\\1$/gm, (match, fence, lang, code) => {\n const placeholder = `${PLACEHOLDER_CB}${codeBlocks.length}§`;\n \n // Trim the language specification\n const langTrimmed = lang ? lang.trim() : '';\n \n // If custom fence plugin is provided, use it (v1.1.0: object format required)\n if (fence_plugin && fence_plugin.render && typeof fence_plugin.render === 'function') {\n codeBlocks.push({\n lang: langTrimmed,\n code: code.trimEnd(),\n custom: true,\n fence: fence,\n hasReverse: !!fence_plugin.reverse\n });\n } else {\n codeBlocks.push({\n lang: langTrimmed,\n code: escapeHtml(code.trimEnd()),\n custom: false,\n fence: fence\n });\n }\n return placeholder;\n });\n \n // Extract inline code\n html = html.replace(/`([^`]+)`/g, (match, code) => {\n const placeholder = `${PLACEHOLDER_IC}${inlineCodes.length}§`;\n inlineCodes.push(escapeHtml(code));\n return placeholder;\n });\n \n // Now escape HTML in the rest of the content\n html = escapeHtml(html);\n \n // Phase 2: Process block elements\n \n // Process tables\n html = processTable(html, getAttr);\n \n // Process headings (supports optional trailing #'s)\n html = html.replace(/^(#{1,6})\\s+(.+?)\\s*#*$/gm, (match, hashes, content) => {\n const level = hashes.length;\n return `<h${level}${getAttr('h' + level)}${dataQd(hashes)}>${content}</h${level}>`;\n });\n \n // Process blockquotes (must handle escaped > since we already escaped HTML)\n html = html.replace(/^>\\s+(.+)$/gm, `<blockquote${getAttr('blockquote')}>$1</blockquote>`);\n // Merge consecutive blockquotes\n html = html.replace(/<\\/blockquote>\\n<blockquote>/g, '\\n');\n \n // Process horizontal rules (allow trailing spaces)\n html = html.replace(/^---+\\s*$/gm, `<hr${getAttr('hr')}>`);\n \n // Process lists\n html = processLists(html, getAttr, inline_styles, bidirectional);\n \n // Phase 3: Process inline elements\n \n // Images (must come before links, with URL sanitization)\n html = html.replace(/!\\[([^\\]]*)\\]\\(([^)]+)\\)/g, (match, alt, src) => {\n const sanitizedSrc = sanitizeUrl(src, options.allow_unsafe_urls);\n const altAttr = bidirectional && alt ? ` data-qd-alt=\"${escapeHtml(alt)}\"` : '';\n const srcAttr = bidirectional ? ` data-qd-src=\"${escapeHtml(src)}\"` : '';\n return `<img${getAttr('img')} src=\"${sanitizedSrc}\" alt=\"${alt}\"${altAttr}${srcAttr}${dataQd('!')}>`;\n });\n \n // Links (with URL sanitization)\n html = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, (match, text, href) => {\n // Sanitize URL to prevent XSS\n const sanitizedHref = sanitizeUrl(href, options.allow_unsafe_urls);\n const isExternal = /^https?:\\/\\//i.test(sanitizedHref);\n const rel = isExternal ? ' rel=\"noopener noreferrer\"' : '';\n const textAttr = bidirectional ? ` data-qd-text=\"${escapeHtml(text)}\"` : '';\n return `<a${getAttr('a')} href=\"${sanitizedHref}\"${rel}${textAttr}${dataQd('[')}>${text}</a>`;\n });\n \n // Autolinks - convert bare URLs to clickable links\n html = html.replace(/(^|\\s)(https?:\\/\\/[^\\s<]+)/g, (match, prefix, url) => {\n const sanitizedUrl = sanitizeUrl(url, options.allow_unsafe_urls);\n return `${prefix}<a${getAttr('a')} href=\"${sanitizedUrl}\" rel=\"noopener noreferrer\">${url}</a>`;\n });\n \n // Process inline formatting (bold, italic, strikethrough)\n const inlinePatterns = [\n [/\\*\\*(.+?)\\*\\*/g, 'strong', '**'],\n [/__(.+?)__/g, 'strong', '__'],\n [/(?<!\\*)\\*(?!\\*)(.+?)(?<!\\*)\\*(?!\\*)/g, 'em', '*'],\n [/(?<!_)_(?!_)(.+?)(?<!_)_(?!_)/g, 'em', '_'],\n [/~~(.+?)~~/g, 'del', '~~']\n ];\n \n inlinePatterns.forEach(([pattern, tag, marker]) => {\n html = html.replace(pattern, `<${tag}${getAttr(tag)}${dataQd(marker)}>$1</${tag}>`);\n });\n \n // Line breaks\n if (lazy_linefeeds) {\n // Lazy linefeeds: single newline becomes <br> (except between paragraphs and after/before block elements)\n const blocks = [];\n let bi = 0;\n \n // Protect tables and lists \n html = html.replace(/<(table|[uo]l)[^>]*>[\\s\\S]*?<\\/\\1>/g, m => {\n blocks[bi] = m;\n return `§B${bi++}§`;\n });\n \n // Handle paragraphs and block elements\n html = html.replace(/\\n\\n+/g, '§P§')\n // After block elements\n .replace(/(<\\/(?:h[1-6]|blockquote|pre)>)\\n/g, '$1§N§')\n .replace(/(<(?:h[1-6]|blockquote|pre|hr)[^>]*>)\\n/g, '$1§N§')\n // Before block elements \n .replace(/\\n(<(?:h[1-6]|blockquote|pre|hr)[^>]*>)/g, '§N§$1')\n .replace(/\\n(§B\\d+§)/g, '§N§$1')\n .replace(/(§B\\d+§)\\n/g, '$1§N§')\n // Convert remaining newlines\n .replace(/\\n/g, `<br${getAttr('br')}>`)\n // Restore\n .replace(/§N§/g, '\\n')\n .replace(/§P§/g, '</p><p>');\n \n // Restore protected blocks\n blocks.forEach((b, i) => html = html.replace(`§B${i}§`, b));\n \n html = '<p>' + html + '</p>';\n } else {\n // Standard: two spaces at end of line for line breaks\n html = html.replace(/ $/gm, `<br${getAttr('br')}>`);\n \n // Paragraphs (double newlines)\n // Don't add </p> after block elements (they're not in paragraphs)\n html = html.replace(/\\n\\n+/g, (match, offset) => {\n // Check if we're after a block element closing tag\n const before = html.substring(0, offset);\n if (before.match(/<\\/(h[1-6]|blockquote|ul|ol|table|pre|hr)>$/)) {\n return '<p>'; // Just open a new paragraph\n }\n return '</p><p>'; // Normal paragraph break\n });\n html = '<p>' + html + '</p>';\n }\n \n // Clean up empty paragraphs and unwrap block elements\n const cleanupPatterns = [\n [/<p><\\/p>/g, ''],\n [/<p>(<h[1-6][^>]*>)/g, '$1'],\n [/(<\\/h[1-6]>)<\\/p>/g, '$1'],\n [/<p>(<blockquote[^>]*>)/g, '$1'],\n [/(<\\/blockquote>)<\\/p>/g, '$1'],\n [/<p>(<ul[^>]*>|<ol[^>]*>)/g, '$1'],\n [/(<\\/ul>|<\\/ol>)<\\/p>/g, '$1'],\n [/<p>(<hr[^>]*>)<\\/p>/g, '$1'],\n [/<p>(<table[^>]*>)/g, '$1'],\n [/(<\\/table>)<\\/p>/g, '$1'],\n [/<p>(<pre[^>]*>)/g, '$1'],\n [/(<\\/pre>)<\\/p>/g, '$1'],\n [new RegExp(`<p>(${PLACEHOLDER_CB}\\\\d+§)<\\/p>`, 'g'), '$1']\n ];\n \n cleanupPatterns.forEach(([pattern, replacement]) => {\n html = html.replace(pattern, replacement);\n });\n \n // Fix orphaned closing </p> tags after block elements\n // When a paragraph follows a block element, ensure it has opening <p>\n html = html.replace(/(<\\/(?:h[1-6]|blockquote|ul|ol|table|pre|hr)>)\\n([^<])/g, '$1\\n<p>$2');\n \n // Phase 4: Restore code blocks and inline code\n \n // Restore code blocks\n codeBlocks.forEach((block, i) => {\n let replacement;\n \n if (block.custom && fence_plugin && fence_plugin.render) {\n // Use custom fence plugin (v1.1.0: object format with render function)\n replacement = fence_plugin.render(block.code, block.lang);\n \n // If plugin returns undefined, fall back to default rendering\n if (replacement === undefined) {\n const langClass = !inline_styles && block.lang ? ` class=\"language-${block.lang}\"` : '';\n const codeAttr = inline_styles ? getAttr('code') : langClass;\n const langAttr = bidirectional && block.lang ? ` data-qd-lang=\"${escapeHtml(block.lang)}\"` : '';\n const fenceAttr = bidirectional ? ` data-qd-fence=\"${escapeHtml(block.fence)}\"` : '';\n replacement = `<pre${getAttr('pre')}${fenceAttr}${langAttr}><code${codeAttr}>${escapeHtml(block.code)}</code></pre>`;\n } else if (bidirectional) {\n // If bidirectional and plugin provided HTML, add data attributes for roundtrip\n replacement = replacement.replace(/^<(\\w+)/, \n `<$1 data-qd-fence=\"${escapeHtml(block.fence)}\" data-qd-lang=\"${escapeHtml(block.lang)}\" data-qd-source=\"${escapeHtml(block.code)}\"`);\n }\n } else {\n // Default rendering\n const langClass = !inline_styles && block.lang ? ` class=\"language-${block.lang}\"` : '';\n const codeAttr = inline_styles ? getAttr('code') : langClass;\n const langAttr = bidirectional && block.lang ? ` data-qd-lang=\"${escapeHtml(block.lang)}\"` : '';\n const fenceAttr = bidirectional ? ` data-qd-fence=\"${escapeHtml(block.fence)}\"` : '';\n replacement = `<pre${getAttr('pre')}${fenceAttr}${langAttr}><code${codeAttr}>${block.code}</code></pre>`;\n }\n \n const placeholder = `${PLACEHOLDER_CB}${i}§`;\n html = html.replace(placeholder, replacement);\n });\n \n // Restore inline code\n inlineCodes.forEach((code, i) => {\n const placeholder = `${PLACEHOLDER_IC}${i}§`;\n html = html.replace(placeholder, `<code${getAttr('code')}${dataQd('`')}>${code}</code>`);\n });\n \n return html.trim();\n}\n\n/**\n * Process inline markdown formatting\n */\nfunction processInlineMarkdown(text, getAttr) {\n \n // Process inline formatting patterns\n const patterns = [\n [/\\*\\*(.+?)\\*\\*/g, 'strong'],\n [/__(.+?)__/g, 'strong'],\n [/(?<!\\*)\\*(?!\\*)(.+?)(?<!\\*)\\*(?!\\*)/g, 'em'],\n [/(?<!_)_(?!_)(.+?)(?<!_)_(?!_)/g, 'em'],\n [/~~(.+?)~~/g, 'del'],\n [/`([^`]+)`/g, 'code']\n ];\n \n patterns.forEach(([pattern, tag]) => {\n text = text.replace(pattern, `<${tag}${getAttr(tag)}>$1</${tag}>`);\n });\n \n return text;\n}\n\n/**\n * Process markdown tables\n */\nfunction processTable(text, getAttr) {\n const lines = text.split('\\n');\n const result = [];\n let inTable = false;\n let tableLines = [];\n \n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n \n // Check if this line looks like a table row (with or without trailing |)\n if (line.includes('|') && (line.startsWith('|') || /[^\\\\|]/.test(line))) {\n if (!inTable) {\n inTable = true;\n tableLines = [];\n }\n tableLines.push(line);\n } else {\n // Not a table line\n if (inTable) {\n // Process the accumulated table\n const tableHtml = buildTable(tableLines, getAttr);\n if (tableHtml) {\n result.push(tableHtml);\n } else {\n // Not a valid table, restore original lines\n result.push(...tableLines);\n }\n inTable = false;\n tableLines = [];\n }\n result.push(lines[i]);\n }\n }\n \n // Handle table at end of text\n if (inTable && tableLines.length > 0) {\n const tableHtml = buildTable(tableLines, getAttr);\n if (tableHtml) {\n result.push(tableHtml);\n } else {\n result.push(...tableLines);\n }\n }\n \n return result.join('\\n');\n}\n\n/**\n * Build an HTML table from markdown table lines\n */\nfunction buildTable(lines, getAttr) {\n \n if (lines.length < 2) return null;\n \n // Check for separator line (second line should be the separator)\n let separatorIndex = -1;\n for (let i = 1; i < lines.length; i++) {\n // Support separator with or without leading/trailing pipes\n if (/^\\|?[\\s\\-:|]+\\|?$/.test(lines[i]) && lines[i].includes('-')) {\n separatorIndex = i;\n break;\n }\n }\n \n if (separatorIndex === -1) return null;\n \n const headerLines = lines.slice(0, separatorIndex);\n const bodyLines = lines.slice(separatorIndex + 1);\n \n // Parse alignment from separator\n const separator = lines[separatorIndex];\n // Handle pipes at start/end or not\n const separatorCells = separator.trim().replace(/^\\|/, '').replace(/\\|$/, '').split('|');\n const alignments = separatorCells.map(cell => {\n const trimmed = cell.trim();\n if (trimmed.startsWith(':') && trimmed.endsWith(':')) return 'center';\n if (trimmed.endsWith(':')) return 'right';\n return 'left';\n });\n \n let html = `<table${getAttr('table')}>\\n`;\n \n // Build header\n // Note: headerLines will always have length > 0 since separatorIndex starts from 1\n html += `<thead${getAttr('thead')}>\\n`;\n headerLines.forEach(line => {\n html += `<tr${getAttr('tr')}>\\n`;\n // Handle pipes at start/end or not\n const cells = line.trim().replace(/^\\|/, '').replace(/\\|$/, '').split('|');\n cells.forEach((cell, i) => {\n const alignStyle = alignments[i] && alignments[i] !== 'left' ? `text-align:${alignments[i]}` : '';\n const processedCell = processInlineMarkdown(cell.trim(), getAttr);\n html += `<th${getAttr('th', alignStyle)}>${processedCell}</th>\\n`;\n });\n html += '</tr>\\n';\n });\n html += '</thead>\\n';\n \n // Build body\n if (bodyLines.length > 0) {\n html += `<tbody${getAttr('tbody')}>\\n`;\n bodyLines.forEach(line => {\n html += `<tr${getAttr('tr')}>\\n`;\n // Handle pipes at start/end or not\n const cells = line.trim().replace(/^\\|/, '').replace(/\\|$/, '').split('|');\n cells.forEach((cell, i) => {\n const alignStyle = alignments[i] && alignments[i] !== 'left' ? `text-align:${alignments[i]}` : '';\n const processedCell = processInlineMarkdown(cell.trim(), getAttr);\n html += `<td${getAttr('td', alignStyle)}>${processedCell}</td>\\n`;\n });\n html += '</tr>\\n';\n });\n html += '</tbody>\\n';\n }\n \n html += '</table>';\n return html;\n}\n\n/**\n * Process markdown lists (ordered and unordered)\n */\nfunction processLists(text, getAttr, inline_styles, bidirectional) {\n \n const lines = text.split('\\n');\n const result = [];\n let listStack = []; // Track nested lists\n \n // Helper to escape HTML for data-qd attributes\n const escapeHtml = (text) => text.replace(/[&<>\"']/g, m => ({'&':'&','<':'<','>':'>','\"':'"',\"'\":'''})[m]);\n const dataQd = bidirectional ? (marker) => ` data-qd=\"${escapeHtml(marker)}\"` : () => '';\n \n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const match = line.match(/^(\\s*)([*\\-+]|\\d+\\.)\\s+(.+)$/);\n \n if (match) {\n const [, indent, marker, content] = match;\n const level = Math.floor(indent.length / 2);\n const isOrdered = /^\\d+\\./.test(marker);\n const listType = isOrdered ? 'ol' : 'ul';\n \n // Check for task list items\n let listItemContent = content;\n let taskListClass = '';\n const taskMatch = content.match(/^\\[([x ])\\]\\s+(.*)$/i);\n if (taskMatch && !isOrdered) {\n const [, checked, taskContent] = taskMatch;\n const isChecked = checked.toLowerCase() === 'x';\n const checkboxAttr = inline_styles \n ? ' style=\"margin-right:.5em\"' \n : ` class=\"${CLASS_PREFIX}task-checkbox\"`;\n listItemContent = `<input type=\"checkbox\"${checkboxAttr}${isChecked ? ' checked' : ''} disabled> ${taskContent}`;\n taskListClass = inline_styles ? ' style=\"list-style:none\"' : ` class=\"${CLASS_PREFIX}task-item\"`;\n }\n \n // Close deeper levels\n while (listStack.length > level + 1) {\n const list = listStack.pop();\n result.push(`</${list.type}>`);\n }\n \n // Open new level if needed\n if (listStack.length === level) {\n // Need to open a new list\n listStack.push({ type: listType, level });\n result.push(`<${listType}${getAttr(listType)}>`);\n } else if (listStack.length === level + 1) {\n // Check if we need to switch list type\n const currentList = listStack[listStack.length - 1];\n if (currentList.type !== listType) {\n result.push(`</${currentList.type}>`);\n listStack.pop();\n listStack.push({ type: listType, level });\n result.push(`<${listType}${getAttr(listType)}>`);\n }\n }\n \n const liAttr = taskListClass || getAttr('li');\n result.push(`<li${liAttr}${dataQd(marker)}>${listItemContent}</li>`);\n } else {\n // Not a list item, close all lists\n while (listStack.length > 0) {\n const list = listStack.pop();\n result.push(`</${list.type}>`);\n }\n result.push(line);\n }\n }\n \n // Close any remaining lists\n while (listStack.length > 0) {\n const list = listStack.pop();\n result.push(`</${list.type}>`);\n }\n \n return result.join('\\n');\n}\n\n/**\n * Emit CSS styles for quikdown elements\n * @param {string} prefix - Optional class prefix (default: 'quikdown-')\n * @param {string} theme - Optional theme: 'light' (default) or 'dark'\n * @returns {string} CSS string with quikdown styles\n */\nquikdown.emitStyles = function(prefix = 'quikdown-', theme = 'light') {\n const styles = QUIKDOWN_STYLES;\n \n // Define theme color overrides\n const themeOverrides = {\n dark: {\n '#f4f4f4': '#2a2a2a', // pre background\n '#f0f0f0': '#2a2a2a', // code background\n '#f2f2f2': '#2a2a2a', // th background\n '#ddd': '#3a3a3a', // borders\n '#06c': '#6db3f2', // links\n _textColor: '#e0e0e0'\n },\n light: {\n _textColor: '#333' // Explicit text color for light theme\n }\n };\n \n let css = '';\n for (const [tag, style] of Object.entries(styles)) {\n let themedStyle = style;\n \n // Apply theme overrides if dark theme\n if (theme === 'dark' && themeOverrides.dark) {\n // Replace colors\n for (const [oldColor, newColor] of Object.entries(themeOverrides.dark)) {\n if (!oldColor.startsWith('_')) {\n themedStyle = themedStyle.replace(new RegExp(oldColor, 'g'), newColor);\n }\n }\n \n // Add text color for certain elements in dark theme\n const needsTextColor = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'td', 'li', 'blockquote'];\n if (needsTextColor.includes(tag)) {\n themedStyle += `;color:${themeOverrides.dark._textColor}`;\n }\n } else if (theme === 'light' && themeOverrides.light) {\n // Add explicit text color for light theme elements too\n const needsTextColor = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'td', 'li', 'blockquote'];\n if (needsTextColor.includes(tag)) {\n themedStyle += `;color:${themeOverrides.light._textColor}`;\n }\n }\n \n css += `.${prefix}${tag} { ${themedStyle} }\\n`;\n }\n \n return css;\n};\n\n/**\n * Configure quikdown with options and return a function\n * @param {Object} options - Configuration options\n * @returns {Function} Configured quikdown function\n */\nquikdown.configure = function(options) {\n return function(markdown) {\n return quikdown(markdown, options);\n };\n};\n\n/**\n * Version information\n */\nquikdown.version = quikdownVersion;\n\n// Export for both CommonJS and ES6\n/* istanbul ignore next */\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = quikdown;\n}\n\n// For browser global\n/* istanbul ignore next */\nif (typeof window !== 'undefined') {\n window.quikdown = quikdown;\n}\n\n/**\n * quikdown_bd - Bidirectional markdown/HTML converter\n * Extends core quikdown with HTML→Markdown conversion\n * \n * Uses data-qd attributes to preserve original markdown syntax\n * Enables HTML→Markdown conversion for quikdown-generated HTML\n */\n\n\n/**\n * Create bidirectional version by extending quikdown\n * This wraps quikdown and adds the toMarkdown method\n */\nfunction quikdown_bd(markdown, options = {}) {\n // Use core quikdown with bidirectional flag to add data-qd attributes\n return quikdown(markdown, { ...options, bidirectional: true });\n}\n\n// Copy all properties and methods from quikdown (including version)\nObject.keys(quikdown).forEach(key => {\n quikdown_bd[key] = quikdown[key];\n});\n\n// Add the toMarkdown method for HTML→Markdown conversion\nquikdown_bd.toMarkdown = function(htmlOrElement, options = {}) {\n // Accept either HTML string or DOM element\n let container;\n if (typeof htmlOrElement === 'string') {\n container = document.createElement('div');\n container.innerHTML = htmlOrElement;\n } else if (htmlOrElement instanceof Element) {\n /* istanbul ignore next - browser-only code path, not testable in jsdom */\n container = htmlOrElement;\n } else {\n return '';\n }\n \n // Walk the DOM tree and reconstruct markdown\n function walkNode(node, parentContext = {}) {\n if (node.nodeType === Node.TEXT_NODE) {\n // Return text content, preserving whitespace where needed\n return node.textContent;\n }\n \n if (node.nodeType !== Node.ELEMENT_NODE) {\n return '';\n }\n \n const tag = node.tagName.toLowerCase();\n const dataQd = node.getAttribute('data-qd');\n \n // Process children with context\n let childContent = '';\n for (let child of node.childNodes) {\n childContent += walkNode(child, { parentTag: tag, ...parentContext });\n }\n \n // Determine markdown based on element and attributes\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n const level = parseInt(tag[1]);\n const prefix = dataQd || '#'.repeat(level);\n return `${prefix} ${childContent.trim()}\\n\\n`;\n \n case 'strong':\n case 'b':\n if (!childContent) return ''; // Don't add markers for empty content\n const boldMarker = dataQd || '**';\n return `${boldMarker}${childContent}${boldMarker}`;\n \n case 'em':\n case 'i':\n if (!childContent) return ''; // Don't add markers for empty content\n const emMarker = dataQd || '*';\n return `${emMarker}${childContent}${emMarker}`;\n \n case 'del':\n case 's':\n case 'strike':\n if (!childContent) return ''; // Don't add markers for empty content\n const delMarker = dataQd || '~~';\n return `${delMarker}${childContent}${delMarker}`;\n \n case 'code':\n // Note: code inside pre is handled directly by the pre case using querySelector\n if (!childContent) return ''; // Don't add markers for empty content\n const codeMarker = dataQd || '`';\n return `${codeMarker}${childContent}${codeMarker}`;\n \n case 'pre':\n const fence = node.getAttribute('data-qd-fence') || dataQd || '```';\n const lang = node.getAttribute('data-qd-lang') || '';\n \n // Check if this was created by a fence plugin with reverse handler\n if (options.fence_plugin && options.fence_plugin.reverse && lang) {\n try {\n const result = options.fence_plugin.reverse(node);\n if (result && result.content) {\n const fenceMarker = result.fence || fence;\n const langStr = result.lang || lang;\n return `${fenceMarker}${langStr}\\n${result.content}\\n${fenceMarker}\\n\\n`;\n }\n } catch (err) {\n console.warn('Fence reverse handler error:', err);\n // Fall through to default handling\n }\n }\n \n // Fallback: use data-qd-source if available\n const source = node.getAttribute('data-qd-source');\n if (source) {\n return `${fence}${lang}\\n${source}\\n${fence}\\n\\n`;\n }\n \n // Final fallback: extract text content\n const codeEl = node.querySelector('code');\n const codeContent = codeEl ? codeEl.textContent : childContent;\n return `${fence}${lang}\\n${codeContent.trimEnd()}\\n${fence}\\n\\n`;\n \n case 'blockquote':\n const quoteMarker = dataQd || '>';\n const lines = childContent.trim().split('\\n');\n return lines.map(line => `${quoteMarker} ${line}`).join('\\n') + '\\n\\n';\n \n case 'hr':\n const hrMarker = dataQd || '---';\n return `${hrMarker}\\n\\n`;\n \n case 'br':\n const brMarker = dataQd || ' ';\n return `${brMarker}\\n`;\n \n case 'a':\n const linkText = node.getAttribute('data-qd-text') || childContent.trim();\n const href = node.getAttribute('href') || '';\n // Check for autolinks\n if (linkText === href && !dataQd) {\n return `<${href}>`;\n }\n return `[${linkText}](${href})`;\n \n case 'img':\n const alt = node.getAttribute('data-qd-alt') || node.getAttribute('alt') || '';\n const src = node.getAttribute('data-qd-src') || node.getAttribute('src') || '';\n const imgMarker = dataQd || '!';\n return `${imgMarker}[${alt}](${src})`;\n \n case 'ul':\n case 'ol':\n return walkList(node, tag === 'ol') + '\\n';\n \n case 'li':\n // Handled by list processor\n return childContent;\n \n case 'table':\n return walkTable(node) + '\\n\\n';\n \n case 'p':\n // Check if it's actually a paragraph or just a wrapper\n if (childContent.trim()) {\n // Check if paragraph ends with a line that's just whitespace\n // This indicates an intentional blank line before the next element\n const lines = childContent.split('\\n');\n let content = childContent.trim();\n \n // If the last line(s) are just whitespace, preserve one blank line\n if (lines.length > 1) {\n let trailingBlankLines = 0;\n for (let i = lines.length - 1; i >= 0; i--) {\n if (lines[i].trim() === '') {\n trailingBlankLines++;\n } else {\n break;\n }\n }\n if (trailingBlankLines > 0) {\n // Add a line with just a space, followed by single newline\n // The \\n\\n will be added below for paragraph separation\n content = content + '\\n ';\n // Only add one newline since we're preserving the space line\n return content + '\\n';\n }\n }\n \n return content + '\\n\\n';\n }\n return '';\n \n case 'div':\n // Check if this was created by a fence plugin with reverse handler\n const divLang = node.getAttribute('data-qd-lang');\n const divFence = node.getAttribute('data-qd-fence');\n \n if (divLang && options.fence_plugin && options.fence_plugin.reverse) {\n try {\n const result = options.fence_plugin.reverse(node);\n if (result && result.content) {\n const fenceMarker = result.fence || divFence || '```';\n const langStr = result.lang || divLang;\n return `${fenceMarker}${langStr}\\n${result.content}\\n${fenceMarker}\\n\\n`;\n }\n } catch (err) {\n console.warn('Fence reverse handler error:', err);\n // Fall through to default handling\n }\n }\n \n // Fallback: use data-qd-source if available\n const divSource = node.getAttribute('data-qd-source');\n if (divSource && divFence) {\n return `${divFence}${divLang || ''}\\n${divSource}\\n${divFence}\\n\\n`;\n }\n \n // Check if it's a mermaid container\n if (node.classList && node.classList.contains('mermaid-container')) {\n const fence = node.getAttribute('data-qd-fence') || '```';\n const lang = node.getAttribute('data-qd-lang') || 'mermaid';\n \n // First check for data-qd-source attribute on the container\n const source = node.getAttribute('data-qd-source');\n if (source) {\n // Decode HTML entities from the attribute (mainly ")\n const temp = document.createElement('textarea');\n temp.innerHTML = source;\n const code = temp.value;\n return `${fence}${lang}\\n${code}\\n${fence}\\n\\n`;\n }\n \n // Check for source on the pre.mermaid element\n const mermaidPre = node.querySelector('pre.mermaid');\n if (mermaidPre) {\n const preSource = mermaidPre.getAttribute('data-qd-source');\n if (preSource) {\n const temp = document.createElement('textarea');\n temp.innerHTML = preSource;\n const code = temp.value;\n return `${fence}${lang}\\n${code}\\n${fence}\\n\\n`;\n }\n }\n \n // Fallback: Look for the legacy .mermaid-source element\n const sourceElement = node.querySelector('.mermaid-source');\n if (sourceElement) {\n // Decode HTML entities\n const temp = document.createElement('div');\n temp.innerHTML = sourceElement.innerHTML;\n const code = temp.textContent;\n return `${fence}${lang}\\n${code}\\n${fence}\\n\\n`;\n }\n \n // Final fallback: try to extract from the mermaid element (unreliable after rendering)\n const mermaidElement = node.querySelector('.mermaid');\n if (mermaidElement && mermaidElement.textContent.includes('graph')) {\n return `${fence}${lang}\\n${mermaidElement.textContent.trim()}\\n${fence}\\n\\n`;\n }\n }\n // Check if it's a standalone mermaid diagram (legacy)\n if (node.classList && node.classList.contains('mermaid')) {\n const fence = node.getAttribute('data-qd-fence') || '```';\n const lang = node.getAttribute('data-qd-lang') || 'mermaid';\n const code = node.textContent.trim();\n return `${fence}${lang}\\n${code}\\n${fence}\\n\\n`;\n }\n // Pass through other divs\n return childContent;\n \n case 'span':\n // Pass through container elements\n return childContent;\n \n default:\n return childContent;\n }\n }\n \n // Walk list elements\n function walkList(listNode, isOrdered, depth = 0) {\n let result = '';\n let index = 1;\n const indent = ' '.repeat(depth);\n \n for (let child of listNode.children) {\n if (child.tagName !== 'LI') continue;\n \n const dataQd = child.getAttribute('data-qd');\n let marker = dataQd || (isOrdered ? `${index}.` : '-');\n \n // Check for task list checkbox\n const checkbox = child.querySelector('input[type=\"checkbox\"]');\n if (checkbox) {\n const checked = checkbox.checked ? 'x' : ' ';\n marker = '-';\n // Get text without the checkbox\n let text = '';\n for (let node of child.childNodes) {\n if (node.nodeType === Node.TEXT_NODE) {\n text += node.textContent;\n } else if (node.tagName && node.tagName !== 'INPUT') {\n text += walkNode(node);\n }\n }\n result += `${indent}${marker} [${checked}] ${text.trim()}\\n`;\n } else {\n let itemContent = '';\n \n for (let node of child.childNodes) {\n if (node.tagName === 'UL' || node.tagName === 'OL') {\n itemContent += walkList(node, node.tagName === 'OL', depth + 1);\n } else {\n itemContent += walkNode(node);\n }\n }\n \n result += `${indent}${marker} ${itemContent.trim()}\\n`;\n }\n \n index++;\n }\n \n return result;\n }\n \n // Walk table elements\n function walkTable(table) {\n let result = '';\n const alignData = table.getAttribute('data-qd-align');\n const alignments = alignData ? alignData.split(',') : [];\n \n // Process header\n const thead = table.querySelector('thead');\n if (thead) {\n const headerRow = thead.querySelector('tr');\n if (headerRow) {\n const headers = [];\n for (let th of headerRow.querySelectorAll('th')) {\n headers.push(th.textContent.trim());\n }\n result += '| ' + headers.join(' | ') + ' |\\n';\n \n // Add separator with alignment\n const separators = headers.map((_, i) => {\n const align = alignments[i] || 'left';\n if (align === 'center') return ':---:';\n if (align === 'right') return '---:';\n return '---';\n });\n result += '| ' + separators.join(' | ') + ' |\\n';\n }\n }\n \n // Process body\n const tbody = table.querySelector('tbody');\n if (tbody) {\n for (let row of tbody.querySelectorAll('tr')) {\n const cells = [];\n for (let td of row.querySelectorAll('td')) {\n cells.push(td.textContent.trim());\n }\n if (cells.length > 0) {\n result += '| ' + cells.join(' | ') + ' |\\n';\n }\n }\n }\n \n return result.trim();\n }\n \n // Process the DOM tree\n let markdown = walkNode(container);\n \n // Clean up\n markdown = markdown.replace(/\\n{3,}/g, '\\n\\n'); // Remove excessive newlines\n markdown = markdown.trim();\n \n return markdown;\n};\n\n// Override the configure method to return a bidirectional version\nquikdown_bd.configure = function(options) {\n return function(markdown) {\n return quikdown_bd(markdown, options);\n };\n};\n\n// Set version\n// Version is already copied from quikdown via Object.keys loop\n\n// Export for both module and browser\n/* istanbul ignore next */\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = quikdown_bd;\n}\n\n/* istanbul ignore next */\nif (typeof window !== 'undefined') {\n window.quikdown_bd = quikdown_bd;\n}\n\nexport { quikdown_bd as default };\n","import quikchat from './quikchat.js';\nimport quikdownBD from 'quikdown/bd';\n\n// CDN URLs for dynamic loading (same as quikdown editor uses)\nconst CDN = {\n hljs: 'https://unpkg.com/@highlightjs/cdn-assets/highlight.min.js',\n hljsCSS: 'https://unpkg.com/@highlightjs/cdn-assets/styles/github.min.css',\n hljsCSSdark:'https://unpkg.com/@highlightjs/cdn-assets/styles/github-dark.min.css',\n mathjax: 'https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-svg.js',\n mermaid: 'https://unpkg.com/mermaid/dist/mermaid.min.js',\n leaflet: 'https://unpkg.com/leaflet@1.9.4/dist/leaflet.js',\n leafletCSS: 'https://unpkg.com/leaflet@1.9.4/dist/leaflet.css',\n dompurify: 'https://unpkg.com/dompurify/dist/purify.min.js',\n};\n\n// Load a script from CDN (cached — only loads once)\nconst _loaded = {};\nfunction loadScript(src) {\n if (_loaded[src]) return _loaded[src];\n _loaded[src] = new Promise((resolve, reject) => {\n const s = document.createElement('script');\n s.src = src;\n s.onload = () => resolve(true);\n s.onerror = () => { _loaded[src] = null; reject(new Error('Failed to load: ' + src)); };\n document.head.appendChild(s);\n });\n return _loaded[src];\n}\nfunction loadCSS(href) {\n if (_loaded[href]) return _loaded[href];\n _loaded[href] = new Promise((resolve) => {\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.onload = () => resolve(true);\n document.head.appendChild(link);\n setTimeout(resolve, 1000); // CSS doesn't always fire onload\n });\n return _loaded[href];\n}\n\n/**\n * Process fence blocks rendered by quikdown/bd.\n * Detects code blocks with language tags and renders them with the appropriate library.\n * Libraries are loaded from CDN on first use.\n */\nasync function postProcessMessage(el) {\n if (!el) return;\n\n // --- Syntax highlighting (highlight.js) ---\n const codeBlocks = el.querySelectorAll('pre.quikdown-pre code[class*=\"language-\"]');\n if (codeBlocks.length > 0) {\n const langSet = new Set();\n codeBlocks.forEach(cb => {\n const match = cb.className.match(/language-(\\S+)/);\n if (match) langSet.add(match[1]);\n });\n\n // Skip languages handled by other renderers\n const specialLangs = new Set(['svg', 'html', 'math', 'tex', 'latex', 'katex', 'mermaid', 'geojson', 'csv', 'tsv', 'psv', 'json', 'json5', 'stl']);\n const needsHljs = [...langSet].some(l => !specialLangs.has(l));\n\n if (needsHljs && !window.hljs) {\n try {\n await Promise.all([loadScript(CDN.hljs), loadCSS(CDN.hljsCSS)]);\n } catch (_e) { /* continue without highlighting */ }\n }\n if (window.hljs) {\n codeBlocks.forEach(cb => {\n const match = cb.className.match(/language-(\\S+)/);\n if (match && !specialLangs.has(match[1]) && !cb.classList.contains('hljs')) {\n window.hljs.highlightElement(cb);\n }\n });\n }\n }\n\n // --- SVG (inline, no external lib) ---\n const svgBlocks = el.querySelectorAll('pre.quikdown-pre[data-qd-lang=\"svg\"], pre.quikdown-pre code.language-svg');\n svgBlocks.forEach(block => {\n const pre = block.closest('pre') || block;\n const code = pre.querySelector('code') || pre;\n const svgSource = code.textContent;\n try {\n const parser = new DOMParser();\n const doc = parser.parseFromString(svgSource, 'image/svg+xml');\n if (!doc.querySelector('parsererror')) {\n const svg = doc.documentElement;\n // Sanitize: remove scripts and event handlers\n svg.querySelectorAll('script').forEach(s => s.remove());\n const walker = document.createTreeWalker(svg, NodeFilter.SHOW_ELEMENT);\n let node = walker.nextNode();\n while (node) {\n for (let i = node.attributes.length - 1; i >= 0; i--) {\n const attr = node.attributes[i];\n if (attr.name.startsWith('on') || attr.value.includes('javascript:')) {\n node.removeAttribute(attr.name);\n }\n }\n node = walker.nextNode();\n }\n const container = document.createElement('div');\n container.className = 'qde-svg-container';\n container.innerHTML = new XMLSerializer().serializeToString(svg);\n pre.replaceWith(container);\n }\n } catch (_e) { /* leave as code block */ }\n });\n\n // --- HTML (inline, sanitized with DOMPurify) ---\n const htmlBlocks = el.querySelectorAll('pre.quikdown-pre code.language-html');\n for (const block of htmlBlocks) {\n const pre = block.closest('pre');\n if (!pre) continue;\n // Only render if the code is likely meant as rendered HTML (short snippets)\n // Skip if it looks like documentation (contains doctype, html, head tags)\n const src = block.textContent;\n if (src.match(/<(!DOCTYPE|html|head|body)/i)) continue;\n\n if (!window.DOMPurify) {\n try { await loadScript(CDN.dompurify); } catch (_e) { continue; }\n }\n if (window.DOMPurify) {\n const container = document.createElement('div');\n container.className = 'qde-html-container';\n container.innerHTML = window.DOMPurify.sanitize(src);\n pre.replaceWith(container);\n }\n }\n\n // --- Math (MathJax) ---\n // Look for math fences and inline math ($...$, $$...$$)\n const mathBlocks = el.querySelectorAll('pre.quikdown-pre code.language-math, pre.quikdown-pre code.language-tex, pre.quikdown-pre code.language-latex, pre.quikdown-pre code.language-katex');\n const hasInlineMath = el.innerHTML.match(/\\$\\$[\\s\\S]+?\\$\\$|\\$[^$\\n]+?\\$/);\n\n if (mathBlocks.length > 0 || hasInlineMath) {\n if (!window.MathJax || !window.MathJax.typesetPromise) {\n if (!window.mathJaxLoading) {\n window.mathJaxLoading = true;\n window.MathJax = {\n loader: { load: ['input/tex', 'output/svg'] },\n tex: {\n inlineMath: [['$', '$'], ['\\\\(', '\\\\)']],\n displayMath: [['$$', '$$'], ['\\\\[', '\\\\]']],\n processEscapes: true,\n processEnvironments: true\n },\n options: { renderActions: { addMenu: [] } },\n svg: { fontCache: 'none' },\n startup: { typeset: false }\n };\n try { await loadScript(CDN.mathjax); } catch (_e) { /* continue */ }\n window.mathJaxLoading = false;\n }\n }\n\n // Convert math fence blocks to divs MathJax can process\n mathBlocks.forEach(block => {\n const pre = block.closest('pre');\n if (!pre) return;\n const mathDiv = document.createElement('div');\n mathDiv.className = 'math-display';\n mathDiv.textContent = '$$' + block.textContent + '$$';\n pre.replaceWith(mathDiv);\n });\n\n if (window.MathJax && window.MathJax.typesetPromise) {\n try { await window.MathJax.typesetPromise([el]); } catch (_e) { /* continue */ }\n }\n }\n\n // --- Mermaid diagrams ---\n const mermaidBlocks = el.querySelectorAll('pre.quikdown-pre code.language-mermaid');\n if (mermaidBlocks.length > 0) {\n if (!window.mermaid) {\n try {\n await loadScript(CDN.mermaid);\n if (window.mermaid) {\n window.mermaid.initialize({ startOnLoad: false, theme: 'default' });\n }\n } catch (_e) { /* continue without mermaid */ }\n }\n if (window.mermaid) {\n for (const block of mermaidBlocks) {\n const pre = block.closest('pre');\n if (!pre) continue;\n const container = document.createElement('div');\n container.className = 'qde-mermaid-container';\n const mermaidId = 'mermaid-' + Math.random().toString(36).substring(2, 9);\n try {\n const { svg } = await window.mermaid.render(mermaidId, block.textContent);\n container.innerHTML = svg;\n pre.replaceWith(container);\n } catch (_e) { /* leave as code block */ }\n }\n }\n }\n\n // --- GeoJSON / Leaflet maps ---\n const geoBlocks = el.querySelectorAll('pre.quikdown-pre code.language-geojson');\n if (geoBlocks.length > 0) {\n if (!window.L) {\n try { await Promise.all([loadScript(CDN.leaflet), loadCSS(CDN.leafletCSS)]); } catch (_e) { /* continue */ }\n }\n if (window.L) {\n for (const block of geoBlocks) {\n const pre = block.closest('pre');\n if (!pre) continue;\n try {\n const geojson = JSON.parse(block.textContent);\n const container = document.createElement('div');\n container.className = 'qde-geojson-container';\n container.style.cssText = 'height: 300px; width: 100%; border-radius: 4px;';\n pre.replaceWith(container);\n const map = window.L.map(container);\n window.L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n attribution: '© OpenStreetMap'\n }).addTo(map);\n const layer = window.L.geoJSON(geojson).addTo(map);\n map.fitBounds(layer.getBounds());\n } catch (_e) { /* leave as code block */ }\n }\n }\n }\n\n // --- CSV / TSV / PSV tables ---\n const tableBlocks = el.querySelectorAll('pre.quikdown-pre code.language-csv, pre.quikdown-pre code.language-tsv, pre.quikdown-pre code.language-psv');\n tableBlocks.forEach(block => {\n const pre = block.closest('pre');\n if (!pre) return;\n const lang = block.className.match(/language-(csv|tsv|psv)/);\n if (!lang) return;\n const delim = { csv: ',', tsv: '\\t', psv: '|' }[lang[1]];\n const lines = block.textContent.trim().split('\\n');\n if (lines.length < 2) return;\n try {\n const table = document.createElement('table');\n table.className = 'quikdown-table';\n lines.forEach((line, i) => {\n const row = document.createElement('tr');\n const cells = line.split(delim).map(c => c.trim());\n cells.forEach(cell => {\n const td = document.createElement(i === 0 ? 'th' : 'td');\n td.className = i === 0 ? 'quikdown-th' : 'quikdown-td';\n td.textContent = cell;\n row.appendChild(td);\n });\n table.appendChild(row);\n });\n pre.replaceWith(table);\n } catch (_e) { /* leave as code block */ }\n });\n\n // --- JSON pretty-print ---\n const jsonBlocks = el.querySelectorAll('pre.quikdown-pre code.language-json, pre.quikdown-pre code.language-json5');\n jsonBlocks.forEach(block => {\n try {\n const obj = JSON.parse(block.textContent);\n block.textContent = JSON.stringify(obj, null, 2);\n // If hljs is loaded, re-highlight\n if (window.hljs && window.hljs.getLanguage('json')) {\n window.hljs.highlightElement(block);\n }\n } catch (_e) { /* not valid JSON, leave as is */ }\n });\n}\n\n\n/**\n * quikchat-md-full: batteries-included build.\n * Uses quikdown/bd for markdown parsing, then post-processes fence blocks\n * with dynamically loaded renderers (highlight.js, MathJax, Mermaid, Leaflet, etc.).\n */\nclass quikchatMDFull extends quikchat {\n constructor(parentElement, onSend, options = {}) {\n if (!options.messageFormatter) {\n options.messageFormatter = (content) => quikdownBD(content);\n }\n super(parentElement, onSend, options);\n }\n\n // Override message methods to add post-processing\n messageAddNew(content = \"\", userString = \"user\", align = \"right\", role = \"user\") {\n const id = super.messageAddNew(content, userString, align, role);\n const el = this.messageGetDOMObject(id);\n if (el) {\n postProcessMessage(el.querySelector('.quikchat-message-content'));\n }\n return id;\n }\n\n messageAddFull(input) {\n const id = super.messageAddFull(input);\n const el = this.messageGetDOMObject(id);\n if (el) {\n postProcessMessage(el.querySelector('.quikchat-message-content'));\n }\n return id;\n }\n\n messageAppendContent(n, content) {\n const result = super.messageAppendContent(n, content);\n if (result) {\n const el = this.messageGetDOMObject(n);\n if (el) {\n postProcessMessage(el.querySelector('.quikchat-message-content'));\n }\n }\n return result;\n }\n\n messageReplaceContent(n, content) {\n const result = super.messageReplaceContent(n, content);\n if (result) {\n const el = this.messageGetDOMObject(n);\n if (el) {\n postProcessMessage(el.querySelector('.quikchat-message-content'));\n }\n }\n return result;\n }\n\n destroy() {\n // No hidden container to clean up in this approach\n }\n}\n\n// Expose quikdown bd and post-processor for direct access\nquikchatMDFull.quikdown = quikdownBD;\nquikchatMDFull.postProcessMessage = postProcessMessage;\n\nexport default quikchatMDFull;\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","parseInt","getComputedStyle","getPropertyValue","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","CDN","hljs","hljsCSS","hljsCSSdark","mathjax","mermaid","leaflet","leafletCSS","dompurify","_loaded","loadScript","src","Promise","resolve","reject","onload","onerror","Error","head","loadCSS","href","link","rel","setTimeout","postProcessMessage","_x","_postProcessMessage","apply","_asyncToGenerator","_regenerator","_callee","codeBlocks","langSet","specialLangs","needsHljs","svgBlocks","htmlBlocks","_block2","_pre2","_container2","mathBlocks","hasInlineMath","mermaidBlocks","block","pre","container","mermaidId","_yield$window$mermaid","svg","geoBlocks","_iterator3","_step3","_block","_pre","geojson","_container","layer","tableBlocks","jsonBlocks","_t3","_t8","_t0","w","_context","p","a","querySelectorAll","Set","forEach","cb","match","className","_toConsumableArray","some","has","window","all","v","highlightElement","closest","code","svgSource","parser","DOMParser","doc","parseFromString","documentElement","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","node","nextNode","i","attributes","attr","name","startsWith","removeAttribute","XMLSerializer","serializeToString","replaceWith","_e","DOMPurify","MathJax","typesetPromise","mathJaxLoading","loader","load","tex","inlineMath","displayMath","processEscapes","processEnvironments","renderActions","addMenu","fontCache","startup","typeset","mathDiv","initialize","startOnLoad","toString","render","L","JSON","parse","cssText","tileLayer","attribution","addTo","geoJSON","fitBounds","getBounds","lang","delim","csv","tsv","psv","lines","split","table","line","row","cells","c","cell","td","obj","stringify","getLanguage","quikchatMDFull","_quikchat","quikdownBD","_callSuper","_inherits","id","_superPropGet","result","destroy","quikdown"],"mappings":"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","x_google_ignoreList":[1]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function t(e,t,n,r,a,i,s){try{var o=e[i](s),c=o.value}catch(e){return void n(e)}o.done?t(c):Promise.resolve(c).then(r,a)}function n(e,t,n){return t=l(t),function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,u()?Reflect.construct(t,n||[],l(e).constructor):t.apply(e,n))}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,v(r.key),r)}}function i(e,t,n){return t&&a(e.prototype,t),n&&a(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function s(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=b(e))||t){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}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 i,s=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){o=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(o)throw i}}}}function o(e,t,n){return(t=v(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(){return c="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=l(e)););return e}(e,t);if(r){var a=Object.getOwnPropertyDescriptor(r,t);return a.get?a.get.call(arguments.length<3?e:n):a.value}},c.apply(null,arguments)}function l(e){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},l(e)}function u(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(u=function(){return!!e})()}function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function g(){
|
|
2
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
3
|
+
var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function i(n,r,a,i){var c=r&&r.prototype instanceof o?r:o,l=Object.create(c.prototype);return p(l,"_invoke",function(n,r,a){var i,o,c,l=0,u=a||[],d=!1,h={p:0,n:0,v:e,a:g,f:g.bind(e,4),d:function(t,n){return i=t,o=0,c=e,h.n=n,s}};function g(n,r){for(o=n,c=r,t=0;!d&&l&&!a&&t<u.length;t++){var a,i=u[t],g=h.p,p=i[2];n>3?(a=p===r)&&(c=i[(o=i[4])?5:(o=3,3)],i[4]=i[5]=e):i[0]<=g&&((a=n<2&&g<i[1])?(o=0,h.v=r,h.n=i[1]):g<p&&(a=n<3||i[0]>r||r>p)&&(i[4]=n,i[5]=r,h.n=p,o=0))}if(a||n>1)return s;throw d=!0,r}return function(a,u,p){if(l>1)throw TypeError("Generator is already running");for(d&&1===u&&g(u,p),o=u,c=p;(t=o<2?e:c)||!d;){i||(o?o<3?(o>1&&(h.n=-1),g(o,c)):h.n=c:h.v=c);try{if(l=2,i){if(o||(a="next"),t=i[a]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,o<2&&(o=0)}else 1===o&&(t=i.return)&&t.call(i),o<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),o=1);i=e}else if((t=(d=h.n<0)?c:n.call(r,h))!==s)break}catch(t){i=e,o=1,c=t}finally{l=1}}return{value:t,done:d}}}(n,a,i),!0),l}var s={};function o(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(p(t={},r,(function(){return this})),t),d=l.prototype=o.prototype=Object.create(u);function h(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,p(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return c.prototype=l,p(d,"constructor",l),p(l,"constructor",c),c.displayName="GeneratorFunction",p(l,a,"GeneratorFunction"),p(d),p(d,a,"Generator"),p(d,r,(function(){return this})),p(d,"toString",(function(){return"[object Generator]"})),(g=function(){return{w:i,m:h}})()}function p(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}p=function(e,t,n,r){function i(t,n){p(e,t,(function(e){return this._invoke(t,n,e)}))}t?a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(i("next",0),i("throw",1),i("return",2))},p(e,t,n,r)}function f(e,t){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},f(e,t)}function m(e,t,n,r){var a=c(l(e.prototype),t,n);return 2&r&&"function"==typeof a?function(e){return a.apply(n,e)}:a}function y(t){return function(t){if(Array.isArray(t))return e(t)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||b(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function b(t,n){if(t){if("string"==typeof t)return e(t,n);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?e(t,n):void 0}}var k=function(){return i((function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r(this,e);var i=h(h({},{theme:"quikchat-theme-light",trackHistory:!0,showTimestamps:!1,titleArea:{title:"Chat",show:!1,align:"center"},messagesArea:{alternating:!0}}),a);"string"==typeof t&&(t=document.querySelector(t)),this._parentElement=t,this._theme=i.theme,this._onSend=n||function(){},this._messageFormatter=i.messageFormatter||null,this._sanitize=i.sanitize||!1,this._createWidget(),i.titleArea&&(this.titleAreaSetContents(i.titleArea.title,i.titleArea.align),!0===i.titleArea.show?this.titleAreaShow():this.titleAreaHide()),i.messagesArea&&this.messagesAreaAlternateColors(i.messagesArea.alternating),i.showTimestamps&&this.messagesAreaShowTimestamps(!0),i.direction&&this.setDirection(i.direction),this._attachEventListeners(),this.trackHistory=!1!==i.trackHistory,this._historyLimit=1e7,this._history=[]}),[{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 n=e._textEntry.value.trim();if(""===n)return;e._onSend(e,n)}})),this._textEntry.addEventListener("input",(function(){return e._autoGrowTextarea()})),this._messagesArea.addEventListener("scroll",(function(){var t=e._messagesArea,n=t.scrollTop,r=t.scrollHeight,a=t.clientHeight;e.userScrolledUp=n+a<r-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";var t=parseInt(getComputedStyle(e).getPropertyValue("--quikchat-input-max-height"))||120;e.style.height=Math.min(e.scrollHeight,t)+"px",e.style.overflowY=e.scrollHeight>t?"auto":"hidden"}},{key:"_formatTimestamp",value:function(e){var t=new Date(e),n=t.getHours();return(n%12||12)+":"+String(t.getMinutes()).padStart(2,"0")+" "+(n>=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,n=document.createElement("div"),r="quikchat-msgid-"+String(t).padStart(10,"0");n.classList.add("quikchat-message",r),n.classList.add("quikchat-role-"+(e.role||"user")),n.classList.add("quikchat-align-"+(e.align||"right")),this.msgid++,n.classList.add(this._messagesArea.children.length%2==1?"quikchat-message-1":"quikchat-message-2");var a=!1!==e.visible;a||(n.style.display="none");var i=Array.isArray(e.tags)?e.tags.slice():[],s=document.createElement("div");s.classList.add("quikchat-user-label"),s.style.textAlign=e.align,s.innerHTML=e.userString;var o=document.createElement("div");o.classList.add("quikchat-message-content"),o.style.textAlign=e.align,o.innerHTML=this._processContent(e.content);var c=(new Date).toISOString(),l=document.createElement("span");l.classList.add("quikchat-timestamp"),l.textContent=this._formatTimestamp(c),n.appendChild(s),n.appendChild(o),n.appendChild(l),this._messagesArea.appendChild(n),this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._textEntry.value="",this._autoGrowTextarea();var u=c;return this.trackHistory&&(this._history.push(h(h({msgid:t},e),{},{visible:a,tags:i,timestamp:c,updatedtime:u,messageDiv:n})),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",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"right",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user";return this.messageAddFull({content:e,userString:t,align:n,role:r})}},{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 n=this.messageGetDOMObject(e);if(!n)return!1;n.style.display=t?"":"none";var r=this._history.find((function(t){return t.msgid===e}));return r&&(r.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 n,r=0,a=s(this._history);try{for(a.s();!(n=a.n()).done;){var i=n.value;i.tags&&i.tags.includes(e)&&(this.messageSetVisible(i.msgid,t),r++)}}catch(e){a.e(e)}finally{a.f()}return r}},{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 n=this._history.find((function(t){return t.msgid===e}));return!!n&&(n.tags=Array.isArray(t)?t.slice():[],!0)}},{key:"messageAppendContent",value:function(e,t){var n=!1;try{var r=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(),r.querySelector(".quikchat-message-content").innerHTML=this._processContent(a.content),r.classList.remove("quikchat-typing"),n=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageAppend&&this._onMessageAppend(this,e,t)}catch(e){}return n}},{key:"messageReplaceContent",value:function(e,t){var n=!1;try{var r=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(),r.querySelector(".quikchat-message-content").innerHTML=this._processContent(t),r.classList.remove("quikchat-typing"),n=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageReplace&&this._onMessageReplace(this,e,t)}catch(e){}return n}},{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",n=this.messageAddFull({content:"",userString:e,align:t,role:"assistant"}),r=this.messageGetDOMObject(n);return r.classList.add("quikchat-typing"),r.querySelector(".quikchat-message-content").innerHTML='<span class="quikchat-typing-dots"><span>.</span><span>.</span><span>.</span></span>',n}},{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,n=s(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.messageAddFull({content:r.content||"",userString:r.userString||"user",align:r.align||"right",role:r.role||"user",userID:r.userID,visible:r.visible,tags:r.tags})}}catch(e){n.e(e)}finally{n.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}}],[{key:"version",value:function(){return{version:"1.2.4",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,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r="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;" "===r[t]||/[.,:;!?]/.test(r[t]);)t=(t+1)%446;for(var a=r.substring(t)+r.substring(0,t),i="";e>0;)i+=e<a.length?a.substring(0,e):a,e-=a.length;return" "===i[i.length-1]&&(i=i.substring(0,i.length-1)+"."),n&&(i=i[0].toUpperCase()+i.substring(1)),i}}])}();
|
|
4
|
+
/**
|
|
5
|
+
* quikdown_bd - Bidirectional Markdown Parser
|
|
6
|
+
* @version 1.1.1
|
|
7
|
+
* @license BSD-2-Clause
|
|
8
|
+
* @copyright DeftIO 2025
|
|
9
|
+
*/const $="quikdown-",_="§CB",w="§IC",q={"&":"&","<":"<",">":">",'"':""","'":"'"},A={h1:"font-size:2em;font-weight:600;margin:.67em 0;text-align:left",h2:"font-size:1.5em;font-weight:600;margin:.83em 0",h3:"font-size:1.25em;font-weight:600;margin:1em 0",h4:"font-size:1em;font-weight:600;margin:1.33em 0",h5:"font-size:.875em;font-weight:600;margin:1.67em 0",h6:"font-size:.85em;font-weight:600;margin:2em 0",pre:"background:#f4f4f4;padding:10px;border-radius:4px;overflow-x:auto;margin:1em 0",code:"background:#f0f0f0;padding:2px 4px;border-radius:3px;font-family:monospace",blockquote:"border-left:4px solid #ddd;margin-left:0;padding-left:1em",table:"border-collapse:collapse;width:100%;margin:1em 0",th:"border:1px solid #ddd;padding:8px;background-color:#f2f2f2;font-weight:bold;text-align:left",td:"border:1px solid #ddd;padding:8px;text-align:left",hr:"border:none;border-top:1px solid #ddd;margin:1em 0",img:"max-width:100%;height:auto",a:"color:#06c;text-decoration:underline",strong:"font-weight:bold",em:"font-style:italic",del:"text-decoration:line-through",ul:"margin:.5em 0;padding-left:2em",ol:"margin:.5em 0;padding-left:2em",li:"margin:.25em 0","task-item":"list-style:none","task-checkbox":"margin-right:.5em"};function S(e,t={}){if(!e||"string"!=typeof e)return"";const{fence_plugin:n,inline_styles:r=!1,bidirectional:a=!1,lazy_linefeeds:i=!1}=t,s=function(e,t){return function(n,r=""){if(e){let e=t[n];return e||r?(r&&r.includes("text-align")&&e&&e.includes("text-align")&&(e=e.replace(/text-align:[^;]+;?/,"").trim(),e&&!e.endsWith(";")&&(e+=";")),` style="${r?e?`${e}${r}`:r:e}"`):""}{const e=` class="${$}${n}"`;return r?`${e} style="${r}"`:e}}}(r,A);function o(e){return e.replace(/[&<>"']/g,(e=>q[e]))}const c=a?e=>` data-qd="${o(e)}"`:()=>"";function l(e,t=!1){if(!e)return"";if(t)return e;const n=e.trim(),r=n.toLowerCase(),a=["javascript:","vbscript:","data:"];for(const e of a)if(r.startsWith(e))return"data:"===e&&r.startsWith("data:image/")?n:"#";return n}let u=e;const d=[],h=[];u=u.replace(/^(```|~~~)([^\n]*)\n([\s\S]*?)^\1$/gm,((e,t,r,a)=>{const i=`${_}${d.length}§`,s=r?r.trim():"";return n&&n.render&&"function"==typeof n.render?d.push({lang:s,code:a.trimEnd(),custom:!0,fence:t,hasReverse:!!n.reverse}):d.push({lang:s,code:o(a.trimEnd()),custom:!1,fence:t}),i})),u=u.replace(/`([^`]+)`/g,((e,t)=>{const n=`${w}${h.length}§`;return h.push(o(t)),n})),u=o(u),u=function(e,t){const n=e.split("\n"),r=[];let a=!1,i=[];for(let e=0;e<n.length;e++){const s=n[e].trim();if(s.includes("|")&&(s.startsWith("|")||/[^\\|]/.test(s)))a||(a=!0,i=[]),i.push(s);else{if(a){const e=E(i,t);e?r.push(e):r.push(...i),a=!1,i=[]}r.push(n[e])}}if(a&&i.length>0){const e=E(i,t);e?r.push(e):r.push(...i)}return r.join("\n")}(u,s),u=u.replace(/^(#{1,6})\s+(.+?)\s*#*$/gm,((e,t,n)=>{const r=t.length;return`<h${r}${s("h"+r)}${c(t)}>${n}</h${r}>`})),u=u.replace(/^>\s+(.+)$/gm,`<blockquote${s("blockquote")}>$1</blockquote>`),u=u.replace(/<\/blockquote>\n<blockquote>/g,"\n"),u=u.replace(/^---+\s*$/gm,`<hr${s("hr")}>`),u=function(e,t,n,r){const a=e.split("\n"),i=[];let s=[];const o=e=>e.replace(/[&<>"']/g,(e=>({"&":"&","<":"<",">":">",'"':""","'":"'"}[e]))),c=r?e=>` data-qd="${o(e)}"`:()=>"";for(let e=0;e<a.length;e++){const r=a[e],o=r.match(/^(\s*)([*\-+]|\d+\.)\s+(.+)$/);if(o){const[,e,r,a]=o,l=Math.floor(e.length/2),u=/^\d+\./.test(r),d=u?"ol":"ul";let h=a,g="";const p=a.match(/^\[([x ])\]\s+(.*)$/i);if(p&&!u){const[,e,t]=p,r="x"===e.toLowerCase();h=`<input type="checkbox"${n?' style="margin-right:.5em"':` class="${$}task-checkbox"`}${r?" checked":""} disabled> ${t}`,g=n?' style="list-style:none"':` class="${$}task-item"`}for(;s.length>l+1;){const e=s.pop();i.push(`</${e.type}>`)}if(s.length===l)s.push({type:d,level:l}),i.push(`<${d}${t(d)}>`);else if(s.length===l+1){const e=s[s.length-1];e.type!==d&&(i.push(`</${e.type}>`),s.pop(),s.push({type:d,level:l}),i.push(`<${d}${t(d)}>`))}const f=g||t("li");i.push(`<li${f}${c(r)}>${h}</li>`)}else{for(;s.length>0;){const e=s.pop();i.push(`</${e.type}>`)}i.push(r)}}for(;s.length>0;){const e=s.pop();i.push(`</${e.type}>`)}return i.join("\n")}(u,s,r,a),u=u.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,((e,n,r)=>{const i=l(r,t.allow_unsafe_urls),u=a&&n?` data-qd-alt="${o(n)}"`:"",d=a?` data-qd-src="${o(r)}"`:"";return`<img${s("img")} src="${i}" alt="${n}"${u}${d}${c("!")}>`})),u=u.replace(/\[([^\]]+)\]\(([^)]+)\)/g,((e,n,r)=>{const i=l(r,t.allow_unsafe_urls),u=/^https?:\/\//i.test(i)?' rel="noopener noreferrer"':"",d=a?` data-qd-text="${o(n)}"`:"";return`<a${s("a")} href="${i}"${u}${d}${c("[")}>${n}</a>`})),u=u.replace(/(^|\s)(https?:\/\/[^\s<]+)/g,((e,n,r)=>{const a=l(r,t.allow_unsafe_urls);return`${n}<a${s("a")} href="${a}" rel="noopener noreferrer">${r}</a>`}));if([[/\*\*(.+?)\*\*/g,"strong","**"],[/__(.+?)__/g,"strong","__"],[/(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)/g,"em","*"],[/(?<!_)_(?!_)(.+?)(?<!_)_(?!_)/g,"em","_"],[/~~(.+?)~~/g,"del","~~"]].forEach((([e,t,n])=>{u=u.replace(e,`<${t}${s(t)}${c(n)}>$1</${t}>`)})),i){const e=[];let t=0;u=u.replace(/<(table|[uo]l)[^>]*>[\s\S]*?<\/\1>/g,(n=>(e[t]=n,`§B${t++}§`))),u=u.replace(/\n\n+/g,"§P§").replace(/(<\/(?:h[1-6]|blockquote|pre)>)\n/g,"$1§N§").replace(/(<(?:h[1-6]|blockquote|pre|hr)[^>]*>)\n/g,"$1§N§").replace(/\n(<(?:h[1-6]|blockquote|pre|hr)[^>]*>)/g,"§N§$1").replace(/\n(§B\d+§)/g,"§N§$1").replace(/(§B\d+§)\n/g,"$1§N§").replace(/\n/g,`<br${s("br")}>`).replace(/§N§/g,"\n").replace(/§P§/g,"</p><p>"),e.forEach(((e,t)=>u=u.replace(`§B${t}§`,e))),u="<p>"+u+"</p>"}else u=u.replace(/ $/gm,`<br${s("br")}>`),u=u.replace(/\n\n+/g,((e,t)=>u.substring(0,t).match(/<\/(h[1-6]|blockquote|ul|ol|table|pre|hr)>$/)?"<p>":"</p><p>")),u="<p>"+u+"</p>";return[[/<p><\/p>/g,""],[/<p>(<h[1-6][^>]*>)/g,"$1"],[/(<\/h[1-6]>)<\/p>/g,"$1"],[/<p>(<blockquote[^>]*>)/g,"$1"],[/(<\/blockquote>)<\/p>/g,"$1"],[/<p>(<ul[^>]*>|<ol[^>]*>)/g,"$1"],[/(<\/ul>|<\/ol>)<\/p>/g,"$1"],[/<p>(<hr[^>]*>)<\/p>/g,"$1"],[/<p>(<table[^>]*>)/g,"$1"],[/(<\/table>)<\/p>/g,"$1"],[/<p>(<pre[^>]*>)/g,"$1"],[/(<\/pre>)<\/p>/g,"$1"],[new RegExp(`<p>(${_}\\d+§)</p>`,"g"),"$1"]].forEach((([e,t])=>{u=u.replace(e,t)})),u=u.replace(/(<\/(?:h[1-6]|blockquote|ul|ol|table|pre|hr)>)\n([^<])/g,"$1\n<p>$2"),d.forEach(((e,t)=>{let i;if(e.custom&&n&&n.render)if(i=n.render(e.code,e.lang),void 0===i){const t=!r&&e.lang?` class="language-${e.lang}"`:"",n=r?s("code"):t,c=a&&e.lang?` data-qd-lang="${o(e.lang)}"`:"",l=a?` data-qd-fence="${o(e.fence)}"`:"";i=`<pre${s("pre")}${l}${c}><code${n}>${o(e.code)}</code></pre>`}else a&&(i=i.replace(/^<(\w+)/,`<$1 data-qd-fence="${o(e.fence)}" data-qd-lang="${o(e.lang)}" data-qd-source="${o(e.code)}"`));else{const t=!r&&e.lang?` class="language-${e.lang}"`:"",n=r?s("code"):t,c=a&&e.lang?` data-qd-lang="${o(e.lang)}"`:"",l=a?` data-qd-fence="${o(e.fence)}"`:"";i=`<pre${s("pre")}${l}${c}><code${n}>${e.code}</code></pre>`}const c=`${_}${t}§`;u=u.replace(c,i)})),h.forEach(((e,t)=>{const n=`${w}${t}§`;u=u.replace(n,`<code${s("code")}${c("`")}>${e}</code>`)})),u.trim()}function x(e,t){return[[/\*\*(.+?)\*\*/g,"strong"],[/__(.+?)__/g,"strong"],[/(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)/g,"em"],[/(?<!_)_(?!_)(.+?)(?<!_)_(?!_)/g,"em"],[/~~(.+?)~~/g,"del"],[/`([^`]+)`/g,"code"]].forEach((([n,r])=>{e=e.replace(n,`<${r}${t(r)}>$1</${r}>`)})),e}function E(e,t){if(e.length<2)return null;let n=-1;for(let t=1;t<e.length;t++)if(/^\|?[\s\-:|]+\|?$/.test(e[t])&&e[t].includes("-")){n=t;break}if(-1===n)return null;const r=e.slice(0,n),a=e.slice(n+1),i=e[n].trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map((e=>{const t=e.trim();return t.startsWith(":")&&t.endsWith(":")?"center":t.endsWith(":")?"right":"left"}));let s=`<table${t("table")}>\n`;return s+=`<thead${t("thead")}>\n`,r.forEach((e=>{s+=`<tr${t("tr")}>\n`;e.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").forEach(((e,n)=>{const r=i[n]&&"left"!==i[n]?`text-align:${i[n]}`:"",a=x(e.trim(),t);s+=`<th${t("th",r)}>${a}</th>\n`})),s+="</tr>\n"})),s+="</thead>\n",a.length>0&&(s+=`<tbody${t("tbody")}>\n`,a.forEach((e=>{s+=`<tr${t("tr")}>\n`;e.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").forEach(((e,n)=>{const r=i[n]&&"left"!==i[n]?`text-align:${i[n]}`:"",a=x(e.trim(),t);s+=`<td${t("td",r)}>${a}</td>\n`})),s+="</tr>\n"})),s+="</tbody>\n"),s+="</table>",s}function O(e,t={}){return S(e,{...t,bidirectional:!0})}S.emitStyles=function(e="quikdown-",t="light"){const n=A,r={"#f4f4f4":"#2a2a2a","#f0f0f0":"#2a2a2a","#f2f2f2":"#2a2a2a","#ddd":"#3a3a3a","#06c":"#6db3f2",_textColor:"#e0e0e0"},a={_textColor:"#333"};let i="";for(const[s,o]of Object.entries(n)){let n=o;if("dark"===t&&r){for(const[e,t]of Object.entries(r))e.startsWith("_")||(n=n.replace(new RegExp(e,"g"),t));["h1","h2","h3","h4","h5","h6","td","li","blockquote"].includes(s)&&(n+=`;color:${r._textColor}`)}else if("light"===t&&a){["h1","h2","h3","h4","h5","h6","td","li","blockquote"].includes(s)&&(n+=`;color:${a._textColor}`)}i+=`.${e}${s} { ${n} }\n`}return i},S.configure=function(e){return function(t){return S(t,e)}},S.version="1.1.1","undefined"!=typeof module&&module.exports&&(module.exports=S),"undefined"!=typeof window&&(window.quikdown=S),Object.keys(S).forEach((e=>{O[e]=S[e]})),O.toMarkdown=function(e,t={}){let n;if("string"==typeof e)n=document.createElement("div"),n.innerHTML=e;else{if(!(e instanceof Element))return"";n=e}function r(e,n={}){if(e.nodeType===Node.TEXT_NODE)return e.textContent;if(e.nodeType!==Node.ELEMENT_NODE)return"";const i=e.tagName.toLowerCase(),s=e.getAttribute("data-qd");let o="";for(let t of e.childNodes)o+=r(t,{parentTag:i,...n});switch(i){case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":const n=parseInt(i[1]);return`${s||"#".repeat(n)} ${o.trim()}\n\n`;case"strong":case"b":if(!o)return"";const r=s||"**";return`${r}${o}${r}`;case"em":case"i":if(!o)return"";const c=s||"*";return`${c}${o}${c}`;case"del":case"s":case"strike":if(!o)return"";const l=s||"~~";return`${l}${o}${l}`;case"code":if(!o)return"";const u=s||"`";return`${u}${o}${u}`;case"pre":const d=e.getAttribute("data-qd-fence")||s||"```",h=e.getAttribute("data-qd-lang")||"";if(t.fence_plugin&&t.fence_plugin.reverse&&h)try{const n=t.fence_plugin.reverse(e);if(n&&n.content){const e=n.fence||d;return`${e}${n.lang||h}\n${n.content}\n${e}\n\n`}}catch(e){console.warn("Fence reverse handler error:",e)}const g=e.getAttribute("data-qd-source");if(g)return`${d}${h}\n${g}\n${d}\n\n`;const p=e.querySelector("code");return`${d}${h}\n${(p?p.textContent:o).trimEnd()}\n${d}\n\n`;case"blockquote":const f=s||">";return o.trim().split("\n").map((e=>`${f} ${e}`)).join("\n")+"\n\n";case"hr":return`${s||"---"}\n\n`;case"br":return`${s||" "}\n`;case"a":const m=e.getAttribute("data-qd-text")||o.trim(),y=e.getAttribute("href")||"";return m!==y||s?`[${m}](${y})`:`<${y}>`;case"img":return`${s||"!"}[${e.getAttribute("data-qd-alt")||e.getAttribute("alt")||""}](${e.getAttribute("data-qd-src")||e.getAttribute("src")||""})`;case"ul":case"ol":return a(e,"ol"===i)+"\n";case"li":case"span":default:return o;case"table":return function(e){let t="";const n=e.getAttribute("data-qd-align"),r=n?n.split(","):[],a=e.querySelector("thead");if(a){const e=a.querySelector("tr");if(e){const n=[];for(let t of e.querySelectorAll("th"))n.push(t.textContent.trim());t+="| "+n.join(" | ")+" |\n";t+="| "+n.map(((e,t)=>{const n=r[t]||"left";return"center"===n?":---:":"right"===n?"---:":"---"})).join(" | ")+" |\n"}}const i=e.querySelector("tbody");if(i)for(let e of i.querySelectorAll("tr")){const n=[];for(let t of e.querySelectorAll("td"))n.push(t.textContent.trim());n.length>0&&(t+="| "+n.join(" | ")+" |\n")}return t.trim()}(e)+"\n\n";case"p":if(o.trim()){const e=o.split("\n");let t=o.trim();if(e.length>1){let n=0;for(let t=e.length-1;t>=0&&""===e[t].trim();t--)n++;if(n>0)return t+="\n ",t+"\n"}return t+"\n\n"}return"";case"div":const v=e.getAttribute("data-qd-lang"),b=e.getAttribute("data-qd-fence");if(v&&t.fence_plugin&&t.fence_plugin.reverse)try{const n=t.fence_plugin.reverse(e);if(n&&n.content){const e=n.fence||b||"```";return`${e}${n.lang||v}\n${n.content}\n${e}\n\n`}}catch(e){console.warn("Fence reverse handler error:",e)}const k=e.getAttribute("data-qd-source");if(k&&b)return`${b}${v||""}\n${k}\n${b}\n\n`;if(e.classList&&e.classList.contains("mermaid-container")){const t=e.getAttribute("data-qd-fence")||"```",n=e.getAttribute("data-qd-lang")||"mermaid",r=e.getAttribute("data-qd-source");if(r){const e=document.createElement("textarea");e.innerHTML=r;return`${t}${n}\n${e.value}\n${t}\n\n`}const a=e.querySelector("pre.mermaid");if(a){const e=a.getAttribute("data-qd-source");if(e){const r=document.createElement("textarea");r.innerHTML=e;return`${t}${n}\n${r.value}\n${t}\n\n`}}const i=e.querySelector(".mermaid-source");if(i){const e=document.createElement("div");e.innerHTML=i.innerHTML;return`${t}${n}\n${e.textContent}\n${t}\n\n`}const s=e.querySelector(".mermaid");if(s&&s.textContent.includes("graph"))return`${t}${n}\n${s.textContent.trim()}\n${t}\n\n`}if(e.classList&&e.classList.contains("mermaid")){const t=e.getAttribute("data-qd-fence")||"```";return`${t}${e.getAttribute("data-qd-lang")||"mermaid"}\n${e.textContent.trim()}\n${t}\n\n`}return o}}function a(e,t,n=0){let i="",s=1;const o=" ".repeat(n);for(let c of e.children){if("LI"!==c.tagName)continue;let e=c.getAttribute("data-qd")||(t?`${s}.`:"-");const l=c.querySelector('input[type="checkbox"]');if(l){const t=l.checked?"x":" ";e="-";let n="";for(let e of c.childNodes)e.nodeType===Node.TEXT_NODE?n+=e.textContent:e.tagName&&"INPUT"!==e.tagName&&(n+=r(e));i+=`${o}${e} [${t}] ${n.trim()}\n`}else{let t="";for(let e of c.childNodes)"UL"===e.tagName||"OL"===e.tagName?t+=a(e,"OL"===e.tagName,n+1):t+=r(e);i+=`${o}${e} ${t.trim()}\n`}s++}return i}let i=r(n);return i=i.replace(/\n{3,}/g,"\n\n"),i=i.trim(),i},O.configure=function(e){return function(t){return O(t,e)}},"undefined"!=typeof module&&module.exports&&(module.exports=O),"undefined"!=typeof window&&(window.quikdown_bd=O);var j={hljs:"https://unpkg.com/@highlightjs/cdn-assets/highlight.min.js",hljsCSS:"https://unpkg.com/@highlightjs/cdn-assets/styles/github.min.css",mathjax:"https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-svg.js",mermaid:"https://unpkg.com/mermaid/dist/mermaid.min.js",leaflet:"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js",leafletCSS:"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css",dompurify:"https://unpkg.com/dompurify/dist/purify.min.js"},L={};function T(e){return L[e]||(L[e]=new Promise((function(t,n){var r=document.createElement("script");r.src=e,r.onload=function(){return t(!0)},r.onerror=function(){L[e]=null,n(new Error("Failed to load: "+e))},document.head.appendChild(r)}))),L[e]}function C(e){return L[e]||(L[e]=new Promise((function(t){var n=document.createElement("link");n.rel="stylesheet",n.href=e,n.onload=function(){return t(!0)},document.head.appendChild(n),setTimeout(t,1e3)}))),L[e]}function M(e){return N.apply(this,arguments)}function N(){var e;return e=g().m((function e(t){var n,r,a,i,o,c,l,u,d,h,p,f,m,v,b,k,$,_,w,q,A,S,x,E,O,L,M,N,P,D,H,B,W;return g().w((function(e){for(;;)switch(e.p=e.n){case 0:if(t){e.n=1;break}return e.a(2);case 1:if(!((n=t.querySelectorAll('pre.quikdown-pre code[class*="language-"]')).length>0)){e.n=6;break}if(r=new Set,n.forEach((function(e){var t=e.className.match(/language-(\S+)/);t&&r.add(t[1])})),a=new Set(["svg","html","math","tex","latex","katex","mermaid","geojson","csv","tsv","psv","json","json5","stl"]),!y(r).some((function(e){return!a.has(e)}))||window.hljs){e.n=5;break}return e.p=2,e.n=3,Promise.all([T(j.hljs),C(j.hljsCSS)]);case 3:e.n=5;break;case 4:e.p=4,e.v;case 5:window.hljs&&n.forEach((function(e){var t=e.className.match(/language-(\S+)/);!t||a.has(t[1])||e.classList.contains("hljs")||window.hljs.highlightElement(e)}));case 6:t.querySelectorAll('pre.quikdown-pre[data-qd-lang="svg"], pre.quikdown-pre code.language-svg').forEach((function(e){var t=e.closest("pre")||e,n=(t.querySelector("code")||t).textContent;try{var r=(new DOMParser).parseFromString(n,"image/svg+xml");if(!r.querySelector("parsererror")){var a=r.documentElement;a.querySelectorAll("script").forEach((function(e){return e.remove()}));for(var i=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT),s=i.nextNode();s;){for(var o=s.attributes.length-1;o>=0;o--){var c=s.attributes[o];(c.name.startsWith("on")||c.value.includes("javascript:"))&&s.removeAttribute(c.name)}s=i.nextNode()}var l=document.createElement("div");l.className="qde-svg-container",l.innerHTML=(new XMLSerializer).serializeToString(a),t.replaceWith(l)}}catch(e){}})),i=t.querySelectorAll("pre.quikdown-pre code.language-html"),o=s(i),e.p=7,o.s();case 8:if((c=o.n()).done){e.n=16;break}if(l=c.value,u=l.closest("pre")){e.n=9;break}return e.a(3,15);case 9:if(!(d=l.textContent).match(/<(!DOCTYPE|html|head|body)/i)){e.n=10;break}return e.a(3,15);case 10:if(window.DOMPurify){e.n=14;break}return e.p=11,e.n=12,T(j.dompurify);case 12:e.n=14;break;case 13:return e.p=13,e.v,e.a(3,15);case 14:window.DOMPurify&&((h=document.createElement("div")).className="qde-html-container",h.innerHTML=window.DOMPurify.sanitize(d),u.replaceWith(h));case 15:e.n=8;break;case 16:e.n=18;break;case 17:e.p=17,H=e.v,o.e(H);case 18:return e.p=18,o.f(),e.f(18);case 19:if(p=t.querySelectorAll("pre.quikdown-pre code.language-math, pre.quikdown-pre code.language-tex, pre.quikdown-pre code.language-latex, pre.quikdown-pre code.language-katex"),f=t.innerHTML.match(/\$\$[\s\S]+?\$\$|\$[^$\n]+?\$/),!(p.length>0||f)){e.n=28;break}if(window.MathJax&&window.MathJax.typesetPromise){e.n=24;break}if(window.mathJaxLoading){e.n=24;break}return window.mathJaxLoading=!0,window.MathJax={loader:{load:["input/tex","output/svg"]},tex:{inlineMath:[["$","$"],["\\(","\\)"]],displayMath:[["$$","$$"],["\\[","\\]"]],processEscapes:!0,processEnvironments:!0},options:{renderActions:{addMenu:[]}},svg:{fontCache:"none"},startup:{typeset:!1}},e.p=20,e.n=21,T(j.mathjax);case 21:e.n=23;break;case 22:e.p=22,e.v;case 23:window.mathJaxLoading=!1;case 24:if(p.forEach((function(e){var t=e.closest("pre");if(t){var n=document.createElement("div");n.className="math-display",n.textContent="$$"+e.textContent+"$$",t.replaceWith(n)}})),!window.MathJax||!window.MathJax.typesetPromise){e.n=28;break}return e.p=25,e.n=26,window.MathJax.typesetPromise([t]);case 26:e.n=28;break;case 27:e.p=27,e.v;case 28:if(!((m=t.querySelectorAll("pre.quikdown-pre code.language-mermaid")).length>0)){e.n=43;break}if(window.mermaid){e.n=32;break}return e.p=29,e.n=30,T(j.mermaid);case 30:window.mermaid&&window.mermaid.initialize({startOnLoad:!1,theme:"default"}),e.n=32;break;case 31:e.p=31,e.v;case 32:if(!window.mermaid){e.n=43;break}v=s(m),e.p=33,v.s();case 34:if((b=v.n()).done){e.n=40;break}if(k=b.value,$=k.closest("pre")){e.n=35;break}return e.a(3,39);case 35:return(_=document.createElement("div")).className="qde-mermaid-container",w="mermaid-"+Math.random().toString(36).substring(2,9),e.p=36,e.n=37,window.mermaid.render(w,k.textContent);case 37:q=e.v,A=q.svg,_.innerHTML=A,$.replaceWith(_),e.n=39;break;case 38:e.p=38,e.v;case 39:e.n=34;break;case 40:e.n=42;break;case 41:e.p=41,B=e.v,v.e(B);case 42:return e.p=42,v.f(),e.f(42);case 43:if(!((S=t.querySelectorAll("pre.quikdown-pre code.language-geojson")).length>0)){e.n=55;break}if(window.L){e.n=47;break}return e.p=44,e.n=45,Promise.all([T(j.leaflet),C(j.leafletCSS)]);case 45:e.n=47;break;case 46:e.p=46,e.v;case 47:if(!window.L){e.n=55;break}x=s(S),e.p=48,x.s();case 49:if((E=x.n()).done){e.n=52;break}if(O=E.value,L=O.closest("pre")){e.n=50;break}return e.a(3,51);case 50:try{M=JSON.parse(O.textContent),(N=document.createElement("div")).className="qde-geojson-container",N.style.cssText="height: 300px; width: 100%; border-radius: 4px;",L.replaceWith(N),P=window.L.map(N),window.L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:"© OpenStreetMap"}).addTo(P),D=window.L.geoJSON(M).addTo(P),P.fitBounds(D.getBounds())}catch(e){}case 51:e.n=49;break;case 52:e.n=54;break;case 53:e.p=53,W=e.v,x.e(W);case 54:return e.p=54,x.f(),e.f(54);case 55:t.querySelectorAll("pre.quikdown-pre code.language-csv, pre.quikdown-pre code.language-tsv, pre.quikdown-pre code.language-psv").forEach((function(e){var t=e.closest("pre");if(t){var n=e.className.match(/language-(csv|tsv|psv)/);if(n){var r={csv:",",tsv:"\t",psv:"|"}[n[1]],a=e.textContent.trim().split("\n");if(!(a.length<2))try{var i=document.createElement("table");i.className="quikdown-table",a.forEach((function(e,t){var n=document.createElement("tr");e.split(r).map((function(e){return e.trim()})).forEach((function(e){var r=document.createElement(0===t?"th":"td");r.className=0===t?"quikdown-th":"quikdown-td",r.textContent=e,n.appendChild(r)})),i.appendChild(n)})),t.replaceWith(i)}catch(e){}}}})),t.querySelectorAll("pre.quikdown-pre code.language-json, pre.quikdown-pre code.language-json5").forEach((function(e){try{var t=JSON.parse(e.textContent);e.textContent=JSON.stringify(t,null,2),window.hljs&&window.hljs.getLanguage("json")&&window.hljs.highlightElement(e)}catch(e){}}));case 56:return e.a(2)}}),e,null,[[48,53,54,55],[44,46],[36,38],[33,41,42,43],[29,31],[25,27],[20,22],[11,13],[7,17,18,19],[2,4]])})),N=function(){var n=this,r=arguments;return new Promise((function(a,i){var s=e.apply(n,r);function o(e){t(s,a,i,o,c,"next",e)}function c(e){t(s,a,i,o,c,"throw",e)}o(void 0)}))},N.apply(this,arguments)}var P=function(){function e(t,a){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r(this,e),i.messageFormatter||(i.messageFormatter=function(e){return O(e)}),n(this,e,[t,a,i])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&f(e,t)}(e,k),i(e,[{key:"messageAddNew",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"user",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"right",a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user",i=m(e,"messageAddNew",this,3)([t,n,r,a]),s=this.messageGetDOMObject(i);return s&&M(s.querySelector(".quikchat-message-content")),i}},{key:"messageAddFull",value:function(t){var n=m(e,"messageAddFull",this,3)([t]),r=this.messageGetDOMObject(n);return r&&M(r.querySelector(".quikchat-message-content")),n}},{key:"messageAppendContent",value:function(t,n){var r=m(e,"messageAppendContent",this,3)([t,n]);if(r){var a=this.messageGetDOMObject(t);a&&M(a.querySelector(".quikchat-message-content"))}return r}},{key:"messageReplaceContent",value:function(t,n){var r=m(e,"messageReplaceContent",this,3)([t,n]);if(r){var a=this.messageGetDOMObject(t);a&&M(a.querySelector(".quikchat-message-content"))}return r}},{key:"destroy",value:function(){}}])}();P.quikdown=O,P.postProcessMessage=M,module.exports=P;
|
|
10
|
+
//# sourceMappingURL=quikchat-md-full.cjs.min.js.map
|