quikchat 1.1.9 → 1.1.11

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 CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  Quikchat is a vanilla (no dependancies) JavaScript chat control that can be easily integrated into web applications. It provides a customizable chat interface with support for hiding and showing a title area and the input area.
8
8
 
9
+ [Article on Using Quickchat](https://medium.com/gitconnected/quikchat-4be8d4a849e5?sk=ac745ae60a3521a9fbca6b748d4da48a)
10
+
9
11
  ## Features
10
12
 
11
13
  * Themeable with CSS (examples for light and dark)
@@ -54,6 +56,34 @@ html
54
56
  <link rel="stylesheet" href="https://unpkg.com/quikchat/dist/quikchat.css" />
55
57
  ```
56
58
 
59
+ Or import as a module:
60
+
61
+ ```javascript
62
+ import quikchat from '../dist/quikchat.esm.min.js';
63
+
64
+ document.addEventListener('DOMContentLoaded', () => {
65
+ const parentDiv = document.querySelector('#chatContainerInstance');
66
+ window.chatBox = new quikchat(parentDiv,
67
+ (chat, msg) => {
68
+ chat.messageAddNew(msg, 'me', 'right'); // echo the message to the chat area
69
+
70
+ // example of a bot response using the built-in lorem ipsum generator
71
+ const botResponse = quikchat.loremIpsum();
72
+ chat.messageAddNew(botResponse, 'bot', 'left');
73
+ },
74
+ { // options
75
+ theme: 'quikchat-theme-light',
76
+ titleArea: { title: 'QuikChatJS', align: 'left', show: true },
77
+ });
78
+ chatBox.messageAddNew('Hello, how are you?', 'bot', 'left');
79
+ chatBox.messageAddNew('I am fine, thank you.', 'user', 'right');
80
+ chatBox.messageAddNew('How can I help you today?', 'bot', 'left');
81
+ chatBox.changeTheme("quikchat-theme-light");
82
+ console.log("quikchat version: "+quikchat.version().version);
83
+
84
+ });
85
+ ```
86
+
57
87
  Create a container element in your HTML where you want the chat interface to appear. The quikchat widget will take 100% of the paretn container height and width. If the parent container width or height is not specified the quikchat widget may grow as content is added. If the parent container is resized, quikchat will resize with the parent container.
58
88
 
59
89
  ```html
@@ -85,7 +115,7 @@ chat = new quikchat(
85
115
 
86
116
  // Add a message at any point not just from callback
87
117
  chat.messageAddNew('Hello!', 'You', 'left'); // should appear left justified
88
- chat.messageAddNew('Hello!', 'Them', 'right'); // should appear right justified
118
+ chat.messageAddNew('Hello!', 'Me', 'right'); // should appear right justified
89
119
 
90
120
 
91
121
  //... other logic
@@ -105,7 +105,9 @@ var quikchat = /*#__PURE__*/function () {
105
105
  },
106
106
  inputArea: {
107
107
  show: true
108
- }
108
+ },
109
+ sendOnEnter: true,
110
+ sendOnShiftEnter: false
109
111
  };
110
112
  var meta = _objectSpread2(_objectSpread2({}, defaultOpts), options); // merge options with defaults
111
113
 
@@ -140,6 +142,10 @@ var quikchat = /*#__PURE__*/function () {
140
142
  this.trackHistory = meta.trackHistory || true;
141
143
  this._historyLimit = 10000000;
142
144
  this._history = [];
145
+
146
+ // send on enter / shift enter
147
+ this.sendOnEnter = meta.sendOnEnter;
148
+ this.sendOnShiftEnter = meta.sendOnShiftEnter;
143
149
  }
