quikchat 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -49
- package/dist/quikchat.cjs.js +123 -54
- package/dist/quikchat.cjs.js.map +1 -1
- package/dist/quikchat.cjs.min.js +1 -1
- package/dist/quikchat.cjs.min.js.map +1 -1
- package/dist/quikchat.css +26 -17
- package/dist/quikchat.esm.js +123 -54
- package/dist/quikchat.esm.js.map +1 -1
- package/dist/quikchat.esm.min.js +1 -1
- package/dist/quikchat.esm.min.js.map +1 -1
- package/dist/quikchat.umd.js +123 -54
- package/dist/quikchat.umd.js.map +1 -1
- package/dist/quikchat.umd.min.js +1 -1
- package/dist/quikchat.umd.min.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,17 +1,30 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# QuikChat (js)
|
|
2
|
+
|
|
3
|
+
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.
|
|
3
4
|
|
|
4
5
|
## Features
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
|
|
7
|
+
* Callback function for message events
|
|
8
|
+
* Responsive design for various screen sizes and resizes with parent container
|
|
9
|
+
* Themeable with CSS (examples for light and dark)
|
|
8
10
|
* Hideable/Showable Title and Text Entry areas allows flexibility of usage
|
|
11
|
+
* Full history storage and retrieval
|
|
12
|
+
* History can be fed directly to OpenAI / Mistral / Ollama compatible APIs for context aware chats
|
|
13
|
+
* Available via NPM and CDN
|
|
14
|
+
* Provided in UMD and ESM formats
|
|
15
|
+
* Multiple separate instances can run on a single page
|
|
16
|
+
* Multiple users can be in a chat
|
|
17
|
+
* Left / Right / Center support of individual users
|
|
18
|
+
* Callback for all message events (to monitor chat)
|
|
9
19
|
|
|
10
|
-
## Demo
|
|
11
|
-
[Example Code and Demo](https://deftio.github.io/quikchat/example.html)
|
|
20
|
+
## Demo & Examples
|
|
12
21
|
|
|
22
|
+
Examples are here
|
|
23
|
+
[Example Code and Demo](../examples/index.html)
|
|
24
|
+
Example include using ESM, UMD modules, running multiple chats on the same page, and integration with LLM providers such as Ollama, LMStudio, OpenAI compatible providers.
|
|
13
25
|
|
|
14
26
|
## Installation
|
|
27
|
+
|
|
15
28
|
To use quikchat in your project, follow these steps:
|
|
16
29
|
|
|
17
30
|
Include the quikchat.js JavaScript file in your project.
|
|
@@ -23,24 +36,58 @@ html
|
|
|
23
36
|
<link rel="stylesheet" href="./path/to/quikchat.css">
|
|
24
37
|
```
|
|
25
38
|
|
|
26
|
-
|
|
39
|
+
### use quikchat Via CDN
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<script src="https://unpkg.com/quikchat"></script>
|
|
43
|
+
<link rel="stylesheet" href="https://unpkg.com/quikchat/dist/quikchat.css" />
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
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.
|
|
47
|
+
|
|
27
48
|
```html
|
|
28
49
|
<div id="chat-container"></div>
|
|
29
50
|
```
|
|
30
51
|
|
|
31
52
|
Initialize quikchat in your JavaScript code by providing the container element and a callback function for message events:
|
|
32
|
-
```javascript
|
|
33
|
-
const chat = new quikchat('#chat-container', messageCallback);
|
|
34
|
-
//Use the provided methods to interact with the chat control:
|
|
35
|
-
|
|
36
|
-
// Add a message
|
|
37
|
-
chat.addMessage('Hello!', 'User', 'left'); // user should appear left or right justified
|
|
38
53
|
|
|
54
|
+
```javascript
|
|
55
|
+
chat = new quikchat(
|
|
56
|
+
"#chat-container", // this can be a css selector such as "#chat-container" or DOM element
|
|
57
|
+
{
|
|
58
|
+
theme: 'quikchat-theme-light', // theme see css
|
|
59
|
+
titleArea: { title: 'My Chat', align: 'left', show: true }, // internal title area
|
|
60
|
+
onSend: (chat, msg) => { // this callback is triggered with the user hits the Send button
|
|
61
|
+
// messages are not automatically echoed to the chat after onSend. This
|
|
62
|
+
// allows filtering / other processing of the message before posting.
|
|
63
|
+
chat.messageAddNew(msg, 'me', 'right'); // echo the message to the chat area
|
|
64
|
+
// now call an LLM or do other actions
|
|
65
|
+
// ... callLLM(msg) ... do other logic if needed.
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// Add a message at any point not just from call back
|
|
70
|
+
chat.addMessage('Hello!', 'You', 'left'); // user should appear left or right justified
|
|
71
|
+
|
|
72
|
+
//... other logic
|
|
73
|
+
let messageHistory = chat.historyGet(); // get all the messages (see docs for filters)
|
|
74
|
+
console.log(messageHistory); // do something with messages
|
|
75
|
+
|
|
76
|
+
// show / hide the title area
|
|
77
|
+
chat.titleAreaHide(); // hides the title area for a bare chat
|
|
78
|
+
|
|
79
|
+
// hide the input area
|
|
80
|
+
chat.inputAreaHide(); // hides the input area so chat is now just a message stream.
|
|
81
|
+
|
|
82
|
+
// change themes
|
|
83
|
+
chat.changeTheme("quikchat-theme-dark"); // change theme on the fly (see quikchat.css for examples)
|
|
39
84
|
```
|
|
85
|
+
|
|
40
86
|
## Theming
|
|
41
|
-
QuikChat also allows theming using CSS of all the messages, and user area, and overal widget.
|
|
42
87
|
|
|
43
|
-
|
|
88
|
+
QuikChat allows theming using CSS of all the messages, and user area, and overal widget.
|
|
89
|
+
|
|
90
|
+
Below is the prebuilt 'light' theme. To change the theme, make a new set of classes with different values but the same css selector naming (e.g. change "quikchat-theme-light" to "my-theme") and save as a style. Then pass the "my-theme" to the constructor or to the changeTheme() function.
|
|
44
91
|
|
|
45
92
|
Themes can be changed at anytime by calling
|
|
46
93
|
myChatWidget.changeTheme(newTheme) where myChatWidget is the instance of your widget.
|
|
@@ -48,60 +95,63 @@ myChatWidget.changeTheme(newTheme) where myChatWidget is the instance of your wi
|
|
|
48
95
|
If several widgets are on the same page, each can have a separate theme.
|
|
49
96
|
|
|
50
97
|
```css
|
|
51
|
-
|
|
98
|
+
/* quikchat theme light */
|
|
52
99
|
.quikchat-theme-light {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
100
|
+
border: 1px solid #cccccc;
|
|
101
|
+
border-radius: 10px;
|
|
102
|
+
background-color: #f9f9f9;
|
|
103
|
+
}
|
|
104
|
+
|
|
59
105
|
.quikchat-theme-light .quikchat-title-area {
|
|
60
|
-
|
|
106
|
+
padding: 8px;
|
|
107
|
+
color: #333;
|
|
61
108
|
}
|
|
62
|
-
|
|
109
|
+
|
|
63
110
|
.quikchat-theme-light .quikchat-messages-area {
|
|
64
|
-
background-color: #ffffffe2;
|
|
65
|
-
color: #333;
|
|
111
|
+
background-color: #ffffffe2;
|
|
112
|
+
color: #333;
|
|
66
113
|
}
|
|
67
|
-
|
|
114
|
+
|
|
68
115
|
.quikchat-theme-light .quikchat-message-1 {
|
|
69
|
-
background-color: #fffffff0;
|
|
70
|
-
color: #005662;
|
|
116
|
+
background-color: #fffffff0;
|
|
117
|
+
color: #005662;
|
|
71
118
|
}
|
|
72
|
-
|
|
119
|
+
|
|
73
120
|
.quikchat-theme-light .quikchat-message-2 {
|
|
74
|
-
background-color: #eeeeeee9;
|
|
75
|
-
color: #353535;
|
|
121
|
+
background-color: #eeeeeee9;
|
|
122
|
+
color: #353535;
|
|
76
123
|
}
|
|
77
|
-
|
|
124
|
+
|
|
78
125
|
.quikchat-theme-light .quikchat-input-area {
|
|
79
|
-
background-color: #
|
|
126
|
+
background-color: #f9f9f9;
|
|
127
|
+
border-bottom-left-radius : 10px;
|
|
128
|
+
border-bottom-right-radius : 10px;
|
|
80
129
|
}
|
|
81
130
|
|
|
82
131
|
.quikchat-theme-light .quikchat-input-textbox {
|
|
83
|
-
background-color: #ffffff;
|
|
84
|
-
border: 1px solid #ccc;
|
|
85
|
-
border-radius: 4px;
|
|
86
|
-
font-size: 14px;
|
|
87
|
-
color: #333;
|
|
132
|
+
background-color: #ffffff;
|
|
133
|
+
border: 1px solid #ccc;
|
|
134
|
+
border-radius: 4px;
|
|
135
|
+
font-size: 14px;
|
|
136
|
+
color: #333;
|
|
88
137
|
}
|
|
89
|
-
|
|
138
|
+
|
|
90
139
|
.quikchat-theme-light .quikchat-input-send-btn {
|
|
91
|
-
background-color: #4caf50;
|
|
92
|
-
color: white;
|
|
93
|
-
border: none;
|
|
94
|
-
border-radius: 4px;
|
|
140
|
+
background-color: #4caf50;
|
|
141
|
+
color: white;
|
|
142
|
+
border: none;
|
|
143
|
+
border-radius: 4px;
|
|
95
144
|
}
|
|
96
|
-
|
|
97
145
|
```
|
|
98
146
|
|
|
99
147
|
## Building from Source
|
|
148
|
+
|
|
149
|
+
quikchat is built with [https://rollupjs.org/](rollup.js).
|
|
150
|
+
|
|
100
151
|
Make sure to run npm install. Then run npm run build.
|
|
101
|
-
Note that at run time quikchat has no dependancies, but at build time several tools are used for packing and minifying code.
|
|
102
152
|
|
|
103
|
-
|
|
153
|
+
Note that at run time quikchat has no dependancies, but at build time several tools are used for packing and minifying code.
|
|
104
154
|
|
|
105
155
|
## License
|
|
106
|
-
quikchat is licensed under the BSD-2 License.
|
|
107
156
|
|
|
157
|
+
quikchat is licensed under the BSD-2 License.
|
package/dist/quikchat.cjs.js
CHANGED
|
@@ -22,12 +22,41 @@ function _createClass(e, r, t) {
|
|
|
22
22
|
writable: !1
|
|
23
23
|
}), e;
|
|
24
24
|
}
|
|
25
|
+
function _defineProperty(e, r, t) {
|
|
26
|
+
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
27
|
+
value: t,
|
|
28
|
+
enumerable: !0,
|
|
29
|
+
configurable: !0,
|
|
30
|
+
writable: !0
|
|
31
|
+
}) : e[r] = t, e;
|
|
32
|
+
}
|
|
25
33
|
function _iterableToArray(r) {
|
|
26
34
|
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
|
|
27
35
|
}
|
|
28
36
|
function _nonIterableSpread() {
|
|
29
37
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
30
38
|
}
|
|
39
|
+
function ownKeys(e, r) {
|
|
40
|
+
var t = Object.keys(e);
|
|
41
|
+
if (Object.getOwnPropertySymbols) {
|
|
42
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
43
|
+
r && (o = o.filter(function (r) {
|
|
44
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
45
|
+
})), t.push.apply(t, o);
|
|
46
|
+
}
|
|
47
|
+
return t;
|
|
48
|
+
}
|
|
49
|
+
function _objectSpread2(e) {
|
|
50
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
51
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
52
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
|
|
53
|
+
_defineProperty(e, r, t[r]);
|
|
54
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
|
55
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return e;
|
|
59
|
+
}
|
|
31
60
|
function _toConsumableArray(r) {
|
|
32
61
|
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
|
|
33
62
|
}
|
|
@@ -45,15 +74,6 @@ function _toPropertyKey(t) {
|
|
|
45
74
|
var i = _toPrimitive(t, "string");
|
|
46
75
|
return "symbol" == typeof i ? i : i + "";
|
|
47
76
|
}
|
|
48
|
-
function _typeof(o) {
|
|
49
|
-
"@babel/helpers - typeof";
|
|
50
|
-
|
|
51
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
|
|
52
|
-
return typeof o;
|
|
53
|
-
} : function (o) {
|
|
54
|
-
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
55
|
-
}, _typeof(o);
|
|
56
|
-
}
|
|
57
77
|
function _unsupportedIterableToArray(r, a) {
|
|
58
78
|
if (r) {
|
|
59
79
|
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
@@ -72,7 +92,12 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
72
92
|
var meta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
73
93
|
theme: 'quikchat-theme-light',
|
|
74
94
|
onSend: function onSend() {},
|
|
75
|
-
trackHistory: true
|
|
95
|
+
trackHistory: true,
|
|
96
|
+
titleArea: {
|
|
97
|
+
title: "Title Area",
|
|
98
|
+
show: false,
|
|
99
|
+
align: "center"
|
|
100
|
+
}
|
|
76
101
|
};
|
|
77
102
|
_classCallCheck(this, quikchat);
|
|
78
103
|
if (typeof parentElement === 'string') {
|
|
@@ -85,7 +110,7 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
85
110
|
// title area
|
|
86
111
|
if (meta.titleArea) {
|
|
87
112
|
this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);
|
|
88
|
-
if (meta.titleArea.show) {
|
|
113
|
+
if (meta.titleArea.show == true) {
|
|
89
114
|
this.titleAreaShow();
|
|
90
115
|
} else {
|
|
91
116
|
this.titleAreaHide();
|
|
@@ -93,6 +118,7 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
93
118
|
}
|
|
94
119
|
this._attachEventListeners();
|
|
95
120
|
this.trackHistory = meta.trackHistory || true;
|
|
121
|
+
this._historyLimit = 10000000;
|
|
96
122
|
this._history = [];
|
|
97
123
|
}
|
|
98
124
|
return _createClass(quikchat, [{
|
|
@@ -108,9 +134,6 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
108
134
|
this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');
|
|
109
135
|
this.msgid = 0;
|
|
110
136
|
}
|
|
111
|
-
}, {
|
|
112
|
-
key: "$",
|
|
113
|
-
value: function $() {}
|
|
114
137
|
}, {
|
|
115
138
|
key: "_attachEventListeners",
|
|
116
139
|
value: function _attachEventListeners() {
|
|
@@ -133,6 +156,20 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
133
156
|
}
|
|
134
157
|
});
|
|
135
158
|
}
|
|
159
|
+
// set the onSend function callback.
|
|
160
|
+
}, {
|
|
161
|
+
key: "setCallbackOnSend",
|
|
162
|
+
value: function setCallbackOnSend(callback) {
|
|
163
|
+
this._onSend = callback;
|
|
164
|
+
}
|
|
165
|
+
// set a callback for everytime a message is added (listener)
|
|
166
|
+
}, {
|
|
167
|
+
key: "setCallbackonMessageAdded",
|
|
168
|
+
value: function setCallbackonMessageAdded(callback) {
|
|
169
|
+
this._onMessageAdded = callback;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Public methods
|
|
136
173
|
}, {
|
|
137
174
|
key: "titleAreaToggle",
|
|
138
175
|
value: function titleAreaToggle() {
|
|
@@ -208,59 +245,67 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
208
245
|
this._sendButton.style.minWidth = "".concat(minWidth, "px");
|
|
209
246
|
}
|
|
210
247
|
}, {
|
|
211
|
-
key: "
|
|
212
|
-
value: function
|
|
213
|
-
var
|
|
214
|
-
|
|
215
|
-
|
|
248
|
+
key: "messageAddFull",
|
|
249
|
+
value: function messageAddFull() {
|
|
250
|
+
var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
251
|
+
content: "",
|
|
252
|
+
userString: "user",
|
|
253
|
+
align: "right",
|
|
254
|
+
role: "user",
|
|
255
|
+
userID: -1
|
|
256
|
+
};
|
|
216
257
|
var msgid = this.msgid;
|
|
258
|
+
var messageDiv = document.createElement('div');
|
|
217
259
|
var msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');
|
|
260
|
+
'quikchat-userid-' + String(input.userString).padStart(10, '0'); // hash this..
|
|
218
261
|
messageDiv.classList.add('quikchat-message', msgidClass);
|
|
219
262
|
this.msgid++;
|
|
220
263
|
messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');
|
|
221
|
-
var user = {
|
|
222
|
-
name: "not-set",
|
|
223
|
-
role: "user"
|
|
224
|
-
};
|
|
225
|
-
if (_typeof(userObject) === 'object') {
|
|
226
|
-
for (var key in userObject) {
|
|
227
|
-
user[key] = userObject[key];
|
|
228
|
-
}
|
|
229
|
-
} else {
|
|
230
|
-
// if userObject is a string
|
|
231
|
-
user["name"] = userObject;
|
|
232
|
-
}
|
|
233
264
|
var userDiv = document.createElement('div');
|
|
234
|
-
userDiv.innerHTML =
|
|
235
|
-
userDiv.style = "width: 100%; text-align: ".concat(align, "; font-size: 1em; font-weight:700;
|
|
265
|
+
userDiv.innerHTML = input.userString;
|
|
266
|
+
userDiv.style = "width: 100%; text-align: ".concat(input.align, "; font-size: 1em; font-weight:700;");
|
|
236
267
|
var contentDiv = document.createElement('div');
|
|
237
|
-
contentDiv.style = "width: 100%; text-align: ".concat(align, ";");
|
|
238
|
-
contentDiv.innerHTML =
|
|
268
|
+
contentDiv.style = "width: 100%; text-align: ".concat(input.align, ";");
|
|
269
|
+
contentDiv.innerHTML = input.content;
|
|
239
270
|
messageDiv.appendChild(userDiv);
|
|
240
271
|
messageDiv.appendChild(contentDiv);
|
|
241
272
|
this._messagesArea.appendChild(messageDiv);
|
|
242
|
-
this._messagesArea.lastChild.scrollIntoView();
|
|
273
|
+
//this._messagesArea.lastChild.scrollIntoView();
|
|
274
|
+
this._messagesArea.lastElementChild.scrollIntoView();
|
|
243
275
|
this._textEntry.value = '';
|
|
244
276
|
this._adjustMessagesAreaHeight();
|
|
245
277
|
var timestamp = new Date().toISOString();
|
|
246
278
|
var updatedtime = timestamp;
|
|
247
279
|
if (this.trackHistory) {
|
|
248
|
-
this._history.push({
|
|
249
|
-
msgid: msgid
|
|
250
|
-
|
|
251
|
-
message: message,
|
|
252
|
-
align: align,
|
|
280
|
+
this._history.push(_objectSpread2(_objectSpread2({
|
|
281
|
+
msgid: msgid
|
|
282
|
+
}, input), {}, {
|
|
253
283
|
timestamp: timestamp,
|
|
254
284
|
updatedtime: updatedtime,
|
|
255
285
|
messageDiv: messageDiv
|
|
256
|
-
});
|
|
257
|
-
if (this._history.length >
|
|
286
|
+
}));
|
|
287
|
+
if (this._history.length > this._historyLimit) {
|
|
258
288
|
this._history.shift();
|
|
259
289
|
}
|
|
260
290
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
}
|
|
291
|
+
if (this._onMessageAdded) {
|
|
292
|
+
this._onMessageAdded(this, msgid);
|
|
293
|
+
}
|
|
294
|
+
return msgid;
|
|
295
|
+
}
|
|
296
|
+
}, {
|
|
297
|
+
key: "messageAddNew",
|
|
298
|
+
value: function messageAddNew() {
|
|
299
|
+
var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
|
|
300
|
+
var userString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "user";
|
|
301
|
+
var align = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "right";
|
|
302
|
+
var role = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "user";
|
|
303
|
+
return this.messageAddFull({
|
|
304
|
+
content: content,
|
|
305
|
+
userString: userString,
|
|
306
|
+
align: align,
|
|
307
|
+
role: role
|
|
308
|
+
});
|
|
264
309
|
}
|
|
265
310
|
}, {
|
|
266
311
|
key: "messageRemove",
|
|
@@ -274,10 +319,13 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
274
319
|
console.log("{String(n)} : Message ID not found");
|
|
275
320
|
}
|
|
276
321
|
if (sucess) {
|
|
277
|
-
// remove from history
|
|
278
|
-
this._history = this._history.filter(
|
|
279
|
-
|
|
280
|
-
|
|
322
|
+
// slow way to remove from history
|
|
323
|
+
//this._history = this._history.filter((item) => item.msgid !== n); // todo make this more efficient
|
|
324
|
+
|
|
325
|
+
// better way to delete this from history
|
|
326
|
+
this._history.splice(this._history.findIndex(function (item) {
|
|
327
|
+
return item.msgid === n;
|
|
328
|
+
}), 1);
|
|
281
329
|
}
|
|
282
330
|
return sucess;
|
|
283
331
|
}
|
|
@@ -303,7 +351,11 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
303
351
|
var content = "";
|
|
304
352
|
// now use css selector to get the message
|
|
305
353
|
try {
|
|
306
|
-
|
|
354
|
+
// get from history..
|
|
355
|
+
content = this._history.filter(function (item) {
|
|
356
|
+
return item.msgid === n;
|
|
357
|
+
})[0].content;
|
|
358
|
+
//content = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.textContent;
|
|
307
359
|
} catch (error) {
|
|
308
360
|
console.log("{String(n)} : Message ID not found");
|
|
309
361
|
}
|
|
@@ -318,7 +370,15 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
318
370
|
var sucess = false;
|
|
319
371
|
try {
|
|
320
372
|
this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.innerHTML += content;
|
|
373
|
+
// update history
|
|
374
|
+
var item = this._history.filter(function (item) {
|
|
375
|
+
return item.msgid === n;
|
|
376
|
+
})[0];
|
|
377
|
+
item.content += content;
|
|
378
|
+
item.updatedtime = new Date().toISOString();
|
|
321
379
|
sucess = true;
|
|
380
|
+
//this._messagesArea.lastChild.scrollIntoView();
|
|
381
|
+
this._messagesArea.lastElementChild.scrollIntoView();
|
|
322
382
|
} catch (error) {
|
|
323
383
|
console.log("{String(n)} : Message ID not found");
|
|
324
384
|
}
|
|
@@ -331,6 +391,10 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
331
391
|
var sucess = false;
|
|
332
392
|
try {
|
|
333
393
|
this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.innerHTML = content;
|
|
394
|
+
// update history
|
|
395
|
+
this._history.filter(function (item) {
|
|
396
|
+
return item.msgid === n;
|
|
397
|
+
})[0].content = content;
|
|
334
398
|
sucess = true;
|
|
335
399
|
} catch (error) {
|
|
336
400
|
console.log("{String(n)} : Message ID not found");
|
|
@@ -354,6 +418,9 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
354
418
|
if (m === undefined) {
|
|
355
419
|
m = n < 0 ? m : n + 1;
|
|
356
420
|
}
|
|
421
|
+
// remember that entries could be deleted. TODO: So we need to return the actual history entries
|
|
422
|
+
// so now we need to find the array index that correspondes to messageIds n (start) and m (end)
|
|
423
|
+
|
|
357
424
|
return this._history.slice(n, m);
|
|
358
425
|
}
|
|
359
426
|
}, {
|
|
@@ -393,10 +460,12 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
393
460
|
return this._theme;
|
|
394
461
|
}
|
|
395
462
|
}], [{
|
|
396
|
-
key: "
|
|
397
|
-
value: function
|
|
463
|
+
key: "version",
|
|
464
|
+
value: function version() {
|
|
398
465
|
return {
|
|
399
|
-
"version": "1.0.
|
|
466
|
+
"version": "1.0.4",
|
|
467
|
+
"license": "BSD-2",
|
|
468
|
+
"url": "https://github/deftio/quikchat"
|
|
400
469
|
};
|
|
401
470
|
}
|
|
402
471
|
}]);
|
package/dist/quikchat.cjs.js.map
CHANGED
|
@@ -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, \n meta = { \n theme: 'quikchat-theme-light', \n onSend: () => { },\n trackHistory: true,\n }) {\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = meta.onSend ? meta.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) {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory || true;\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 _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\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 //console.log('Container resized');\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 }\n\n messageAddNew(message, userObject = \"test\", align = 'left') {\n const messageDiv = document.createElement('div');\n const msgid = this.msgid;\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\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 let user = {name: \"not-set\",role : \"user\"};\n if (typeof userObject === 'object') {\n for (const key in userObject) {\n user[key] = userObject[key];\n }\n }\n else { // if userObject is a string\n user[\"name\"] = userObject ;\n }\n const userDiv = document.createElement('div');\n userDiv.innerHTML = user.name;\n userDiv.style = `width: 100%; text-align: ${align}; font-size: 1em; font-weight:700; color: #444;`;\n\n const contentDiv = document.createElement('div');\n contentDiv.style = `width: 100%; text-align: ${align};`;\n contentDiv.innerHTML = message;\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n this._messagesArea.appendChild(messageDiv);\n this._messagesArea.lastChild.scrollIntoView();\n\n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n const timestamp = new Date().toISOString();\n const updatedtime = timestamp;\n if (this.trackHistory) {\n this._history.push({ msgid, user, message, align, timestamp, updatedtime, messageDiv});\n if (this._history.length > 10000000) {\n this._history.shift();\n }\n }\n return {msgid};\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 // remove from history\n this._history = this._history.filter((item) => item.msgid !== n);\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 {\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 content = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.textContent;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return content; \n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML += content;\n sucess = true;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n } \n }\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML = content;\n sucess = true;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return sucess;\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 return this._history.slice(n,m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n } \n\n historyGetLength() {\n return this._history.length;\n } \n\n historyGetMessage(n) {\n if ( n>=0 && n < this._history.length) {\n this._history[n];\n }\n return {};\n\n } \n\n historyGetMessageContent(n) {\n return this._history[n].message;\n }\n\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static getVersion() {\n return {\"version\" : \"1.0.2\"}\n }\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","meta","arguments","length","undefined","theme","onSend","trackHistory","_classCallCheck","document","querySelector","_parentElement","_theme","_onSend","_createWidget","titleArea","titleAreaSetContents","title","align","show","titleAreaShow","titleAreaHide","_attachEventListeners","_history","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesArea","_inputArea","_textEntry","_sendButton","msgid","$","_this","addEventListener","trim","window","_handleContainerResize","event","shiftKey","keyCode","preventDefault","titleAreaToggle","style","display","_adjustMessagesAreaHeight","textAlign","titleAreaGetContents","inputAreaToggle","classList","toggle","inputAreaShow","inputAreaHide","hiddenElements","_toConsumableArray","children","filter","child","contains","totalHiddenHeight","reduce","sum","offsetHeight","containerHeight","height","_adjustSendButtonWidth","sendButtonText","textContent","fontSize","parseFloat","getComputedStyle","minWidth","messageAddNew","message","userObject","messageDiv","createElement","msgidClass","String","padStart","add","user","name","role","_typeof","userDiv","contentDiv","appendChild","lastChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","shift","messageRemove","n","sucess","removeChild","error","console","log","item","messageGetDOMObject","msg","messageGetContent","content","messageAppendContent","messageReplaceContent","historyGet","m","slice","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","changeTheme","newTheme","remove","get","getVersion"],"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, \n meta = { \n theme: 'quikchat-theme-light', \n onSend: () => { }, \n trackHistory: true,\n titleArea: {title: \"Title Area\", show: false, align: \"center\"}\n }) \n {\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = meta.onSend ? meta.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 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 _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 // 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 //console.log('Container resized');\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 }\n \n messageAddFull(input = {content: \"\", userString: \"user\", align : \"right\", role : \"user\", userID : -1}) {\n const msgid = this.msgid;\n const messageDiv = document.createElement('div');\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n 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 //this._messagesArea.lastChild.scrollIntoView();\n this._messagesArea.lastElementChild.scrollIntoView()\n\n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n const timestamp = new Date().toISOString();\n const updatedtime = timestamp;\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 if (this._onMessageAdded) {\n this._onMessageAdded(this, msgid);\n };\n return msgid;\n }\n messageAddNew(content=\"\", userString=\"user\", align = \"right\", role = \"user\") {\n return this.messageAddFull( \n {content: content, userString: userString, align: align, role: role}\n );\n }\n messageRemove(n) {\n // 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 {\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 {\n console.log(`{String(n)} : Message ID not found`);\n }\n return content; \n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let sucess = 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 sucess = true;\n //this._messagesArea.lastChild.scrollIntoView();\n this._messagesArea.lastElementChild.scrollIntoView()\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n } \n }\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML = content;\n // update history\n this._history.filter((item) => item.msgid === n)[0].content = content;\n sucess = true;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return sucess;\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 historyClear() {\n this.msgid = 0;\n this._history = [];\n } \n\n historyGetLength() {\n return this._history.length;\n } \n\n historyGetMessage(n) {\n if ( n>=0 && n < this._history.length) {\n this._history[n];\n }\n return {};\n\n } \n\n historyGetMessageContent(n) {\n return this._history[n].message;\n }\n\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static version() {\n return {\"version\" : \"1.0.4\", \"license\" : \"BSD-2\", \"url\" :\"https://github/deftio/quikchat\"};\n }\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","meta","arguments","length","undefined","theme","onSend","trackHistory","titleArea","title","show","align","_classCallCheck","document","querySelector","_parentElement","_theme","_onSend","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","_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","setCallbackOnSend","callback","setCallbackonMessageAdded","_onMessageAdded","titleAreaToggle","style","display","_adjustMessagesAreaHeight","textAlign","titleAreaGetContents","inputAreaToggle","classList","toggle","inputAreaShow","inputAreaHide","hiddenElements","_toConsumableArray","children","filter","child","contains","totalHiddenHeight","reduce","sum","offsetHeight","containerHeight","height","_adjustSendButtonWidth","sendButtonText","textContent","fontSize","parseFloat","getComputedStyle","minWidth","messageAddFull","input","content","userString","role","userID","messageDiv","createElement","msgidClass","String","padStart","add","userDiv","contentDiv","appendChild","lastElementChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","_objectSpread","shift","messageAddNew","messageRemove","n","sucess","removeChild","error","console","log","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","messageAppendContent","lastChild","messageReplaceContent","historyGet","m","slice","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","message","changeTheme","newTheme","remove","get","version"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IACMA,QAAQ,gBAAA,YAAA;AACV;AACJ;AACA;AACA;AACA;EACI,SAAAA,QAAAA,CAAYC,aAAa,EAOrB;IAAA,IANIC,IAAI,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA;AACHG,MAAAA,KAAK,EAAE,sBAAsB;AAC7BC,MAAAA,MAAM,EAAE,SAAAA,MAAA,GAAM,EAAG;AACjBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,SAAS,EAAE;AAACC,QAAAA,KAAK,EAAE,YAAY;AAAEC,QAAAA,IAAI,EAAE,KAAK;AAAEC,QAAAA,KAAK,EAAE,QAAA;AAAQ,OAAA;KAChE,CAAA;AAAAC,IAAAA,eAAA,OAAAb,QAAA,CAAA,CAAA;AAEL,IAAA,IAAI,OAAOC,aAAa,KAAK,QAAQ,EAAE;AACnCA,MAAAA,aAAa,GAAGa,QAAQ,CAACC,aAAa,CAACd,aAAa,CAAC,CAAA;AACzD,KAAA;IACA,IAAI,CAACe,cAAc,GAAGf,aAAa,CAAA;AACnC,IAAA,IAAI,CAACgB,MAAM,GAAGf,IAAI,CAACI,KAAK,CAAA;AACxB,IAAA,IAAI,CAACY,OAAO,GAAGhB,IAAI,CAACK,MAAM,GAAGL,IAAI,CAACK,MAAM,GAAG,YAAM,EAAG,CAAA;IACpD,IAAI,CAACY,aAAa,EAAE,CAAA;AACpB;IACA,IAAIjB,IAAI,CAACO,SAAS,EAAE;AAChB,MAAA,IAAI,CAACW,oBAAoB,CAAClB,IAAI,CAACO,SAAS,CAACC,KAAK,EAAER,IAAI,CAACO,SAAS,CAACG,KAAK,CAAC,CAAA;AACrE,MAAA,IAAIV,IAAI,CAACO,SAAS,CAACE,IAAI,IAAI,IAAI,EAAE;QAC7B,IAAI,CAACU,aAAa,EAAE,CAAA;AACxB,OAAC,MAAM;QACH,IAAI,CAACC,aAAa,EAAE,CAAA;AACxB,OAAA;AACJ,KAAA;IACA,IAAI,CAACC,qBAAqB,EAAE,CAAA;AAC5B,IAAA,IAAI,CAACf,YAAY,GAAGN,IAAI,CAACM,YAAY,IAAI,IAAI,CAAA;IAC7C,IAAI,CAACgB,aAAa,GAAG,QAAQ,CAAA;IAC7B,IAAI,CAACC,QAAQ,GAAG,EAAE,CAAA;AACtB,GAAA;EAAC,OAAAC,YAAA,CAAA1B,QAAA,EAAA,CAAA;IAAA2B,GAAA,EAAA,eAAA;IAAAC,KAAA,EAED,SAAAT,aAAAA,GAAgB;AACZ,MAAA,IAAMU,UAAU,GAAAC,2CAAAA,CAAAA,MAAA,CAEgB,IAAI,CAACxB,KAAK,EAUrC,mfAAA,CAAA,CAAA;AAEL,MAAA,IAAI,CAACU,cAAc,CAACe,SAAS,GAAGF,UAAU,CAAA;MAC1C,IAAI,CAACG,WAAW,GAAG,IAAI,CAAChB,cAAc,CAACD,aAAa,CAAC,gBAAgB,CAAC,CAAA;MACtE,IAAI,CAACkB,UAAU,GAAG,IAAI,CAACD,WAAW,CAACjB,aAAa,CAAC,sBAAsB,CAAC,CAAA;MACxE,IAAI,CAACmB,aAAa,GAAG,IAAI,CAACF,WAAW,CAACjB,aAAa,CAAC,yBAAyB,CAAC,CAAA;MAC9E,IAAI,CAACoB,UAAU,GAAG,IAAI,CAACH,WAAW,CAACjB,aAAa,CAAC,sBAAsB,CAAC,CAAA;MACxE,IAAI,CAACqB,UAAU,GAAG,IAAI,CAACD,UAAU,CAACpB,aAAa,CAAC,yBAAyB,CAAC,CAAA;MAC1E,IAAI,CAACsB,WAAW,GAAG,IAAI,CAACF,UAAU,CAACpB,aAAa,CAAC,0BAA0B,CAAC,CAAA;MAC5E,IAAI,CAACuB,KAAK,GAAG,CAAC,CAAA;AAClB,KAAA;AAAC,GAAA,EAAA;IAAAX,GAAA,EAAA,uBAAA;IAAAC,KAAA,EAED,SAAAL,qBAAAA,GAAwB;AAAA,MAAA,IAAAgB,KAAA,GAAA,IAAA,CAAA;AACpB,MAAA,IAAI,CAACF,WAAW,CAACG,gBAAgB,CAAC,OAAO,EAAE,YAAA;AAAA,QAAA,OAAMD,KAAI,CAACrB,OAAO,CAACqB,KAAI,EAAEA,KAAI,CAACH,UAAU,CAACR,KAAK,CAACa,IAAI,EAAE,CAAC,CAAA;OAAC,CAAA,CAAA;AAClGC,MAAAA,MAAM,CAACF,gBAAgB,CAAC,QAAQ,EAAE,YAAA;AAAA,QAAA,OAAMD,KAAI,CAACI,sBAAsB,EAAE,CAAA;OAAC,CAAA,CAAA;AACtE,MAAA,IAAI,CAACX,WAAW,CAACQ,gBAAgB,CAAC,QAAQ,EAAE,YAAA;AAAA,QAAA,OAAMD,KAAI,CAACI,sBAAsB,EAAE,CAAA;OAAC,CAAA,CAAA;MAChF,IAAI,CAACP,UAAU,CAACI,gBAAgB,CAAC,SAAS,EAAE,UAACI,KAAK,EAAK;AACnD;QACA,IAAIA,KAAK,CAACC,QAAQ,IAAID,KAAK,CAACE,OAAO,KAAK,EAAE,EAAE;AACxC;UACAF,KAAK,CAACG,cAAc,EAAE,CAAA;AACtBR,UAAAA,KAAI,CAACrB,OAAO,CAACqB,KAAI,EAAEA,KAAI,CAACH,UAAU,CAACR,KAAK,CAACa,IAAI,EAAE,CAAC,CAAA;AACpD,SAAA;AACJ,OAAC,CAAC,CAAA;AACN,KAAA;AACA;AAAA,GAAA,EAAA;IAAAd,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EACA,SAAAoB,iBAAkBC,CAAAA,QAAQ,EAAE;MACxB,IAAI,CAAC/B,OAAO,GAAG+B,QAAQ,CAAA;AAC3B,KAAA;AACA;AAAA,GAAA,EAAA;IAAAtB,GAAA,EAAA,2BAAA;AAAAC,IAAAA,KAAA,EACA,SAAAsB,yBAA0BD,CAAAA,QAAQ,EAAE;MAChC,IAAI,CAACE,eAAe,GAAGF,QAAQ,CAAA;AACnC,KAAA;;AAEA;AAAA,GAAA,EAAA;IAAAtB,GAAA,EAAA,iBAAA;IAAAC,KAAA,EACA,SAAAwB,eAAAA,GAAkB;AACd,MAAA,IAAI,CAACnB,UAAU,CAACoB,KAAK,CAACC,OAAO,KAAK,MAAM,GAAG,IAAI,CAACjC,aAAa,EAAE,GAAG,IAAI,CAACC,aAAa,EAAE,CAAA;AAC1F,KAAA;AAAC,GAAA,EAAA;IAAAK,GAAA,EAAA,eAAA;IAAAC,KAAA,EAED,SAAAP,aAAAA,GAAgB;AACZ,MAAA,IAAI,CAACY,UAAU,CAACoB,KAAK,CAACC,OAAO,GAAG,EAAE,CAAA;MAClC,IAAI,CAACC,yBAAyB,EAAE,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAA5B,GAAA,EAAA,eAAA;IAAAC,KAAA,EAED,SAAAN,aAAAA,GAAgB;AACZ,MAAA,IAAI,CAACW,UAAU,CAACoB,KAAK,CAACC,OAAO,GAAG,MAAM,CAAA;MACtC,IAAI,CAACC,yBAAyB,EAAE,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAA5B,GAAA,EAAA,sBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAR,oBAAqBV,CAAAA,KAAK,EAAoB;AAAA,MAAA,IAAlBE,KAAK,GAAAT,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,QAAQ,CAAA;AACxC,MAAA,IAAI,CAAC8B,UAAU,CAACF,SAAS,GAAGrB,KAAK,CAAA;AACjC,MAAA,IAAI,CAACuB,UAAU,CAACoB,KAAK,CAACG,SAAS,GAAG5C,KAAK,CAAA;AAC3C,KAAA;AAAC,GAAA,EAAA;IAAAe,GAAA,EAAA,sBAAA;IAAAC,KAAA,EAED,SAAA6B,oBAAAA,GAAuB;AACnB,MAAA,OAAO,IAAI,CAACxB,UAAU,CAACF,SAAS,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAAJ,GAAA,EAAA,iBAAA;IAAAC,KAAA,EAED,SAAA8B,eAAAA,GAAkB;MACd,IAAI,CAACvB,UAAU,CAACwB,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC1C,MAAA,IAAI,CAACzB,UAAU,CAACkB,KAAK,CAACC,OAAO,KAAK,MAAM,GAAG,IAAI,CAACO,aAAa,EAAE,GAAG,IAAI,CAACC,aAAa,EAAE,CAAA;AAC1F,KAAA;AAAC,GAAA,EAAA;IAAAnC,GAAA,EAAA,eAAA;IAAAC,KAAA,EAED,SAAAiC,aAAAA,GAAgB;AACZ,MAAA,IAAI,CAAC1B,UAAU,CAACkB,KAAK,CAACC,OAAO,GAAG,EAAE,CAAA;MAClC,IAAI,CAACC,yBAAyB,EAAE,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAA5B,GAAA,EAAA,eAAA;IAAAC,KAAA,EAED,SAAAkC,aAAAA,GAAgB;AACZ,MAAA,IAAI,CAAC3B,UAAU,CAACkB,KAAK,CAACC,OAAO,GAAG,MAAM,CAAA;MACtC,IAAI,CAACC,yBAAyB,EAAE,CAAA;AACpC,KAAA;AAAC,GAAA,EAAA;IAAA5B,GAAA,EAAA,2BAAA;IAAAC,KAAA,EAED,SAAA2B,yBAAAA,GAA4B;AACxB,MAAA,IAAMQ,cAAc,GAAGC,kBAAA,CAAI,IAAI,CAAChC,WAAW,CAACiC,QAAQ,CAAA,CAAEC,MAAM,CAAC,UAAAC,KAAK,EAAA;AAAA,QAAA,OAAIA,KAAK,CAACR,SAAS,CAACS,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,CAACzC,WAAW,CAACwC,YAAY,CAAA;AACrD,MAAA,IAAI,CAACtC,aAAa,CAACmB,KAAK,CAACqB,MAAM,GAAA5C,cAAAA,CAAAA,MAAA,CAAkB2C,eAAe,GAAGJ,iBAAiB,EAAK,KAAA,CAAA,CAAA;AAC7F,KAAA;AAAC,GAAA,EAAA;IAAA1C,GAAA,EAAA,wBAAA;IAAAC,KAAA,EAED,SAAAe,sBAAAA,GAAyB;MACrB,IAAI,CAACY,yBAAyB,EAAE,CAAA;MAChC,IAAI,CAACoB,sBAAsB,EAAE,CAAA;AAC7B;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAhD,GAAA,EAAA,wBAAA;IAAAC,KAAA,EAED,SAAA+C,sBAAAA,GAAyB;MACrB,IAAMC,cAAc,GAAG,IAAI,CAACvC,WAAW,CAACwC,WAAW,CAACpC,IAAI,EAAE,CAAA;AAC1D,MAAA,IAAMqC,QAAQ,GAAGC,UAAU,CAACC,gBAAgB,CAAC,IAAI,CAAC3C,WAAW,CAAC,CAACyC,QAAQ,CAAC,CAAA;MACxE,IAAMG,QAAQ,GAAGH,QAAQ,GAAGF,cAAc,CAACxE,MAAM,GAAG,EAAE,CAAA;MACtD,IAAI,CAACiC,WAAW,CAACgB,KAAK,CAAC4B,QAAQ,GAAAnD,EAAAA,CAAAA,MAAA,CAAMmD,QAAQ,EAAI,IAAA,CAAA,CAAA;AACrD,KAAA;AAAC,GAAA,EAAA;IAAAtD,GAAA,EAAA,gBAAA;IAAAC,KAAA,EAED,SAAAsD,cAAAA,GAAuG;MAAA,IAAxFC,KAAK,GAAAhF,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA;AAACiF,QAAAA,OAAO,EAAE,EAAE;AAAEC,QAAAA,UAAU,EAAE,MAAM;AAAEzE,QAAAA,KAAK,EAAG,OAAO;AAAE0E,QAAAA,IAAI,EAAG,MAAM;AAAEC,QAAAA,MAAM,EAAG,CAAC,CAAA;OAAE,CAAA;AACjG,MAAA,IAAMjD,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACxB,MAAA,IAAMkD,UAAU,GAAG1E,QAAQ,CAAC2E,aAAa,CAAC,KAAK,CAAC,CAAA;AAChD,MAAA,IAAMC,UAAU,GAAG,iBAAiB,GAAGC,MAAM,CAACrD,KAAK,CAAC,CAACsD,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;AACtE,MAAoB,kBAAkB,GAAGD,MAAM,CAACR,KAAK,CAACE,UAAU,CAAC,CAACO,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE;MACpFJ,UAAU,CAAC7B,SAAS,CAACkC,GAAG,CAAC,kBAAkB,EAAEH,UAAU,CAAC,CAAA;MACxD,IAAI,CAACpD,KAAK,EAAE,CAAA;MACZkD,UAAU,CAAC7B,SAAS,CAACkC,GAAG,CAAC,IAAI,CAAC3D,aAAa,CAAC+B,QAAQ,CAAC7D,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,oBAAoB,GAAG,oBAAoB,CAAC,CAAA;AAEpH,MAAA,IAAM0F,OAAO,GAAGhF,QAAQ,CAAC2E,aAAa,CAAC,KAAK,CAAC,CAAA;AAC7CK,MAAAA,OAAO,CAAC/D,SAAS,GAAGoD,KAAK,CAACE,UAAU,CAAA;MACpCS,OAAO,CAACzC,KAAK,GAAAvB,2BAAAA,CAAAA,MAAA,CAA+BqD,KAAK,CAACvE,KAAK,EAAoC,oCAAA,CAAA,CAAA;AAE3F,MAAA,IAAMmF,UAAU,GAAGjF,QAAQ,CAAC2E,aAAa,CAAC,KAAK,CAAC,CAAA;MAChDM,UAAU,CAAC1C,KAAK,GAAAvB,2BAAAA,CAAAA,MAAA,CAA+BqD,KAAK,CAACvE,KAAK,EAAG,GAAA,CAAA,CAAA;AAC7DmF,MAAAA,UAAU,CAAChE,SAAS,GAAGoD,KAAK,CAACC,OAAO,CAAA;AAEpCI,MAAAA,UAAU,CAACQ,WAAW,CAACF,OAAO,CAAC,CAAA;AAC/BN,MAAAA,UAAU,CAACQ,WAAW,CAACD,UAAU,CAAC,CAAA;AAClC,MAAA,IAAI,CAAC7D,aAAa,CAAC8D,WAAW,CAACR,UAAU,CAAC,CAAA;AAC1C;AACA,MAAA,IAAI,CAACtD,aAAa,CAAC+D,gBAAgB,CAACC,cAAc,EAAE,CAAA;AAEpD,MAAA,IAAI,CAAC9D,UAAU,CAACR,KAAK,GAAG,EAAE,CAAA;MAC1B,IAAI,CAAC2B,yBAAyB,EAAE,CAAA;MAChC,IAAM4C,SAAS,GAAG,IAAIC,IAAI,EAAE,CAACC,WAAW,EAAE,CAAA;MAC1C,IAAMC,WAAW,GAAGH,SAAS,CAAA;MAC7B,IAAI,IAAI,CAAC3F,YAAY,EAAE;AACnB,QAAA,IAAI,CAACiB,QAAQ,CAAC8E,IAAI,CAAAC,cAAA,CAAAA,cAAA,CAAA;AAAGlE,UAAAA,KAAK,EAALA,KAAAA;AAAK,SAAA,EAAK6C,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEgB,UAAAA,SAAS,EAATA,SAAS;AAAEG,UAAAA,WAAW,EAAXA,WAAW;AAAEd,UAAAA,UAAU,EAAVA,UAAAA;AAAU,SAAA,CAAC,CAAC,CAAA;QAC1E,IAAI,IAAI,CAAC/D,QAAQ,CAACrB,MAAM,GAAG,IAAI,CAACoB,aAAa,EAAE;AAC3C,UAAA,IAAI,CAACC,QAAQ,CAACgF,KAAK,EAAE,CAAA;AACzB,SAAA;AACJ,OAAA;MACA,IAAI,IAAI,CAACtD,eAAe,EAAE;AACtB,QAAA,IAAI,CAACA,eAAe,CAAC,IAAI,EAAEb,KAAK,CAAC,CAAA;AACrC,OAAA;AACA,MAAA,OAAOA,KAAK,CAAA;AAChB,KAAA;AAAC,GAAA,EAAA;IAAAX,GAAA,EAAA,eAAA;IAAAC,KAAA,EACD,SAAA8E,aAAAA,GAA6E;AAAA,MAAA,IAA/DtB,OAAO,GAAAjF,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAC,EAAE,CAAA;AAAA,MAAA,IAAEkF,UAAU,GAAAlF,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAC,MAAM,CAAA;AAAA,MAAA,IAAES,KAAK,GAAAT,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,OAAO,CAAA;AAAA,MAAA,IAAEmF,IAAI,GAAAnF,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,MAAM,CAAA;MACvE,OAAO,IAAI,CAAC+E,cAAc,CACtB;AAACE,QAAAA,OAAO,EAAEA,OAAO;AAAEC,QAAAA,UAAU,EAAEA,UAAU;AAAEzE,QAAAA,KAAK,EAAEA,KAAK;AAAE0E,QAAAA,IAAI,EAAEA,IAAAA;AAAI,OACvE,CAAC,CAAA;AACL,KAAA;AAAC,GAAA,EAAA;IAAA3D,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EACD,SAAA+E,aAAcC,CAAAA,CAAC,EAAE;AACb;MACA,IAAIC,MAAM,GAAG,KAAK,CAAA;MAClB,IAAI;QACA,IAAI,CAAC3E,aAAa,CAAC4E,WAAW,CAAC,IAAI,CAAC5E,aAAa,CAACnB,aAAa,CAAA,kBAAA,CAAAe,MAAA,CAAoB6D,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,CAACpF,QAAQ,CAACyF,MAAM,CAAC,IAAI,CAACzF,QAAQ,CAAC0F,SAAS,CAAC,UAACC,IAAI,EAAA;AAAA,UAAA,OAAKA,IAAI,CAAC9E,KAAK,KAAKsE,CAAC,CAAA;SAAC,CAAA,EAAE,CAAC,CAAC,CAAA;AAChF,OAAA;AACA,MAAA,OAAOC,MAAM,CAAA;AACjB,KAAA;AACA;AACJ;AADI,GAAA,EAAA;IAAAlF,GAAA,EAAA,qBAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAyF,mBAAoBT,CAAAA,CAAC,EAAE;MACnB,IAAIU,GAAG,GAAG,IAAI,CAAA;AACd;MACA,IAAI;QACAA,GAAG,GAAI,IAAI,CAACpF,aAAa,CAACnB,aAAa,CAAA,kBAAA,CAAAe,MAAA,CAAoB6D,MAAM,CAACiB,CAAC,CAAC,CAAChB,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAE,CAAC,CAAA;OAC5F,CACD,OAAOmB,KAAK,EACZ;QACIC,OAAO,CAACC,GAAG,CAAA,oCAAqC,CAAC,CAAA;AACrD,OAAA;AACA,MAAA,OAAOK,GAAG,CAAA;AACd,KAAA;AACA;AACJ;AADI,GAAA,EAAA;IAAA3F,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAEA,SAAA2F,iBAAkBX,CAAAA,CAAC,EAAE;MACjB,IAAIxB,OAAO,GAAG,EAAE,CAAA;AAChB;MACA,IAAI;AACA;QACAA,OAAO,GAAG,IAAI,CAAC3D,QAAQ,CAACyC,MAAM,CAAC,UAACkD,IAAI,EAAA;AAAA,UAAA,OAAKA,IAAI,CAAC9E,KAAK,KAAKsE,CAAC,CAAA;AAAA,SAAA,CAAC,CAAC,CAAC,CAAC,CAACxB,OAAO,CAAA;AACrE;OACH,CACD,OAAO2B,KAAK,EACZ;QACIC,OAAO,CAACC,GAAG,CAAA,oCAAqC,CAAC,CAAA;AACrD,OAAA;AACA,MAAA,OAAO7B,OAAO,CAAA;AAClB,KAAA;;AAEA;AACJ;AADI,GAAA,EAAA;IAAAzD,GAAA,EAAA,sBAAA;AAAAC,IAAAA,KAAA,EAEA,SAAA4F,oBAAAA,CAAqBZ,CAAC,EAAExB,OAAO,EAAE;MAC7B,IAAIyB,MAAM,GAAG,KAAK,CAAA;MAClB,IAAI;QACA,IAAI,CAAC3E,aAAa,CAACnB,aAAa,CAAA,kBAAA,CAAAe,MAAA,CAAoB6D,MAAM,CAACiB,CAAC,CAAC,CAAChB,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAE,CAAC,CAAC6B,SAAS,CAAC1F,SAAS,IAAIqD,OAAO,CAAA;AACjH;QACA,IAAIgC,IAAI,GAAG,IAAI,CAAC3F,QAAQ,CAACyC,MAAM,CAAC,UAACkD,IAAI,EAAA;AAAA,UAAA,OAAKA,IAAI,CAAC9E,KAAK,KAAKsE,CAAC,CAAA;SAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAC9DQ,IAAI,CAAChC,OAAO,IAAIA,OAAO,CAAA;QACvBgC,IAAI,CAACd,WAAW,GAAG,IAAIF,IAAI,EAAE,CAACC,WAAW,EAAE,CAAA;AAC3CQ,QAAAA,MAAM,GAAG,IAAI,CAAA;AACb;AACA,QAAA,IAAI,CAAC3E,aAAa,CAAC+D,gBAAgB,CAACC,cAAc,EAAE,CAAA;OACvD,CACD,OAAOa,KAAK,EACZ;QACIC,OAAO,CAACC,GAAG,CAAA,oCAAqC,CAAC,CAAA;AACrD,OAAA;AACJ,KAAA;AACA;AACJ;AADI,GAAA,EAAA;IAAAtF,GAAA,EAAA,uBAAA;AAAAC,IAAAA,KAAA,EAEA,SAAA8F,qBAAAA,CAAsBd,CAAC,EAAExB,OAAO,EAAE;MAC9B,IAAIyB,MAAM,GAAG,KAAK,CAAA;MAClB,IAAI;QACA,IAAI,CAAC3E,aAAa,CAACnB,aAAa,CAAA,kBAAA,CAAAe,MAAA,CAAoB6D,MAAM,CAACiB,CAAC,CAAC,CAAChB,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAE,CAAC,CAAC6B,SAAS,CAAC1F,SAAS,GAAGqD,OAAO,CAAA;AAChH;AACA,QAAA,IAAI,CAAC3D,QAAQ,CAACyC,MAAM,CAAC,UAACkD,IAAI,EAAA;AAAA,UAAA,OAAKA,IAAI,CAAC9E,KAAK,KAAKsE,CAAC,CAAA;AAAA,SAAA,CAAC,CAAC,CAAC,CAAC,CAACxB,OAAO,GAAGA,OAAO,CAAA;AACrEyB,QAAAA,MAAM,GAAG,IAAI,CAAA;OAChB,CACD,OAAOE,KAAK,EACZ;QACIC,OAAO,CAACC,GAAG,CAAA,oCAAqC,CAAC,CAAA;AACrD,OAAA;AACA,MAAA,OAAOJ,MAAM,CAAA;AACjB,KAAA;AACA;AACA;AACJ;AACA;AACA;AACA;AACA;AALI,GAAA,EAAA;IAAAlF,GAAA,EAAA,YAAA;AAAAC,IAAAA,KAAA,EAMA,SAAA+F,UAAAA,CAAWf,CAAC,EAACgB,CAAC,EAAE;MAEZ,IAAIhB,CAAC,IAAIvG,SAAS,EAAE;AAChBuG,QAAAA,CAAC,GAAG,CAAC,CAAA;AACLgB,QAAAA,CAAC,GAAE,IAAI,CAACnG,QAAQ,CAACrB,MAAM,CAAA;AAC3B,OAAA;MACA,IAAIwH,CAAC,KAAKvH,SAAS,EAAE;QACjBuH,CAAC,GAAGhB,CAAC,GAAG,CAAC,GAAGgB,CAAC,GAAEhB,CAAC,GAAG,CAAC,CAAA;AACxB,OAAA;AACA;AACA;;MAEA,OAAO,IAAI,CAACnF,QAAQ,CAACoG,KAAK,CAACjB,CAAC,EAACgB,CAAC,CAAC,CAAA;AACnC,KAAA;AAAC,GAAA,EAAA;IAAAjG,GAAA,EAAA,cAAA;IAAAC,KAAA,EAED,SAAAkG,YAAAA,GAAe;MACX,IAAI,CAACxF,KAAK,GAAG,CAAC,CAAA;MACd,IAAI,CAACb,QAAQ,GAAG,EAAE,CAAA;AACtB,KAAA;AAAC,GAAA,EAAA;IAAAE,GAAA,EAAA,kBAAA;IAAAC,KAAA,EAED,SAAAmG,gBAAAA,GAAmB;AACf,MAAA,OAAO,IAAI,CAACtG,QAAQ,CAACrB,MAAM,CAAA;AAC/B,KAAA;AAAC,GAAA,EAAA;IAAAuB,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAoG,iBAAkBpB,CAAAA,CAAC,EAAE;MACjB,IAAKA,CAAC,IAAE,CAAC,IAAIA,CAAC,GAAG,IAAI,CAACnF,QAAQ,CAACrB,MAAM,EAAE;AACnC,QAAA,IAAI,CAACqB,QAAQ,CAACmF,CAAC,CAAC,CAAA;AACpB,OAAA;AACA,MAAA,OAAO,EAAE,CAAA;AAEb,KAAA;AAAC,GAAA,EAAA;IAAAjF,GAAA,EAAA,0BAAA;AAAAC,IAAAA,KAAA,EAED,SAAAqG,wBAAyBrB,CAAAA,CAAC,EAAE;AACxB,MAAA,OAAO,IAAI,CAACnF,QAAQ,CAACmF,CAAC,CAAC,CAACsB,OAAO,CAAA;AACnC,KAAA;AAAC,GAAA,EAAA;IAAAvG,GAAA,EAAA,aAAA;AAAAC,IAAAA,KAAA,EAGD,SAAAuG,WAAYC,CAAAA,QAAQ,EAAE;MAClB,IAAI,CAACpG,WAAW,CAAC2B,SAAS,CAAC0E,MAAM,CAAC,IAAI,CAACpH,MAAM,CAAC,CAAA;MAC9C,IAAI,CAACe,WAAW,CAAC2B,SAAS,CAACkC,GAAG,CAACuC,QAAQ,CAAC,CAAA;MACxC,IAAI,CAACnH,MAAM,GAAGmH,QAAQ,CAAA;AAC1B,KAAA;AAAC,GAAA,EAAA;IAAAzG,GAAA,EAAA,OAAA;IAAA2G,GAAA,EAED,SAAAA,GAAAA,GAAY;MACR,OAAO,IAAI,CAACrH,MAAM,CAAA;AACtB,KAAA;AAAC,GAAA,CAAA,EAAA,CAAA;IAAAU,GAAA,EAAA,SAAA;IAAAC,KAAA,EAED,SAAA2G,OAAAA,GAAiB;MACb,OAAO;AAAC,QAAA,SAAS,EAAG,OAAO;AAAE,QAAA,SAAS,EAAG,OAAO;AAAE,QAAA,KAAK,EAAE,gCAAA;OAAiC,CAAA;AAC9F,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA;;;;"}
|