144
150
  return _createClass(quikchat, [{
145
151
  key: "_createWidget",
@@ -162,8 +168,9 @@ var quikchat = /*#__PURE__*/function () {
162
168
  key: "_attachEventListeners",
163
169
  value: function _attachEventListeners() {
164
170
  var _this = this;
165
- this._sendButton.addEventListener('click', function () {
166
- return _this._onSend(_this, _this._textEntry.value.trim());
171
+ this._sendButton.addEventListener('click', function (event) {
172
+ event.preventDefault();
173
+ _this._onSend(_this, _this._textEntry.value.trim());
167
174
  });
168
175
  window.addEventListener('resize', function () {
169
176
  return _this._handleContainerResize();
@@ -172,11 +179,19 @@ var quikchat = /*#__PURE__*/function () {
172
179
  return _this._handleContainerResize();
173
180
  });
174
181
  this._textEntry.addEventListener('keydown', function (event) {
175
- // Check if Shift + Enter is pressed
182
+ // Check if Shift + Enter is pressed then we just do carraige
176
183
  if (event.shiftKey && event.keyCode === 13) {
177
184
  // Prevent default behavior (adding new line)
178
- event.preventDefault();
179
- _this._onSend(_this, _this._textEntry.value.trim());
185
+ if (_this.sendOnShiftEnter) {
186
+ event.preventDefault();
187
+ _this._onSend(_this, _this._textEntry.value.trim());
188
+ }
189
+ } else if (event.keyCode === 13) {
190
+ // Enter but not Shift + Enter
191
+ if (_this.sendOnEnter) {
192
+ event.preventDefault();
193
+ _this._onSend(_this, _this._textEntry.value.trim());
194
+ }
180
195
  }
181
196
  });
182
197
  this._messagesArea.addEventListener('scroll', function () {
@@ -318,14 +333,27 @@ var quikchat = /*#__PURE__*/function () {
318
333
  var messageDiv = document.createElement('div');
319
334
  var msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');
320
335
  'quikchat-userid-' + String(input.userString).padStart(10, '0'); // hash this..
321
- messageDiv.classList.add('quikchat-message', msgidClass);
336
+ messageDiv.classList.add('quikchat-message', msgidClass, 'quikchat-structure');
322
337
  this.msgid++;
323
338
  messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');
324
339
  var userDiv = document.createElement('div');
325
340
  userDiv.innerHTML = input.userString;
326
- userDiv.style = "width: 100%; text-align: ".concat(input.align, "; font-size: 1em; font-weight:700;");
341
+ userDiv.classList.add('quikchat-user-label');
342
+ userDiv.style.textAlign = input.align;
327
343
  var contentDiv = document.createElement('div');
328
- contentDiv.style = "width: 100%;"; // text-align: ${input.align};`;
344
+ contentDiv.classList.add('quikchat-message-content');
345
+
346
+ // Determine text alignment for right-aligned messages
347
+ if (input.align === "right") {
348
+ var isMultiLine = input.content.includes("\n");
349
+ var isLong = input.content.length > 50; // Adjust length threshold
350
+
351
+ if (isMultiLine || isLong) {
352
+ contentDiv.classList.add("quikchat-right-multiline");
353
+ } else {
354
+ contentDiv.classList.add("quikchat-right-singleline");
355
+ }
356
+ }
329
357
  contentDiv.innerHTML = input.content;
330
358
  messageDiv.appendChild(userDiv);
331
359
  messageDiv.appendChild(contentDiv);
@@ -338,8 +366,8 @@ var quikchat = /*#__PURE__*/function () {
338
366
  this._textEntry.value = '';
339
367
  this._adjustMessagesAreaHeight();
340
368
  this._handleShortLongMessageCSS(messageDiv, input.align); // Handle CSS for short/long messages
341
- // add timestamp now, unless it is passed in
342
369
 
370
+ // Add timestamp now, unless it is passed in
343
371
  var timestamp = input.timestamp ? input.timestamp : new Date().toISOString();
344
372
  var updatedtime = input.updatedtime ? input.updatedtime : timestamp;
345
373
  if (this.trackHistory) {
@@ -504,7 +532,7 @@ var quikchat = /*#__PURE__*/function () {
504
532
  }, {
505
533
  key: "_handleShortLongMessageCSS",
506
534
  value: function _handleShortLongMessageCSS(messageElement, align) {
507
- console.log(messageElement);
535
+ // console.log(messageElement);
508
536
  // Reset classes
509
537
  messageElement.classList.remove('left-singleline', 'left-multiline', 'center-singleline', 'center-multiline', 'right-singleline', 'right-multiline');
510
538
  var contentDiv = messageElement.lastChild;
@@ -653,7 +681,7 @@ var quikchat = /*#__PURE__*/function () {
653
681
  key: "version",
654
682
  value: function version() {
655
683
  return {
656
- "version": "1.1.9",
684
+ "version": "1.1.11",
657
685
  "license": "BSD-2",
658
686
  "url": "https://github/deftio/quikchat",
659
687
  "fun": true
@@ -1 +1 @@
1
- {"version":3,"file":"quikchat.cjs.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n * \n * @param string or DOM element parentElement \n * @param {*} meta \n */\n constructor(parentElement, onSend = () => { }, options = {}) {\n const defaultOpts = {\n theme: 'quikchat-theme-light',\n trackHistory: true,\n titleArea: { title: \"Chat\", show: false, align: \"center\" },\n messagesArea: { alternating: true },\n inputArea: { show: true }\n };\n const meta = { ...defaultOpts, ...options }; // merge options with defaults\n\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n //console.log(parentElement, meta);\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for onSend\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\n // input area\n if (meta.inputArea) {\n if (meta.inputArea.show === true)\n this.inputAreaShow();\n else\n this.inputAreaHide();\n }\n // plumbing\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory || true;\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\">\n <span style=\"font-size: 1.5em; font-weight: 600;\">Title Area</span>\n </div>\n <div class=\"quikchat-messages-area\"></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\"></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._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\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', () => this._onSend(this, this._textEntry.value.trim()));\n window.addEventListener('resize', () => this._handleContainerResize());\n this._chatWidget.addEventListener('resize', () => this._handleContainerResize());\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n // Prevent default behavior (adding new line)\n event.preventDefault();\n this._onSend(this, this._textEntry.value.trim());\n }\n });\n\n this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight;\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\n // Public methods\n titleAreaToggle() {\n this._titleArea.style.display === 'none' ? this.titleAreaShow() : this.titleAreaHide();\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\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 this._inputArea.classList.toggle('hidden');\n this._inputArea.style.display === 'none' ? this.inputAreaShow() : this.inputAreaHide();\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n _adjustMessagesAreaHeight() {\n const hiddenElements = [...this._chatWidget.children].filter(child => child.classList.contains('hidden'));\n const totalHiddenHeight = hiddenElements.reduce((sum, child) => sum + child.offsetHeight, 0);\n const containerHeight = this._chatWidget.offsetHeight;\n this._messagesArea.style.height = `calc(100% - ${containerHeight - totalHiddenHeight}px)`;\n }\n\n _handleContainerResize() {\n this._adjustMessagesAreaHeight();\n this._adjustSendButtonWidth();\n return true;\n }\n\n _adjustSendButtonWidth() {\n const sendButtonText = this._sendButton.textContent.trim();\n const fontSize = parseFloat(getComputedStyle(this._sendButton).fontSize);\n const minWidth = fontSize * sendButtonText.length + 16;\n this._sendButton.style.minWidth = `${minWidth}px`;\n return true;\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, timestamp: false, updatedtime: false, scrollIntoView: true }) {\n const msgid = this.msgid;\n const messageDiv = document.createElement('div');\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n const userIdClass = 'quikchat-userid-' + String(input.userString).padStart(10, '0'); // hash this..\n messageDiv.classList.add('quikchat-message', msgidClass);\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n\n const userDiv = document.createElement('div');\n userDiv.innerHTML = input.userString;\n userDiv.style = `width: 100%; text-align: ${input.align}; font-size: 1em; font-weight:700;`;\n\n const contentDiv = document.createElement('div');\n contentDiv.style = `width: 100%;`; // text-align: ${input.align};`;\n contentDiv.innerHTML = input.content;\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\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) || input.scrollIntoView) {\n this.messageScrollToBottom();\n }\n\n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n this._handleShortLongMessageCSS(messageDiv, input.align); // Handle CSS for short/long messages\n // add timestamp now, unless it is passed in \n\n const timestamp = input.timestamp ? input.timestamp : new Date().toISOString()\n const updatedtime = input.updatedtime ? input.updatedtime : timestamp;\n\n if (this.trackHistory) {\n this._history.push({ msgid, ...input, 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\", scrollIntoView = true) {\n let retvalue = this.messageAddFull(\n { content: content, userString: userString, align: align, role: role, scrollIntoView: scrollIntoView }\n );\n // this.messageScrollToBottom();\n return retvalue;\n\n }\n messageRemove(n) {\n // use css selector to remove the message\n let sucess = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n sucess = true;\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n if (sucess) {\n // slow way to remove from history\n //this._history = this._history.filter((item) => item.msgid !== n); // todo make this more efficient\n\n // better way to delete this from history\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n }\n return sucess;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n // now use css selector to get the message \n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n return msg;\n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\"\n // now use css selector to get the message \n try {\n // get from history..\n content = this._history.filter((item) => item.msgid === n)[0].content;\n //content = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.textContent;\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n return content;\n }\n\n /* append message to the message content\n */\n\n messageAppendContent(n, content) {\n let success = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML += content;\n // update history\n let item = this._history.filter((item) => item.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n success = true;\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n } catch (error) {\n console.log(`${String(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 this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML = content;\n // update history\n let item = this._history.filter((item) => item.msgid === n)[0];\n item.content = content;\n item.updatedtime = new Date().toISOString();\n success = true;\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n } catch (error) {\n console.log(`${String(n)} : Message ID not found`);\n }\n return success;\n }\n\n /**\n * Scrolls the messages area to the bottom.\n */\n messageScrollToBottom() {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n\n /**\n * For right sided or centered messages, we need to handle the CSS for short and long messages.\n * for short messages we use simple justifying, for long messages we need to wrap and perform multiline\n * formatting. \n * \n * @param {*} messageElement \n * @returns nothing\n */\n _handleShortLongMessageCSS(messageElement, align) {\n console.log(messageElement);\n // Reset classes\n messageElement.classList.remove(\n 'left-singleline', 'left-multiline', \n 'center-singleline', 'center-multiline', \n 'right-singleline', 'right-multiline');\n let contentDiv = messageElement.lastChild;\n window.lastDiv = contentDiv; // for debugging \n // Determine if the message is short or long\n\n const computedStyle = window.getComputedStyle(contentDiv);\n\n // Get the element's height\n const elementHeight = contentDiv.offsetHeight;\n \n // Calculate or estimate line height\n let lineHeight;\n if (computedStyle.lineHeight === \"normal\") {\n const fontSize = parseFloat(computedStyle.fontSize);\n lineHeight = fontSize * 1.2; // approximate \"normal\" as 1.2 times font-size\n } else {\n lineHeight = parseFloat(computedStyle.lineHeight);\n }\n \n // Check if the element height is more than one line-height\n const isMultiLine = elementHeight > lineHeight;\n\n // Using scrollHeight and clientHeight to check for overflow (multi-line)\n switch (align) {\n case 'center':\n if (isMultiLine) {\n messageElement.classList.add('center-multiline');\n }\n else {\n messageElement.classList.add('center-singleline');\n }\n break;\n case 'right':\n if (isMultiLine) {\n messageElement.classList.add('right-multiline');\n }\n else {\n messageElement.classList.add('right-singleline');\n }\n break;\n case 'left':\n default:\n if (isMultiLine) {\n messageElement.classList.add('left-multiline');\n }\n else {\n messageElement.classList.add('left-singleline');\n }\n break;\n }\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\n if (n == undefined) {\n n = 0;\n m = this._history.length;\n }\n if (m === undefined) {\n m = n < 0 ? m : n + 1;\n }\n // remember that entries could be deleted. TODO: So we need to return the actual history entries\n // so now we need to find the array index that correspondes to messageIds n (start) and m (end)\n\n return this._history.slice(n, m);\n }\n\n historyGetAllCopy() {\n return this._history.slice();\n }\n\n historyClear() {\n this.msgid = 0;\n this._messagesArea.innerHTML = \"\";\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\n historyGetMessageContent(n) {\n if (n >= 0 && n < this._history.length)\n return this._history[n].content;\n else\n return \"\";\n }\n\n // expects an array of messages to be in the format of the history object\n historyRestoreAll(messageList) {\n // clear all messages and history\n this.historyClear();\n\n // clear the messages div \n this._messagesArea.innerHTML = \"\";\n\n // add all messages\n messageList.forEach((message) => {\n this.messageAddFull(message);\n });\n }\n /**\n * \n * @param {string} newTheme \n */\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n /**\n * Get the current theme\n * @returns {string} - The current theme\n */\n get theme() {\n return this._theme;\n }\n\n /**\n * \n * @returns {object} - Returns the version and license information for the library.\n */\n static version() {\n return { \"version\": \"1.1.9\", \"license\": \"BSD-2\", \"url\": \"https://github/deftio/quikchat\", \"fun\" : true };\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() * (150)) + 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 let l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\n\n if (typeof numChars !== \"number\") {\n numChars = l.length;\n }\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 let c = s[0].toUpperCase();\n c = /[A-Z]/.test(c) ? c : \"M\";\n s = c + s.substring(1);\n }\n\n return s;\n };\n\n\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","onSend","arguments","length","undefined","options","_classCallCheck","defaultOpts","theme","trackHistory","titleArea","title","show","align","messagesArea","alternating","inputArea","meta","_objectSpread","document","querySelector","_parentElement","_theme","_onSend","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","inputAreaShow","inputAreaHide","_attachEventListeners","_historyLimit","_history","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesArea","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","trim","window","_handleContainerResize","event","shiftKey","keyCode","preventDefault","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","setCallbackOnSend","callback","setCallbackonMessageAdded","_onMessageAdded","titleAreaToggle","style","display","_adjustMessagesAreaHeight","textAlign","titleAreaGetContents","inputAreaToggle","classList","toggle","hiddenElements","_toConsumableArray","children","filter","child","contains","totalHiddenHeight","reduce","sum","offsetHeight","containerHeight","height","_adjustSendButtonWidth","sendButtonText","textContent","fontSize","parseFloat","getComputedStyle","minWidth","alt","add","remove","messagesAreaAlternateColorsToggle","messagesAreaAlternateColorsGet","messageAddFull","input","content","userString","role","userID","timestamp","updatedtime","scrollIntoView","messageDiv","createElement","msgidClass","String","padStart","userDiv","contentDiv","appendChild","messageScrollToBottom","_handleShortLongMessageCSS","Date","toISOString","push","shift","messageAddNew","retvalue","messageRemove","n","sucess","removeChild","error","console","log","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","messageAppendContent","success","lastChild","lastElementChild","messageReplaceContent","messageElement","lastDiv","computedStyle","elementHeight","lineHeight","isMultiLine","historyGet","m","slice","historyGetAllCopy","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","historyRestoreAll","messageList","_this2","forEach","message","changeTheme","newTheme","get","version","loremIpsum","numChars","startSpot","startWithCapitalLetter","loremText","Math","floor","random","test","l","substring","s","c","toUpperCase"],"mappings":"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"}
1
+ {"version":3,"file":"quikchat.cjs.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n * \n * @param string or DOM element parentElement \n * @param {*} meta \n */\n constructor(parentElement, onSend = () => { }, options = {}) {\n const defaultOpts = {\n theme: 'quikchat-theme-light',\n trackHistory: true,\n titleArea: { title: \"Chat\", show: false, align: \"center\" },\n messagesArea: { alternating: true },\n inputArea: { show: true },\n sendOnEnter: true,\n sendOnShiftEnter: false\n };\n const meta = { ...defaultOpts, ...options }; // merge options with defaults\n\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n //console.log(parentElement, meta);\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for onSend\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\n // input area\n if (meta.inputArea) {\n if (meta.inputArea.show === true)\n this.inputAreaShow();\n else\n this.inputAreaHide();\n }\n // plumbing\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory || true;\n this._historyLimit = 10000000;\n this._history = [];\n\n // send on enter / shift enter\n this.sendOnEnter = meta.sendOnEnter;\n this.sendOnShiftEnter = meta.sendOnShiftEnter;\n }\n\n _createWidget() {\n const widgetHTML =\n `\n <div class=\"quikchat-base ${this.theme}\">\n <div class=\"quikchat-title-area\">\n <span style=\"font-size: 1.5em; font-weight: 600;\">Title Area</span>\n </div>\n <div class=\"quikchat-messages-area\"></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\"></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._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\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', (event) => { event.preventDefault(); this._onSend(this, this._textEntry.value.trim()) });\n window.addEventListener('resize', () => this._handleContainerResize());\n this._chatWidget.addEventListener('resize', () => this._handleContainerResize());\n this._textEntry.addEventListener('keydown', (event) => {\n\n // Check if Shift + Enter is pressed then we just do carraige\n if (event.shiftKey && event.keyCode === 13) {\n // Prevent default behavior (adding new line)\n if (this.sendOnShiftEnter) {\n event.preventDefault();\n this._onSend(this, this._textEntry.value.trim());\n }\n } else if (event.keyCode === 13) {// Enter but not Shift + Enter\n if (this.sendOnEnter) {\n event.preventDefault();\n this._onSend(this, this._textEntry.value.trim());\n }\n }\n });\n\n this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight;\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\n // Public methods\n titleAreaToggle() {\n this._titleArea.style.display === 'none' ? this.titleAreaShow() : this.titleAreaHide();\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\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 this._inputArea.classList.toggle('hidden');\n this._inputArea.style.display === 'none' ? this.inputAreaShow() : this.inputAreaHide();\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n _adjustMessagesAreaHeight() {\n const hiddenElements = [...this._chatWidget.children].filter(child => child.classList.contains('hidden'));\n const totalHiddenHeight = hiddenElements.reduce((sum, child) => sum + child.offsetHeight, 0);\n const containerHeight = this._chatWidget.offsetHeight;\n this._messagesArea.style.height = `calc(100% - ${containerHeight - totalHiddenHeight}px)`;\n }\n\n _handleContainerResize() {\n this._adjustMessagesAreaHeight();\n this._adjustSendButtonWidth();\n return true;\n }\n\n _adjustSendButtonWidth() {\n const sendButtonText = this._sendButton.textContent.trim();\n const fontSize = parseFloat(getComputedStyle(this._sendButton).fontSize);\n const minWidth = fontSize * sendButtonText.length + 16;\n this._sendButton.style.minWidth = `${minWidth}px`;\n return true;\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, timestamp: false, updatedtime: false, scrollIntoView: true }) {\n const msgid = this.msgid;\n const messageDiv = document.createElement('div');\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n const userIdClass = 'quikchat-userid-' + String(input.userString).padStart(10, '0'); // hash this..\n messageDiv.classList.add('quikchat-message', msgidClass, 'quikchat-structure');\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n \n const userDiv = document.createElement('div');\n userDiv.innerHTML = input.userString;\n userDiv.classList.add('quikchat-user-label');\n userDiv.style.textAlign = input.align;\n \n const contentDiv = document.createElement('div');\n contentDiv.classList.add('quikchat-message-content');\n \n // Determine text alignment for right-aligned messages\n if (input.align === \"right\") {\n const isMultiLine = input.content.includes(\"\\n\");\n const isLong = input.content.length > 50; // Adjust length threshold\n \n if (isMultiLine || isLong) {\n contentDiv.classList.add(\"quikchat-right-multiline\");\n } else {\n contentDiv.classList.add(\"quikchat-right-singleline\");\n }\n }\n \n contentDiv.innerHTML = input.content;\n \n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\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) || input.scrollIntoView) {\n this.messageScrollToBottom();\n }\n \n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n this._handleShortLongMessageCSS(messageDiv, input.align); // Handle CSS for short/long messages\n \n // Add timestamp now, unless it is passed in \n const timestamp = input.timestamp ? input.timestamp : new Date().toISOString();\n const updatedtime = input.updatedtime ? input.updatedtime : timestamp;\n \n if (this.trackHistory) {\n this._history.push({ msgid, ...input, 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\n messageAddNew(content = \"\", userString = \"user\", align = \"right\", role = \"user\", scrollIntoView = true) {\n let retvalue = this.messageAddFull(\n { content: content, userString: userString, align: align, role: role, scrollIntoView: scrollIntoView }\n );\n // this.messageScrollToBottom();\n return retvalue;\n\n }\n messageRemove(n) {\n // use css selector to remove the message\n let sucess = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n sucess = true;\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n if (sucess) {\n // slow way to remove from history\n //this._history = this._history.filter((item) => item.msgid !== n); // todo make this more efficient\n\n // better way to delete this from history\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n }\n return sucess;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n // now use css selector to get the message \n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n return msg;\n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\"\n // now use css selector to get the message \n try {\n // get from history..\n content = this._history.filter((item) => item.msgid === n)[0].content;\n //content = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.textContent;\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n return content;\n }\n\n /* append message to the message content\n */\n\n messageAppendContent(n, content) {\n let success = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML += content;\n // update history\n let item = this._history.filter((item) => item.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n success = true;\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n } catch (error) {\n console.log(`${String(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 this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML = content;\n // update history\n let item = this._history.filter((item) => item.msgid === n)[0];\n item.content = content;\n item.updatedtime = new Date().toISOString();\n success = true;\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n } catch (error) {\n console.log(`${String(n)} : Message ID not found`);\n }\n return success;\n }\n\n /**\n * Scrolls the messages area to the bottom.\n */\n messageScrollToBottom() {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n\n /**\n * For right sided or centered messages, we need to handle the CSS for short and long messages.\n * for short messages we use simple justifying, for long messages we need to wrap and perform multiline\n * formatting. \n * \n * @param {*} messageElement \n * @returns nothing\n */\n _handleShortLongMessageCSS(messageElement, align) {\n // console.log(messageElement);\n // Reset classes\n messageElement.classList.remove(\n 'left-singleline', 'left-multiline',\n 'center-singleline', 'center-multiline',\n 'right-singleline', 'right-multiline');\n let contentDiv = messageElement.lastChild;\n window.lastDiv = contentDiv; // for debugging \n // Determine if the message is short or long\n\n const computedStyle = window.getComputedStyle(contentDiv);\n\n // Get the element's height\n const elementHeight = contentDiv.offsetHeight;\n\n // Calculate or estimate line height\n let lineHeight;\n if (computedStyle.lineHeight === \"normal\") {\n const fontSize = parseFloat(computedStyle.fontSize);\n lineHeight = fontSize * 1.2; // approximate \"normal\" as 1.2 times font-size\n } else {\n lineHeight = parseFloat(computedStyle.lineHeight);\n }\n\n // Check if the element height is more than one line-height\n const isMultiLine = elementHeight > lineHeight;\n\n // Using scrollHeight and clientHeight to check for overflow (multi-line)\n switch (align) {\n case 'center':\n if (isMultiLine) {\n messageElement.classList.add('center-multiline');\n }\n else {\n messageElement.classList.add('center-singleline');\n }\n break;\n case 'right':\n if (isMultiLine) {\n messageElement.classList.add('right-multiline');\n }\n else {\n messageElement.classList.add('right-singleline');\n }\n break;\n case 'left':\n default:\n if (isMultiLine) {\n messageElement.classList.add('left-multiline');\n }\n else {\n messageElement.classList.add('left-singleline');\n }\n break;\n }\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\n if (n == undefined) {\n n = 0;\n m = this._history.length;\n }\n if (m === undefined) {\n m = n < 0 ? m : n + 1;\n }\n // remember that entries could be deleted. TODO: So we need to return the actual history entries\n // so now we need to find the array index that correspondes to messageIds n (start) and m (end)\n\n return this._history.slice(n, m);\n }\n\n historyGetAllCopy() {\n return this._history.slice();\n }\n\n historyClear() {\n this.msgid = 0;\n this._messagesArea.innerHTML = \"\";\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\n historyGetMessageContent(n) {\n if (n >= 0 && n < this._history.length)\n return this._history[n].content;\n else\n return \"\";\n }\n\n // expects an array of messages to be in the format of the history object\n historyRestoreAll(messageList) {\n // clear all messages and history\n this.historyClear();\n\n // clear the messages div \n this._messagesArea.innerHTML = \"\";\n\n // add all messages\n messageList.forEach((message) => {\n this.messageAddFull(message);\n });\n }\n /**\n * \n * @param {string} newTheme \n */\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n /**\n * Get the current theme\n * @returns {string} - The current theme\n */\n get theme() {\n return this._theme;\n }\n\n /**\n * \n * @returns {object} - Returns the version and license information for the library.\n */\n static version() {\n return { \"version\": \"1.1.11\", \"license\": \"BSD-2\", \"url\": \"https://github/deftio/quikchat\", \"fun\": true };\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() * (150)) + 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 let l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\n\n if (typeof numChars !== \"number\") {\n numChars = l.length;\n }\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 let c = s[0].toUpperCase();\n c = /[A-Z]/.test(c) ? c : \"M\";\n s = c + s.substring(1);\n }\n\n return s;\n };\n\n\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","onSend","arguments","length","undefined","options","_classCallCheck","defaultOpts","theme","trackHistory","titleArea","title","show","align","messagesArea","alternating","inputArea","sendOnEnter","sendOnShiftEnter","meta","_objectSpread","document","querySelector","_parentElement","_theme","_onSend","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","inputAreaShow","inputAreaHide","_attachEventListeners","_historyLimit","_history","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesArea","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","event","preventDefault","trim","window","_handleContainerResize","shiftKey","keyCode","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","setCallbackOnSend","callback","setCallbackonMessageAdded","_onMessageAdded","titleAreaToggle","style","display","_adjustMessagesAreaHeight","textAlign","titleAreaGetContents","inputAreaToggle","classList","toggle","hiddenElements","_toConsumableArray","children","filter","child","contains","totalHiddenHeight","reduce","sum","offsetHeight","containerHeight","height","_adjustSendButtonWidth","sendButtonText","textContent","fontSize","parseFloat","getComputedStyle","minWidth","alt","add","remove","messagesAreaAlternateColorsToggle","messagesAreaAlternateColorsGet","messageAddFull","input","content","userString","role","userID","timestamp","updatedtime","scrollIntoView","messageDiv","createElement","msgidClass","String","padStart","userDiv","contentDiv","isMultiLine","includes","isLong","appendChild","messageScrollToBottom","_handleShortLongMessageCSS","Date","toISOString","push","shift","messageAddNew","retvalue","messageRemove","n","sucess","removeChild","error","console","log","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","messageAppendContent","success","lastChild","lastElementChild","messageReplaceContent","messageElement","lastDiv","computedStyle","elementHeight","lineHeight","historyGet","m","slice","historyGetAllCopy","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","historyRestoreAll","messageList","_this2","forEach","message","changeTheme","newTheme","get","version","loremIpsum","numChars","startSpot","startWithCapitalLetter","loremText","Math","floor","random","test","l","substring","s","c","toUpperCase"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IACMA,QAAQ,gBAAA,YAAA;AACV;AACJ;AACA;AACA;AACA;EACI,SAAAA,QAAAA,CAAYC,aAAa,EAAoC;AAAA,IAAA,IAAlCC,MAAM,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,YAAM,EAAG,CAAA;AAAA,IAAA,IAAEG,OAAO,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE,CAAA;AAAAI,IAAAA,eAAA,OAAAP,QAAA,CAAA,CAAA;AACvD,IAAA,IAAMQ,WAAW,GAAG;AAChBC,MAAAA,KAAK,EAAE,sBAAsB;AAC7BC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,KAAK,EAAE,MAAM;AAAEC,QAAAA,IAAI,EAAE,KAAK;AAAEC,QAAAA,KAAK,EAAE,QAAA;OAAU;AAC1DC,MAAAA,YAAY,EAAE;AAAEC,QAAAA,WAAW,EAAE,IAAA;OAAM;AACnCC,MAAAA,SAAS,EAAE;AAAEJ,QAAAA,IAAI,EAAE,IAAA;OAAM;AACzBK,MAAAA,WAAW,EAAE,IAAI;AACjBC,MAAAA,gBAAgB,EAAE,KAAA;KACrB,CAAA;IACD,IAAMC,IAAI,GAAAC,cAAA,CAAAA,cAAA,CAAQb,EAAAA,EAAAA,WAAW,CAAKF,EAAAA,OAAO,CAAE,CAAC;;AAE5C,IAAA,IAAI,OAAOL,aAAa,KAAK,QAAQ,EAAE;AACnCA,MAAAA,aAAa,GAAGqB,QAAQ,CAACC,aAAa,CAACtB,aAAa,CAAC,CAAA;AACzD,KAAA;AACA;IACA,IAAI,CAACuB,cAAc,GAAGvB,aAAa,CAAA;AACnC,IAAA,IAAI,CAACwB,MAAM,GAAGL,IAAI,CAACX,KAAK,CAAA;IACxB,IAAI,CAACiB,OAAO,GAAGxB,MAAM,GAAGA,MAAM,GAAG,YAAM,EAAG,CAAC;IAC3C,IAAI,CAACyB,aAAa,EAAE,CAAA;AACpB;IACA,IAAIP,IAAI,CAACT,SAAS,EAAE;AAChB,MAAA,IAAI,CAACiB,oBAAoB,CAACR,IAAI,CAACT,SAAS,CAACC,KAAK,EAAEQ,IAAI,CAACT,SAAS,CAACG,KAAK,CAAC,CAAA;AACrE,MAAA,IAAIM,IAAI,CAACT,SAAS,CAACE,IAAI,KAAK,IAAI,EAAE;QAC9B,IAAI,CAACgB,aAAa,EAAE,CAAA;AACxB,OAAC,MAAM;QACH,IAAI,CAACC,aAAa,EAAE,CAAA;AACxB,OAAA;AACJ,KAAA;AACA;IACA,IAAIV,IAAI,CAACL,YAAY,EAAE;MACnB,IAAI,CAACgB,2BAA2B,CAACX,IAAI,CAACL,YAAY,CAACC,WAAW,CAAC,CAAA;AACnE,KAAA;;AAEA;IACA,IAAII,IAAI,CAACH,SAAS,EAAE;AAChB,MAAA,IAAIG,IAAI,CAACH,SAAS,CAACJ,IAAI,KAAK,IAAI,EAC5B,IAAI,CAACmB,aAAa,EAAE,CAAC,KAErB,IAAI,CAACC,aAAa,EAAE,CAAA;AAC5B,KAAA;AACA;IACA,IAAI,CAACC,qBAAqB,EAAE,CAAA;AAC5B,IAAA,IAAI,CAACxB,YAAY,GAAGU,IAAI,CAACV,YAAY,IAAI,IAAI,CAAA;IAC7C,IAAI,CAACyB,aAAa,GAAG,QAAQ,CAAA;IAC7B,IAAI,CAACC,QAAQ,GAAG,EAAE,CAAA;;AAElB;AACA,IAAA,IAAI,CAAClB,WAAW,GAAGE,IAAI,CAACF,WAAW,CAAA;AACnC,IAAA,IAAI,CAACC,gBAAgB,GAAGC,IAAI,CAACD,gBAAgB,CAAA;AACjD,GAAA;EAAC,OAAAkB,YAAA,CAAArC,QAAA,EAAA,CAAA;IAAAsC,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EAED,SAAAZ,aAAaA,GAAG;AACZ,MAAA,IAAMa,UAAU,GAAAC,2CAAAA,CAAAA,MAAA,CAEgB,IAAI,CAAChC,KAAK,EAUrC,mfAAA,CAAA,CAAA;AAEL,MAAA,IAAI,CAACe,cAAc,CAACkB,SAAS,GAAGF,UAAU,CAAA;MAC1C,IAAI,CAACG,WAAW,GAAG,IAAI,CAACnB,cAAc,CAACD,aAAa,CAAC,gBAAgB,CAAC,CAAA;MACtE,IAAI,CAACqB,UAAU,GAAG,IAAI,CAACD,WAAW,CAACpB,aAAa,CAAC,sBAAsB,CAAC,CAAA;MACxE,IAAI,CAACsB,aAAa,GAAG,IAAI,CAACF,WAAW,CAACpB,aAAa,CAAC,yBAAyB,CAAC,CAAA;MAC9E,IAAI,CAACuB,UAAU,GAAG,IAAI,CAACH,WAAW,CAACpB,aAAa,CAAC,sBAAsB,CAAC,CAAA;MACxE,IAAI,CAACwB,UAAU,GAAG,IAAI,CAACD,UAAU,CAACvB,aAAa,CAAC,yBAAyB,CAAC,CAAA;MAC1E,IAAI,CAACyB,WAAW,GAAG,IAAI,CAACF,UAAU,CAACvB,aAAa,CAAC,0BAA0B,CAAC,CAAA;MAC5E,IAAI,CAAC0B,KAAK,GAAG,CAAC,CAAA;AAClB,KAAA;;AAEA;AACJ;AACA;AAFI,GAAA,EAAA;IAAAX,GAAA,EAAA,uBAAA;AAAAC,IAAAA,KAAA,EAGA,SAAAL,qBAAqBA,GAAG;AAAA,MAAA,IAAAgB,KAAA,GAAA,IAAA,CAAA;MACpB,IAAI,CAACF,WAAW,CAACG,gBAAgB,CAAC,OAAO,EAAE,UAACC,KAAK,EAAK;QAAEA,KAAK,CAACC,cAAc,EAAE,CAAA;AAAEH,QAAAA,KAAI,CAACxB,OAAO,CAACwB,KAAI,EAAEA,KAAI,CAACH,UAAU,CAACR,KAAK,CAACe,IAAI,EAAE,CAAC,CAAA;AAAC,OAAC,CAAC,CAAA;AACnIC,MAAAA,MAAM,CAACJ,gBAAgB,CAAC,QAAQ,EAAE,YAAA;AAAA,QAAA,OAAMD,KAAI,CAACM,sBAAsB,EAAE,CAAA;OAAC,CAAA,CAAA;AACtE,MAAA,IAAI,CAACb,WAAW,CAACQ,gBAAgB,CAAC,QAAQ,EAAE,YAAA;AAAA,QAAA,OAAMD,KAAI,CAACM,sBAAsB,EAAE,CAAA;OAAC,CAAA,CAAA;MAChF,IAAI,CAACT,UAAU,CAACI,gBAAgB,CAAC,SAAS,EAAE,UAACC,KAAK,EAAK;AAEnD;QACA,IAAIA,KAAK,CAACK,QAAQ,IAAIL,KAAK,CAACM,OAAO,KAAK,EAAE,EAAE;AACxC;UACA,IAAIR,KAAI,CAAC/B,gBAAgB,EAAE;YACvBiC,KAAK,CAACC,cAAc,EAAE,CAAA;AACtBH,YAAAA,KAAI,CAACxB,OAAO,CAACwB,KAAI,EAAEA,KAAI,CAACH,UAAU,CAACR,KAAK,CAACe,IAAI,EAAE,CAAC,CAAA;AACpD,WAAA;AACJ,SAAC,MAAM,IAAIF,KAAK,CAACM,OAAO,KAAK,EAAE,EAAE;AAAC;UAC9B,IAAIR,KAAI,CAAChC,WAAW,EAAE;YAClBkC,KAAK,CAACC,cAAc,EAAE,CAAA;AACtBH,YAAAA,KAAI,CAACxB,OAAO,CAACwB,KAAI,EAAEA,KAAI,CAACH,UAAU,CAACR,KAAK,CAACe,IAAI,EAAE,CAAC,CAAA;AACpD,WAAA;AACJ,SAAA;AACJ,OAAC,CAAC,CAAA;AAEF,MAAA,IAAI,CAACT,aAAa,CAACM,gBAAgB,CAAC,QAAQ,EAAE,YAAM;AAChD,QAAA,IAAAQ,mBAAA,GAAkDT,KAAI,CAACL,aAAa;UAA5De,SAAS,GAAAD,mBAAA,CAATC,SAAS;UAAEC,YAAY,GAAAF,mBAAA,CAAZE,YAAY;UAAEC,YAAY,GAAAH,mBAAA,CAAZG,YAAY,CAAA;AAC7CZ,QAAAA,KAAI,CAACa,cAAc,GAAGH,SAAS,GAAGE,YAAY,GAAGD,YAAY,CAAA;AACjE,OAAC,CAAC,CAAA;AACN,KAAA;;AAEA;AAAA,GAAA,EAAA;IAAAvB,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EACA,SAAAyB,iBAAiBA,CAACC,QAAQ,EAAE;MACxB,IAAI,CAACvC,OAAO,GAAGuC,QAAQ,CAAA;AAC3B,KAAA;AACA;AAAA,GAAA,EAAA;IAAA3B,GAAA,EAAA,2BAAA;AAAAC,IAAAA,KAAA,EACA,SAAA2B,yBAAyBA,CAACD,QAAQ,EAAE;MAChC,IAAI,CAACE,eAAe,GAAGF,QAAQ,CAAA;AACnC,KAAA;;AAEA;AAAA,GAAA,EAAA;IAAA3B,GAAA,EAAA,iBAAA;AAAAC,IAAAA,KAAA,EACA,SAAA6B,eAAeA,GAAG;AACd,MAAA,IAAI,CAACxB,UAAU,CAACyB,KAAK,CAACC,OAAO,KAAK,MAAM,GAAG,IAAI,CAACzC,aAAa,EAAE,GAAG,IAAI,CAACC,aAAa,EAAE,CAAA;AAC1F,KAAA;AAAC,GAAA,EAAA;IAAAQ,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EAED,SAAAV,aAAaA,GAAG;AACZ,MAAA,IAAI,CAACe,UAAU,CAACyB,KAAK,CAACC,OAAO,GAAG,EAAE,CAAA;MAClC,IAAI,CAACC,yBAAyB,EAAE,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAAjC,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EAED,SAAAT,aAAaA,GAAG;AACZ,MAAA,IAAI,CAACc,UAAU,CAACyB,KAAK,CAACC,OAAO,GAAG,MAAM,CAAA;MACtC,IAAI,CAACC,yBAAyB,EAAE,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAAjC,GAAA,EAAA,sBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAX,oBAAoBA,CAAChB,KAAK,EAAoB;AAAA,MAAA,IAAlBE,KAAK,GAAAX,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,QAAQ,CAAA;AACxC,MAAA,IAAI,CAACyC,UAAU,CAACF,SAAS,GAAG9B,KAAK,CAAA;AACjC,MAAA,IAAI,CAACgC,UAAU,CAACyB,KAAK,CAACG,SAAS,GAAG1D,KAAK,CAAA;AAC3C,KAAA;AAAC,GAAA,EAAA;IAAAwB,GAAA,EAAA,sBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAkC,oBAAoBA,GAAG;AACnB,MAAA,OAAO,IAAI,CAAC7B,UAAU,CAACF,SAAS,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAAJ,GAAA,EAAA,iBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAmC,eAAeA,GAAG;MACd,IAAI,CAAC5B,UAAU,CAAC6B,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC1C,MAAA,IAAI,CAAC9B,UAAU,CAACuB,KAAK,CAACC,OAAO,KAAK,MAAM,GAAG,IAAI,CAACtC,aAAa,EAAE,GAAG,IAAI,CAACC,aAAa,EAAE,CAAA;AAC1F,KAAA;AAAC,GAAA,EAAA;IAAAK,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EAED,SAAAP,aAAaA,GAAG;AACZ,MAAA,IAAI,CAACc,UAAU,CAACuB,KAAK,CAACC,OAAO,GAAG,EAAE,CAAA;MAClC,IAAI,CAACC,yBAAyB,EAAE,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAAjC,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EAED,SAAAN,aAAaA,GAAG;AACZ,MAAA,IAAI,CAACa,UAAU,CAACuB,KAAK,CAACC,OAAO,GAAG,MAAM,CAAA;MACtC,IAAI,CAACC,yBAAyB,EAAE,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAAjC,GAAA,EAAA,2BAAA;AAAAC,IAAAA,KAAA,EAED,SAAAgC,yBAAyBA,GAAG;AACxB,MAAA,IAAMM,cAAc,GAAGC,kBAAA,CAAI,IAAI,CAACnC,WAAW,CAACoC,QAAQ,CAAA,CAAEC,MAAM,CAAC,UAAAC,KAAK,EAAA;AAAA,QAAA,OAAIA,KAAK,CAACN,SAAS,CAACO,QAAQ,CAAC,QAAQ,CAAC,CAAA;OAAC,CAAA,CAAA;MACzG,IAAMC,iBAAiB,GAAGN,cAAc,CAACO,MAAM,CAAC,UAACC,GAAG,EAAEJ,KAAK,EAAA;AAAA,QAAA,OAAKI,GAAG,GAAGJ,KAAK,CAACK,YAAY,CAAA;AAAA,OAAA,EAAE,CAAC,CAAC,CAAA;AAC5F,MAAA,IAAMC,eAAe,GAAG,IAAI,CAAC5C,WAAW,CAAC2C,YAAY,CAAA;AACrD,MAAA,IAAI,CAACzC,aAAa,CAACwB,KAAK,CAACmB,MAAM,GAAA/C,cAAAA,CAAAA,MAAA,CAAkB8C,eAAe,GAAGJ,iBAAiB,EAAK,KAAA,CAAA,CAAA;AAC7F,KAAA;AAAC,GAAA,EAAA;IAAA7C,GAAA,EAAA,wBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAiB,sBAAsBA,GAAG;MACrB,IAAI,CAACe,yBAAyB,EAAE,CAAA;MAChC,IAAI,CAACkB,sBAAsB,EAAE,CAAA;AAC7B,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAAC,GAAA,EAAA;IAAAnD,GAAA,EAAA,wBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAkD,sBAAsBA,GAAG;MACrB,IAAMC,cAAc,GAAG,IAAI,CAAC1C,WAAW,CAAC2C,WAAW,CAACrC,IAAI,EAAE,CAAA;AAC1D,MAAA,IAAMsC,QAAQ,GAAGC,UAAU,CAACC,gBAAgB,CAAC,IAAI,CAAC9C,WAAW,CAAC,CAAC4C,QAAQ,CAAC,CAAA;MACxE,IAAMG,QAAQ,GAAGH,QAAQ,GAAGF,cAAc,CAACtF,MAAM,GAAG,EAAE,CAAA;MACtD,IAAI,CAAC4C,WAAW,CAACqB,KAAK,CAAC0B,QAAQ,GAAAtD,EAAAA,CAAAA,MAAA,CAAMsD,QAAQ,EAAI,IAAA,CAAA,CAAA;AACjD,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;;AAEA;AAAA,GAAA,EAAA;IAAAzD,GAAA,EAAA,6BAAA;AAAAC,IAAAA,KAAA,EACA,SAAAR,2BAA2BA,GAAa;AAAA,MAAA,IAAZiE,GAAG,GAAA7F,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;AAClC,MAAA,IAAI6F,GAAG,EAAE;QACL,IAAI,CAACnD,aAAa,CAAC8B,SAAS,CAACsB,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAClE,OAAC,MACI;QACD,IAAI,CAACpD,aAAa,CAAC8B,SAAS,CAACuB,MAAM,CAAC,4BAA4B,CAAC,CAAA;AACrE,OAAA;MACA,OAAOF,GAAG,KAAK,IAAI,CAAA;AACvB,KAAA;AAAC,GAAA,EAAA;IAAA1D,GAAA,EAAA,mCAAA;AAAAC,IAAAA,KAAA,EACD,SAAA4D,iCAAiCA,GAAG;MAChC,IAAI,CAACtD,aAAa,CAAC8B,SAAS,CAACC,MAAM,CAAC,4BAA4B,CAAC,CAAA;AACrE,KAAA;AAAC,GAAA,EAAA;IAAAtC,GAAA,EAAA,gCAAA;AAAAC,IAAAA,KAAA,EACD,SAAA6D,8BAA8BA,GAAG;MAC7B,OAAO,IAAI,CAACvD,aAAa,CAAC8B,SAAS,CAACO,QAAQ,CAAC,4BAA4B,CAAC,CAAA;AAC9E,KAAA;AACA;AAAA,GAAA,EAAA;IAAA5C,GAAA,EAAA,gBAAA;AAAAC,IAAAA,KAAA,EACA,SAAA8D,cAAcA,GAAoJ;MAAA,IAAnJC,KAAK,GAAAnG,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA;AAAEoG,QAAAA,OAAO,EAAE,EAAE;AAAEC,QAAAA,UAAU,EAAE,MAAM;AAAE1F,QAAAA,KAAK,EAAE,OAAO;AAAE2F,QAAAA,IAAI,EAAE,MAAM;QAAEC,MAAM,EAAE,CAAC,CAAC;AAAEC,QAAAA,SAAS,EAAE,KAAK;AAAEC,QAAAA,WAAW,EAAE,KAAK;AAAEC,QAAAA,cAAc,EAAE,IAAA;OAAM,CAAA;AAC5J,MAAA,IAAM5D,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACxB,MAAA,IAAM6D,UAAU,GAAGxF,QAAQ,CAACyF,aAAa,CAAC,KAAK,CAAC,CAAA;AAChD,MAAA,IAAMC,UAAU,GAAG,iBAAiB,GAAGC,MAAM,CAAChE,KAAK,CAAC,CAACiE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;AACtE,MAAoB,kBAAkB,GAAGD,MAAM,CAACX,KAAK,CAACE,UAAU,CAAC,CAACU,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE;MACpFJ,UAAU,CAACnC,SAAS,CAACsB,GAAG,CAAC,kBAAkB,EAAEe,UAAU,EAAE,oBAAoB,CAAC,CAAA;MAC9E,IAAI,CAAC/D,KAAK,EAAE,CAAA;MACZ6D,UAAU,CAACnC,SAAS,CAACsB,GAAG,CAAC,IAAI,CAACpD,aAAa,CAACkC,QAAQ,CAAC3E,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,oBAAoB,GAAG,oBAAoB,CAAC,CAAA;AAEpH,MAAA,IAAM+G,OAAO,GAAG7F,QAAQ,CAACyF,aAAa,CAAC,KAAK,CAAC,CAAA;AAC7CI,MAAAA,OAAO,CAACzE,SAAS,GAAG4D,KAAK,CAACE,UAAU,CAAA;AACpCW,MAAAA,OAAO,CAACxC,SAAS,CAACsB,GAAG,CAAC,qBAAqB,CAAC,CAAA;AAC5CkB,MAAAA,OAAO,CAAC9C,KAAK,CAACG,SAAS,GAAG8B,KAAK,CAACxF,KAAK,CAAA;AAErC,MAAA,IAAMsG,UAAU,GAAG9F,QAAQ,CAACyF,aAAa,CAAC,KAAK,CAAC,CAAA;AAChDK,MAAAA,UAAU,CAACzC,SAAS,CAACsB,GAAG,CAAC,0BAA0B,CAAC,CAAA;;AAEpD;AACA,MAAA,IAAIK,KAAK,CAACxF,KAAK,KAAK,OAAO,EAAE;QACzB,IAAMuG,WAAW,GAAGf,KAAK,CAACC,OAAO,CAACe,QAAQ,CAAC,IAAI,CAAC,CAAA;QAChD,IAAMC,MAAM,GAAGjB,KAAK,CAACC,OAAO,CAACnG,MAAM,GAAG,EAAE,CAAC;;QAEzC,IAAIiH,WAAW,IAAIE,MAAM,EAAE;AACvBH,UAAAA,UAAU,CAACzC,SAAS,CAACsB,GAAG,CAAC,0BAA0B,CAAC,CAAA;AACxD,SAAC,MAAM;AACHmB,UAAAA,UAAU,CAACzC,SAAS,CAACsB,GAAG,CAAC,2BAA2B,CAAC,CAAA;AACzD,SAAA;AACJ,OAAA;AAEAmB,MAAAA,UAAU,CAAC1E,SAAS,GAAG4D,KAAK,CAACC,OAAO,CAAA;AAEpCO,MAAAA,UAAU,CAACU,WAAW,CAACL,OAAO,CAAC,CAAA;AAC/BL,MAAAA,UAAU,CAACU,WAAW,CAACJ,UAAU,CAAC,CAAA;AAClC,MAAA,IAAI,CAACvE,aAAa,CAAC2E,WAAW,CAACV,UAAU,CAAC,CAAA;;AAE1C;MACA,IAAK,CAAC,IAAI,CAAC/C,cAAc,IAAKuC,KAAK,CAACO,cAAc,EAAE;QAChD,IAAI,CAACY,qBAAqB,EAAE,CAAA;AAChC,OAAA;AAEA,MAAA,IAAI,CAAC1E,UAAU,CAACR,KAAK,GAAG,EAAE,CAAA;MAC1B,IAAI,CAACgC,yBAAyB,EAAE,CAAA;MAChC,IAAI,CAACmD,0BAA0B,CAACZ,UAAU,EAAER,KAAK,CAACxF,KAAK,CAAC,CAAC;;AAEzD;AACA,MAAA,IAAM6F,SAAS,GAAGL,KAAK,CAACK,SAAS,GAAGL,KAAK,CAACK,SAAS,GAAG,IAAIgB,IAAI,EAAE,CAACC,WAAW,EAAE,CAAA;MAC9E,IAAMhB,WAAW,GAAGN,KAAK,CAACM,WAAW,GAAGN,KAAK,CAACM,WAAW,GAAGD,SAAS,CAAA;MAErE,IAAI,IAAI,CAACjG,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC0B,QAAQ,CAACyF,IAAI,CAAAxG,cAAA,CAAAA,cAAA,CAAA;AAAG4B,UAAAA,KAAK,EAALA,KAAAA;AAAK,SAAA,EAAKqD,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEK,UAAAA,SAAS,EAATA,SAAS;AAAEC,UAAAA,WAAW,EAAXA,WAAW;AAAEE,UAAAA,UAAU,EAAVA,UAAAA;AAAU,SAAA,CAAE,CAAC,CAAA;QAC3E,IAAI,IAAI,CAAC1E,QAAQ,CAAChC,MAAM,GAAG,IAAI,CAAC+B,aAAa,EAAE;AAC3C,UAAA,IAAI,CAACC,QAAQ,CAAC0F,KAAK,EAAE,CAAA;AACzB,SAAA;AACJ,OAAA;MAEA,IAAI,IAAI,CAAC3D,eAAe,EAAE;AACtB,QAAA,IAAI,CAACA,eAAe,CAAC,IAAI,EAAElB,KAAK,CAAC,CAAA;AACrC,OAAA;AAEA,MAAA,OAAOA,KAAK,CAAA;AAChB,KAAA;AAAC,GAAA,EAAA;IAAAX,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EAID,SAAAwF,aAAaA,GAA2F;AAAA,MAAA,IAA1FxB,OAAO,GAAApG,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE,CAAA;AAAA,MAAA,IAAEqG,UAAU,GAAArG,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,MAAM,CAAA;AAAA,MAAA,IAAEW,KAAK,GAAAX,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,OAAO,CAAA;AAAA,MAAA,IAAEsG,IAAI,GAAAtG,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,MAAM,CAAA;AAAA,MAAA,IAAE0G,cAAc,GAAA1G,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;AAClG,MAAA,IAAI6H,QAAQ,GAAG,IAAI,CAAC3B,cAAc,CAC9B;AAAEE,QAAAA,OAAO,EAAEA,OAAO;AAAEC,QAAAA,UAAU,EAAEA,UAAU;AAAE1F,QAAAA,KAAK,EAAEA,KAAK;AAAE2F,QAAAA,IAAI,EAAEA,IAAI;AAAEI,QAAAA,cAAc,EAAEA,cAAAA;AAAe,OACzG,CAAC,CAAA;AACD;AACA,MAAA,OAAOmB,QAAQ,CAAA;AAEnB,KAAA;AAAC,GAAA,EAAA;IAAA1F,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EACD,SAAA0F,aAAaA,CAACC,CAAC,EAAE;AACb;MACA,IAAIC,MAAM,GAAG,KAAK,CAAA;MAClB,IAAI;QACA,IAAI,CAACtF,aAAa,CAACuF,WAAW,CAAC,IAAI,CAACvF,aAAa,CAACtB,aAAa,CAAA,kBAAA,CAAAkB,MAAA,CAAoBwE,MAAM,CAACiB,CAAC,CAAC,CAAChB,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAE,CAAC,CAAC,CAAA;AAClHiB,QAAAA,MAAM,GAAG,IAAI,CAAA;OAChB,CACD,OAAOE,KAAK,EAAE;QACVC,OAAO,CAACC,GAAG,CAAA,oCAAqC,CAAC,CAAA;AACrD,OAAA;AACA,MAAA,IAAIJ,MAAM,EAAE;AACR;AACA;;AAEA;AACA,QAAA,IAAI,CAAC/F,QAAQ,CAACoG,MAAM,CAAC,IAAI,CAACpG,QAAQ,CAACqG,SAAS,CAAC,UAACC,IAAI,EAAA;AAAA,UAAA,OAAKA,IAAI,CAACzF,KAAK,KAAKiF,CAAC,CAAA;SAAC,CAAA,EAAE,CAAC,CAAC,CAAA;AAChF,OAAA;AACA,MAAA,OAAOC,MAAM,CAAA;AACjB,KAAA;AACA;AACJ;AADI,GAAA,EAAA;IAAA7F,GAAA,EAAA,qBAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAoG,mBAAmBA,CAACT,CAAC,EAAE;MACnB,IAAIU,GAAG,GAAG,IAAI,CAAA;AACd;MACA,IAAI;QACAA,GAAG,GAAG,IAAI,CAAC/F,aAAa,CAACtB,aAAa,CAAA,kBAAA,CAAAkB,MAAA,CAAoBwE,MAAM,CAACiB,CAAC,CAAC,CAAChB,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAE,CAAC,CAAA;OAC3F,CACD,OAAOmB,KAAK,EAAE;QACVC,OAAO,CAACC,GAAG,CAAA,oCAAqC,CAAC,CAAA;AACrD,OAAA;AACA,MAAA,OAAOK,GAAG,CAAA;AACd,KAAA;AACA;AACJ;AADI,GAAA,EAAA;IAAAtG,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAsG,iBAAiBA,CAACX,CAAC,EAAE;MACjB,IAAI3B,OAAO,GAAG,EAAE,CAAA;AAChB;MACA,IAAI;AACA;QACAA,OAAO,GAAG,IAAI,CAACnE,QAAQ,CAAC4C,MAAM,CAAC,UAAC0D,IAAI,EAAA;AAAA,UAAA,OAAKA,IAAI,CAACzF,KAAK,KAAKiF,CAAC,CAAA;AAAA,SAAA,CAAC,CAAC,CAAC,CAAC,CAAC3B,OAAO,CAAA;AACrE;OACH,CACD,OAAO8B,KAAK,EAAE;QACVC,OAAO,CAACC,GAAG,CAAA,oCAAqC,CAAC,CAAA;AACrD,OAAA;AACA,MAAA,OAAOhC,OAAO,CAAA;AAClB,KAAA;;AAEA;AACJ;AADI,GAAA,EAAA;IAAAjE,GAAA,EAAA,sBAAA;AAAAC,IAAAA,KAAA,EAGA,SAAAuG,oBAAoBA,CAACZ,CAAC,EAAE3B,OAAO,EAAE;MAC7B,IAAIwC,OAAO,GAAG,KAAK,CAAA;MACnB,IAAI;QACA,IAAI,CAAClG,aAAa,CAACtB,aAAa,CAAA,kBAAA,CAAAkB,MAAA,CAAoBwE,MAAM,CAACiB,CAAC,CAAC,CAAChB,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAE,CAAC,CAAC8B,SAAS,CAACtG,SAAS,IAAI6D,OAAO,CAAA;AACjH;QACA,IAAImC,IAAI,GAAG,IAAI,CAACtG,QAAQ,CAAC4C,MAAM,CAAC,UAAC0D,IAAI,EAAA;AAAA,UAAA,OAAKA,IAAI,CAACzF,KAAK,KAAKiF,CAAC,CAAA;SAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAC9DQ,IAAI,CAACnC,OAAO,IAAIA,OAAO,CAAA;QACvBmC,IAAI,CAAC9B,WAAW,GAAG,IAAIe,IAAI,EAAE,CAACC,WAAW,EAAE,CAAA;AAC3CmB,QAAAA,OAAO,GAAG,IAAI,CAAA;;AAEd;AACA,QAAA,IAAI,CAAC,IAAI,CAAChF,cAAc,EAAE;AACtB,UAAA,IAAI,CAAClB,aAAa,CAACoG,gBAAgB,CAACpC,cAAc,EAAE,CAAA;AACxD,SAAA;OACH,CAAC,OAAOwB,KAAK,EAAE;QACZC,OAAO,CAACC,GAAG,CAAA,EAAA,CAAA9F,MAAA,CAAIwE,MAAM,CAACiB,CAAC,CAAC,EAAA,yBAAA,CAAyB,CAAC,CAAA;AACtD,OAAA;AACA,MAAA,OAAOa,OAAO,CAAA;AAClB,KAAA;;AAEA;AACJ;AADI,GAAA,EAAA;IAAAzG,GAAA,EAAA,uBAAA;AAAAC,IAAAA,KAAA,EAEA,SAAA2G,qBAAqBA,CAAChB,CAAC,EAAE3B,OAAO,EAAE;MAC9B,IAAIwC,OAAO,GAAG,KAAK,CAAA;MACnB,IAAI;QACA,IAAI,CAAClG,aAAa,CAACtB,aAAa,CAAA,kBAAA,CAAAkB,MAAA,CAAoBwE,MAAM,CAACiB,CAAC,CAAC,CAAChB,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAE,CAAC,CAAC8B,SAAS,CAACtG,SAAS,GAAG6D,OAAO,CAAA;AAChH;QACA,IAAImC,IAAI,GAAG,IAAI,CAACtG,QAAQ,CAAC4C,MAAM,CAAC,UAAC0D,IAAI,EAAA;AAAA,UAAA,OAAKA,IAAI,CAACzF,KAAK,KAAKiF,CAAC,CAAA;SAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAC9DQ,IAAI,CAACnC,OAAO,GAAGA,OAAO,CAAA;QACtBmC,IAAI,CAAC9B,WAAW,GAAG,IAAIe,IAAI,EAAE,CAACC,WAAW,EAAE,CAAA;AAC3CmB,QAAAA,OAAO,GAAG,IAAI,CAAA;;AAEd;AACA,QAAA,IAAI,CAAC,IAAI,CAAChF,cAAc,EAAE;AACtB,UAAA,IAAI,CAAClB,aAAa,CAACoG,gBAAgB,CAACpC,cAAc,EAAE,CAAA;AACxD,SAAA;OACH,CAAC,OAAOwB,KAAK,EAAE;QACZC,OAAO,CAACC,GAAG,CAAA,EAAA,CAAA9F,MAAA,CAAIwE,MAAM,CAACiB,CAAC,CAAC,EAAA,yBAAA,CAAyB,CAAC,CAAA;AACtD,OAAA;AACA,MAAA,OAAOa,OAAO,CAAA;AAClB,KAAA;;AAEA;AACJ;AACA;AAFI,GAAA,EAAA;IAAAzG,GAAA,EAAA,uBAAA;AAAAC,IAAAA,KAAA,EAGA,SAAAkF,qBAAqBA,GAAG;AACpB,MAAA,IAAI,CAAC5E,aAAa,CAACoG,gBAAgB,CAACpC,cAAc,EAAE,CAAA;AACxD,KAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AAPI,GAAA,EAAA;IAAAvE,GAAA,EAAA,4BAAA;AAAAC,IAAAA,KAAA,EAQA,SAAAmF,0BAA0BA,CAACyB,cAAc,EAAErI,KAAK,EAAE;AAC9C;AACA;AACAqI,MAAAA,cAAc,CAACxE,SAAS,CAACuB,MAAM,CAC3B,iBAAiB,EAAE,gBAAgB,EACnC,mBAAmB,EAAE,kBAAkB,EACvC,kBAAkB,EAAE,iBAAiB,CAAC,CAAA;AAC1C,MAAA,IAAIkB,UAAU,GAAG+B,cAAc,CAACH,SAAS,CAAA;AACzCzF,MAAAA,MAAM,CAAC6F,OAAO,GAAGhC,UAAU,CAAC;AAC5B;;AAEA,MAAA,IAAMiC,aAAa,GAAG9F,MAAM,CAACuC,gBAAgB,CAACsB,UAAU,CAAC,CAAA;;AAEzD;AACA,MAAA,IAAMkC,aAAa,GAAGlC,UAAU,CAAC9B,YAAY,CAAA;;AAE7C;AACA,MAAA,IAAIiE,UAAU,CAAA;AACd,MAAA,IAAIF,aAAa,CAACE,UAAU,KAAK,QAAQ,EAAE;AACvC,QAAA,IAAM3D,QAAQ,GAAGC,UAAU,CAACwD,aAAa,CAACzD,QAAQ,CAAC,CAAA;AACnD2D,QAAAA,UAAU,GAAG3D,QAAQ,GAAG,GAAG,CAAC;AAChC,OAAC,MAAM;AACH2D,QAAAA,UAAU,GAAG1D,UAAU,CAACwD,aAAa,CAACE,UAAU,CAAC,CAAA;AACrD,OAAA;;AAEA;AACA,MAAA,IAAMlC,WAAW,GAAGiC,aAAa,GAAGC,UAAU,CAAA;;AAE9C;AACA,MAAA,QAAQzI,KAAK;AACT,QAAA,KAAK,QAAQ;AACT,UAAA,IAAIuG,WAAW,EAAE;AACb8B,YAAAA,cAAc,CAACxE,SAAS,CAACsB,GAAG,CAAC,kBAAkB,CAAC,CAAA;AACpD,WAAC,MACI;AACDkD,YAAAA,cAAc,CAACxE,SAAS,CAACsB,GAAG,CAAC,mBAAmB,CAAC,CAAA;AACrD,WAAA;AACA,UAAA,MAAA;AACJ,QAAA,KAAK,OAAO;AACR,UAAA,IAAIoB,WAAW,EAAE;AACb8B,YAAAA,cAAc,CAACxE,SAAS,CAACsB,GAAG,CAAC,iBAAiB,CAAC,CAAA;AACnD,WAAC,MACI;AACDkD,YAAAA,cAAc,CAACxE,SAAS,CAACsB,GAAG,CAAC,kBAAkB,CAAC,CAAA;AACpD,WAAA;AACA,UAAA,MAAA;AACJ,QAAA,KAAK,MAAM,CAAA;AACX,QAAA;AACI,UAAA,IAAIoB,WAAW,EAAE;AACb8B,YAAAA,cAAc,CAACxE,SAAS,CAACsB,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAClD,WAAC,MACI;AACDkD,YAAAA,cAAc,CAACxE,SAAS,CAACsB,GAAG,CAAC,iBAAiB,CAAC,CAAA;AACnD,WAAA;AACA,UAAA,MAAA;AACR,OAAA;AAEJ,KAAA;AACA;AACA;AACJ;AACA;AACA;AACA;AACA;AALI,GAAA,EAAA;IAAA3D,GAAA,EAAA,YAAA;AAAAC,IAAAA,KAAA,EAMA,SAAAiH,UAAUA,CAACtB,CAAC,EAAEuB,CAAC,EAAE;MAEb,IAAIvB,CAAC,IAAI7H,SAAS,EAAE;AAChB6H,QAAAA,CAAC,GAAG,CAAC,CAAA;AACLuB,QAAAA,CAAC,GAAG,IAAI,CAACrH,QAAQ,CAAChC,MAAM,CAAA;AAC5B,OAAA;MACA,IAAIqJ,CAAC,KAAKpJ,SAAS,EAAE;QACjBoJ,CAAC,GAAGvB,CAAC,GAAG,CAAC,GAAGuB,CAAC,GAAGvB,CAAC,GAAG,CAAC,CAAA;AACzB,OAAA;AACA;AACA;;MAEA,OAAO,IAAI,CAAC9F,QAAQ,CAACsH,KAAK,CAACxB,CAAC,EAAEuB,CAAC,CAAC,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAAnH,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAoH,iBAAiBA,GAAG;AAChB,MAAA,OAAO,IAAI,CAACvH,QAAQ,CAACsH,KAAK,EAAE,CAAA;AAChC,KAAA;AAAC,GAAA,EAAA;IAAApH,GAAA,EAAA,cAAA;AAAAC,IAAAA,KAAA,EAED,SAAAqH,YAAYA,GAAG;MACX,IAAI,CAAC3G,KAAK,GAAG,CAAC,CAAA;AACd,MAAA,IAAI,CAACJ,aAAa,CAACH,SAAS,GAAG,EAAE,CAAA;MACjC,IAAI,CAACN,QAAQ,GAAG,EAAE,CAAA;AACtB,KAAA;AAAC,GAAA,EAAA;IAAAE,GAAA,EAAA,kBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAsH,gBAAgBA,GAAG;AACf,MAAA,OAAO,IAAI,CAACzH,QAAQ,CAAChC,MAAM,CAAA;AAC/B,KAAA;AAAC,GAAA,EAAA;IAAAkC,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAuH,iBAAiBA,CAAC5B,CAAC,EAAE;MACjB,IAAIA,CAAC,IAAI,CAAC,IAAIA,CAAC,GAAG,IAAI,CAAC9F,QAAQ,CAAChC,MAAM,EAAE;AACpC,QAAA,OAAO,IAAI,CAACgC,QAAQ,CAAC8F,CAAC,CAAC,CAAA;AAC3B,OAAA;AACA,MAAA,OAAO,EAAE,CAAA;AAEb,KAAA;AAAC,GAAA,EAAA;IAAA5F,GAAA,EAAA,0BAAA;AAAAC,IAAAA,KAAA,EAED,SAAAwH,wBAAwBA,CAAC7B,CAAC,EAAE;MACxB,IAAIA,CAAC,IAAI,CAAC,IAAIA,CAAC,GAAG,IAAI,CAAC9F,QAAQ,CAAChC,MAAM,EAClC,OAAO,IAAI,CAACgC,QAAQ,CAAC8F,CAAC,CAAC,CAAC3B,OAAO,CAAC,KAEhC,OAAO,EAAE,CAAA;AACjB,KAAA;;AAEA;AAAA,GAAA,EAAA;IAAAjE,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EACA,SAAAyH,iBAAiBA,CAACC,WAAW,EAAE;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;AAC3B;MACA,IAAI,CAACN,YAAY,EAAE,CAAA;;AAEnB;AACA,MAAA,IAAI,CAAC/G,aAAa,CAACH,SAAS,GAAG,EAAE,CAAA;;AAEjC;AACAuH,MAAAA,WAAW,CAACE,OAAO,CAAC,UAACC,OAAO,EAAK;AAC7BF,QAAAA,MAAI,CAAC7D,cAAc,CAAC+D,OAAO,CAAC,CAAA;AAChC,OAAC,CAAC,CAAA;AACN,KAAA;AACA;AACJ;AACA;AACA;AAHI,GAAA,EAAA;IAAA9H,GAAA,EAAA,aAAA;AAAAC,IAAAA,KAAA,EAIA,SAAA8H,WAAWA,CAACC,QAAQ,EAAE;MAClB,IAAI,CAAC3H,WAAW,CAACgC,SAAS,CAACuB,MAAM,CAAC,IAAI,CAACzE,MAAM,CAAC,CAAA;MAC9C,IAAI,CAACkB,WAAW,CAACgC,SAAS,CAACsB,GAAG,CAACqE,QAAQ,CAAC,CAAA;MACxC,IAAI,CAAC7I,MAAM,GAAG6I,QAAQ,CAAA;AAC1B,KAAA;;AAEA;AACJ;AACA;AACA;AAHI,GAAA,EAAA;IAAAhI,GAAA,EAAA,OAAA;IAAAiI,GAAA,EAIA,SAAAA,GAAAA,GAAY;MACR,OAAO,IAAI,CAAC9I,MAAM,CAAA;AACtB,KAAA;;AAEA;AACJ;AACA;AACA;AAHI,GAAA,CAAA,EAAA,CAAA;IAAAa,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAIA,SAAOiI,OAAOA,GAAG;MACb,OAAO;AAAE,QAAA,SAAS,EAAE,QAAQ;AAAE,QAAA,SAAS,EAAE,OAAO;AAAE,QAAA,KAAK,EAAE,gCAAgC;AAAE,QAAA,KAAK,EAAE,IAAA;OAAM,CAAA;AAC5G,KAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBI,GAAA,EAAA;IAAAlI,GAAA,EAAA,YAAA;AAAAC,IAAAA,KAAA,EAkBA,SAAOkI,UAAUA,CAACC,QAAQ,EAAwD;AAAA,MAAA,IAAtDC,SAAS,GAAAxK,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAGE,SAAS,CAAA;AAAA,MAAA,IAAEuK,sBAAsB,GAAAzK,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;MAC5E,IAAM0K,SAAS,GAAG,gcAAgc,CAAA;AAEld,MAAA,IAAI,OAAOH,QAAQ,KAAK,QAAQ,EAAE;AAC9BA,QAAAA,QAAQ,GAAGI,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAI,GAAI,CAAC,GAAG,EAAE,CAAA;AACrD,OAAA;MAEA,IAAIL,SAAS,KAAKtK,SAAS,EAAE;AACzBsK,QAAAA,SAAS,GAAGG,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAGH,SAAS,CAACzK,MAAM,CAAC,CAAA;AAC5D,OAAA;AAEAuK,MAAAA,SAAS,GAAGA,SAAS,GAAGE,SAAS,CAACzK,MAAM,CAAA;;AAExC;AACA,MAAA,OAAOyK,SAAS,CAACF,SAAS,CAAC,KAAK,GAAG,IAAI,UAAU,CAACM,IAAI,CAACJ,SAAS,CAACF,SAAS,CAAC,CAAC,EAAE;QAC1EA,SAAS,GAAG,CAACA,SAAS,GAAG,CAAC,IAAIE,SAAS,CAACzK,MAAM,CAAA;AAClD,OAAA;AAEA,MAAA,IAAI8K,CAAC,GAAGL,SAAS,CAACM,SAAS,CAACR,SAAS,CAAC,GAAGE,SAAS,CAACM,SAAS,CAAC,CAAC,EAAER,SAAS,CAAC,CAAA;AAE1E,MAAA,IAAI,OAAOD,QAAQ,KAAK,QAAQ,EAAE;QAC9BA,QAAQ,GAAGQ,CAAC,CAAC9K,MAAM,CAAA;AACvB,OAAA;MAEA,IAAIgL,CAAC,GAAG,EAAE,CAAA;MACV,OAAOV,QAAQ,GAAG,CAAC,EAAE;AACjBU,QAAAA,CAAC,IAAIV,QAAQ,GAAGQ,CAAC,CAAC9K,MAAM,GAAG8K,CAAC,CAACC,SAAS,CAAC,CAAC,EAAET,QAAQ,CAAC,GAAGQ,CAAC,CAAA;QACvDR,QAAQ,IAAIQ,CAAC,CAAC9K,MAAM,CAAA;AACxB,OAAA;MAEA,IAAIgL,CAAC,CAACA,CAAC,CAAChL,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AACzBgL,QAAAA,CAAC,GAAGA,CAAC,CAACD,SAAS,CAAC,CAAC,EAAEC,CAAC,CAAChL,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3C,OAAA;AAEA,MAAA,IAAIwK,sBAAsB,EAAE;QACxB,IAAIS,CAAC,GAAGD,CAAC,CAAC,CAAC,CAAC,CAACE,WAAW,EAAE,CAAA;QAC1BD,CAAC,GAAG,OAAO,CAACJ,IAAI,CAACI,CAAC,CAAC,GAAGA,CAAC,GAAG,GAAG,CAAA;QAC7BD,CAAC,GAAGC,CAAC,GAAGD,CAAC,CAACD,SAAS,CAAC,CAAC,CAAC,CAAA;AAC1B,OAAA;AAEA,MAAA,OAAOC,CAAC,CAAA;AACZ,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function t(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,a(n.key),n)}}function i(e,t,i){return(t=a(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function s(e){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{};t%2?n(Object(s),!0).forEach((function(t){i(e,t,s[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):n(Object(s)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(s,t))}))}return e}function r(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)||function(t,i){if(t){if("string"==typeof t)return e(t,i);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,i):void 0}}(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 a(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}var o=function(){return e=function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var r=s(s({},{theme:"quikchat-theme-light",trackHistory:!0,titleArea:{title:"Chat",show:!1,align:"center"},messagesArea:{alternating:!0},inputArea:{show:!0}}),n);"string"==typeof t&&(t=document.querySelector(t)),this._parentElement=t,this._theme=r.theme,this._onSend=i||function(){},this._createWidget(),r.titleArea&&(this.titleAreaSetContents(r.titleArea.title,r.titleArea.align),!0===r.titleArea.show?this.titleAreaShow():this.titleAreaHide()),r.messagesArea&&this.messagesAreaAlternateColors(r.messagesArea.alternating),r.inputArea&&(!0===r.inputArea.show?this.inputAreaShow():this.inputAreaHide()),this._attachEventListeners(),this.trackHistory=r.trackHistory||!0,this._historyLimit=1e7,this._history=[]},i=[{key:"_createWidget",value:function(){var e='\n <div class="quikchat-base '.concat(this.theme,'">\n <div class="quikchat-title-area">\n <span style="font-size: 1.5em; font-weight: 600;">Title Area</span>\n </div>\n <div class="quikchat-messages-area"></div>\n <div class="quikchat-input-area">\n <textarea class="quikchat-input-textbox"></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._messagesArea=this._chatWidget.querySelector(".quikchat-messages-area"),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(){return e._onSend(e,e._textEntry.value.trim())})),window.addEventListener("resize",(function(){return e._handleContainerResize()})),this._chatWidget.addEventListener("resize",(function(){return e._handleContainerResize()})),this._textEntry.addEventListener("keydown",(function(t){t.shiftKey&&13===t.keyCode&&(t.preventDefault(),e._onSend(e,e._textEntry.value.trim()))})),this._messagesArea.addEventListener("scroll",(function(){var t=e._messagesArea,i=t.scrollTop,n=t.scrollHeight,s=t.clientHeight;e.userScrolledUp=i+s<n}))}},{key:"setCallbackOnSend",value:function(e){this._onSend=e}},{key:"setCallbackonMessageAdded",value:function(e){this._onMessageAdded=e}},{key:"titleAreaToggle",value:function(){"none"===this._titleArea.style.display?this.titleAreaShow():this.titleAreaHide()}},{key:"titleAreaShow",value:function(){this._titleArea.style.display="",this._adjustMessagesAreaHeight()}},{key:"titleAreaHide",value:function(){this._titleArea.style.display="none",this._adjustMessagesAreaHeight()}},{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(){this._inputArea.classList.toggle("hidden"),"none"===this._inputArea.style.display?this.inputAreaShow():this.inputAreaHide()}},{key:"inputAreaShow",value:function(){this._inputArea.style.display="",this._adjustMessagesAreaHeight()}},{key:"inputAreaHide",value:function(){this._inputArea.style.display="none",this._adjustMessagesAreaHeight()}},{key:"_adjustMessagesAreaHeight",value:function(){var e=r(this._chatWidget.children).filter((function(e){return e.classList.contains("hidden")})).reduce((function(e,t){return e+t.offsetHeight}),0),t=this._chatWidget.offsetHeight;this._messagesArea.style.height="calc(100% - ".concat(t-e,"px)")}},{key:"_handleContainerResize",value:function(){return this._adjustMessagesAreaHeight(),this._adjustSendButtonWidth(),!0}},{key:"_adjustSendButtonWidth",value:function(){var e=this._sendButton.textContent.trim(),t=parseFloat(getComputedStyle(this._sendButton).fontSize)*e.length+16;return this._sendButton.style.minWidth="".concat(t,"px"),!0}},{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,timestamp:!1,updatedtime:!1,scrollIntoView:!0},t=this.msgid,i=document.createElement("div"),n="quikchat-msgid-"+String(t).padStart(10,"0");String(e.userString).padStart(10,"0"),i.classList.add("quikchat-message",n),this.msgid++,i.classList.add(this._messagesArea.children.length%2==1?"quikchat-message-1":"quikchat-message-2");var r=document.createElement("div");r.innerHTML=e.userString,r.style="width: 100%; text-align: ".concat(e.align,"; font-size: 1em; font-weight:700;");var a=document.createElement("div");a.style="width: 100%;",a.innerHTML=e.content,i.appendChild(r),i.appendChild(a),this._messagesArea.appendChild(i),this.userScrolledUp&&!e.scrollIntoView||this.messageScrollToBottom(),this._textEntry.value="",this._adjustMessagesAreaHeight(),this._handleShortLongMessageCSS(i,e.align);var o=e.timestamp?e.timestamp:(new Date).toISOString(),l=e.updatedtime?e.updatedtime:o;return this.trackHistory&&(this._history.push(s(s({msgid:t},e),{},{timestamp:o,updatedtime:l,messageDiv:i})),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",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"right",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user",s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];return this.messageAddFull({content:e,userString:t,align:i,role:n,scrollIntoView:s})}},{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){console.log("{String(n)} : Message ID not found")}return t&&this._history.splice(this._history.findIndex((function(t){return t.msgid===e})),1),t}},{key:"messageGetDOMObject",value:function(e){var t=null;try{t=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))}catch(e){console.log("{String(n)} : Message ID not found")}return t}},{key:"messageGetContent",value:function(e){var t="";try{t=this._history.filter((function(t){return t.msgid===e}))[0].content}catch(e){console.log("{String(n)} : Message ID not found")}return t}},{key:"messageAppendContent",value:function(e,t){var i=!1;try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))).lastChild.innerHTML+=t;var n=this._history.filter((function(t){return t.msgid===e}))[0];n.content+=t,n.updatedtime=(new Date).toISOString(),i=!0,this.userScrolledUp||this._messagesArea.lastElementChild.scrollIntoView()}catch(t){console.log("".concat(String(e)," : Message ID not found"))}return i}},{key:"messageReplaceContent",value:function(e,t){var i=!1;try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))).lastChild.innerHTML=t;var n=this._history.filter((function(t){return t.msgid===e}))[0];n.content=t,n.updatedtime=(new Date).toISOString(),i=!0,this.userScrolledUp||this._messagesArea.lastElementChild.scrollIntoView()}catch(t){console.log("".concat(String(e)," : Message ID not found"))}return i}},{key:"messageScrollToBottom",value:function(){this._messagesArea.lastElementChild.scrollIntoView()}},{key:"_handleShortLongMessageCSS",value:function(e,t){console.log(e),e.classList.remove("left-singleline","left-multiline","center-singleline","center-multiline","right-singleline","right-multiline");var i=e.lastChild;window.lastDiv=i;var n,s=window.getComputedStyle(i),r=i.offsetHeight;n="normal"===s.lineHeight?1.2*parseFloat(s.fontSize):parseFloat(s.lineHeight);var a=r>n;switch(t){case"center":a?e.classList.add("center-multiline"):e.classList.add("center-singleline");break;case"right":a?e.classList.add("right-multiline"):e.classList.add("right-singleline");break;default:a?e.classList.add("left-multiline"):e.classList.add("left-singleline")}}},{key:"historyGet",value:function(e,t){return null==e&&(e=0,t=this._history.length),void 0===t&&(t=e<0?t:e+1),this._history.slice(e,t)}},{key:"historyGetAllCopy",value:function(){return this._history.slice()}},{key:"historyClear",value:function(){this.msgid=0,this._messagesArea.innerHTML="",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:"historyRestoreAll",value:function(e){var t=this;this.historyClear(),this._messagesArea.innerHTML="",e.forEach((function(e){t.messageAddFull(e)}))}},{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}}],n=[{key:"version",value:function(){return{version:"1.1.9",license:"BSD-2",url:"https://github/deftio/quikchat",fun:!0}}},{key:"loremIpsum",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n="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(150*Math.random())+25),void 0===t&&(t=Math.floor(446*Math.random())),t%=446;" "===n[t]||/[.,:;!?]/.test(n[t]);)t=(t+1)%446;var s=n.substring(t)+n.substring(0,t);"number"!=typeof e&&(e=s.length);for(var r="";e>0;)r+=e<s.length?s.substring(0,e):s,e-=s.length;if(" "===r[r.length-1]&&(r=r.substring(0,r.length-1)+"."),i){var a=r[0].toUpperCase();r=(a=/[A-Z]/.test(a)?a:"M")+r.substring(1)}return r}}],i&&t(e.prototype,i),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,i,n}();module.exports=o;
1
+ "use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function t(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,a(n.key),n)}}function i(e,t,i){return(t=a(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function s(e){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{};t%2?n(Object(s),!0).forEach((function(t){i(e,t,s[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):n(Object(s)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(s,t))}))}return e}function r(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)||function(t,i){if(t){if("string"==typeof t)return e(t,i);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,i):void 0}}(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 a(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}var o=function(){return e=function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var r=s(s({},{theme:"quikchat-theme-light",trackHistory:!0,titleArea:{title:"Chat",show:!1,align:"center"},messagesArea:{alternating:!0},inputArea:{show:!0},sendOnEnter:!0,sendOnShiftEnter:!1}),n);"string"==typeof t&&(t=document.querySelector(t)),this._parentElement=t,this._theme=r.theme,this._onSend=i||function(){},this._createWidget(),r.titleArea&&(this.titleAreaSetContents(r.titleArea.title,r.titleArea.align),!0===r.titleArea.show?this.titleAreaShow():this.titleAreaHide()),r.messagesArea&&this.messagesAreaAlternateColors(r.messagesArea.alternating),r.inputArea&&(!0===r.inputArea.show?this.inputAreaShow():this.inputAreaHide()),this._attachEventListeners(),this.trackHistory=r.trackHistory||!0,this._historyLimit=1e7,this._history=[],this.sendOnEnter=r.sendOnEnter,this.sendOnShiftEnter=r.sendOnShiftEnter},i=[{key:"_createWidget",value:function(){var e='\n <div class="quikchat-base '.concat(this.theme,'">\n <div class="quikchat-title-area">\n <span style="font-size: 1.5em; font-weight: 600;">Title Area</span>\n </div>\n <div class="quikchat-messages-area"></div>\n <div class="quikchat-input-area">\n <textarea class="quikchat-input-textbox"></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._messagesArea=this._chatWidget.querySelector(".quikchat-messages-area"),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(t){t.preventDefault(),e._onSend(e,e._textEntry.value.trim())})),window.addEventListener("resize",(function(){return e._handleContainerResize()})),this._chatWidget.addEventListener("resize",(function(){return e._handleContainerResize()})),this._textEntry.addEventListener("keydown",(function(t){t.shiftKey&&13===t.keyCode?e.sendOnShiftEnter&&(t.preventDefault(),e._onSend(e,e._textEntry.value.trim())):13===t.keyCode&&e.sendOnEnter&&(t.preventDefault(),e._onSend(e,e._textEntry.value.trim()))})),this._messagesArea.addEventListener("scroll",(function(){var t=e._messagesArea,i=t.scrollTop,n=t.scrollHeight,s=t.clientHeight;e.userScrolledUp=i+s<n}))}},{key:"setCallbackOnSend",value:function(e){this._onSend=e}},{key:"setCallbackonMessageAdded",value:function(e){this._onMessageAdded=e}},{key:"titleAreaToggle",value:function(){"none"===this._titleArea.style.display?this.titleAreaShow():this.titleAreaHide()}},{key:"titleAreaShow",value:function(){this._titleArea.style.display="",this._adjustMessagesAreaHeight()}},{key:"titleAreaHide",value:function(){this._titleArea.style.display="none",this._adjustMessagesAreaHeight()}},{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(){this._inputArea.classList.toggle("hidden"),"none"===this._inputArea.style.display?this.inputAreaShow():this.inputAreaHide()}},{key:"inputAreaShow",value:function(){this._inputArea.style.display="",this._adjustMessagesAreaHeight()}},{key:"inputAreaHide",value:function(){this._inputArea.style.display="none",this._adjustMessagesAreaHeight()}},{key:"_adjustMessagesAreaHeight",value:function(){var e=r(this._chatWidget.children).filter((function(e){return e.classList.contains("hidden")})).reduce((function(e,t){return e+t.offsetHeight}),0),t=this._chatWidget.offsetHeight;this._messagesArea.style.height="calc(100% - ".concat(t-e,"px)")}},{key:"_handleContainerResize",value:function(){return this._adjustMessagesAreaHeight(),this._adjustSendButtonWidth(),!0}},{key:"_adjustSendButtonWidth",value:function(){var e=this._sendButton.textContent.trim(),t=parseFloat(getComputedStyle(this._sendButton).fontSize)*e.length+16;return this._sendButton.style.minWidth="".concat(t,"px"),!0}},{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,timestamp:!1,updatedtime:!1,scrollIntoView:!0},t=this.msgid,i=document.createElement("div"),n="quikchat-msgid-"+String(t).padStart(10,"0");String(e.userString).padStart(10,"0"),i.classList.add("quikchat-message",n,"quikchat-structure"),this.msgid++,i.classList.add(this._messagesArea.children.length%2==1?"quikchat-message-1":"quikchat-message-2");var r=document.createElement("div");r.innerHTML=e.userString,r.classList.add("quikchat-user-label"),r.style.textAlign=e.align;var a=document.createElement("div");if(a.classList.add("quikchat-message-content"),"right"===e.align){var o=e.content.includes("\n"),l=e.content.length>50;o||l?a.classList.add("quikchat-right-multiline"):a.classList.add("quikchat-right-singleline")}a.innerHTML=e.content,i.appendChild(r),i.appendChild(a),this._messagesArea.appendChild(i),this.userScrolledUp&&!e.scrollIntoView||this.messageScrollToBottom(),this._textEntry.value="",this._adjustMessagesAreaHeight(),this._handleShortLongMessageCSS(i,e.align);var u=e.timestamp?e.timestamp:(new Date).toISOString(),h=e.updatedtime?e.updatedtime:u;return this.trackHistory&&(this._history.push(s(s({msgid:t},e),{},{timestamp:u,updatedtime:h,messageDiv:i})),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",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"right",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user",s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];return this.messageAddFull({content:e,userString:t,align:i,role:n,scrollIntoView:s})}},{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){console.log("{String(n)} : Message ID not found")}return t&&this._history.splice(this._history.findIndex((function(t){return t.msgid===e})),1),t}},{key:"messageGetDOMObject",value:function(e){var t=null;try{t=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))}catch(e){console.log("{String(n)} : Message ID not found")}return t}},{key:"messageGetContent",value:function(e){var t="";try{t=this._history.filter((function(t){return t.msgid===e}))[0].content}catch(e){console.log("{String(n)} : Message ID not found")}return t}},{key:"messageAppendContent",value:function(e,t){var i=!1;try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))).lastChild.innerHTML+=t;var n=this._history.filter((function(t){return t.msgid===e}))[0];n.content+=t,n.updatedtime=(new Date).toISOString(),i=!0,this.userScrolledUp||this._messagesArea.lastElementChild.scrollIntoView()}catch(t){console.log("".concat(String(e)," : Message ID not found"))}return i}},{key:"messageReplaceContent",value:function(e,t){var i=!1;try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))).lastChild.innerHTML=t;var n=this._history.filter((function(t){return t.msgid===e}))[0];n.content=t,n.updatedtime=(new Date).toISOString(),i=!0,this.userScrolledUp||this._messagesArea.lastElementChild.scrollIntoView()}catch(t){console.log("".concat(String(e)," : Message ID not found"))}return i}},{key:"messageScrollToBottom",value:function(){this._messagesArea.lastElementChild.scrollIntoView()}},{key:"_handleShortLongMessageCSS",value:function(e,t){e.classList.remove("left-singleline","left-multiline","center-singleline","center-multiline","right-singleline","right-multiline");var i=e.lastChild;window.lastDiv=i;var n,s=window.getComputedStyle(i),r=i.offsetHeight;n="normal"===s.lineHeight?1.2*parseFloat(s.fontSize):parseFloat(s.lineHeight);var a=r>n;switch(t){case"center":a?e.classList.add("center-multiline"):e.classList.add("center-singleline");break;case"right":a?e.classList.add("right-multiline"):e.classList.add("right-singleline");break;default:a?e.classList.add("left-multiline"):e.classList.add("left-singleline")}}},{key:"historyGet",value:function(e,t){return null==e&&(e=0,t=this._history.length),void 0===t&&(t=e<0?t:e+1),this._history.slice(e,t)}},{key:"historyGetAllCopy",value:function(){return this._history.slice()}},{key:"historyClear",value:function(){this.msgid=0,this._messagesArea.innerHTML="",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:"historyRestoreAll",value:function(e){var t=this;this.historyClear(),this._messagesArea.innerHTML="",e.forEach((function(e){t.messageAddFull(e)}))}},{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}}],n=[{key:"version",value:function(){return{version:"1.1.11",license:"BSD-2",url:"https://github/deftio/quikchat",fun:!0}}},{key:"loremIpsum",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n="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(150*Math.random())+25),void 0===t&&(t=Math.floor(446*Math.random())),t%=446;" "===n[t]||/[.,:;!?]/.test(n[t]);)t=(t+1)%446;var s=n.substring(t)+n.substring(0,t);"number"!=typeof e&&(e=s.length);for(var r="";e>0;)r+=e<s.length?s.substring(0,e):s,e-=s.length;if(" "===r[r.length-1]&&(r=r.substring(0,r.length-1)+"."),i){var a=r[0].toUpperCase();r=(a=/[A-Z]/.test(a)?a:"M")+r.substring(1)}return r}}],i&&t(e.prototype,i),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,i,n}();module.exports=o;
2
2
  //# sourceMappingURL=quikchat.cjs.min.js.map